Exemple #1
0
void FSA9480_ProcessDevice(u8 dev1, u8 dev2, u8 attach)
{
    DEBUG_FSA9480("[FSA9480] %s (dev1 : 0x%x, dev2 : 0x%x)\n", __func__, dev1, dev2);

    if(!attach && !chip_error && (mtp_mode_on == 1))
        chip_error = 0xAE;

    if(dev1)
    {
        switch(dev1)
        {
        case FSA9480_DEV_TY1_AUD_TY1:
            DEBUG_FSA9480("Audio Type1 ");
            if(attach & FSA9480_INT1_ATTACH)
                DEBUG_FSA9480("FSA9480_DEV_TY1_AUD_TY1 --- ATTACH\n");
            else
                DEBUG_FSA9480("FSA9480_DEV_TY1_AUD_TY1 --- DETACH\n");
            break;

        case FSA9480_DEV_TY1_AUD_TY2:
            DEBUG_FSA9480("Audio Type2 ");
            break;

        case FSA9480_DEV_TY1_USB:
            DEBUG_FSA9480("USB attach or detach: %d\n",attach);
            if(attach & FSA9480_INT1_ATTACH)
            {
                DEBUG_FSA9480("FSA9480_DEV_TY1_USB --- ATTACH\n");
                MicroUSBStatus = 1;
                log_via_usb = log_usb_enable;
#if 0
                if(connectivity_switching_init_state)
                    s3c_usb_cable(1);
#endif
                usb_switch_state();
                if(!askonstatus)
                    UsbIndicator(1);
                else
                    inaskonstatus = 0;
                uUSB_check_finished = 1;  // finished
            }
            else if(attach & FSA9480_INT1_DETACH)
            {
                MicroUSBStatus = 0;
                inaskonstatus = 0;
                chip_error = 0;
#if 0
                if(connectivity_switching_init_state)
                    s3c_usb_cable(0);
#endif
                UsbIndicator(0);
                askon_gadget_disconnect();
                DEBUG_FSA9480("FSA9480_DEV_TY1_USB --- DETACH\n");
                uUSB_check_finished = 0;  // finished
            }
            break;

        case FSA9480_DEV_TY1_UART:
            DEBUG_FSA9480("UART\n");
            break;

        case FSA9480_DEV_TY1_CAR_KIT:
            DEBUG_FSA9480("Carkit\n");
            break;

        case FSA9480_DEV_TY1_USB_CHG:
            DEBUG_FSA9480("USB\n");
            break;

        case FSA9480_DEV_TY1_DED_CHG:
        {
            if(attach & FSA9480_INT1_ATTACH)
            {
                DEBUG_FSA9480("Dedicated Charger ATTACH\n");
                uUSB_check_finished = 1;  // finished
                //A9480_ChangePathToAudio(TRUE);
            }
            else if(attach & FSA9480_INT1_DETACH)
            {
                DEBUG_FSA9480("Dedicated Charger DETACH\n");
                uUSB_check_finished = 0;  // finished
                //A9480_ChangePathToAudio(FALSE);
            }
        }
        break;

        case FSA9480_DEV_TY1_USB_OTG:
            DEBUG_FSA9480("USB OTG\n");
            break;

        default:
            DEBUG_FSA9480("Unknown device\n");
            break;
        }

    }

    if(dev2)
    {
        switch(dev2)
        {
        case FSA9480_DEV_TY2_JIG_USB_ON:
            DEBUG_FSA9480("JIG USB ON attach or detach: %d",attach);
            if(attach & FSA9480_INT1_ATTACH)
            {
                DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_USB_ON --- ATTACH\n");
                MicroJigUSBOnStatus = 1;
#if 0
                if(connectivity_switching_init_state)
                    s3c_usb_cable(1);
#endif
                usb_switch_state();
                if(!askonstatus)
                    UsbIndicator(1);
                else
                    inaskonstatus = 0;
            }
            else if(attach & FSA9480_INT1_DETACH)
            {
                DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_USB_ON --- DETACH\n");
                chip_error = 0;
                MicroJigUSBOnStatus = 0;
                inaskonstatus = 0;
#if 0
                if(connectivity_switching_init_state)
                    s3c_usb_cable(0);
#endif
                UsbIndicator(0);
                askon_gadget_disconnect();
            }
            break;

        case FSA9480_DEV_TY2_JIG_USB_OFF:
            if(attach & FSA9480_INT1_ATTACH)
            {
                DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_USB_OFF --- ATTACH\n");
                MicroJigUSBOffStatus = 1;
#if 0
                if(connectivity_switching_init_state)
                    s3c_usb_cable(1);
#endif
                usb_switch_state();
                if(!askonstatus)
                    UsbIndicator(1);
                else
                    inaskonstatus = 0;
            }
            else if(attach & FSA9480_INT1_DETACH)
            {
                DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_USB_OFF --- DETACH\n");
                chip_error = 0;
                MicroJigUSBOffStatus = 0;
                inaskonstatus = 0;
#if 0
                if(connectivity_switching_init_state)
                    s3c_usb_cable(0);
#endif
                UsbIndicator(0);
                askon_gadget_disconnect();
            }
            DEBUG_FSA9480("JIG USB OFF \n");
            break;

        case FSA9480_DEV_TY2_JIG_UART_ON:
            if(attach & FSA9480_INT1_ATTACH)
            {
                DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_UART_ON --- ATTACH\n");
                set_dock_state((int)CAR_DOCK_INSERTED);
                g_dock = CAR_DOCK_INSERTED;
            }
            else
            {
                DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_UART_ON --- DETACH\n");
                set_dock_state((int)DOCK_REMOVED);
                g_dock = DOCK_REMOVED;

            }
            DEBUG_FSA9480("JIG UART ON\n");
            break;

        case FSA9480_DEV_TY2_JIG_UART_OFF:
            if(attach & FSA9480_INT1_ATTACH)
            {
                DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_UART_OFF --- ATTACH\n");
                MicroJigUARTOffStatus = 1;
                uart_insert_switch_state();
            }
            else
            {
                DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_UART_OFF --- DETACH\n");
                MicroJigUARTOffStatus = 0;
                uart_remove_switch_state();
            }
            DEBUG_FSA9480("JIT UART OFF\n");
            break;

        case FSA9480_DEV_TY2_PDD:
            DEBUG_FSA9480("PPD \n");
            break;

        case FSA9480_DEV_TY2_TTY:
            DEBUG_FSA9480("TTY\n");
            break;

        case FSA9480_DEV_TY2_AV:
            DEBUG_FSA9480("AudioVideo\n");
            if (attach & FSA9480_INT1_DETACH) {
                DEBUG_FSA9480("FSA9480_disable_spk\n");
                set_dock_state((int)DOCK_REMOVED);
                g_dock = DOCK_REMOVED;
            }
            else {
                DEBUG_FSA9480("FSA9480_enable_spk\n");
                set_dock_state((int)HOME_DOCK_INSERTED);
                FSA9480_Enable_SPK(1);
                g_dock = HOME_DOCK_INSERTED;
            }
            break;

        default:
            DEBUG_FSA9480("Unknown device\n");
            break;
        }
    }

    if((attach == FSA9480_INT1_ATTACH) && (chip_error == 0xAE) && (mtp_mode_on == 1)) {
        ap_usb_power_on(1);
        chip_error = 0;
    }

}
Exemple #2
0
static void FSA9480_ProcessDevice(u8 dev1, u8 dev2, u8 attach)
{
	DEBUG_FSA9480("[FSA9480] %s (dev1 : 0x%x, dev2 : 0x%x)\n", __func__, dev1, dev2);

	if(dev1)
	{
		switch(dev1)
		{
			case FSA9480_DEV_TY1_AUD_TY1:
//				DEBUG_FSA9480("Audio Type1 ");
				if(attach & FSA9480_INT1_ATTACH)
					DEBUG_FSA9480("FSA9480_DEV_TY1_AUD_TY1 --- ATTACH\n");
				else
					DEBUG_FSA9480("FSA9480_DEV_TY1_AUD_TY1 --- DETACH\n");
				break;

			case FSA9480_DEV_TY1_AUD_TY2:
				DEBUG_FSA9480("Audio Type2 ");
				break;

			case FSA9480_DEV_TY1_USB:
//				DEBUG_FSA9480("USB attach or detach: %d\n",attach);
				if(attach & FSA9480_INT1_ATTACH)
				{
					DEBUG_FSA9480("FSA9480_DEV_TY1_USB --- ATTACH\n");
					MicroUSBStatus = 1;
					usb_switch_state();

					if(!askonstatus)
						UsbIndicator(1);
					else
						inaskonstatus = 0;				

					uUSB_check_finished = 1;  // finished
				}
				else if(attach & FSA9480_INT1_DETACH)
				{	
					DEBUG_FSA9480("FSA9480_DEV_TY1_USB --- DETACH\n");
					MicroUSBStatus = 0;
					UsbIndicator(0);
					askon_gadget_disconnect();

					uUSB_check_finished = 0;  // finished
				}
				break;

			case FSA9480_DEV_TY1_UART:
				DEBUG_FSA9480("UART\n");
				break;

			case FSA9480_DEV_TY1_CAR_KIT:
				DEBUG_FSA9480("Carkit\n");
				break;

			case FSA9480_DEV_TY1_USB_CHG:
				DEBUG_FSA9480("USB\n");
				break;

			case FSA9480_DEV_TY1_DED_CHG:
				{
					if(attach & FSA9480_INT1_ATTACH)
					{
						DEBUG_FSA9480("Dedicated Charger ATTACH\n");
						uUSB_check_finished = 1;  // finished
						//A9480_ChangePathToAudio(TRUE);
					}					
					else if(attach & FSA9480_INT1_DETACH)
					{				
						DEBUG_FSA9480("Dedicated Charger DETACH\n");
						uUSB_check_finished = 0;  // finished
						//A9480_ChangePathToAudio(FALSE);
					}
				}
				break;

			case FSA9480_DEV_TY1_USB_OTG:
				DEBUG_FSA9480("USB OTG\n");
				break;

			default:
				DEBUG_FSA9480("Unknown device\n");
				break;
		}

	}

	if(dev2)
	{
		switch(dev2)
		{
			case FSA9480_DEV_TY2_JIG_USB_ON:
//				DEBUG_FSA9480("JIG USB ON attach or detach: %d\n",attach);

				if(HWREV >= 13) {  // To support JIG_USB_ON (Above Rev0.7)
					if(maxim_lpm_chg_status())
					{
						DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_USB_ON --- ATTACH (VBUS)\n");
						MicroJigUSBOnStatus = 1;
						usb_switch_state();

						if(!askonstatus)
							UsbIndicator(1);
						else
							inaskonstatus = 0;
	
						uUSB_check_finished = 1;  // finished
					}
					else
					{
						DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_USB_ON --- DETACH (VBUS)\n");
						MicroJigUSBOnStatus = 0;
						inaskonstatus = 0;
						UsbIndicator(0);
						askon_gadget_disconnect();
	
						uUSB_check_finished = 0;  // finished
					}
				}
				else {
					if(attach & FSA9480_INT1_ATTACH)
					{
						DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_USB_ON --- ATTACH\n");
						MicroJigUSBOnStatus = 1;
						usb_switch_state();

						if(!askonstatus)
							UsbIndicator(1);
						else
							inaskonstatus = 0;
					}
					else if(attach & FSA9480_INT1_DETACH)
					{
						DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_USB_ON --- DETACH\n");
						MicroJigUSBOnStatus = 0;
						inaskonstatus = 0;
						UsbIndicator(0);
						askon_gadget_disconnect();
					}
				}
				break;

			case FSA9480_DEV_TY2_JIG_USB_OFF:
//				DEBUG_FSA9480("JIG USB OFF attach or detach: %d\n",attach);

				if(HWREV >= 13) {  // To support JIG_USB_OFF (Above Rev0.7)
					if(maxim_lpm_chg_status())
					{
						DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_USB_OFF --- ATTACH (VBUS)\n");
						MicroJigUSBOnStatus = 1;
						usb_switch_state();

						if(!askonstatus)
							UsbIndicator(1);
						else
							inaskonstatus = 0;
	
						uUSB_check_finished = 1;  // finished
					}
					else
					{
						DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_USB_OFF --- DETACH (VBUS)\n");
						MicroJigUSBOnStatus = 0;
						inaskonstatus = 0;
						UsbIndicator(0);
						askon_gadget_disconnect();
	
						uUSB_check_finished = 0;  // finished
					}
				}
				else {
					if(attach & FSA9480_INT1_ATTACH)
					{
						DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_USB_OFF --- ATTACH\n");
						MicroJigUSBOffStatus = 1;
						usb_switch_state();

						if(!askonstatus)
							UsbIndicator(1);
						else
							inaskonstatus = 0;
					}
					else if(attach & FSA9480_INT1_DETACH)
					{
						DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_USB_OFF --- DETACH\n");
						MicroJigUSBOffStatus = 0;
						inaskonstatus = 0;
						UsbIndicator(0);
						askon_gadget_disconnect();
					}
				}
				break;

			case FSA9480_DEV_TY2_JIG_UART_ON:
				if(attach & FSA9480_INT1_ATTACH)
				{
					DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_UART_ON --- ATTACH\n");
//					car_vps_status_change(1);
				}
				else
				{
					DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_UART_ON --- DETACH\n");
//					car_vps_status_change(0);
				}
//				DEBUG_FSA9480("JIG UART ON\n");
				break;

			case FSA9480_DEV_TY2_JIG_UART_OFF:
				if(attach & FSA9480_INT1_ATTACH)
				{
					DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_UART_OFF --- ATTACH\n");
					MicroJigUARTOffStatus = 1;
					uart_insert_switch_state();
				}
				else
				{
					DEBUG_FSA9480("FSA9480_DEV_TY2_JIG_UART_OFF --- DETACH\n");
					MicroJigUARTOffStatus = 0;
					uart_remove_switch_state();
				}
//				DEBUG_FSA9480("JIT UART OFF\n");
				break;

			case FSA9480_DEV_TY2_PDD:
				DEBUG_FSA9480("PPD \n");
				break;

			case FSA9480_DEV_TY2_TTY:
				DEBUG_FSA9480("TTY\n");
				break;

			case FSA9480_DEV_TY2_AV:
//				DEBUG_FSA9480("AudioVideo\n");
				if(attach & FSA9480_INT1_ATTACH)
					DEBUG_FSA9480("FSA9480_DEV_TY2_AV --- ATTACH\n");
				else
					DEBUG_FSA9480("FSA9480_DEV_TY2_AV --- DETACH\n");
				break;

			default:
				DEBUG_FSA9480("Unknown device\n");
				break;
		}
	}

}