Changeset 1b90e90 in mainline
- Timestamp:
- 2012-03-05T20:51:42Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 81716eb
- Parents:
- 45f4f19
- Location:
- uspace/drv/bus/usb/ohci
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/ohci/hc.c
r45f4f19 r1b90e90 592 592 if (instance->hcca == NULL) 593 593 return ENOMEM; 594 bzero(instance->hcca, sizeof(hcca_t));595 594 usb_log_debug2("OHCI HCCA initialized at %p.\n", instance->hcca); 596 595 597 for (unsigned i = 0; i < 32; ++i) {598 OHCI_WR(instance->hcca->int_ep[i],596 for (unsigned i = 0; i < HCCA_INT_EP_COUNT; ++i) { 597 hcca_set_int_ep(instance->hcca, i, 599 598 instance->lists[USB_TRANSFER_INTERRUPT].list_head_pa); 600 599 } -
uspace/drv/bus/usb/ohci/hw_struct/hcca.h
r45f4f19 r1b90e90 38 38 #include <malloc.h> 39 39 40 #include "mem_access.h" 41 42 #define HCCA_INT_EP_COUNT 32 43 40 44 /** Host controller communication area. 41 45 * Shared memory used for communication between the controller and the driver. 42 46 */ 43 47 typedef struct hcca { 44 uint32_t int_ep[32]; 48 /** Interrupt endpoints */ 49 uint32_t int_ep[HCCA_INT_EP_COUNT]; 50 /** Frame number. */ 45 51 uint16_t frame_number; 46 52 uint16_t pad1; 53 /** Pointer to the last completed TD. (useless) */ 47 54 uint32_t done_head; 55 /** Padding to make the size 256B */ 48 56 uint32_t reserved[29]; 49 57 } __attribute__((packed, aligned)) hcca_t; 50 58 51 static inline void * hcca_get(void) 59 /** Allocate properly aligned structure. 60 * 61 * The returned structure is zeroed upon allocation. 62 * 63 * @return Usable HCCA memory structure. 64 */ 65 static inline hcca_t * hcca_get(void) 52 66 { 53 67 assert(sizeof(hcca_t) == 256); 54 return memalign(256, sizeof(hcca_t)); 68 hcca_t *hcca = memalign(256, sizeof(hcca_t)); 69 if (hcca) 70 bzero(hcca, sizeof(hcca_t)); 71 return hcca; 72 } 73 74 /** Set HCCA interrupt endpoint pointer table entry. 75 * @param hcca HCCA memory structure. 76 * @param index table index. 77 * @param pa Physical address. 78 */ 79 static inline void hcca_set_int_ep(hcca_t *hcca, unsigned index, uintptr_t pa) 80 { 81 assert(hcca); 82 assert(index < HCCA_INT_EP_COUNT); 83 OHCI_MEM32_WR(hcca->int_ep[index], pa); 84 55 85 } 56 86 #endif -
uspace/drv/bus/usb/ohci/root_hub.c
r45f4f19 r1b90e90 434 434 /* Register format matches the format of port status 435 435 * field */ 436 const uint32_t data = uint32_ usb2host(OHCI_RD(436 const uint32_t data = uint32_host2usb(OHCI_RD( 437 437 instance->registers->rh_port_status[port - 1])); 438 438 TRANSFER_END_DATA(request, &data, sizeof(data));
Note:
See TracChangeset
for help on using the changeset viewer.