Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 685dc9a7 authored by Chanwoo Choi's avatar Chanwoo Choi
Browse files

extcon: max8997: Set default UART/USB path on probe



This patch set default H/W line path according to platfomr data.
The MAX8997 MUIC device can possibly set UART/USB or UART_AUX
/USB_AUX to internal H/W line path of MUIC device. Namely, only
one H/W line is used for two operation.

For example,
if H/W line path of MAX8997 device set UART/USB, micro usb cable
is connected to AP(Application Processor) and if H/W line path
set UART_AUX/USB_AUX, micro usb cable is connected to CP(Coprocessor).

Signed-off-by: default avatarChanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: default avatarMyungjoo Ham <myungjoo.ham@samsung.com>
parent f73f6232
Loading
Loading
Loading
Loading
+26 −2
Original line number Original line Diff line number Diff line
@@ -127,6 +127,13 @@ struct max8997_muic_info {


	struct max8997_muic_platform_data *muic_pdata;
	struct max8997_muic_platform_data *muic_pdata;
	enum max8997_muic_charger_type pre_charger_type;
	enum max8997_muic_charger_type pre_charger_type;

	/*
	 * Default usb/uart path whether UART/USB or AUX_UART/AUX_USB
	 * h/w path of COMP2/COMN1 on CONTROL1 register.
	 */
	int path_usb;
	int path_uart;
};
};


enum {
enum {
@@ -322,7 +329,7 @@ static int max8997_muic_handle_usb(struct max8997_muic_info *info,
	int ret = 0;
	int ret = 0;


	if (usb_type == MAX8997_USB_HOST) {
	if (usb_type == MAX8997_USB_HOST) {
		ret = max8997_muic_set_path(info, CONTROL1_SW_USB, attached);
		ret = max8997_muic_set_path(info, info->path_usb, attached);
		if (ret < 0) {
		if (ret < 0) {
			dev_err(info->dev, "failed to update muic register\n");
			dev_err(info->dev, "failed to update muic register\n");
			return ret;
			return ret;
@@ -378,7 +385,7 @@ static int max8997_muic_handle_jig_uart(struct max8997_muic_info *info,
	int ret = 0;
	int ret = 0;


	/* switch to UART */
	/* switch to UART */
	ret = max8997_muic_set_path(info, CONTROL1_SW_UART, attached);
	ret = max8997_muic_set_path(info, info->path_uart, attached);
	if (ret) {
	if (ret) {
		dev_err(info->dev, "failed to update muic register\n");
		dev_err(info->dev, "failed to update muic register\n");
		return -EINVAL;
		return -EINVAL;
@@ -694,6 +701,23 @@ static int max8997_muic_probe(struct platform_device *pdev)
		}
		}
	}
	}


	/*
	 * Default usb/uart path whether UART/USB or AUX_UART/AUX_USB
	 * h/w path of COMP2/COMN1 on CONTROL1 register.
	 */
	if (pdata->muic_pdata->path_uart)
		info->path_uart = pdata->muic_pdata->path_uart;
	else
		info->path_uart = CONTROL1_SW_UART;

	if (pdata->muic_pdata->path_usb)
		info->path_usb = pdata->muic_pdata->path_usb;
	else
		info->path_usb = CONTROL1_SW_USB;

	/* Set initial path for UART */
	 max8997_muic_set_path(info, info->path_uart, true);

	/* Set ADC debounce time */
	/* Set ADC debounce time */
	max8997_muic_set_debounce_time(info, ADC_DEBOUNCE_TIME_25MS);
	max8997_muic_set_debounce_time(info, ADC_DEBOUNCE_TIME_25MS);


+7 −0
Original line number Original line Diff line number Diff line
@@ -92,6 +92,13 @@ struct max8997_muic_reg_data {
struct max8997_muic_platform_data {
struct max8997_muic_platform_data {
	struct max8997_muic_reg_data *init_data;
	struct max8997_muic_reg_data *init_data;
	int num_init_data;
	int num_init_data;

	/*
	 * Default usb/uart path whether UART/USB or AUX_UART/AUX_USB
	 * h/w path of COMP2/COMN1 on CONTROL1 register.
	 */
	int path_usb;
	int path_uart;
};
};


enum max8997_haptic_motor_type {
enum max8997_haptic_motor_type {