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;
}
示例#2
0
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;


}