static int max77843_muic_adc_handler()

in extcon-max77843.c [460:530]


static int max77843_muic_adc_handler(struct max77843_muic_info *info)
{
	int ret, cable_type;
	bool attached;

	cable_type = max77843_muic_get_cable_type(info,
			MAX77843_CABLE_GROUP_ADC, &attached);

	dev_dbg(info->dev,
		"external connector is %s (adc:0x%02x, prev_adc:0x%x)\n",
		attached ? "attached" : "detached", cable_type,
		info->prev_cable_type);

	switch (cable_type) {
	case MAX77843_MUIC_ADC_RESERVED_ACC_3: /* SmartDock */
		ret = max77843_muic_dock_handler(info, attached);
		if (ret < 0)
			return ret;
		break;
	case MAX77843_MUIC_ADC_GROUND:
		ret = max77843_muic_adc_gnd_handler(info);
		if (ret < 0)
			return ret;
		break;
	case MAX77843_MUIC_ADC_FACTORY_MODE_USB_OFF:
	case MAX77843_MUIC_ADC_FACTORY_MODE_USB_ON:
	case MAX77843_MUIC_ADC_FACTORY_MODE_UART_OFF:
		ret = max77843_muic_jig_handler(info, cable_type, attached);
		if (ret < 0)
			return ret;
		break;
	case MAX77843_MUIC_ADC_SEND_END_BUTTON:
	case MAX77843_MUIC_ADC_REMOTE_S1_BUTTON:
	case MAX77843_MUIC_ADC_REMOTE_S2_BUTTON:
	case MAX77843_MUIC_ADC_REMOTE_S3_BUTTON:
	case MAX77843_MUIC_ADC_REMOTE_S4_BUTTON:
	case MAX77843_MUIC_ADC_REMOTE_S5_BUTTON:
	case MAX77843_MUIC_ADC_REMOTE_S6_BUTTON:
	case MAX77843_MUIC_ADC_REMOTE_S7_BUTTON:
	case MAX77843_MUIC_ADC_REMOTE_S8_BUTTON:
	case MAX77843_MUIC_ADC_REMOTE_S9_BUTTON:
	case MAX77843_MUIC_ADC_REMOTE_S10_BUTTON:
	case MAX77843_MUIC_ADC_REMOTE_S11_BUTTON:
	case MAX77843_MUIC_ADC_REMOTE_S12_BUTTON:
	case MAX77843_MUIC_ADC_RESERVED_ACC_1:
	case MAX77843_MUIC_ADC_RESERVED_ACC_2:
	case MAX77843_MUIC_ADC_RESERVED_ACC_4:
	case MAX77843_MUIC_ADC_RESERVED_ACC_5:
	case MAX77843_MUIC_ADC_AUDIO_DEVICE_TYPE2:
	case MAX77843_MUIC_ADC_PHONE_POWERED_DEV:
	case MAX77843_MUIC_ADC_TTY_CONVERTER:
	case MAX77843_MUIC_ADC_UART_CABLE:
	case MAX77843_MUIC_ADC_CEA936A_TYPE1_CHG:
	case MAX77843_MUIC_ADC_AV_CABLE_NOLOAD:
	case MAX77843_MUIC_ADC_CEA936A_TYPE2_CHG:
	case MAX77843_MUIC_ADC_FACTORY_MODE_UART_ON:
	case MAX77843_MUIC_ADC_AUDIO_DEVICE_TYPE1:
	case MAX77843_MUIC_ADC_OPEN:
		dev_err(info->dev,
			"accessory is %s but it isn't used (adc:0x%x)\n",
			attached ? "attached" : "detached", cable_type);
		return -EAGAIN;
	default:
		dev_err(info->dev,
			"failed to detect %s accessory (adc:0x%x)\n",
			attached ? "attached" : "detached", cable_type);
		return -EINVAL;
	}

	return 0;
}