Changeset 708ec60 in mainline
- Timestamp:
- 2012-04-06T18:13:18Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 87739fb
- Parents:
- 2096871
- Location:
- uspace/drv/infrastructure/rootamdm37x
- Files:
-
- 2 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/infrastructure/rootamdm37x/rootamdm37x.c
r2096871 r708ec60 45 45 #include "uhh.h" 46 46 #include "usbtll.h" 47 #include "core_cm.h" 48 #include "usbhost_cm.h" 47 49 48 50 #define NAME "rootamdm37x" … … 122 124 static int usb_clocks(bool on) 123 125 { 124 uint32_t *usb_host_cm = NULL; 125 uint32_t *l4_core_cm = NULL; 126 127 int ret = pio_enable((void*)0x48005400, 8192, (void**)&usb_host_cm); 126 usbhost_cm_regs_t *usb_host_cm = NULL; 127 core_cm_regs_t *l4_core_cm = NULL; 128 129 int ret = pio_enable((void*)USBHOST_CM_BASE_ADDRESS, USBHOST_CM_SIZE, 130 (void**)&usb_host_cm); 128 131 if (ret != EOK) 129 132 return ret; 130 133 131 ret = pio_enable((void*)0x48004a00, 8192, (void**)&l4_core_cm); 134 ret = pio_enable((void*)CORE_CM_BASE_ADDRESS, CORE_CM_SIZE, 135 (void**)&l4_core_cm); 132 136 if (ret != EOK) 133 137 return ret; … … 136 140 assert(usb_host_cm); 137 141 if (on) { 138 l4_core_cm[0xe] |= 0x4; /* iclk */ 139 l4_core_cm[0x3] |= 0x4; /* fclk */ 140 141 /* offset 0x10 (0x4 int32)[0] enables fclk, 142 * offset 0x00 (0x0 int32)[0 and 1] enables iclk, 143 * offset 0x30 (0xc int32)[0] enables autoidle 144 */ 145 usb_host_cm[0x4] = 0x1; 146 usb_host_cm[0x0] = 0x3; 147 usb_host_cm[0xc] = 0x1; 142 l4_core_cm->iclken3 |= CORE_CM_ICLKEN3_EN_USBTLL_FLAG; 143 l4_core_cm->fclken3 |= CORE_CM_FCLKEN3_EN_USBTLL_FLAG; 144 usb_host_cm->iclken |= USBHOST_CM_ICLKEN_EN_USBHOST; 145 usb_host_cm->fclken |= USBHOST_CM_FCLKEN_EN_USBHOST1_FLAG; 146 usb_host_cm->fclken |= USBHOST_CM_FCLKEN_EN_USBHOST2_FLAG; 148 147 } else { 149 usb_host_cm[0xc] = 0; 150 usb_host_cm[0x0] = 0; 151 usb_host_cm[0x4] = 0; 152 l4_core_cm[0xe] &= ~0x4; 153 l4_core_cm[0x3] &= ~0x4; 154 } 148 usb_host_cm->fclken &= ~USBHOST_CM_FCLKEN_EN_USBHOST2_FLAG; 149 usb_host_cm->fclken &= ~USBHOST_CM_FCLKEN_EN_USBHOST1_FLAG; 150 usb_host_cm->iclken &= ~USBHOST_CM_ICLKEN_EN_USBHOST; 151 l4_core_cm->fclken3 &= ~CORE_CM_FCLKEN3_EN_USBTLL_FLAG; 152 l4_core_cm->iclken3 &= ~CORE_CM_ICLKEN3_EN_USBTLL_FLAG; 153 } 154 155 //TODO Unmap those registers. 155 156 156 157 return ret; … … 159 160 static int usb_tll_init() 160 161 { 162 tll_regs_t *usb_tll = NULL; 163 uhh_regs_t *uhh_conf = NULL; 164 165 int ret = pio_enable((void*)AMDM37x_USBTLL_BASE_ADDRESS, 166 AMDM37x_USBTLL_SIZE, (void**)&usb_tll); 167 if (ret != EOK) 168 return ret; 169 170 ret = pio_enable((void*)AMDM37x_UHH_BASE_ADDRESS, 171 AMDM37x_UHH_SIZE, (void**)&uhh_conf); 172 if (ret != EOK) 173 return ret; 174 175 /* Reset USB tll */ 176 usb_tll->sysconfig |= TLL_SYSCONFIG_SOFTRESET_FLAG; 177 ddf_msg(LVL_DEBUG2, "Waiting for USB TLL reset"); 178 while (!(usb_tll->sysstatus & TLL_SYSSTATUS_RESET_DONE_FLAG)); 179 ddf_msg(LVL_DEBUG, "USB TLL Reset done."); 180 161 181 return EOK; 162 182 }
Note:
See TracChangeset
for help on using the changeset viewer.