提交 45f9beb9 编写于 作者: M mamingshuai

update openharmony 1.0.1

上级 0b4783bb
### 该问题是怎么引起的?
### 重现步骤
### 报错信息
### 相关的Issue
### 原因(目的、解决的问题等)
### 描述(做了什么,变更了什么)
### 测试用例(新增、改动、可能影响的功能)
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
[
{
"Name" : "FreeBSD",
"License" : "BSD 2-Clause License",
"License File" : "COPYRIGHT",
"Version Number" : "11.4",
"Owner" : "tonghaoyang1@huawei.com",
"Upstream URL" : "http://www.freebsd.org/",
"Description" : "FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms."
}
]
文件模式从 100755 更改为 100644
......@@ -27,7 +27,6 @@
#include <los_memory.h>
#include "los_vm_iomap.h"
#include "los_vm_map.h"
#include <asm/dma.h>
#include <user_copy.h>
#include "implementation/global_implementation.h"
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
......@@ -34,7 +34,6 @@
#include "linux/kernel.h"
#include "los_base.h"
#include "linux/workqueue.h"
#include "asm/hal_platform_ints.h"
#ifdef __cplusplus
#if __cplusplus
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
......@@ -32,6 +32,7 @@
#include "linux/completion.h"
#include "limits.h"
#include "los_task_pri.h"
#include "los_sched_pri.h"
#include "los_mp.h"
#include "los_exc.h"
......@@ -77,7 +78,8 @@ void linux_complete(struct completion *x)
SCHEDULER_LOCK(intSave);
if (!LOS_ListEmpty(&x->comList)) {
resumedTask = OS_TCB_FROM_PENDLIST(LOS_DL_LIST_FIRST(&(x->comList)));
OsTaskWake(resumedTask);
OsTaskWakeClearPendMask(resumedTask);
OsSchedTaskWake(resumedTask);
SCHEDULER_UNLOCK(intSave);
CompletionSchedule();
return;
......@@ -128,7 +130,8 @@ void linux_wait_for_completion(struct completion *x)
return;
}
(void)OsTaskWait(&x->comList, LOS_WAIT_FOREVER, TRUE);
OsTaskWaitSetPendMask(OS_TASK_WAIT_COMPLETE, (UINTPTR)x, LOS_WAIT_FOREVER);
(void)OsSchedTaskWait(&x->comList, LOS_WAIT_FOREVER, TRUE);
SCHEDULER_UNLOCK(intSave);
return;
}
......@@ -172,7 +175,8 @@ unsigned long linux_wait_for_completion_timeout(struct completion *x, unsigned l
return timeout;
}
ret = OsTaskWait(&x->comList, timeout, TRUE);
OsTaskWaitSetPendMask(OS_TASK_WAIT_COMPLETE, (UINTPTR)x, timeout);
ret = OsSchedTaskWait(&x->comList, timeout, TRUE);
if (ret == LOS_ERRNO_TSK_TIMEOUT) {
SCHEDULER_UNLOCK(intSave);
return 0;
......@@ -204,7 +208,8 @@ void linux_complete_all(struct completion *x)
while (!LOS_ListEmpty(&x->comList)) {
resumedTask = OS_TCB_FROM_PENDLIST(LOS_DL_LIST_FIRST(&(x->comList)));
OsTaskWake(resumedTask);
OsTaskWakeClearPendMask(resumedTask);
OsSchedTaskWake(resumedTask);
}
SCHEDULER_UNLOCK(intSave);
CompletionSchedule();
......
......@@ -31,9 +31,8 @@
#include "linux/hrtimer.h"
#include "los_task_pri.h"
#include "los_hwi.h"
#include "asm/hal_platform_ints.h"
#include "los_spinlock.h"
#include "target_config.h"
#ifdef __cplusplus
#if __cplusplus
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
......@@ -364,38 +364,35 @@ STATIC VOID DelayedWorkTimerFunc(unsigned long data)
STATIC BOOL OsPerCpuSortLinkSearch(SortLinkAttribute *swtmrSortLink, OsSortLinkCond checkFunc, VOID *arg)
{
UINT32 i;
SWTMR_CTRL_S *curSwtmr = NULL;
SortLinkList *listSorted = NULL;
LOS_DL_LIST *listObject = NULL;
for (i = 0; i < OS_TSK_SORTLINK_LEN; i++) {
listObject = swtmrSortLink->sortLink + i;
if (LOS_ListEmpty(listObject)) {
continue;
LOS_DL_LIST *listObject = &swtmrSortLink->sortLink;
LOS_DL_LIST *list = listObject->pstNext;
while (list != listObject) {
SortLinkList *listSorted = LOS_DL_LIST_ENTRY(list, SortLinkList, sortLinkNode);
SWTMR_CTRL_S *curSwtmr = LOS_DL_LIST_ENTRY(listSorted, SWTMR_CTRL_S, stSortList);
if (checkFunc(curSwtmr, arg)) {
return TRUE;
}
listSorted = LOS_DL_LIST_ENTRY((listObject)->pstNext, SortLinkList, sortLinkNode);
do {
curSwtmr = LOS_DL_LIST_ENTRY(listSorted, SWTMR_CTRL_S, stSortList);
if (checkFunc(curSwtmr, arg)) {
return TRUE;
}
listSorted = LOS_DL_LIST_ENTRY(listSorted->sortLinkNode.pstNext, SortLinkList, sortLinkNode);
} while (&listSorted->sortLinkNode != (listObject));
list = list->pstNext;
}
return FALSE;
}
BOOL OsSortLinkSearch(OsSortLinkCond checkFunc, VOID *arg)
{
UINT32 intSave;
UINT32 i;
SortLinkAttribute *swtmrSortLink = NULL;
for (i = 0; i < LOSCFG_KERNEL_CORE_NUM; i++) {
swtmrSortLink = &OsPercpuGetByID(i)->swtmrSortLink;
Percpu *cpu = OsPercpuGetByID(i);
SortLinkAttribute *swtmrSortLink = &OsPercpuGetByID(i)->swtmrSortLink;
LOS_SpinLockSave(&cpu->swtmrSortLinkSpin, &intSave);
if (OsPerCpuSortLinkSearch(swtmrSortLink, checkFunc, arg)) {
LOS_SpinUnlockRestore(&cpu->swtmrSortLinkSpin, intSave);
return TRUE;
}
LOS_SpinUnlockRestore(&cpu->swtmrSortLinkSpin, intSave);
}
return FALSE;
}
......@@ -619,4 +616,4 @@ void linux_destroy_workqueue(struct workqueue_struct *wq)
#if __cplusplus
}
#endif
#endif
\ No newline at end of file
#endif
文件模式从 100755 更改为 100644
......@@ -29,13 +29,13 @@
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "los_typedef.h"
#include "los_printf.h"
#include "tzdst.h"
#include "tzdst_pri.h"
#include "stdio.h"
#include "stdlib.h"
#include "unistd.h"
#include "los_printf.h"
#include "los_typedef.h"
#include "securec.h"
#ifdef __cplusplus
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
此差异已折叠。
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
......@@ -62,10 +62,14 @@ static int xhcictlstep = 0;
#define xhcictlstep 0
#endif
#ifndef USB_DEBUG_VAR
#undef USB_DEBUG_VAR
#define USB_DEBUG_VAR xhcidebug
#ifdef LOSCFG_USB_DEBUG
static int xhcidebug = 0;
#endif
#define XHCI_INTR_ENDPT 1
#define XHCI_DO_CMD_TIMEOUT 1000
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
......@@ -84,7 +84,7 @@ extern struct driver_module_data umass_uhub_driver_mod;
extern struct driver_module_data usb_linux_uhub_driver_mod;
#endif
#ifdef LOSCFG_DRIVERS_USB_HID_CLASS
#if defined (LOSCFG_DRIVERS_USB_HID_CLASS) && defined (LOSCFG_DRIVERS_HDF_INPUT)
extern struct driver_module_data uhid_uhub_driver_mod;
#endif
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
......@@ -92,7 +92,7 @@ static struct driver_module_data* usb_driver_mode_list[] = {
&usb_linux_uhub_driver_mod,
#endif
#ifdef LOSCFG_DRIVERS_USB_HID_CLASS
#if defined (LOSCFG_DRIVERS_USB_HID_CLASS) && defined (LOSCFG_DRIVERS_HDF_INPUT)
&uhid_uhub_driver_mod,
#endif
NULL
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
......@@ -44,6 +44,7 @@ __FBSDID("$FreeBSD: releng/11.4/sys/dev/usb/input/uhid.c 331722 2018-03-29 02:50
#include "implementation/global_implementation.h"
#include "input/usb_rdesc.h"
#include "implementation/usbdevs.h"
#include "event_hub.h"
#undef USB_DEBUG_VAR
#define USB_DEBUG_VAR uhid_debug
......@@ -55,6 +56,11 @@ static int uhid_debug = 0;
#define UHID_BSIZE 1024 /* bytes, buffer size */
#define UHID_FRAME_NUM 50 /* bytes, frame number */
#define MOUSE_DATA_LEN 4
#define BTN_LEFT_VALUE(v) ((v) & 0x01)
#define BTN_RIGHT_VALUE(v) (((v) & 0x02)>>1)
#define BTN_MIDDLE_VALUE(v) (((v) & 0x04)>>2)
enum {
UHID_INTR_DT_WR,
UHID_INTR_DT_RD,
......@@ -75,6 +81,8 @@ struct uhid_softc {
uint32_t sc_osize;
uint32_t sc_fsize;
InputDevice *input_dev;
uint16_t sc_repdesc_size;
uint8_t sc_iface_no;
......@@ -151,6 +159,33 @@ tr_setup:
}
}
void report_event(InputDevice *input_dev, uint32_t type, uint32_t code, int32_t value)
{
DPRINTF("%s type = %u, code = %u, value = %d\n", input_dev->devName, type, code, value);
if (type == EV_SYN || type == EV_KEY) {
PushOnePackage(input_dev, type, code, value);
} else if (value) {
PushOnePackage(input_dev, type, code, value);
}
}
void mouse_report_events(InputDevice *input_dev, void *buffer, int len)
{
if (len != MOUSE_DATA_LEN) {
DPRINTF("%s: invalid data len = %d\n", __func__, len);
return;
}
const char *buf = buffer;
report_event(input_dev, EV_KEY, BTN_LEFT, BTN_LEFT_VALUE((unsigned char)buf[0]));
report_event(input_dev, EV_KEY, BTN_RIGHT, BTN_RIGHT_VALUE((unsigned char)buf[0]));
report_event(input_dev, EV_KEY, BTN_MIDDLE, BTN_MIDDLE_VALUE((unsigned char)buf[0]));
report_event(input_dev, EV_REL, REL_X, buf[1]);
report_event(input_dev, EV_REL, REL_Y, buf[2]);
report_event(input_dev, EV_REL, REL_WHEEL, buf[3]);
report_event(input_dev, EV_SYN, SYN_REPORT, 0);
}
static void
uhid_intr_read_callback(struct usb_xfer *xfer, usb_error_t error)
{
......@@ -158,44 +193,27 @@ uhid_intr_read_callback(struct usb_xfer *xfer, usb_error_t error)
struct usb_page_cache *pc;
int actlen;
DPRINTF("enter state of xfer is %u!\n", USB_GET_STATE(xfer));
usbd_xfer_status(xfer, &actlen, NULL, NULL, NULL);
switch (USB_GET_STATE(xfer)) {
case USB_ST_TRANSFERRED:
DPRINTF("transferred!\n");
pc = usbd_xfer_get_frame(xfer, 0);
/*
* If the ID byte is non zero we allow descriptors
* having multiple sizes:
*/
if ((actlen >= (int)sc->sc_isize) ||
((actlen > 0) && (sc->sc_iid != 0))) {
/* limit report length to the maximum */
if (actlen > (int)sc->sc_isize)
actlen = sc->sc_isize;
usb_fifo_put_data(sc->sc_fifo.fp[USB_FIFO_RX], pc,
0, actlen, 1);
} else {
/* ignore it */
DPRINTF("ignored transfer, %d bytes\n", actlen);
if (sc->input_dev && sc->input_dev->devType == INDEV_TYPE_MOUSE) {
mouse_report_events(sc->input_dev, pc->buffer, actlen);
}
case USB_ST_SETUP:
re_submit:
if (usb_fifo_put_bytes_max(
sc->sc_fifo.fp[USB_FIFO_RX]) != 0) {
usbd_xfer_set_frame_len(xfer, 0, sc->sc_isize);
usbd_transfer_submit(xfer);
}
usbd_xfer_set_frame_len(xfer, 0, sc->sc_isize);
usbd_transfer_submit(xfer);
return;
default: /* Error */
default:
if (error != USB_ERR_CANCELLED) {
/* try to clear stall first */
usbd_xfer_set_stall(xfer);
goto re_submit;
usbd_xfer_set_frame_len(xfer, 0, sc->sc_isize);
usbd_transfer_submit(xfer);
}
return;
}
......@@ -293,6 +311,8 @@ uhid_read_callback(struct usb_xfer *xfer, usb_error_t error)
struct usb_device_request req;
struct usb_page_cache *pc;
DPRINTF("enter state of xfer is %u!\n", USB_GET_STATE(xfer));
pc = usbd_xfer_get_frame(xfer, 0);
switch (USB_GET_STATE(xfer)) {
......@@ -696,6 +716,7 @@ uhid_attach(device_t dev)
struct uhid_softc *sc = device_get_softc(dev);
int unit = device_get_unit(dev);
int error = 0;
int32_t ret;
DPRINTFN(10, "sc=%p\n", sc);
......@@ -824,6 +845,30 @@ uhid_attach(device_t dev)
goto detach;
}
sc->input_dev = (InputDevice*)zalloc(sizeof(InputDevice));
if (sc->input_dev) {
if (uaa->info.bInterfaceProtocol == UIPROTO_MOUSE) {
sc->input_dev->devType = INDEV_TYPE_MOUSE;
sc->input_dev->devName = "mouse";
} else {
sc->input_dev->devType = INDEV_TYPE_UNKNOWN;
sc->input_dev->devName = "other";
}
ret = RegisterInputDevice(sc->input_dev);
if (ret != HDF_SUCCESS) {
DPRINTF("%s register failed, ret = %d!\n", sc->input_dev->devName, ret);
free(sc->input_dev);
sc->input_dev = NULL;
} else if (sc->input_dev->devType == INDEV_TYPE_MOUSE) {
DPRINTF("mouse register success!\n");
mtx_lock(&sc->sc_mtx);
sc->sc_flags &= ~UHID_FLAG_IMMED;
usbd_transfer_start(sc->sc_xfer[UHID_INTR_DT_RD]);
mtx_unlock(&sc->sc_mtx);
}
}
return (0); /* success */
detach:
......@@ -836,6 +881,18 @@ uhid_detach(device_t dev)
{
struct uhid_softc *sc = device_get_softc(dev);
DPRINTF("enter\n");
if (sc->input_dev) {
if (sc->input_dev->devType == INDEV_TYPE_MOUSE) {
usbd_transfer_stop(sc->sc_xfer[UHID_INTR_DT_RD]);
}
UnregisterInputDevice(sc->input_dev);
free(sc->input_dev);
sc->input_dev = NULL;
}
usb_fifo_detach(&sc->sc_fifo);
usbd_transfer_unsetup(sc->sc_xfer, UHID_N_TRANSFER);
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
......@@ -1681,7 +1681,7 @@ umass_command_start(struct umass_softc *sc, uint8_t dir,
}
(void)LOS_EventRead(&sc->sc_event, 0xFF,
LOS_WAITMODE_OR|LOS_WAITMODE_CLR, 1000);
LOS_WAITMODE_OR | LOS_WAITMODE_CLR, 10 * LOSCFG_BASE_CORE_TICK_PER_SECOND); /* 10 seconds. */
return (0);
}
......
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
此差异已折叠。
文件模式从 100755 更改为 100644
文件模式从 100755 更改为 100644
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册