- union {
- u32 usbcmd;
- volatile struct {
- unsigned long rs:1;
- unsigned long hcreset:1;
- unsigned long frame_list_size:2;
- unsigned long periodic_sched_enable:1;
- unsigned long async_sched_enable:1;
- unsigned long irq_on_async_advance_doorbell:1;
- unsigned long light_hc_reset:1;
- unsigned long async_sched_park_mode_count:2;
- unsigned long:1;
- unsigned long async_sched_park_mode_enable:1;
- unsigned long:4;
- unsigned long irq_threshold_count:8;
- unsigned long:8;
- } __attribute__ ((packed));
- };
- union {
- u32 usbsts;
- struct {
- unsigned long usbint:1;
- unsigned long usberrint:1;
- unsigned long port_change_detect:1;
- unsigned long frame_list_rollover:1;
- unsigned long host_system_error:1;
- unsigned long irq_on_async_advance:1;
- unsigned long:6;
- unsigned long hchalted:1;
- unsigned long reclamation:1;
- unsigned long periodic_sched_status:1;
- unsigned long async_sched_status:1;
- unsigned long:16;
- } __attribute__ ((packed));
- };
- union {
- u32 usbintr;
- struct {
- unsigned long en_usb_irq:1;
- unsigned long en_usb_err_irq:1;
- unsigned long en_port_change_irq:1;
- unsigned long en_frame_list_rollover_irq:1;
- unsigned long en_host_system_error_irq:1;
- unsigned long en_irq_on_async_advance:1;
- unsigned long:26;
- } __attribute__ ((packed));
- };
+ u32 usbcmd;
+#define HC_OP_RS 1
+#define HC_OP_ASYNC_SCHED_EN_SHIFT 5
+#define HC_OP_ASYNC_SCHED_EN (1 << HC_OP_ASYNC_SCHED_EN_SHIFT)
+ u32 usbsts;
+#define HC_OP_ASYNC_SCHED_STAT_SHIFT 15
+#define HC_OP_ASYNC_SCHED_STAT (1 << HC_OP_ASYNC_SCHED_STAT_SHIFT)
+ u32 usbintr;