[PATCH v6 3/7] ARM: imx6q: disable usb charger detector
Shawn Guo
shawn.guo at linaro.org
Wed Jul 11 22:06:48 EDT 2012
On Wed, Jul 11, 2012 at 07:33:41PM +0800, Richard Zhao wrote:
> The external charger detector needs to be disabled,
> or the signal at DP will be poor
>
> Signed-off-by: Richard Zhao <richard.zhao at freescale.com>
> ---
> arch/arm/mach-imx/mach-imx6q.c | 41 ++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 41 insertions(+)
>
> diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
> index 1c18d3c..63fe5d6 100644
> --- a/arch/arm/mach-imx/mach-imx6q.c
> +++ b/arch/arm/mach-imx/mach-imx6q.c
> @@ -25,6 +25,7 @@
> #include <linux/pinctrl/machine.h>
> #include <linux/phy.h>
> #include <linux/micrel_phy.h>
> +#include <linux/mfd/anatop.h>
> #include <asm/cpuidle.h>
> #include <asm/smp_twd.h>
> #include <asm/hardware/cache-l2x0.h>
> @@ -117,6 +118,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_node_by_path("/soc/aips-bus at 02000000/anatop at 020c8000");
I would suggest use of_find_compatible_node to save the open-coding of
such path.
Regards,
Shawn
> + 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)
> {
> /*
> @@ -131,6 +171,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 struct cpuidle_driver imx6q_cpuidle_driver = {
> --
> 1.7.9.5
>
>
More information about the linux-arm-kernel
mailing list