linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: kmpark@infradead.org (Kyungmin Park)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC][PATCH 4/5] ARM: S5P64x0: Adding OTG PHY control code
Date: Wed, 22 Jun 2011 13:18:49 +0900	[thread overview]
Message-ID: <BANLkTinTo7hhfbXFd4oxiSsjbWSqA-9ugg@mail.gmail.com> (raw)
In-Reply-To: <1308639827-2121-5-git-send-email-p.paneri@samsung.com>

On Tue, Jun 21, 2011 at 4:03 PM,  <p.paneri@samsung.com> wrote:
> From: Praveen Paneri <p.paneri@samsung.com>
>
> A generic method to initialize and exit OTG PHY which can be
> used for all the samsung SoCs.
> OTG platdata structure added in platform to pass required
> platform specific functions and data to the driver.
>
> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
> ---
> ?arch/arm/mach-s5p64x0/Makefile ? ? ? ? ? | ? ?1 +
> ?arch/arm/mach-s5p64x0/include/mach/map.h | ? ?4 +
> ?arch/arm/mach-s5p64x0/setup-otg-phy.c ? ?| ? 89 ++++++++++++++++++++++++++++++
> ?arch/arm/plat-s5p/include/plat/otg.h ? ? | ? 29 ++++++++++
> ?4 files changed, 123 insertions(+), 0 deletions(-)
> ?create mode 100644 arch/arm/mach-s5p64x0/setup-otg-phy.c
> ?create mode 100644 arch/arm/plat-s5p/include/plat/otg.h
>
> diff --git a/arch/arm/mach-s5p64x0/Makefile b/arch/arm/mach-s5p64x0/Makefile
> index ae6bf6f..611fb3a 100644
> --- a/arch/arm/mach-s5p64x0/Makefile
> +++ b/arch/arm/mach-s5p64x0/Makefile
> @@ -28,3 +28,4 @@ obj-y ? ? ? ? ? ? ? ? ? ? ? ? += dev-audio.o
> ?obj-$(CONFIG_S3C64XX_DEV_SPI) ?+= dev-spi.o
>
> ?obj-$(CONFIG_S5P64X0_SETUP_I2C1) ? ? ? += setup-i2c1.o
> +obj-$(CONFIG_S3C_DEV_DWC_OTG) ?+= setup-otg-phy.o
> diff --git a/arch/arm/mach-s5p64x0/include/mach/map.h b/arch/arm/mach-s5p64x0/include/mach/map.h
> index 95c9125..717c279 100644
> --- a/arch/arm/mach-s5p64x0/include/mach/map.h
> +++ b/arch/arm/mach-s5p64x0/include/mach/map.h
> @@ -44,6 +44,8 @@
> ?#define S5P64X0_PA_SPI1 ? ? ? ? ? ? ? ?0xEC500000
>
> ?#define S5P64X0_PA_HSOTG ? ? ? 0xED100000
> +#define S5P64X0_PA_USB_HSPHY ? 0xED200000
> +#define S5P64X0_VA_USB_HSPHY ? S3C_ADDR_CPU(0x00100000)
>
> ?#define S5P64X0_PA_HSMMC(x) ? ?(0xED800000 + ((x) * 0x100000))
>
> @@ -71,6 +73,8 @@
> ?#define S5P_PA_TIMER ? ? ? ? ? S5P64X0_PA_TIMER
>
> ?#define SAMSUNG_PA_ADC ? ? ? ? S5P64X0_PA_ADC
> +#define S3C_PA_USB_HSOTG ? ? ? S5P64X0_PA_HSOTG
> +#define S3C_VA_USB_HSPHY ? ? ? ?S5P64X0_VA_USB_HSPHY
>
> ?/* UART */
>
> diff --git a/arch/arm/mach-s5p64x0/setup-otg-phy.c b/arch/arm/mach-s5p64x0/setup-otg-phy.c
> new file mode 100644
> index 0000000..c351554
> --- /dev/null
> +++ b/arch/arm/mach-s5p64x0/setup-otg-phy.c
> @@ -0,0 +1,89 @@
> +/*
> + * Copyright (C) 2011 Samsung Electronics Co.Ltd
> + * Author: Praveen Paneri <p.paneri@samsung.com>
> + * based on arch/arm/mach-exynos4/setup-usb-phy.c
> + * written by Joonyoung Shim <jy0922.shim@samsung.com>
> + *
> + * ?This program is free software; you can redistribute ?it and/or modify it
> + * ?under ?the terms of ?the GNU General ?Public License as published by the
> + * ?Free Software Foundation; ?either version 2 of the ?License, or (at your
> + * ?option) any later version.
> + *
> + */
> +
> +#include <linux/clk.h>
> +#include <linux/delay.h>
> +#include <linux/err.h>
> +#include <linux/io.h>
> +#include <linux/platform_device.h>
> +#include <mach/regs-clock.h>
> +#include <mach/gpio.h>
> +#include <plat/regs-usb-hsotg-phy.h>
> +#include <plat/usb-phy.h>
> +
> +struct clk *otg_clk;
> +static int s5p64x0_otg_phy_init(struct platform_device *pdev)
> +{
> + ? ? ? int err;
> +
> + ? ? ? otg_clk = clk_get(&pdev->dev, "otg");
> + ? ? ? if (IS_ERR(otg_clk)) {
> + ? ? ? ? ? ? ? dev_err(&pdev->dev, "Failed to get otg clock\n");
> + ? ? ? ? ? ? ? return PTR_ERR(otg_clk);
> + ? ? ? }
> +
> + ? ? ? err = clk_enable(otg_clk);
> + ? ? ? if (err) {
> + ? ? ? ? ? ? ? clk_put(otg_clk);
> + ? ? ? ? ? ? ? return err;
> + ? ? ? }
> +
> + ? ? ? if (gpio_is_valid(S5P6440_GPN(1))) {
> + ? ? ? ? ? ? ? err = gpio_request(S5P6440_GPN(1), "GPN");
> + ? ? ? ? ? ? ? if (err)
> + ? ? ? ? ? ? ? ? ? ? ? printk(KERN_ERR "failed to request GPN1\n");
> + ? ? ? ? ? ? ? gpio_direction_output(S5P6440_GPN(1), 1);
> + ? ? ? }

What's the GPN(1)? I think it's board specific pins. so please replace
it at board file.
> +
> + ? ? ? writel(readl(S5P64X0_OTHERS)&~S5P64X0_OTHERS_USB_SIG_MASK,
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? S5P64X0_OTHERS);
> + ? ? ? writel(0x0, S3C_PHYPWR); ? ? ? ? /* Power up */
> + ? ? ? writel(S3C_PHYCLK_CLKSEL_12M, S3C_PHYCLK);
> + ? ? ? writel(S3C_RSTCON_PHY, S3C_RSTCON);
> +
> + ? ? ? udelay(50);
> + ? ? ? writel(0x0, S3C_RSTCON);
> + ? ? ? udelay(50);
> +
> + ? ? ? return 0;
> +}
> +
> +static int s5p64x0_otg_phy_exit(struct platform_device *pdev)
> +{
> + ? ? ? writel(readl(S3C_PHYPWR)|(0x1F<<1), S3C_PHYPWR);
> + ? ? ? writel(readl(S5P64X0_OTHERS)&~S5P64X0_OTHERS_USB_SIG_MASK,
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? S5P64X0_OTHERS);
> +
> + ? ? ? gpio_free(S5P6440_GPN(1));
ditto
> +
> + ? ? ? clk_disable(otg_clk);
> + ? ? ? clk_put(otg_clk);
> +
> + ? ? ? return 0;
> +}
> +
> +int s5p_usb_phy_init(struct platform_device *pdev, int type)
> +{
> + ? ? ? if (type == S5P_USB_PHY_DEVICE)
> + ? ? ? ? ? ? ? return s5p64x0_otg_phy_init(pdev);
> +
> + ? ? ? return -EINVAL;
> +}
> +
> +int s5p_usb_phy_exit(struct platform_device *pdev, int type)
> +{
> + ? ? ? if (type == S5P_USB_PHY_DEVICE)
> + ? ? ? ? ? ? ? return s5p64x0_otg_phy_exit(pdev);
> +
> + ? ? ? return -EINVAL;
> +}
> diff --git a/arch/arm/plat-s5p/include/plat/otg.h b/arch/arm/plat-s5p/include/plat/otg.h
> new file mode 100644
> index 0000000..3111dcc
> --- /dev/null
> +++ b/arch/arm/plat-s5p/include/plat/otg.h
> @@ -0,0 +1,29 @@
> +/*
> + * Copyright (C) 2011 Samsung Electronics Co.Ltd
> + * Author: Praveen Paneri <p.paneri@samsung.com>
> + * based on arch/arm/plat-s5p/include/plat/usb-phy.h
> + * written by Joonyoung Shim <jy0922.shim@samsung.com>
> + *
> + * This program is free software; you can redistribute ?it and/or modify it
> + * under ?the terms of ?the GNU General ?Public License as published by the
> + * Free Software Foundation; ?either version 2 of the ?License, or (at your
> + * option) any later version.
> + */
> +
> +#ifndef __PLAT_S5P_OTG_H
> +#define __PLAT_S5P_OTG_H
> +
> +struct s5p_otg_platdata {
> + ? ? ? int (*phy_init)(struct platform_device *pdev, int type);
> + ? ? ? int (*phy_exit)(struct platform_device *pdev, int type);
> + ? ? ? u32 dev_rx_fifo_size;
> + ? ? ? u32 dev_nptx_fifo_size;
> + ? ? ? u32 host_rx_fifo_size;
> + ? ? ? u32 host_nptx_fifo_size;
> + ? ? ? u32 host_ch_num;
> +
> +};
> +
> +extern void s5p_otg_set_platdata(struct s5p_otg_platdata *pd);
> +
> +#endif /* __PLAT_S5P_OTG_H */
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>

  parent reply	other threads:[~2011-06-22  4:18 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-21  7:03 [RFC][PATCH 0/5] USB: DWC OTG: Add dwc_otg driver for S5P6440 samsung SoC p.paneri at samsung.com
2011-06-21  7:03 ` [RFC][PATCH 1/5] USB: DWC OTG: Modification in DWC OTG driver for ARM based SoCs p.paneri at samsung.com
2011-06-21  9:25   ` Felipe Balbi
2011-06-21  7:03 ` [RFC][PATCH 2/5] ARM: SAMSUNG: Changing the build condition of OTG platform device for samsung p.paneri at samsung.com
2011-06-21  9:16   ` Felipe Balbi
2011-06-21 11:47   ` Sergei Shtylyov
2011-06-21 11:49     ` Felipe Balbi
2011-06-21 12:00       ` Sergei Shtylyov
2011-06-21  7:03 ` [RFC][PATCH 3/5] ARM: SAMSUNG: Adding IO mapping for OTG PHY p.paneri at samsung.com
2011-06-21 11:18   ` Banajit Goswami
2011-06-21 12:15     ` Praveen Paneri
2011-06-21  7:03 ` [RFC][PATCH 4/5] ARM: S5P64x0: Adding OTG PHY control code p.paneri at samsung.com
2011-06-21  9:31   ` Felipe Balbi
2011-06-21  9:36   ` Russell King - ARM Linux
2011-06-22  4:18   ` Kyungmin Park [this message]
2011-06-21  7:03 ` [RFC][PATCH 5/5] ARM: S5P64x0: Adding OTG device for smdk6440 p.paneri at samsung.com
2011-06-21  9:45 ` [RFC][PATCH 0/5] USB: DWC OTG: Add dwc_otg driver for S5P6440 samsung SoC Marek Szyprowski
     [not found] <0LN4003P2ZGJSGU0@mailout4.samsung.com>
2011-06-21 12:26 ` [RFC][PATCH 4/5] ARM: S5P64x0: Adding OTG PHY control code Praveen Paneri
2011-06-21 12:39   ` Russell King - ARM Linux
     [not found] <0LN400HTOZEQDIL0@mailout1.samsung.com>
2011-06-22  8:26 ` Praveen Paneri
2011-06-22  9:49   ` Felipe Balbi
2011-07-06  5:33     ` Praveen Paneri
2011-07-06  7:18       ` Felipe Balbi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BANLkTinTo7hhfbXFd4oxiSsjbWSqA-9ugg@mail.gmail.com \
    --to=kmpark@infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).