1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#[doc = r" Register block"]
#[repr(C)]
pub struct RegisterBlock {
    #[doc = "0x00 - BCD representation of the version of the HCI specification that is implemented by the Host Controller (HC)"]
    pub hcrevision: HCREVISION,
    #[doc = "0x04 - Defines the operating modes of the HC"]
    pub hccontrol: HCCONTROL,
    #[doc = "0x08 - This register is used to receive the commands from the Host Controller Driver (HCD)"]
    pub hccommandstatus: HCCOMMANDSTATUS,
    #[doc = "0x0c - Indicates the status on various events that cause hardware interrupts by setting the appropriate bits"]
    pub hcinterruptstatus: HCINTERRUPTSTATUS,
    #[doc = "0x10 - Controls the bits in the HcInterruptStatus register and indicates which events will generate a hardware interrupt"]
    pub hcinterruptenable: HCINTERRUPTENABLE,
    #[doc = "0x14 - The bits in this register are used to disable corresponding bits in the HCInterruptStatus register and in turn disable that event leading to hardware interrupt"]
    pub hcinterruptdisable: HCINTERRUPTDISABLE,
    #[doc = "0x18 - Contains the physical address of the host controller communication area"]
    pub hchcca: HCHCCA,
    #[doc = "0x1c - Contains the physical address of the current isochronous or interrupt endpoint descriptor"]
    pub hcperiodcurrented: HCPERIODCURRENTED,
    #[doc = "0x20 - Contains the physical address of the first endpoint descriptor of the control list"]
    pub hccontrolheaded: HCCONTROLHEADED,
    #[doc = "0x24 - Contains the physical address of the current endpoint descriptor of the control list"]
    pub hccontrolcurrented: HCCONTROLCURRENTED,
    #[doc = "0x28 - Contains the physical address of the first endpoint descriptor of the bulk list"]
    pub hcbulkheaded: HCBULKHEADED,
    #[doc = "0x2c - Contains the physical address of the current endpoint descriptor of the bulk list"]
    pub hcbulkcurrented: HCBULKCURRENTED,
    #[doc = "0x30 - Contains the physical address of the last transfer descriptor added to the 'Done' queue"]
    pub hcdonehead: HCDONEHEAD,
    #[doc = "0x34 - Defines the bit time interval in a frame and the full speed maximum packet size which would not cause an overrun"]
    pub hcfminterval: HCFMINTERVAL,
    #[doc = "0x38 - A 14-bit counter showing the bit time remaining in the current frame"]
    pub hcfmremaining: HCFMREMAINING,
    #[doc = "0x3c - Contains a 16-bit counter and provides the timing reference among events happening in the HC and the HCD"]
    pub hcfmnumber: HCFMNUMBER,
    #[doc = "0x40 - Contains a programmable 14-bit value which determines the earliest time HC should start processing a periodic list"]
    pub hcperiodicstart: HCPERIODICSTART,
    #[doc = "0x44 - Contains 11-bit value which is used by the HC to determine whether to commit to transfer a maximum of 8-byte LS packet before EOF"]
    pub hclsthreshold: HCLSTHRESHOLD,
    #[doc = "0x48 - First of the two registers which describes the characteristics of the root hub"]
    pub hcrhdescriptora: HCRHDESCRIPTORA,
    #[doc = "0x4c - Second of the two registers which describes the characteristics of the Root Hub"]
    pub hcrhdescriptorb: HCRHDESCRIPTORB,
    #[doc = "0x50 - This register is divided into two parts"]
    pub hcrhstatus: HCRHSTATUS,
    #[doc = "0x54 - Controls and reports the port events on a per-port basis"]
    pub hcrhportstatus: HCRHPORTSTATUS,
    _reserved0: [u8; 4usize],
    #[doc = "0x5c - Controls the port if it is attached to the host block or the device block"]
    pub portmode: PORTMODE,
}
#[doc = "BCD representation of the version of the HCI specification that is implemented by the Host Controller (HC)"]
pub struct HCREVISION {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "BCD representation of the version of the HCI specification that is implemented by the Host Controller (HC)"]
pub mod hcrevision;
#[doc = "Defines the operating modes of the HC"]
pub struct HCCONTROL {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Defines the operating modes of the HC"]
pub mod hccontrol;
#[doc = "This register is used to receive the commands from the Host Controller Driver (HCD)"]
pub struct HCCOMMANDSTATUS {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "This register is used to receive the commands from the Host Controller Driver (HCD)"]
pub mod hccommandstatus;
#[doc = "Indicates the status on various events that cause hardware interrupts by setting the appropriate bits"]
pub struct HCINTERRUPTSTATUS {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Indicates the status on various events that cause hardware interrupts by setting the appropriate bits"]
pub mod hcinterruptstatus;
#[doc = "Controls the bits in the HcInterruptStatus register and indicates which events will generate a hardware interrupt"]
pub struct HCINTERRUPTENABLE {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Controls the bits in the HcInterruptStatus register and indicates which events will generate a hardware interrupt"]
pub mod hcinterruptenable;
#[doc = "The bits in this register are used to disable corresponding bits in the HCInterruptStatus register and in turn disable that event leading to hardware interrupt"]
pub struct HCINTERRUPTDISABLE {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "The bits in this register are used to disable corresponding bits in the HCInterruptStatus register and in turn disable that event leading to hardware interrupt"]
pub mod hcinterruptdisable;
#[doc = "Contains the physical address of the host controller communication area"]
pub struct HCHCCA {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Contains the physical address of the host controller communication area"]
pub mod hchcca;
#[doc = "Contains the physical address of the current isochronous or interrupt endpoint descriptor"]
pub struct HCPERIODCURRENTED {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Contains the physical address of the current isochronous or interrupt endpoint descriptor"]
pub mod hcperiodcurrented;
#[doc = "Contains the physical address of the first endpoint descriptor of the control list"]
pub struct HCCONTROLHEADED {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Contains the physical address of the first endpoint descriptor of the control list"]
pub mod hccontrolheaded;
#[doc = "Contains the physical address of the current endpoint descriptor of the control list"]
pub struct HCCONTROLCURRENTED {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Contains the physical address of the current endpoint descriptor of the control list"]
pub mod hccontrolcurrented;
#[doc = "Contains the physical address of the first endpoint descriptor of the bulk list"]
pub struct HCBULKHEADED {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Contains the physical address of the first endpoint descriptor of the bulk list"]
pub mod hcbulkheaded;
#[doc = "Contains the physical address of the current endpoint descriptor of the bulk list"]
pub struct HCBULKCURRENTED {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Contains the physical address of the current endpoint descriptor of the bulk list"]
pub mod hcbulkcurrented;
#[doc = "Contains the physical address of the last transfer descriptor added to the 'Done' queue"]
pub struct HCDONEHEAD {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Contains the physical address of the last transfer descriptor added to the 'Done' queue"]
pub mod hcdonehead;
#[doc = "Defines the bit time interval in a frame and the full speed maximum packet size which would not cause an overrun"]
pub struct HCFMINTERVAL {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Defines the bit time interval in a frame and the full speed maximum packet size which would not cause an overrun"]
pub mod hcfminterval;
#[doc = "A 14-bit counter showing the bit time remaining in the current frame"]
pub struct HCFMREMAINING {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "A 14-bit counter showing the bit time remaining in the current frame"]
pub mod hcfmremaining;
#[doc = "Contains a 16-bit counter and provides the timing reference among events happening in the HC and the HCD"]
pub struct HCFMNUMBER {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Contains a 16-bit counter and provides the timing reference among events happening in the HC and the HCD"]
pub mod hcfmnumber;
#[doc = "Contains a programmable 14-bit value which determines the earliest time HC should start processing a periodic list"]
pub struct HCPERIODICSTART {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Contains a programmable 14-bit value which determines the earliest time HC should start processing a periodic list"]
pub mod hcperiodicstart;
#[doc = "Contains 11-bit value which is used by the HC to determine whether to commit to transfer a maximum of 8-byte LS packet before EOF"]
pub struct HCLSTHRESHOLD {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Contains 11-bit value which is used by the HC to determine whether to commit to transfer a maximum of 8-byte LS packet before EOF"]
pub mod hclsthreshold;
#[doc = "First of the two registers which describes the characteristics of the root hub"]
pub struct HCRHDESCRIPTORA {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "First of the two registers which describes the characteristics of the root hub"]
pub mod hcrhdescriptora;
#[doc = "Second of the two registers which describes the characteristics of the Root Hub"]
pub struct HCRHDESCRIPTORB {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Second of the two registers which describes the characteristics of the Root Hub"]
pub mod hcrhdescriptorb;
#[doc = "This register is divided into two parts"]
pub struct HCRHSTATUS {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "This register is divided into two parts"]
pub mod hcrhstatus;
#[doc = "Controls and reports the port events on a per-port basis"]
pub struct HCRHPORTSTATUS {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Controls and reports the port events on a per-port basis"]
pub mod hcrhportstatus;
#[doc = "Controls the port if it is attached to the host block or the device block"]
pub struct PORTMODE {
    register: ::vcell::VolatileCell<u32>,
}
#[doc = "Controls the port if it is attached to the host block or the device block"]
pub mod portmode;