diff options
author | Vegard Storheil Eriksen <zyp@jvnv.net> | 2012-08-29 23:42:21 +0200 |
---|---|---|
committer | Vegard Storheil Eriksen <zyp@jvnv.net> | 2012-08-29 23:42:21 +0200 |
commit | 8d68e3d9823abe8a9ff6f8b0f6f4addee98bb260 (patch) | |
tree | 033013b838ec7fa895912a60a2ff8818ac8d53d0 /usb/dwc_otg_def.h | |
parent | 68e0827c55e369208f17df950f7dbcce906eeab2 (diff) |
Split USB stack into several files, started on class driver API.
Diffstat (limited to 'usb/dwc_otg_def.h')
-rw-r--r-- | usb/dwc_otg_def.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/usb/dwc_otg_def.h b/usb/dwc_otg_def.h new file mode 100644 index 0000000..2f19116 --- /dev/null +++ b/usb/dwc_otg_def.h @@ -0,0 +1,87 @@ +#ifndef DWC_OTG_DEF_H +#define DWC_OTG_DEF_H + +#include <stdint.h> + +class DWC_OTG_t { + private: + struct DWC_OTG_reg_t { + volatile uint32_t GOTGCTL; + volatile uint32_t GOTGINT; + volatile uint32_t GAHBCFG; + volatile uint32_t GUSBCFG; + volatile uint32_t GRSTCTL; + volatile uint32_t GINTSTS; + volatile uint32_t GINTMSK; + volatile uint32_t GRXSTSR; + volatile uint32_t GRXSTSP; + volatile uint32_t GRXFSIZ; + volatile uint32_t DIEPTXF0; + volatile uint32_t HNPTXSTS; + uint32_t _reserved[2]; + volatile uint32_t GCCFG; + volatile uint32_t CID; + uint32_t _reserved1[48]; + volatile uint32_t HPTXFSIZ; + volatile uint32_t DIEPTXF1; + volatile uint32_t DIEPTXF2; + volatile uint32_t DIEPTXF3; + }; + + struct DWC_OTG_dev_reg_t { + volatile uint32_t DCFG; + volatile uint32_t DCTL; + volatile uint32_t DSTS; + uint32_t _reserved; + volatile uint32_t DIEPMSK; + volatile uint32_t DOEPMSK; + volatile uint32_t DAINT; + volatile uint32_t DAINTMSK; + uint32_t _reserved1[2]; + volatile uint32_t DVBUSDIS; + volatile uint32_t DVBUSPULSE; + uint32_t _reserved2; + volatile uint32_t DIEPEMPMSK; + }; + + struct DWC_OTG_dev_iep_reg_t { + volatile uint32_t DIEPCTL; + uint32_t _reserved; + volatile uint32_t DIEPINT; + uint32_t _reserved1; + volatile uint32_t DIEPTSIZ; + uint32_t _reserved2; + volatile uint32_t DTXFSTS; + uint32_t _reserved3; + }; + + struct DWC_OTG_dev_oep_reg_t { + volatile uint32_t DOEPCTL; + uint32_t _reserved; + volatile uint32_t DOEPINT; + uint32_t _reserved1; + volatile uint32_t DOEPTSIZ; + uint32_t _reserved2[3]; + }; + + union DWC_OTG_fifo_reg_t { + volatile uint32_t reg; + volatile uint32_t buf[1024]; + }; + + public: + DWC_OTG_reg_t& reg; + DWC_OTG_dev_reg_t& dev_reg; + DWC_OTG_dev_iep_reg_t* const dev_iep_reg; + DWC_OTG_dev_oep_reg_t* const dev_oep_reg; + DWC_OTG_fifo_reg_t* const fifo; + + DWC_OTG_t(uint32_t reg_addr) : + reg(*(DWC_OTG_reg_t*)reg_addr), + dev_reg(*(DWC_OTG_dev_reg_t*)(reg_addr + 0x800)), + dev_iep_reg((DWC_OTG_dev_iep_reg_t*)(reg_addr + 0x900)), + dev_oep_reg((DWC_OTG_dev_oep_reg_t*)(reg_addr + 0xb00)), + fifo((DWC_OTG_fifo_reg_t*)(reg_addr + 0x1000)) {} +}; + +#endif |