Changeset cccd60c3 in mainline for uspace/lib
- Timestamp:
- 2017-10-10T06:51:02Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c46bfbc
- Parents:
- 2bdf92a5
- Location:
- uspace/lib
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/device/hw_res.c
r2bdf92a5 rcccd60c3 75 75 } 76 76 77 bool hw_res_enable_interrupt(async_sess_t *sess)77 int hw_res_enable_interrupt(async_sess_t *sess, int irq) 78 78 { 79 79 async_exch_t *exch = async_exchange_begin(sess); 80 80 81 int rc = async_req_ 1_0(exch, DEV_IFACE_ID(HW_RES_DEV_IFACE),82 HW_RES_ENABLE_INTERRUPT );81 int rc = async_req_2_0(exch, DEV_IFACE_ID(HW_RES_DEV_IFACE), 82 HW_RES_ENABLE_INTERRUPT, irq); 83 83 async_exchange_end(exch); 84 84 85 return (rc == EOK);85 return rc; 86 86 } 87 87 -
uspace/lib/c/include/device/hw_res.h
r2bdf92a5 rcccd60c3 115 115 116 116 extern int hw_res_get_resource_list(async_sess_t *, hw_resource_list_t *); 117 extern bool hw_res_enable_interrupt(async_sess_t *);117 extern int hw_res_enable_interrupt(async_sess_t *, int); 118 118 119 119 extern int hw_res_dma_channel_setup(async_sess_t *, unsigned int, uint32_t, -
uspace/lib/drv/generic/remote_hw_res.c
r2bdf92a5 rcccd60c3 67 67 hw_res_ops_t *hw_res_ops = (hw_res_ops_t *) ops; 68 68 69 if (hw_res_ops->enable_interrupt == NULL) 69 if (hw_res_ops->enable_interrupt == NULL) { 70 70 async_answer_0(callid, ENOTSUP); 71 else if (hw_res_ops->enable_interrupt(fun)) 72 async_answer_0(callid, EOK); 73 else 74 async_answer_0(callid, EREFUSED); 71 return; 72 } 73 74 const int irq = DEV_IPC_GET_ARG1(*call); 75 const int ret = hw_res_ops->enable_interrupt(fun, irq); 76 async_answer_0(callid, ret); 75 77 } 76 78 -
uspace/lib/drv/include/ops/hw_res.h
r2bdf92a5 rcccd60c3 44 44 typedef struct { 45 45 hw_resource_list_t *(*get_resource_list)(ddf_fun_t *); 46 bool (*enable_interrupt)(ddf_fun_t *);46 int (*enable_interrupt)(ddf_fun_t *, int); 47 47 int (*dma_channel_setup)(ddf_fun_t *, unsigned, uint32_t, uint32_t, uint8_t); 48 48 int (*dma_channel_remain)(ddf_fun_t *, unsigned, size_t *); -
uspace/lib/usbhost/include/usb/host/ddf_helpers.h
r2bdf92a5 rcccd60c3 70 70 hcd_t *dev_to_hcd(ddf_dev_t *dev); 71 71 72 int hcd_ddf_enable_interrupt s(ddf_dev_t *device);72 int hcd_ddf_enable_interrupt(ddf_dev_t *device, int); 73 73 int hcd_ddf_get_registers(ddf_dev_t *device, hw_res_list_parsed_t *hw_res); 74 74 int hcd_ddf_setup_interrupts(ddf_dev_t *device, -
uspace/lib/usbhost/src/ddf_helpers.c
r2bdf92a5 rcccd60c3 692 692 693 693 //TODO: Cache parent session in HCD 694 /** Call the parent driver with a request to enable interrupt s694 /** Call the parent driver with a request to enable interrupt 695 695 * 696 696 * @param[in] device Device asking for interrupts 697 * @param[in] inum Interrupt number 697 698 * @return Error code. 698 699 */ 699 int hcd_ddf_enable_interrupt s(ddf_dev_t *device)700 int hcd_ddf_enable_interrupt(ddf_dev_t *device, int inum) 700 701 { 701 702 async_sess_t *parent_sess = ddf_dev_parent_sess_get(device); … … 703 704 return EIO; 704 705 705 const bool enabled = hw_res_enable_interrupt(parent_sess); 706 707 return enabled ? EOK : EIO; 706 return hw_res_enable_interrupt(parent_sess, inum); 708 707 } 709 708 … … 776 775 777 776 /* Enable interrupts */ 778 int ret = hcd_ddf_enable_interrupt s(device);777 int ret = hcd_ddf_enable_interrupt(device, irq); 779 778 if (ret != EOK) { 780 779 usb_log_error("Failed to register interrupt handler: %s.\n",
Note:
See TracChangeset
for help on using the changeset viewer.