static int usb_pmic_mod_init(void) { PMIC_STATUS rs = PMIC_ERROR; init_MUTEX_LOCKED(&pmic_mx); rs = pmic_convity_open(&pmic_handle, USB); if (rs != PMIC_SUCCESS) { printk(KERN_ERR "pmic_convity_open returned error %d\n", rs); return rs; } rs = pmic_convity_set_callback(pmic_handle, pmic_event_handler, USB_DETECT_4V4_RISE | USB_DETECT_4V4_FALL | USB_DETECT_2V0_RISE | USB_DETECT_2V0_FALL | USB_DETECT_0V8_RISE | USB_DETECT_0V8_FALL | USB_DETECT_MINI_A | USB_DETECT_MINI_B); if (rs != PMIC_SUCCESS) { printk(KERN_ERR "pmic_convity_set_callback returned error %d\n", rs); return rs; } return rs; }
int mxc_pmic_mod_init(struct otg_instance *otg) { PMIC_CONVITY_USB_TRANSCEIVER_MODE transceiver; PMIC_STATUS rc = PMIC_ERROR; rc = pmic_convity_open(&pmic_handle, USB); if (rc != PMIC_SUCCESS) { printk(KERN_INFO "Failed to connect to the transceiver\n"); } TRACE_MSG0(REMOVE_TCD, "Setup the work item"); //PREPARE_WORK_ITEM(pmic_work_bh, &pmic_bh, NULL); //PREPARE_WORK_ITEM(pmic_otg_wq, &pmic_otg_event_bh, NULL); THROW_UNLESS((pmic_work_task = otg_task_init2("tcdwork", pmic_work_proc, otg, otg->tcd->TAG)), error); THROW_UNLESS((pmic_otg_task = otg_task_init2("tcdotg", pmic_otg_proc, otg, otg->tcd->TAG)), error); otg_task_start(pmic_work_task); otg_task_start(pmic_otg_task); if (pmic_convity_usb_get_xcvr(pmic_handle, &transceiver)) printk(KERN_INFO "%s: pmic_convity_get_usb_transciver failed\n", __FUNCTION__); printk(KERN_INFO "%s: tw: %02x\n", __FUNCTION__, transceiver); pmic_convity_set_callback(pmic_handle, pmic_detect_event, USB_DETECT_4V4_RISE | USB_DETECT_4V4_FALL | USB_DETECT_2V0_RISE | USB_DETECT_2V0_FALL | USB_DETECT_0V8_RISE | USB_DETECT_0V8_FALL | USB_DETECT_MINI_A | USB_DETECT_MINI_B); if (rc != PMIC_SUCCESS) { } // XXX it may be more appropriate to do this in the enable function // // and reset to something when disaabled pmic_convity_usb_otg_set_config(pmic_handle, USB_PULL_OVERRIDE); pmic_convity_usb_otg_set_config(pmic_handle, USB_USBCNTRL); start_flag = end_flag = 0; CATCH(error) { if (pmic_work_task) { otg_task_exit(pmic_work_task); pmic_work_task = NULL; } if (pmic_otg_task) { otg_task_exit(pmic_otg_task); pmic_otg_task = NULL; } return -EINVAL; } return 0; }