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

Commit 810d601f authored by Chanwoo Choi's avatar Chanwoo Choi
Browse files

extcon: max8997: Check the pointer of platform data to protect null pointer error



This patch check the pointer of platform data to protect
kernel panic when platform data is not used and code clean.

Signed-off-by: default avatarChanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: default avatarMyungjoo Ham <myungjoo.ham@samsung.com>
parent f6161aa1
Loading
Loading
Loading
Loading
+34 −22
Original line number Diff line number Diff line
@@ -712,30 +712,46 @@ static int max8997_muic_probe(struct platform_device *pdev)
		goto err_irq;
	}

	/* Initialize registers according to platform data */
	if (pdata->muic_pdata) {
		struct max8997_muic_platform_data *mdata = info->muic_pdata;
		struct max8997_muic_platform_data *muic_pdata
			= pdata->muic_pdata;

		for (i = 0; i < mdata->num_init_data; i++) {
			max8997_write_reg(info->muic, mdata->init_data[i].addr,
					mdata->init_data[i].data);
		}
		/* Initialize registers according to platform data */
		for (i = 0; i < muic_pdata->num_init_data; i++) {
			max8997_write_reg(info->muic,
					muic_pdata->init_data[i].addr,
					muic_pdata->init_data[i].data);
		}

		/*
		 * 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;
		if (muic_pdata->path_uart)
			info->path_uart = 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;
		if (muic_pdata->path_usb)
			info->path_usb = muic_pdata->path_usb;
		else
			info->path_usb = CONTROL1_SW_USB;

		/*
		 * Default delay time for detecting cable state
		 * after certain time.
		 */
		if (muic_pdata->detcable_delay_ms)
			delay_jiffies =
				msecs_to_jiffies(muic_pdata->detcable_delay_ms);
		else
			delay_jiffies = msecs_to_jiffies(DELAY_MS_DEFAULT);
	} else {
		info->path_uart = CONTROL1_SW_UART;
		info->path_usb = CONTROL1_SW_USB;
		delay_jiffies = msecs_to_jiffies(DELAY_MS_DEFAULT);
	}

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

@@ -751,10 +767,6 @@ static int max8997_muic_probe(struct platform_device *pdev)
	 * driver should notify cable state to upper layer.
	 */
	INIT_DELAYED_WORK(&info->wq_detcable, max8997_muic_detect_cable_wq);
	if (pdata->muic_pdata->detcable_delay_ms)
		delay_jiffies = msecs_to_jiffies(pdata->muic_pdata->detcable_delay_ms);
	else
		delay_jiffies = msecs_to_jiffies(DELAY_MS_DEFAULT);
	schedule_delayed_work(&info->wq_detcable, delay_jiffies);

	return 0;