Exemplo n.º 1
0
static void FSA9480_ReadIntRegister(struct work_struct * work)
{
	u8 interrupt1 , device1, device2, temp;

	DEBUG_FSA9480("[FSA9480] %s\n", __func__);

	 fsa9480_read( REGISTER_INTERRUPT1, &interrupt1);
 	 msleep(5);
	
	 fsa9480_read( REGISTER_DEVICETYPE1, &device1);
 	 msleep(5);

	 fsa9480_read( REGISTER_DEVICETYPE2, &device2);

	 usb_state = (device2 << 8) | (device1 << 0);

	if((interrupt1 & FSA9480_INT1_ATTACH) ||
		(FSA9480_Get_JIG_Status() && maxim_lpm_chg_status()))
	{
		fsa9480_device1 = device1;
		fsa9480_device2 = device2;

		if(fsa9480_device1 != FSA9480_DEV_TY1_DED_CHG) {
				s3c_usb_cable(USB_CABLE_ATTACHED);
		}

		if(fsa9480_device1&FSA9480_DEV_TY1_CAR_KIT)
		{
			msleep(5);
			fsa9480_write( REGISTER_CARKITSTATUS, 0x02);

			msleep(5);
			fsa9480_read( REGISTER_CARKITINT1, &temp);
		}
	}

 	 msleep(5);

	 fsa9480_write( REGISTER_CONTROL, 0x1E);
	 fsa9480_write( REGISTER_INTERRUPTMASK1, 0xFC);

	 FSA9480_ProcessDevice(fsa9480_device1, fsa9480_device2, interrupt1);

	if((interrupt1 & FSA9480_INT1_DETACH) ||
		(FSA9480_Get_JIG_Status() && !maxim_lpm_chg_status()))
	{
		if(fsa9480_device1 != FSA9480_DEV_TY1_DED_CHG) {
				s3c_usb_cable(USB_CABLE_DETACHED);
		}

		fsa9480_device1 = 0;
		fsa9480_device2 = 0;
	}
	
	enable_irq(IRQ_FSA9480_INTB);
}
Exemplo n.º 2
0
void FSA9480_ReadIntRegister(struct work_struct *work)
{
    struct i2c_client *client = fsa9480_i2c_client;
    u8 interrupt1 ,interrupt2 ,device1, device2, temp;

    DEBUG_FSA9480("[FSA9480] %s\n", __func__);

    fsa9480_read(client, REGISTER_INTERRUPT1, &interrupt1);
    msleep(5);

    fsa9480_read(client, REGISTER_INTERRUPT2, &interrupt2);
    msleep(5);

    fsa9480_read(client, REGISTER_DEVICETYPE1, &device1);
    msleep(5);

    fsa9480_read(client, REGISTER_DEVICETYPE2, &device2);

    usb_state = (device2 << 8) | (device1 << 0);

    if(interrupt1 & FSA9480_INT1_ATTACH)
    {
        fsa9480_device1 = device1;
        fsa9480_device2 = device2;

        if(fsa9480_device1 != FSA9480_DEV_TY1_DED_CHG) {
            //DEBUG_FSA9480("FSA9480_enable LDO8\n");
            s3c_usb_cable(1);
        }

        if(fsa9480_device1&FSA9480_DEV_TY1_CAR_KIT)
        {
            msleep(5);
            fsa9480_write(client, REGISTER_CARKITSTATUS, 0x02);

            msleep(5);
            fsa9480_read(client, REGISTER_CARKITINT1, &temp);
        }
    }

    msleep(5);

    fsa9480_write(client, REGISTER_CONTROL, 0x1E);
    fsa9480_write(client, REGISTER_INTERRUPTMASK1, 0xFC);
#if defined(CONFIG_ARIES_NTT) // Modify NTTS1
    //syyoon 20100724	 fix for SC - Ad_10_2nd - 0006. When USB is removed, sometimes attatch value gets 0x00
    if((fsa9480_device1 == FSA9480_DEV_TY1_USB) && (!interrupt1)) {
        printk("[FSA9480] dev1=usb, attach change is from 0 to 2\n");
        interrupt1 = FSA9480_INT1_DETACH;
    }
#endif
    FSA9480_ProcessDevice(fsa9480_device1, fsa9480_device2, interrupt1);

    if(interrupt1 & FSA9480_INT1_DETACH)
    {
        if(fsa9480_device1 != FSA9480_DEV_TY1_DED_CHG) {
            //DEBUG_FSA9480("FSA9480_disable LDO8\n");
            s3c_usb_cable(0);
        }

        fsa9480_device1 = 0;
        fsa9480_device2 = 0;
    }

    enable_irq(IRQ_FSA9480_INTB);
}