| 1110 | ****************************************************************************/ |
| 1111 | |
| 1112 | int usbdev_register(struct usbdevclass_driver_s *driver) |
| 1113 | { |
| 1114 | struct sim_usbdev_s *priv = &g_sim_usbdev; |
| 1115 | int ret; |
| 1116 | |
| 1117 | usbtrace(TRACE_DEVREGISTER, 0); |
| 1118 | |
| 1119 | /* First hook up the driver */ |
| 1120 | |
| 1121 | sim_usbdev_devinit(priv); |
| 1122 | priv->driver = driver; |
| 1123 | |
| 1124 | /* Then bind the class driver */ |
| 1125 | |
| 1126 | ret = CLASS_BIND(driver, &priv->usbdev); |
| 1127 | if (ret) |
| 1128 | { |
| 1129 | usbtrace(TRACE_DEVERROR(SIM_TRACEERR_BINDFAILED), (uint16_t) - ret); |
| 1130 | } |
| 1131 | else |
| 1132 | { |
| 1133 | /* Setup the USB host controller */ |
| 1134 | |
| 1135 | #ifdef CONFIG_USBDEV_DUALSPEED |
| 1136 | ret = host_usbdev_init(SIM_USB_SPEED); |
| 1137 | #else |
| 1138 | ret = host_usbdev_init(USB_SPEED_FULL); |
| 1139 | #endif |
| 1140 | } |
| 1141 | |
| 1142 | work_queue_wq(g_work_queue, &priv->work, sim_usbdev_work, priv, |
| 1143 | SIM_USB_PERIOD); |
| 1144 | |
| 1145 | return ret; |
| 1146 | } |
| 1147 | |
| 1148 | /**************************************************************************** |
| 1149 | * Name: usbdev_unregister |
nothing calls this directly
no test coverage detected