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

Commit 396bf1c2 authored by Richard Zhao's avatar Richard Zhao Committed by Shawn Guo
Browse files

ARM: imx6q: disable usb charger detector



The external charger detector needs to be disabled,
or the signal at DP will be poor

Signed-off-by: default avatarRichard Zhao <richard.zhao@freescale.com>
Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
parent 7571d283
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#include <linux/pinctrl/machine.h>
#include <linux/phy.h>
#include <linux/micrel_phy.h>
#include <linux/mfd/anatop.h>
#include <asm/smp_twd.h>
#include <asm/hardware/cache-l2x0.h>
#include <asm/hardware/gic.h>
@@ -113,6 +114,45 @@ static void __init imx6q_sabrelite_init(void)
	imx6q_sabrelite_cko1_setup();
}

static void __init imx6q_usb_init(void)
{
	struct device_node *np;
	struct platform_device *pdev = NULL;
	struct anatop *adata = NULL;

	np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-anatop");
	if (np)
		pdev = of_find_device_by_node(np);
	if (pdev)
		adata = platform_get_drvdata(pdev);
	if (!adata) {
		if (np)
			of_node_put(np);
		return;
	}

#define HW_ANADIG_USB1_CHRG_DETECT		0x000001b0
#define HW_ANADIG_USB2_CHRG_DETECT		0x00000210

#define BM_ANADIG_USB_CHRG_DETECT_EN_B		0x00100000
#define BM_ANADIG_USB_CHRG_DETECT_CHK_CHRG_B	0x00080000

	/*
	 * The external charger detector needs to be disabled,
	 * or the signal at DP will be poor
	 */
	anatop_write_reg(adata, HW_ANADIG_USB1_CHRG_DETECT,
			BM_ANADIG_USB_CHRG_DETECT_EN_B
			| BM_ANADIG_USB_CHRG_DETECT_CHK_CHRG_B,
			~0);
	anatop_write_reg(adata, HW_ANADIG_USB2_CHRG_DETECT,
			BM_ANADIG_USB_CHRG_DETECT_EN_B |
			BM_ANADIG_USB_CHRG_DETECT_CHK_CHRG_B,
			~0);

	of_node_put(np);
}

static void __init imx6q_init_machine(void)
{
	/*
@@ -127,6 +167,7 @@ static void __init imx6q_init_machine(void)
	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);

	imx6q_pm_init();
	imx6q_usb_init();
}

static void __init imx6q_map_io(void)