* [PATCH v8 0/3] ARM: Exynos/S3C64XX: usb phy driver support for S3C64XX and EXYNOS4210
@ 2012-11-14 10:45 ` Praveen Paneri
0 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-14 10:45 UTC (permalink / raw)
To: linux-samsung-soc
Cc: devicetree-discuss, linux-arm-kernel, kgene.kim, balbi, gregkh,
thomas.abraham, ben-linux, broonie, l.majewski, kyungmin.park,
grant.likely, heiko, t.figa, gautam.vivek
This patch series enables usb phy driver for S3C64XX and EXYNOS4210.
The phy driver patches are already sent to linux-usb.
Changes From v7:
Resolved build errors with s3c6400_defconfig, s5pv210_defconfig and
exynos_defconfig.
Tested with all other samsung configs as well.
Reformed PATCH 3 (PATCH 5 of last series) with proper subject.
Separated these arch patches from the driver patches.
Changes from v4:
Changed the platform data code to use __initdata
Changes from v2:
Changed 's3c' to 'samsung' for platform device as well as platform data
Moved platform data structure to a separate file
Praveen Paneri (3):
ARM: S3C64XX: Removing old phy setup code
ARM: S3C64XX: Enabling samsung-usbphy driver
ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210
arch/arm/boot/dts/exynos4210-smdkv310.dts | 5 ++
arch/arm/mach-exynos/Kconfig | 1 +
arch/arm/mach-exynos/include/mach/map.h | 1 +
arch/arm/mach-exynos/mach-exynos4-dt.c | 8 +++
arch/arm/mach-exynos/setup-usb-phy.c | 13 ++++
arch/arm/mach-s3c64xx/include/mach/map.h | 2 +
arch/arm/mach-s3c64xx/mach-crag6410.c | 10 ++-
arch/arm/mach-s3c64xx/mach-smartq.c | 11 +++-
arch/arm/mach-s3c64xx/mach-smdk6410.c | 10 ++-
arch/arm/mach-s3c64xx/setup-usb-phy.c | 79 ++-----------------------
arch/arm/plat-samsung/devs.c | 28 +++++++++
arch/arm/plat-samsung/include/plat/devs.h | 1 +
arch/arm/plat-samsung/include/plat/usb-phy.h | 1 +
13 files changed, 89 insertions(+), 81 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v8 0/3] ARM: Exynos/S3C64XX: usb phy driver support for S3C64XX and EXYNOS4210
@ 2012-11-14 10:45 ` Praveen Paneri
0 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-14 10:45 UTC (permalink / raw)
To: linux-arm-kernel
This patch series enables usb phy driver for S3C64XX and EXYNOS4210.
The phy driver patches are already sent to linux-usb.
Changes From v7:
Resolved build errors with s3c6400_defconfig, s5pv210_defconfig and
exynos_defconfig.
Tested with all other samsung configs as well.
Reformed PATCH 3 (PATCH 5 of last series) with proper subject.
Separated these arch patches from the driver patches.
Changes from v4:
Changed the platform data code to use __initdata
Changes from v2:
Changed 's3c' to 'samsung' for platform device as well as platform data
Moved platform data structure to a separate file
Praveen Paneri (3):
ARM: S3C64XX: Removing old phy setup code
ARM: S3C64XX: Enabling samsung-usbphy driver
ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210
arch/arm/boot/dts/exynos4210-smdkv310.dts | 5 ++
arch/arm/mach-exynos/Kconfig | 1 +
arch/arm/mach-exynos/include/mach/map.h | 1 +
arch/arm/mach-exynos/mach-exynos4-dt.c | 8 +++
arch/arm/mach-exynos/setup-usb-phy.c | 13 ++++
arch/arm/mach-s3c64xx/include/mach/map.h | 2 +
arch/arm/mach-s3c64xx/mach-crag6410.c | 10 ++-
arch/arm/mach-s3c64xx/mach-smartq.c | 11 +++-
arch/arm/mach-s3c64xx/mach-smdk6410.c | 10 ++-
arch/arm/mach-s3c64xx/setup-usb-phy.c | 79 ++-----------------------
arch/arm/plat-samsung/devs.c | 28 +++++++++
arch/arm/plat-samsung/include/plat/devs.h | 1 +
arch/arm/plat-samsung/include/plat/usb-phy.h | 1 +
13 files changed, 89 insertions(+), 81 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v8 1/3] ARM: S3C64XX: Removing old phy setup code
2012-11-14 10:45 ` Praveen Paneri
@ 2012-11-14 10:45 ` Praveen Paneri
-1 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-14 10:45 UTC (permalink / raw)
To: linux-samsung-soc
Cc: devicetree-discuss, linux-arm-kernel, kgene.kim, balbi, gregkh,
thomas.abraham, ben-linux, broonie, l.majewski, kyungmin.park,
grant.likely, heiko, t.figa, gautam.vivek
This patch removes old phy code from platform side. 'setup-usb-phy.c'
will be used for providing transceiver platform data in next
patch. Not all of the platform data code is removed as there are others
making use of platform_data defined for hsotg. That can be removed once
all the SoCs start using the new transceiver for usb phy setup.
Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
---
arch/arm/mach-s3c64xx/mach-crag6410.c | 3 -
arch/arm/mach-s3c64xx/mach-smartq.c | 3 -
arch/arm/mach-s3c64xx/mach-smdk6410.c | 3 -
arch/arm/mach-s3c64xx/setup-usb-phy.c | 79 ---------------------------------
4 files changed, 0 insertions(+), 88 deletions(-)
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c
index 2abe95d..48f4a2d 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
@@ -31,7 +31,6 @@
#include <linux/spi/spi.h>
#include <linux/i2c/pca953x.h>
-#include <linux/platform_data/s3c-hsotg.h>
#include <video/platform_lcd.h>
@@ -805,7 +804,6 @@ static const struct gpio_led_platform_data gpio_leds_pdata = {
.num_leds = ARRAY_SIZE(gpio_leds),
};
-static struct s3c_hsotg_plat crag6410_hsotg_pdata;
static void __init crag6410_machine_init(void)
{
@@ -831,7 +829,6 @@ static void __init crag6410_machine_init(void)
s3c_i2c0_set_platdata(&i2c0_pdata);
s3c_i2c1_set_platdata(&i2c1_pdata);
s3c_fb_set_platdata(&crag6410_lcd_pdata);
- s3c_hsotg_set_platdata(&crag6410_hsotg_pdata);
i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c b/arch/arm/mach-s3c64xx/mach-smartq.c
index c6d7390..59bb34c 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq.c
@@ -18,7 +18,6 @@
#include <linux/serial_core.h>
#include <linux/spi/spi_gpio.h>
#include <linux/usb/gpio_vbus.h>
-#include <linux/platform_data/s3c-hsotg.h>
#include <asm/mach-types.h>
#include <asm/mach/map.h>
@@ -187,7 +186,6 @@ static struct s3c_hwmon_pdata smartq_hwmon_pdata __initdata = {
},
};
-static struct s3c_hsotg_plat smartq_hsotg_pdata;
static int __init smartq_lcd_setup_gpio(void)
{
@@ -385,7 +383,6 @@ void __init smartq_map_io(void)
void __init smartq_machine_init(void)
{
s3c_i2c0_set_platdata(NULL);
- s3c_hsotg_set_platdata(&smartq_hsotg_pdata);
s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index da1a771..123f452 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -30,7 +30,6 @@
#include <linux/regulator/fixed.h>
#include <linux/regulator/machine.h>
#include <linux/pwm_backlight.h>
-#include <linux/platform_data/s3c-hsotg.h>
#ifdef CONFIG_SMDK6410_WM1190_EV1
#include <linux/mfd/wm8350/core.h>
@@ -627,7 +626,6 @@ static struct platform_pwm_backlight_data smdk6410_bl_data = {
.pwm_id = 1,
};
-static struct s3c_hsotg_plat smdk6410_hsotg_pdata;
static void __init smdk6410_map_io(void)
{
@@ -657,7 +655,6 @@ static void __init smdk6410_machine_init(void)
s3c_i2c0_set_platdata(NULL);
s3c_i2c1_set_platdata(NULL);
s3c_fb_set_platdata(&smdk6410_lcd_pdata);
- s3c_hsotg_set_platdata(&smdk6410_hsotg_pdata);
samsung_keypad_set_platdata(&smdk6410_keypad_data);
diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c b/arch/arm/mach-s3c64xx/setup-usb-phy.c
index f6757e0..7a09553 100644
--- a/arch/arm/mach-s3c64xx/setup-usb-phy.c
+++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c
@@ -9,82 +9,3 @@
*
*/
-#include <linux/clk.h>
-#include <linux/delay.h>
-#include <linux/err.h>
-#include <linux/io.h>
-#include <linux/platform_device.h>
-#include <mach/map.h>
-#include <mach/regs-sys.h>
-#include <plat/cpu.h>
-#include <plat/regs-usb-hsotg-phy.h>
-#include <plat/usb-phy.h>
-
-static int s3c_usb_otgphy_init(struct platform_device *pdev)
-{
- struct clk *xusbxti;
- u32 phyclk;
-
- writel(readl(S3C64XX_OTHERS) | S3C64XX_OTHERS_USBMASK, S3C64XX_OTHERS);
-
- /* set clock frequency for PLL */
- phyclk = readl(S3C_PHYCLK) & ~S3C_PHYCLK_CLKSEL_MASK;
-
- xusbxti = clk_get(&pdev->dev, "xusbxti");
- if (xusbxti && !IS_ERR(xusbxti)) {
- switch (clk_get_rate(xusbxti)) {
- case 12 * MHZ:
- phyclk |= S3C_PHYCLK_CLKSEL_12M;
- break;
- case 24 * MHZ:
- phyclk |= S3C_PHYCLK_CLKSEL_24M;
- break;
- default:
- case 48 * MHZ:
- /* default reference clock */
- break;
- }
- clk_put(xusbxti);
- }
-
- /* TODO: select external clock/oscillator */
- writel(phyclk | S3C_PHYCLK_CLK_FORCE, S3C_PHYCLK);
-
- /* set to normal OTG PHY */
- writel((readl(S3C_PHYPWR) & ~S3C_PHYPWR_NORMAL_MASK), S3C_PHYPWR);
- mdelay(1);
-
- /* reset OTG PHY and Link */
- writel(S3C_RSTCON_PHY | S3C_RSTCON_HCLK | S3C_RSTCON_PHYCLK,
- S3C_RSTCON);
- udelay(20); /* at-least 10uS */
- writel(0, S3C_RSTCON);
-
- return 0;
-}
-
-static int s3c_usb_otgphy_exit(struct platform_device *pdev)
-{
- writel((readl(S3C_PHYPWR) | S3C_PHYPWR_ANALOG_POWERDOWN |
- S3C_PHYPWR_OTG_DISABLE), S3C_PHYPWR);
-
- writel(readl(S3C64XX_OTHERS) & ~S3C64XX_OTHERS_USBMASK, S3C64XX_OTHERS);
-
- return 0;
-}
-
-int s5p_usb_phy_init(struct platform_device *pdev, int type)
-{
- if (type == S5P_USB_PHY_DEVICE)
- return s3c_usb_otgphy_init(pdev);
-
- return -EINVAL;
-}
-
-int s5p_usb_phy_exit(struct platform_device *pdev, int type)
-{
- if (type == S5P_USB_PHY_DEVICE)
- return s3c_usb_otgphy_exit(pdev);
-
- return -EINVAL;
-}
--
1.7.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v8 1/3] ARM: S3C64XX: Removing old phy setup code
@ 2012-11-14 10:45 ` Praveen Paneri
0 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-14 10:45 UTC (permalink / raw)
To: linux-arm-kernel
This patch removes old phy code from platform side. 'setup-usb-phy.c'
will be used for providing transceiver platform data in next
patch. Not all of the platform data code is removed as there are others
making use of platform_data defined for hsotg. That can be removed once
all the SoCs start using the new transceiver for usb phy setup.
Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
---
arch/arm/mach-s3c64xx/mach-crag6410.c | 3 -
arch/arm/mach-s3c64xx/mach-smartq.c | 3 -
arch/arm/mach-s3c64xx/mach-smdk6410.c | 3 -
arch/arm/mach-s3c64xx/setup-usb-phy.c | 79 ---------------------------------
4 files changed, 0 insertions(+), 88 deletions(-)
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c
index 2abe95d..48f4a2d 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
@@ -31,7 +31,6 @@
#include <linux/spi/spi.h>
#include <linux/i2c/pca953x.h>
-#include <linux/platform_data/s3c-hsotg.h>
#include <video/platform_lcd.h>
@@ -805,7 +804,6 @@ static const struct gpio_led_platform_data gpio_leds_pdata = {
.num_leds = ARRAY_SIZE(gpio_leds),
};
-static struct s3c_hsotg_plat crag6410_hsotg_pdata;
static void __init crag6410_machine_init(void)
{
@@ -831,7 +829,6 @@ static void __init crag6410_machine_init(void)
s3c_i2c0_set_platdata(&i2c0_pdata);
s3c_i2c1_set_platdata(&i2c1_pdata);
s3c_fb_set_platdata(&crag6410_lcd_pdata);
- s3c_hsotg_set_platdata(&crag6410_hsotg_pdata);
i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c b/arch/arm/mach-s3c64xx/mach-smartq.c
index c6d7390..59bb34c 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq.c
@@ -18,7 +18,6 @@
#include <linux/serial_core.h>
#include <linux/spi/spi_gpio.h>
#include <linux/usb/gpio_vbus.h>
-#include <linux/platform_data/s3c-hsotg.h>
#include <asm/mach-types.h>
#include <asm/mach/map.h>
@@ -187,7 +186,6 @@ static struct s3c_hwmon_pdata smartq_hwmon_pdata __initdata = {
},
};
-static struct s3c_hsotg_plat smartq_hsotg_pdata;
static int __init smartq_lcd_setup_gpio(void)
{
@@ -385,7 +383,6 @@ void __init smartq_map_io(void)
void __init smartq_machine_init(void)
{
s3c_i2c0_set_platdata(NULL);
- s3c_hsotg_set_platdata(&smartq_hsotg_pdata);
s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index da1a771..123f452 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -30,7 +30,6 @@
#include <linux/regulator/fixed.h>
#include <linux/regulator/machine.h>
#include <linux/pwm_backlight.h>
-#include <linux/platform_data/s3c-hsotg.h>
#ifdef CONFIG_SMDK6410_WM1190_EV1
#include <linux/mfd/wm8350/core.h>
@@ -627,7 +626,6 @@ static struct platform_pwm_backlight_data smdk6410_bl_data = {
.pwm_id = 1,
};
-static struct s3c_hsotg_plat smdk6410_hsotg_pdata;
static void __init smdk6410_map_io(void)
{
@@ -657,7 +655,6 @@ static void __init smdk6410_machine_init(void)
s3c_i2c0_set_platdata(NULL);
s3c_i2c1_set_platdata(NULL);
s3c_fb_set_platdata(&smdk6410_lcd_pdata);
- s3c_hsotg_set_platdata(&smdk6410_hsotg_pdata);
samsung_keypad_set_platdata(&smdk6410_keypad_data);
diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c b/arch/arm/mach-s3c64xx/setup-usb-phy.c
index f6757e0..7a09553 100644
--- a/arch/arm/mach-s3c64xx/setup-usb-phy.c
+++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c
@@ -9,82 +9,3 @@
*
*/
-#include <linux/clk.h>
-#include <linux/delay.h>
-#include <linux/err.h>
-#include <linux/io.h>
-#include <linux/platform_device.h>
-#include <mach/map.h>
-#include <mach/regs-sys.h>
-#include <plat/cpu.h>
-#include <plat/regs-usb-hsotg-phy.h>
-#include <plat/usb-phy.h>
-
-static int s3c_usb_otgphy_init(struct platform_device *pdev)
-{
- struct clk *xusbxti;
- u32 phyclk;
-
- writel(readl(S3C64XX_OTHERS) | S3C64XX_OTHERS_USBMASK, S3C64XX_OTHERS);
-
- /* set clock frequency for PLL */
- phyclk = readl(S3C_PHYCLK) & ~S3C_PHYCLK_CLKSEL_MASK;
-
- xusbxti = clk_get(&pdev->dev, "xusbxti");
- if (xusbxti && !IS_ERR(xusbxti)) {
- switch (clk_get_rate(xusbxti)) {
- case 12 * MHZ:
- phyclk |= S3C_PHYCLK_CLKSEL_12M;
- break;
- case 24 * MHZ:
- phyclk |= S3C_PHYCLK_CLKSEL_24M;
- break;
- default:
- case 48 * MHZ:
- /* default reference clock */
- break;
- }
- clk_put(xusbxti);
- }
-
- /* TODO: select external clock/oscillator */
- writel(phyclk | S3C_PHYCLK_CLK_FORCE, S3C_PHYCLK);
-
- /* set to normal OTG PHY */
- writel((readl(S3C_PHYPWR) & ~S3C_PHYPWR_NORMAL_MASK), S3C_PHYPWR);
- mdelay(1);
-
- /* reset OTG PHY and Link */
- writel(S3C_RSTCON_PHY | S3C_RSTCON_HCLK | S3C_RSTCON_PHYCLK,
- S3C_RSTCON);
- udelay(20); /* at-least 10uS */
- writel(0, S3C_RSTCON);
-
- return 0;
-}
-
-static int s3c_usb_otgphy_exit(struct platform_device *pdev)
-{
- writel((readl(S3C_PHYPWR) | S3C_PHYPWR_ANALOG_POWERDOWN |
- S3C_PHYPWR_OTG_DISABLE), S3C_PHYPWR);
-
- writel(readl(S3C64XX_OTHERS) & ~S3C64XX_OTHERS_USBMASK, S3C64XX_OTHERS);
-
- return 0;
-}
-
-int s5p_usb_phy_init(struct platform_device *pdev, int type)
-{
- if (type == S5P_USB_PHY_DEVICE)
- return s3c_usb_otgphy_init(pdev);
-
- return -EINVAL;
-}
-
-int s5p_usb_phy_exit(struct platform_device *pdev, int type)
-{
- if (type == S5P_USB_PHY_DEVICE)
- return s3c_usb_otgphy_exit(pdev);
-
- return -EINVAL;
-}
--
1.7.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v8 2/3] ARM: S3C64XX: Enabling samsung-usbphy driver
2012-11-14 10:45 ` Praveen Paneri
@ 2012-11-14 10:45 ` Praveen Paneri
-1 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-14 10:45 UTC (permalink / raw)
To: linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA
Cc: l.majewski-Sze3O3UU22JBDgjK7y7TUQ,
kgene.kim-Sze3O3UU22JBDgjK7y7TUQ, heiko-4mtYJXux2i+zQB+pC5nmwQ,
gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
broonie-yzvPICuk2AATkU/dhu1WVueM+bqZidxxQQ4Iyu8u01E,
balbi-l0cyMroinI0, kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ,
gautam.vivek-Sze3O3UU22JBDgjK7y7TUQ,
ben-linux-elnMNo+KYs3YtjvyW6yDsg,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
Adding platform device for samsung-usbphy driver. Enabling it for
s3c64xx based machines using s3c-hsotg.
Signed-off-by: Praveen Paneri <p.paneri-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
---
arch/arm/mach-s3c64xx/include/mach/map.h | 2 +
arch/arm/mach-s3c64xx/mach-crag6410.c | 7 ++++++
arch/arm/mach-s3c64xx/mach-smartq.c | 8 +++++++
arch/arm/mach-s3c64xx/mach-smdk6410.c | 7 ++++++
arch/arm/mach-s3c64xx/setup-usb-phy.c | 14 +++++++++++++
arch/arm/plat-samsung/devs.c | 28 ++++++++++++++++++++++++++
arch/arm/plat-samsung/include/plat/devs.h | 1 +
arch/arm/plat-samsung/include/plat/usb-phy.h | 1 +
8 files changed, 68 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-s3c64xx/include/mach/map.h b/arch/arm/mach-s3c64xx/include/mach/map.h
index 8e2097b..dc482bb 100644
--- a/arch/arm/mach-s3c64xx/include/mach/map.h
+++ b/arch/arm/mach-s3c64xx/include/mach/map.h
@@ -65,6 +65,7 @@
#define S3C64XX_PA_NAND (0x70200000)
#define S3C64XX_PA_FB (0x77100000)
+#define S3C64XX_PA_USB_HSPHY (0x7C100000)
#define S3C64XX_PA_USB_HSOTG (0x7C000000)
#define S3C64XX_PA_WATCHDOG (0x7E004000)
#define S3C64XX_PA_RTC (0x7E005000)
@@ -113,6 +114,7 @@
#define S3C_PA_FB S3C64XX_PA_FB
#define S3C_PA_USBHOST S3C64XX_PA_USBHOST
#define S3C_PA_USB_HSOTG S3C64XX_PA_USB_HSOTG
+#define S3C_PA_USB_PHY S3C64XX_PA_USB_HSPHY
#define S3C_PA_RTC S3C64XX_PA_RTC
#define S3C_PA_WDT S3C64XX_PA_WATCHDOG
#define S3C_PA_SPI0 S3C64XX_PA_SPI0
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c
index 48f4a2d..c602379 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
@@ -31,6 +31,7 @@
#include <linux/spi/spi.h>
#include <linux/i2c/pca953x.h>
+#include <linux/platform_data/samsung-usbphy.h>
#include <video/platform_lcd.h>
@@ -69,6 +70,7 @@
#include <plat/adc.h>
#include <linux/platform_data/i2c-s3c2410.h>
#include <plat/pm.h>
+#include <plat/usb-phy.h>
#include "common.h"
@@ -353,6 +355,7 @@ static struct platform_device wallvdd_device = {
};
static struct platform_device *crag6410_devices[] __initdata = {
+ &samsung_device_usbphy,
&s3c_device_hsmmc0,
&s3c_device_hsmmc2,
&s3c_device_i2c0,
@@ -804,6 +807,9 @@ static const struct gpio_led_platform_data gpio_leds_pdata = {
.num_leds = ARRAY_SIZE(gpio_leds),
};
+static struct samsung_usbphy_data crag6410_usbphy_pdata __initdata = {
+ .pmu_isolation = s5p_usb_phy_pmu_isolation,
+};
static void __init crag6410_machine_init(void)
{
@@ -829,6 +835,7 @@ static void __init crag6410_machine_init(void)
s3c_i2c0_set_platdata(&i2c0_pdata);
s3c_i2c1_set_platdata(&i2c1_pdata);
s3c_fb_set_platdata(&crag6410_lcd_pdata);
+ samsung_usbphy_set_pdata(&crag6410_usbphy_pdata);
i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c b/arch/arm/mach-s3c64xx/mach-smartq.c
index 59bb34c..f18a0ab 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq.c
@@ -18,6 +18,7 @@
#include <linux/serial_core.h>
#include <linux/spi/spi_gpio.h>
#include <linux/usb/gpio_vbus.h>
+#include <linux/platform_data/samsung-usbphy.h>
#include <asm/mach-types.h>
#include <asm/mach/map.h>
@@ -36,6 +37,7 @@
#include <linux/platform_data/usb-ohci-s3c2410.h>
#include <plat/sdhci.h>
#include <linux/platform_data/touchscreen-s3c2410.h>
+#include <plat/usb-phy.h>
#include <video/platform_lcd.h>
@@ -234,6 +236,7 @@ static struct i2c_board_info smartq_i2c_devs[] __initdata = {
};
static struct platform_device *smartq_devices[] __initdata = {
+ &samsung_device_usbphy,
&s3c_device_hsmmc1, /* Init iNAND first, ... */
&s3c_device_hsmmc0, /* ... then the external SD card */
&s3c_device_hsmmc2,
@@ -380,9 +383,14 @@ void __init smartq_map_io(void)
smartq_lcd_mode_set();
}
+static struct samsung_usbphy_data smartq_usbphy_pdata __initdata = {
+ .pmu_isolation = s5p_usb_phy_pmu_isolation,
+};
+
void __init smartq_machine_init(void)
{
s3c_i2c0_set_platdata(NULL);
+ samsung_usbphy_set_pdata(&smartq_usbphy_pdata);
s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index 123f452..00e46a6 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -30,6 +30,7 @@
#include <linux/regulator/fixed.h>
#include <linux/regulator/machine.h>
#include <linux/pwm_backlight.h>
+#include <linux/platform_data/samsung-usbphy.h>
#ifdef CONFIG_SMDK6410_WM1190_EV1
#include <linux/mfd/wm8350/core.h>
@@ -72,6 +73,7 @@
#include <linux/platform_data/touchscreen-s3c2410.h>
#include <plat/keypad.h>
#include <plat/backlight.h>
+#include <plat/usb-phy.h>
#include "common.h"
@@ -263,6 +265,7 @@ static struct samsung_keypad_platdata smdk6410_keypad_data __initdata = {
static struct map_desc smdk6410_iodesc[] = {};
static struct platform_device *smdk6410_devices[] __initdata = {
+ &samsung_device_usbphy,
#ifdef CONFIG_SMDK6410_SD_CH0
&s3c_device_hsmmc0,
#endif
@@ -626,6 +629,9 @@ static struct platform_pwm_backlight_data smdk6410_bl_data = {
.pwm_id = 1,
};
+static struct samsung_usbphy_data smdk6410_usbphy_pdata __initdata = {
+ .pmu_isolation = s5p_usb_phy_pmu_isolation,
+};
static void __init smdk6410_map_io(void)
{
@@ -655,6 +661,7 @@ static void __init smdk6410_machine_init(void)
s3c_i2c0_set_platdata(NULL);
s3c_i2c1_set_platdata(NULL);
s3c_fb_set_platdata(&smdk6410_lcd_pdata);
+ samsung_usbphy_set_pdata(&smdk6410_usbphy_pdata);
samsung_keypad_set_platdata(&smdk6410_keypad_data);
diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c b/arch/arm/mach-s3c64xx/setup-usb-phy.c
index 7a09553..3aee778 100644
--- a/arch/arm/mach-s3c64xx/setup-usb-phy.c
+++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c
@@ -9,3 +9,17 @@
*
*/
+#include <linux/io.h>
+#include <mach/map.h>
+#include <mach/regs-sys.h>
+
+void s5p_usb_phy_pmu_isolation(int on)
+{
+ if (on) {
+ writel(readl(S3C64XX_OTHERS) & ~S3C64XX_OTHERS_USBMASK,
+ S3C64XX_OTHERS);
+ } else {
+ writel(readl(S3C64XX_OTHERS) | S3C64XX_OTHERS_USBMASK,
+ S3C64XX_OTHERS);
+ }
+}
diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
index bc50b20..4031c77 100644
--- a/arch/arm/plat-samsung/devs.c
+++ b/arch/arm/plat-samsung/devs.c
@@ -31,6 +31,7 @@
#include <linux/ioport.h>
#include <linux/platform_data/s3c-hsudc.h>
#include <linux/platform_data/s3c-hsotg.h>
+#include <linux/platform_data/samsung-usbphy.h>
#include <media/s5p_hdmi.h>
@@ -1367,6 +1368,30 @@ struct platform_device s5p_device_mixer = {
/* USB */
+#ifdef CONFIG_ARCH_S3C64XX
+/* USB PHY*/
+static struct resource samsung_usbphy_resource[] = {
+ [0] = {
+ .start = S3C_PA_USB_PHY,
+ .end = S3C_PA_USB_PHY + SZ_16 - 1,
+ .flags = IORESOURCE_MEM,
+ },
+};
+
+struct platform_device samsung_device_usbphy = {
+ .name = "s3c64xx-usbphy",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(samsung_usbphy_resource),
+ .resource = samsung_usbphy_resource,
+};
+
+void __init samsung_usbphy_set_pdata(struct samsung_usbphy_data *pd)
+{
+ s3c_set_platdata(pd, sizeof(struct samsung_usbphy_data),
+ &samsung_device_usbphy);
+}
+#endif
+
#ifdef CONFIG_S3C_DEV_USB_HOST
static struct resource s3c_usb_resource[] = {
[0] = DEFINE_RES_MEM(S3C_PA_USBHOST, SZ_256),
@@ -1473,6 +1498,8 @@ struct platform_device s3c_device_usb_hsotg = {
},
};
+#ifndef CONFIG_ARCH_S3C64XX
+/* TODO: To be removed later. Currently only S3C64XX is platform data free */
void __init s3c_hsotg_set_platdata(struct s3c_hsotg_plat *pd)
{
struct s3c_hsotg_plat *npd;
@@ -1485,6 +1512,7 @@ void __init s3c_hsotg_set_platdata(struct s3c_hsotg_plat *pd)
if (!npd->phy_exit)
npd->phy_exit = s5p_usb_phy_exit;
}
+#endif
#endif /* CONFIG_S3C_DEV_USB_HSOTG */
/* USB High Spped 2.0 Device (Gadget) */
diff --git a/arch/arm/plat-samsung/include/plat/devs.h b/arch/arm/plat-samsung/include/plat/devs.h
index 133e3e4..7f81dbc 100644
--- a/arch/arm/plat-samsung/include/plat/devs.h
+++ b/arch/arm/plat-samsung/include/plat/devs.h
@@ -136,6 +136,7 @@ extern struct platform_device exynos4_device_spdif;
extern struct platform_device samsung_asoc_dma;
extern struct platform_device samsung_asoc_idma;
extern struct platform_device samsung_device_keypad;
+extern struct platform_device samsung_device_usbphy;
/* s3c2440 specific devices */
diff --git a/arch/arm/plat-samsung/include/plat/usb-phy.h b/arch/arm/plat-samsung/include/plat/usb-phy.h
index 959bcdb..165ffe7 100644
--- a/arch/arm/plat-samsung/include/plat/usb-phy.h
+++ b/arch/arm/plat-samsung/include/plat/usb-phy.h
@@ -18,5 +18,6 @@ enum s5p_usb_phy_type {
extern int s5p_usb_phy_init(struct platform_device *pdev, int type);
extern int s5p_usb_phy_exit(struct platform_device *pdev, int type);
+extern void s5p_usb_phy_pmu_isolation(int on);
#endif /* __PLAT_SAMSUNG_USB_PHY_H */
--
1.7.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v8 2/3] ARM: S3C64XX: Enabling samsung-usbphy driver
@ 2012-11-14 10:45 ` Praveen Paneri
0 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-14 10:45 UTC (permalink / raw)
To: linux-arm-kernel
Adding platform device for samsung-usbphy driver. Enabling it for
s3c64xx based machines using s3c-hsotg.
Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
---
arch/arm/mach-s3c64xx/include/mach/map.h | 2 +
arch/arm/mach-s3c64xx/mach-crag6410.c | 7 ++++++
arch/arm/mach-s3c64xx/mach-smartq.c | 8 +++++++
arch/arm/mach-s3c64xx/mach-smdk6410.c | 7 ++++++
arch/arm/mach-s3c64xx/setup-usb-phy.c | 14 +++++++++++++
arch/arm/plat-samsung/devs.c | 28 ++++++++++++++++++++++++++
arch/arm/plat-samsung/include/plat/devs.h | 1 +
arch/arm/plat-samsung/include/plat/usb-phy.h | 1 +
8 files changed, 68 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-s3c64xx/include/mach/map.h b/arch/arm/mach-s3c64xx/include/mach/map.h
index 8e2097b..dc482bb 100644
--- a/arch/arm/mach-s3c64xx/include/mach/map.h
+++ b/arch/arm/mach-s3c64xx/include/mach/map.h
@@ -65,6 +65,7 @@
#define S3C64XX_PA_NAND (0x70200000)
#define S3C64XX_PA_FB (0x77100000)
+#define S3C64XX_PA_USB_HSPHY (0x7C100000)
#define S3C64XX_PA_USB_HSOTG (0x7C000000)
#define S3C64XX_PA_WATCHDOG (0x7E004000)
#define S3C64XX_PA_RTC (0x7E005000)
@@ -113,6 +114,7 @@
#define S3C_PA_FB S3C64XX_PA_FB
#define S3C_PA_USBHOST S3C64XX_PA_USBHOST
#define S3C_PA_USB_HSOTG S3C64XX_PA_USB_HSOTG
+#define S3C_PA_USB_PHY S3C64XX_PA_USB_HSPHY
#define S3C_PA_RTC S3C64XX_PA_RTC
#define S3C_PA_WDT S3C64XX_PA_WATCHDOG
#define S3C_PA_SPI0 S3C64XX_PA_SPI0
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c
index 48f4a2d..c602379 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
@@ -31,6 +31,7 @@
#include <linux/spi/spi.h>
#include <linux/i2c/pca953x.h>
+#include <linux/platform_data/samsung-usbphy.h>
#include <video/platform_lcd.h>
@@ -69,6 +70,7 @@
#include <plat/adc.h>
#include <linux/platform_data/i2c-s3c2410.h>
#include <plat/pm.h>
+#include <plat/usb-phy.h>
#include "common.h"
@@ -353,6 +355,7 @@ static struct platform_device wallvdd_device = {
};
static struct platform_device *crag6410_devices[] __initdata = {
+ &samsung_device_usbphy,
&s3c_device_hsmmc0,
&s3c_device_hsmmc2,
&s3c_device_i2c0,
@@ -804,6 +807,9 @@ static const struct gpio_led_platform_data gpio_leds_pdata = {
.num_leds = ARRAY_SIZE(gpio_leds),
};
+static struct samsung_usbphy_data crag6410_usbphy_pdata __initdata = {
+ .pmu_isolation = s5p_usb_phy_pmu_isolation,
+};
static void __init crag6410_machine_init(void)
{
@@ -829,6 +835,7 @@ static void __init crag6410_machine_init(void)
s3c_i2c0_set_platdata(&i2c0_pdata);
s3c_i2c1_set_platdata(&i2c1_pdata);
s3c_fb_set_platdata(&crag6410_lcd_pdata);
+ samsung_usbphy_set_pdata(&crag6410_usbphy_pdata);
i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c b/arch/arm/mach-s3c64xx/mach-smartq.c
index 59bb34c..f18a0ab 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq.c
@@ -18,6 +18,7 @@
#include <linux/serial_core.h>
#include <linux/spi/spi_gpio.h>
#include <linux/usb/gpio_vbus.h>
+#include <linux/platform_data/samsung-usbphy.h>
#include <asm/mach-types.h>
#include <asm/mach/map.h>
@@ -36,6 +37,7 @@
#include <linux/platform_data/usb-ohci-s3c2410.h>
#include <plat/sdhci.h>
#include <linux/platform_data/touchscreen-s3c2410.h>
+#include <plat/usb-phy.h>
#include <video/platform_lcd.h>
@@ -234,6 +236,7 @@ static struct i2c_board_info smartq_i2c_devs[] __initdata = {
};
static struct platform_device *smartq_devices[] __initdata = {
+ &samsung_device_usbphy,
&s3c_device_hsmmc1, /* Init iNAND first, ... */
&s3c_device_hsmmc0, /* ... then the external SD card */
&s3c_device_hsmmc2,
@@ -380,9 +383,14 @@ void __init smartq_map_io(void)
smartq_lcd_mode_set();
}
+static struct samsung_usbphy_data smartq_usbphy_pdata __initdata = {
+ .pmu_isolation = s5p_usb_phy_pmu_isolation,
+};
+
void __init smartq_machine_init(void)
{
s3c_i2c0_set_platdata(NULL);
+ samsung_usbphy_set_pdata(&smartq_usbphy_pdata);
s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index 123f452..00e46a6 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -30,6 +30,7 @@
#include <linux/regulator/fixed.h>
#include <linux/regulator/machine.h>
#include <linux/pwm_backlight.h>
+#include <linux/platform_data/samsung-usbphy.h>
#ifdef CONFIG_SMDK6410_WM1190_EV1
#include <linux/mfd/wm8350/core.h>
@@ -72,6 +73,7 @@
#include <linux/platform_data/touchscreen-s3c2410.h>
#include <plat/keypad.h>
#include <plat/backlight.h>
+#include <plat/usb-phy.h>
#include "common.h"
@@ -263,6 +265,7 @@ static struct samsung_keypad_platdata smdk6410_keypad_data __initdata = {
static struct map_desc smdk6410_iodesc[] = {};
static struct platform_device *smdk6410_devices[] __initdata = {
+ &samsung_device_usbphy,
#ifdef CONFIG_SMDK6410_SD_CH0
&s3c_device_hsmmc0,
#endif
@@ -626,6 +629,9 @@ static struct platform_pwm_backlight_data smdk6410_bl_data = {
.pwm_id = 1,
};
+static struct samsung_usbphy_data smdk6410_usbphy_pdata __initdata = {
+ .pmu_isolation = s5p_usb_phy_pmu_isolation,
+};
static void __init smdk6410_map_io(void)
{
@@ -655,6 +661,7 @@ static void __init smdk6410_machine_init(void)
s3c_i2c0_set_platdata(NULL);
s3c_i2c1_set_platdata(NULL);
s3c_fb_set_platdata(&smdk6410_lcd_pdata);
+ samsung_usbphy_set_pdata(&smdk6410_usbphy_pdata);
samsung_keypad_set_platdata(&smdk6410_keypad_data);
diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c b/arch/arm/mach-s3c64xx/setup-usb-phy.c
index 7a09553..3aee778 100644
--- a/arch/arm/mach-s3c64xx/setup-usb-phy.c
+++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c
@@ -9,3 +9,17 @@
*
*/
+#include <linux/io.h>
+#include <mach/map.h>
+#include <mach/regs-sys.h>
+
+void s5p_usb_phy_pmu_isolation(int on)
+{
+ if (on) {
+ writel(readl(S3C64XX_OTHERS) & ~S3C64XX_OTHERS_USBMASK,
+ S3C64XX_OTHERS);
+ } else {
+ writel(readl(S3C64XX_OTHERS) | S3C64XX_OTHERS_USBMASK,
+ S3C64XX_OTHERS);
+ }
+}
diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
index bc50b20..4031c77 100644
--- a/arch/arm/plat-samsung/devs.c
+++ b/arch/arm/plat-samsung/devs.c
@@ -31,6 +31,7 @@
#include <linux/ioport.h>
#include <linux/platform_data/s3c-hsudc.h>
#include <linux/platform_data/s3c-hsotg.h>
+#include <linux/platform_data/samsung-usbphy.h>
#include <media/s5p_hdmi.h>
@@ -1367,6 +1368,30 @@ struct platform_device s5p_device_mixer = {
/* USB */
+#ifdef CONFIG_ARCH_S3C64XX
+/* USB PHY*/
+static struct resource samsung_usbphy_resource[] = {
+ [0] = {
+ .start = S3C_PA_USB_PHY,
+ .end = S3C_PA_USB_PHY + SZ_16 - 1,
+ .flags = IORESOURCE_MEM,
+ },
+};
+
+struct platform_device samsung_device_usbphy = {
+ .name = "s3c64xx-usbphy",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(samsung_usbphy_resource),
+ .resource = samsung_usbphy_resource,
+};
+
+void __init samsung_usbphy_set_pdata(struct samsung_usbphy_data *pd)
+{
+ s3c_set_platdata(pd, sizeof(struct samsung_usbphy_data),
+ &samsung_device_usbphy);
+}
+#endif
+
#ifdef CONFIG_S3C_DEV_USB_HOST
static struct resource s3c_usb_resource[] = {
[0] = DEFINE_RES_MEM(S3C_PA_USBHOST, SZ_256),
@@ -1473,6 +1498,8 @@ struct platform_device s3c_device_usb_hsotg = {
},
};
+#ifndef CONFIG_ARCH_S3C64XX
+/* TODO: To be removed later. Currently only S3C64XX is platform data free */
void __init s3c_hsotg_set_platdata(struct s3c_hsotg_plat *pd)
{
struct s3c_hsotg_plat *npd;
@@ -1485,6 +1512,7 @@ void __init s3c_hsotg_set_platdata(struct s3c_hsotg_plat *pd)
if (!npd->phy_exit)
npd->phy_exit = s5p_usb_phy_exit;
}
+#endif
#endif /* CONFIG_S3C_DEV_USB_HSOTG */
/* USB High Spped 2.0 Device (Gadget) */
diff --git a/arch/arm/plat-samsung/include/plat/devs.h b/arch/arm/plat-samsung/include/plat/devs.h
index 133e3e4..7f81dbc 100644
--- a/arch/arm/plat-samsung/include/plat/devs.h
+++ b/arch/arm/plat-samsung/include/plat/devs.h
@@ -136,6 +136,7 @@ extern struct platform_device exynos4_device_spdif;
extern struct platform_device samsung_asoc_dma;
extern struct platform_device samsung_asoc_idma;
extern struct platform_device samsung_device_keypad;
+extern struct platform_device samsung_device_usbphy;
/* s3c2440 specific devices */
diff --git a/arch/arm/plat-samsung/include/plat/usb-phy.h b/arch/arm/plat-samsung/include/plat/usb-phy.h
index 959bcdb..165ffe7 100644
--- a/arch/arm/plat-samsung/include/plat/usb-phy.h
+++ b/arch/arm/plat-samsung/include/plat/usb-phy.h
@@ -18,5 +18,6 @@ enum s5p_usb_phy_type {
extern int s5p_usb_phy_init(struct platform_device *pdev, int type);
extern int s5p_usb_phy_exit(struct platform_device *pdev, int type);
+extern void s5p_usb_phy_pmu_isolation(int on);
#endif /* __PLAT_SAMSUNG_USB_PHY_H */
--
1.7.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v8 3/3] ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210
2012-11-14 10:45 ` Praveen Paneri
@ 2012-11-14 10:45 ` Praveen Paneri
-1 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-14 10:45 UTC (permalink / raw)
To: linux-samsung-soc
Cc: devicetree-discuss, linux-arm-kernel, kgene.kim, balbi, gregkh,
thomas.abraham, ben-linux, broonie, l.majewski, kyungmin.park,
grant.likely, heiko, t.figa, gautam.vivek
Adding usbphy node for Exynos4210 along with the platform data.
Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
---
arch/arm/boot/dts/exynos4210-smdkv310.dts | 5 +++++
arch/arm/mach-exynos/Kconfig | 1 +
arch/arm/mach-exynos/include/mach/map.h | 1 +
arch/arm/mach-exynos/mach-exynos4-dt.c | 8 ++++++++
arch/arm/mach-exynos/setup-usb-phy.c | 13 +++++++++++++
5 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts b/arch/arm/boot/dts/exynos4210-smdkv310.dts
index 9b23a82..550903a 100644
--- a/arch/arm/boot/dts/exynos4210-smdkv310.dts
+++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts
@@ -59,6 +59,11 @@
status = "okay";
};
+ usbphy@125B0000 {
+ compatible = "samsung,exynos4210-usbphy";
+ reg = <0x125B0000 0x100>;
+ };
+
keypad@100A0000 {
samsung,keypad-num-rows = <2>;
samsung,keypad-num-columns = <8>;
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index bb3b09a..315308c 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -410,6 +410,7 @@ config MACH_EXYNOS4_DT
select PINCTRL
select PINCTRL_EXYNOS4
select USE_OF
+ select EXYNOS4_SETUP_USB_PHY
help
Machine support for Samsung Exynos4 machine with device tree enabled.
Select this if a fdt blob is available for the Exynos4 SoC based board.
diff --git a/arch/arm/mach-exynos/include/mach/map.h b/arch/arm/mach-exynos/include/mach/map.h
index ef4958b..e64fe1c 100644
--- a/arch/arm/mach-exynos/include/mach/map.h
+++ b/arch/arm/mach-exynos/include/mach/map.h
@@ -244,6 +244,7 @@
#define S3C_PA_SPI1 EXYNOS4_PA_SPI1
#define S3C_PA_SPI2 EXYNOS4_PA_SPI2
#define S3C_PA_USB_HSOTG EXYNOS4_PA_HSOTG
+#define S3C_PA_USB_PHY EXYNOS4_PA_HSPHY
#define S5P_PA_EHCI EXYNOS4_PA_EHCI
#define S5P_PA_FIMC0 EXYNOS4_PA_FIMC0
diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c b/arch/arm/mach-exynos/mach-exynos4-dt.c
index 8858068..f7887e5 100644
--- a/arch/arm/mach-exynos/mach-exynos4-dt.c
+++ b/arch/arm/mach-exynos/mach-exynos4-dt.c
@@ -13,6 +13,7 @@
#include <linux/of_platform.h>
#include <linux/serial_core.h>
+#include <linux/platform_data/samsung-usbphy.h>
#include <asm/mach/arch.h>
#include <asm/hardware/gic.h>
@@ -20,9 +21,14 @@
#include <plat/cpu.h>
#include <plat/regs-serial.h>
+#include <plat/usb-phy.h>
#include "common.h"
+static struct samsung_usbphy_data exynos4_usbphy_pdata = {
+ .pmu_isolation = s5p_usb_phy_pmu_isolation,
+};
+
/*
* The following lookup table is used to override device names when devices
* are registered from device tree. This is temporarily added to enable
@@ -79,6 +85,8 @@ static const struct of_dev_auxdata exynos4_auxdata_lookup[] __initconst = {
OF_DEV_AUXDATA("arm,pl330", EXYNOS4_PA_PDMA1, "dma-pl330.1", NULL),
OF_DEV_AUXDATA("samsung,exynos4210-tmu", EXYNOS4_PA_TMU,
"exynos-tmu", NULL),
+ OF_DEV_AUXDATA("samsung,exynos4210-usbphy", EXYNOS4_PA_HSPHY,
+ "s3c-usbphy", &exynos4_usbphy_pdata),
{},
};
diff --git a/arch/arm/mach-exynos/setup-usb-phy.c b/arch/arm/mach-exynos/setup-usb-phy.c
index b81cc56..1c62d20 100644
--- a/arch/arm/mach-exynos/setup-usb-phy.c
+++ b/arch/arm/mach-exynos/setup-usb-phy.c
@@ -221,3 +221,16 @@ int s5p_usb_phy_exit(struct platform_device *pdev, int type)
return -EINVAL;
}
+
+void s5p_usb_phy_pmu_isolation(int on)
+{
+ if (on) {
+ writel(readl(S5P_USBDEVICE_PHY_CONTROL)
+ & ~S5P_USBDEVICE_PHY_ENABLE,
+ S5P_USBDEVICE_PHY_CONTROL);
+ } else {
+ writel(readl(S5P_USBDEVICE_PHY_CONTROL)
+ | S5P_USBDEVICE_PHY_ENABLE,
+ S5P_USBDEVICE_PHY_CONTROL);
+ }
+}
--
1.7.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v8 3/3] ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210
@ 2012-11-14 10:45 ` Praveen Paneri
0 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-14 10:45 UTC (permalink / raw)
To: linux-arm-kernel
Adding usbphy node for Exynos4210 along with the platform data.
Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
---
arch/arm/boot/dts/exynos4210-smdkv310.dts | 5 +++++
arch/arm/mach-exynos/Kconfig | 1 +
arch/arm/mach-exynos/include/mach/map.h | 1 +
arch/arm/mach-exynos/mach-exynos4-dt.c | 8 ++++++++
arch/arm/mach-exynos/setup-usb-phy.c | 13 +++++++++++++
5 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts b/arch/arm/boot/dts/exynos4210-smdkv310.dts
index 9b23a82..550903a 100644
--- a/arch/arm/boot/dts/exynos4210-smdkv310.dts
+++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts
@@ -59,6 +59,11 @@
status = "okay";
};
+ usbphy at 125B0000 {
+ compatible = "samsung,exynos4210-usbphy";
+ reg = <0x125B0000 0x100>;
+ };
+
keypad at 100A0000 {
samsung,keypad-num-rows = <2>;
samsung,keypad-num-columns = <8>;
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index bb3b09a..315308c 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -410,6 +410,7 @@ config MACH_EXYNOS4_DT
select PINCTRL
select PINCTRL_EXYNOS4
select USE_OF
+ select EXYNOS4_SETUP_USB_PHY
help
Machine support for Samsung Exynos4 machine with device tree enabled.
Select this if a fdt blob is available for the Exynos4 SoC based board.
diff --git a/arch/arm/mach-exynos/include/mach/map.h b/arch/arm/mach-exynos/include/mach/map.h
index ef4958b..e64fe1c 100644
--- a/arch/arm/mach-exynos/include/mach/map.h
+++ b/arch/arm/mach-exynos/include/mach/map.h
@@ -244,6 +244,7 @@
#define S3C_PA_SPI1 EXYNOS4_PA_SPI1
#define S3C_PA_SPI2 EXYNOS4_PA_SPI2
#define S3C_PA_USB_HSOTG EXYNOS4_PA_HSOTG
+#define S3C_PA_USB_PHY EXYNOS4_PA_HSPHY
#define S5P_PA_EHCI EXYNOS4_PA_EHCI
#define S5P_PA_FIMC0 EXYNOS4_PA_FIMC0
diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c b/arch/arm/mach-exynos/mach-exynos4-dt.c
index 8858068..f7887e5 100644
--- a/arch/arm/mach-exynos/mach-exynos4-dt.c
+++ b/arch/arm/mach-exynos/mach-exynos4-dt.c
@@ -13,6 +13,7 @@
#include <linux/of_platform.h>
#include <linux/serial_core.h>
+#include <linux/platform_data/samsung-usbphy.h>
#include <asm/mach/arch.h>
#include <asm/hardware/gic.h>
@@ -20,9 +21,14 @@
#include <plat/cpu.h>
#include <plat/regs-serial.h>
+#include <plat/usb-phy.h>
#include "common.h"
+static struct samsung_usbphy_data exynos4_usbphy_pdata = {
+ .pmu_isolation = s5p_usb_phy_pmu_isolation,
+};
+
/*
* The following lookup table is used to override device names when devices
* are registered from device tree. This is temporarily added to enable
@@ -79,6 +85,8 @@ static const struct of_dev_auxdata exynos4_auxdata_lookup[] __initconst = {
OF_DEV_AUXDATA("arm,pl330", EXYNOS4_PA_PDMA1, "dma-pl330.1", NULL),
OF_DEV_AUXDATA("samsung,exynos4210-tmu", EXYNOS4_PA_TMU,
"exynos-tmu", NULL),
+ OF_DEV_AUXDATA("samsung,exynos4210-usbphy", EXYNOS4_PA_HSPHY,
+ "s3c-usbphy", &exynos4_usbphy_pdata),
{},
};
diff --git a/arch/arm/mach-exynos/setup-usb-phy.c b/arch/arm/mach-exynos/setup-usb-phy.c
index b81cc56..1c62d20 100644
--- a/arch/arm/mach-exynos/setup-usb-phy.c
+++ b/arch/arm/mach-exynos/setup-usb-phy.c
@@ -221,3 +221,16 @@ int s5p_usb_phy_exit(struct platform_device *pdev, int type)
return -EINVAL;
}
+
+void s5p_usb_phy_pmu_isolation(int on)
+{
+ if (on) {
+ writel(readl(S5P_USBDEVICE_PHY_CONTROL)
+ & ~S5P_USBDEVICE_PHY_ENABLE,
+ S5P_USBDEVICE_PHY_CONTROL);
+ } else {
+ writel(readl(S5P_USBDEVICE_PHY_CONTROL)
+ | S5P_USBDEVICE_PHY_ENABLE,
+ S5P_USBDEVICE_PHY_CONTROL);
+ }
+}
--
1.7.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH v8 3/3] ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210
2012-11-14 10:45 ` Praveen Paneri
@ 2012-11-21 19:46 ` Tomasz Figa
-1 siblings, 0 replies; 20+ messages in thread
From: Tomasz Figa @ 2012-11-21 19:46 UTC (permalink / raw)
To: Praveen Paneri
Cc: linux-samsung-soc, devicetree-discuss, linux-arm-kernel,
kgene.kim, balbi, gregkh, thomas.abraham, ben-linux, broonie,
l.majewski, kyungmin.park, grant.likely, heiko, t.figa,
gautam.vivek
Hi Praveen,
On Wednesday 14 of November 2012 16:15:38 Praveen Paneri wrote:
> Adding usbphy node for Exynos4210 along with the platform data.
>
> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
> ---
> arch/arm/boot/dts/exynos4210-smdkv310.dts | 5 +++++
> arch/arm/mach-exynos/Kconfig | 1 +
> arch/arm/mach-exynos/include/mach/map.h | 1 +
> arch/arm/mach-exynos/mach-exynos4-dt.c | 8 ++++++++
> arch/arm/mach-exynos/setup-usb-phy.c | 13 +++++++++++++
> 5 files changed, 28 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts
> b/arch/arm/boot/dts/exynos4210-smdkv310.dts index 9b23a82..550903a
> 100644
> --- a/arch/arm/boot/dts/exynos4210-smdkv310.dts
> +++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts
> @@ -59,6 +59,11 @@
> status = "okay";
> };
>
> + usbphy@125B0000 {
> + compatible = "samsung,exynos4210-usbphy";
> + reg = <0x125B0000 0x100>;
> + };
> +
> keypad@100A0000 {
> samsung,keypad-num-rows = <2>;
> samsung,keypad-num-columns = <8>;
> diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
> index bb3b09a..315308c 100644
> --- a/arch/arm/mach-exynos/Kconfig
> +++ b/arch/arm/mach-exynos/Kconfig
> @@ -410,6 +410,7 @@ config MACH_EXYNOS4_DT
> select PINCTRL
> select PINCTRL_EXYNOS4
> select USE_OF
> + select EXYNOS4_SETUP_USB_PHY
> help
> Machine support for Samsung Exynos4 machine with device tree
> enabled. Select this if a fdt blob is available for the Exynos4 SoC
> based board. diff --git a/arch/arm/mach-exynos/include/mach/map.h
> b/arch/arm/mach-exynos/include/mach/map.h index ef4958b..e64fe1c 100644
> --- a/arch/arm/mach-exynos/include/mach/map.h
> +++ b/arch/arm/mach-exynos/include/mach/map.h
> @@ -244,6 +244,7 @@
> #define S3C_PA_SPI1 EXYNOS4_PA_SPI1
> #define S3C_PA_SPI2 EXYNOS4_PA_SPI2
> #define S3C_PA_USB_HSOTG EXYNOS4_PA_HSOTG
> +#define S3C_PA_USB_PHY EXYNOS4_PA_HSPHY
>
> #define S5P_PA_EHCI EXYNOS4_PA_EHCI
> #define S5P_PA_FIMC0 EXYNOS4_PA_FIMC0
> diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c
> b/arch/arm/mach-exynos/mach-exynos4-dt.c index 8858068..f7887e5 100644
> --- a/arch/arm/mach-exynos/mach-exynos4-dt.c
> +++ b/arch/arm/mach-exynos/mach-exynos4-dt.c
> @@ -13,6 +13,7 @@
>
> #include <linux/of_platform.h>
> #include <linux/serial_core.h>
> +#include <linux/platform_data/samsung-usbphy.h>
>
> #include <asm/mach/arch.h>
> #include <asm/hardware/gic.h>
> @@ -20,9 +21,14 @@
>
> #include <plat/cpu.h>
> #include <plat/regs-serial.h>
> +#include <plat/usb-phy.h>
>
> #include "common.h"
>
> +static struct samsung_usbphy_data exynos4_usbphy_pdata = {
> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
> +};
> +
> /*
> * The following lookup table is used to override device names when
> devices * are registered from device tree. This is temporarily added to
> enable @@ -79,6 +85,8 @@ static const struct of_dev_auxdata
> exynos4_auxdata_lookup[] __initconst = { OF_DEV_AUXDATA("arm,pl330",
> EXYNOS4_PA_PDMA1, "dma-pl330.1", NULL),
> OF_DEV_AUXDATA("samsung,exynos4210-tmu", EXYNOS4_PA_TMU,
> "exynos-tmu", NULL),
> + OF_DEV_AUXDATA("samsung,exynos4210-usbphy", EXYNOS4_PA_HSPHY,
> + "s3c-usbphy", &exynos4_usbphy_pdata),
You should consider reworking the usb phy driver to avoid the need to
specify platform data through of auxdata, because auxdata array in mach-
exynos4-dt is going to be removed after including common clock framework
support for Exynos4.
Best regards,
Tomasz Figa
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v8 3/3] ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210
@ 2012-11-21 19:46 ` Tomasz Figa
0 siblings, 0 replies; 20+ messages in thread
From: Tomasz Figa @ 2012-11-21 19:46 UTC (permalink / raw)
To: linux-arm-kernel
Hi Praveen,
On Wednesday 14 of November 2012 16:15:38 Praveen Paneri wrote:
> Adding usbphy node for Exynos4210 along with the platform data.
>
> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
> ---
> arch/arm/boot/dts/exynos4210-smdkv310.dts | 5 +++++
> arch/arm/mach-exynos/Kconfig | 1 +
> arch/arm/mach-exynos/include/mach/map.h | 1 +
> arch/arm/mach-exynos/mach-exynos4-dt.c | 8 ++++++++
> arch/arm/mach-exynos/setup-usb-phy.c | 13 +++++++++++++
> 5 files changed, 28 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts
> b/arch/arm/boot/dts/exynos4210-smdkv310.dts index 9b23a82..550903a
> 100644
> --- a/arch/arm/boot/dts/exynos4210-smdkv310.dts
> +++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts
> @@ -59,6 +59,11 @@
> status = "okay";
> };
>
> + usbphy at 125B0000 {
> + compatible = "samsung,exynos4210-usbphy";
> + reg = <0x125B0000 0x100>;
> + };
> +
> keypad at 100A0000 {
> samsung,keypad-num-rows = <2>;
> samsung,keypad-num-columns = <8>;
> diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
> index bb3b09a..315308c 100644
> --- a/arch/arm/mach-exynos/Kconfig
> +++ b/arch/arm/mach-exynos/Kconfig
> @@ -410,6 +410,7 @@ config MACH_EXYNOS4_DT
> select PINCTRL
> select PINCTRL_EXYNOS4
> select USE_OF
> + select EXYNOS4_SETUP_USB_PHY
> help
> Machine support for Samsung Exynos4 machine with device tree
> enabled. Select this if a fdt blob is available for the Exynos4 SoC
> based board. diff --git a/arch/arm/mach-exynos/include/mach/map.h
> b/arch/arm/mach-exynos/include/mach/map.h index ef4958b..e64fe1c 100644
> --- a/arch/arm/mach-exynos/include/mach/map.h
> +++ b/arch/arm/mach-exynos/include/mach/map.h
> @@ -244,6 +244,7 @@
> #define S3C_PA_SPI1 EXYNOS4_PA_SPI1
> #define S3C_PA_SPI2 EXYNOS4_PA_SPI2
> #define S3C_PA_USB_HSOTG EXYNOS4_PA_HSOTG
> +#define S3C_PA_USB_PHY EXYNOS4_PA_HSPHY
>
> #define S5P_PA_EHCI EXYNOS4_PA_EHCI
> #define S5P_PA_FIMC0 EXYNOS4_PA_FIMC0
> diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c
> b/arch/arm/mach-exynos/mach-exynos4-dt.c index 8858068..f7887e5 100644
> --- a/arch/arm/mach-exynos/mach-exynos4-dt.c
> +++ b/arch/arm/mach-exynos/mach-exynos4-dt.c
> @@ -13,6 +13,7 @@
>
> #include <linux/of_platform.h>
> #include <linux/serial_core.h>
> +#include <linux/platform_data/samsung-usbphy.h>
>
> #include <asm/mach/arch.h>
> #include <asm/hardware/gic.h>
> @@ -20,9 +21,14 @@
>
> #include <plat/cpu.h>
> #include <plat/regs-serial.h>
> +#include <plat/usb-phy.h>
>
> #include "common.h"
>
> +static struct samsung_usbphy_data exynos4_usbphy_pdata = {
> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
> +};
> +
> /*
> * The following lookup table is used to override device names when
> devices * are registered from device tree. This is temporarily added to
> enable @@ -79,6 +85,8 @@ static const struct of_dev_auxdata
> exynos4_auxdata_lookup[] __initconst = { OF_DEV_AUXDATA("arm,pl330",
> EXYNOS4_PA_PDMA1, "dma-pl330.1", NULL),
> OF_DEV_AUXDATA("samsung,exynos4210-tmu", EXYNOS4_PA_TMU,
> "exynos-tmu", NULL),
> + OF_DEV_AUXDATA("samsung,exynos4210-usbphy", EXYNOS4_PA_HSPHY,
> + "s3c-usbphy", &exynos4_usbphy_pdata),
You should consider reworking the usb phy driver to avoid the need to
specify platform data through of auxdata, because auxdata array in mach-
exynos4-dt is going to be removed after including common clock framework
support for Exynos4.
Best regards,
Tomasz Figa
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v8 1/3] ARM: S3C64XX: Removing old phy setup code
2012-11-14 10:45 ` Praveen Paneri
@ 2012-11-21 20:14 ` Tomasz Figa
-1 siblings, 0 replies; 20+ messages in thread
From: Tomasz Figa @ 2012-11-21 20:14 UTC (permalink / raw)
To: Praveen Paneri
Cc: linux-samsung-soc, devicetree-discuss, linux-arm-kernel,
kgene.kim, balbi, gregkh, thomas.abraham, ben-linux, broonie,
l.majewski, kyungmin.park, grant.likely, heiko, t.figa,
gautam.vivek
Hi Praveen,
On Wednesday 14 of November 2012 16:15:36 Praveen Paneri wrote:
> This patch removes old phy code from platform side. 'setup-usb-phy.c'
> will be used for providing transceiver platform data in next
> patch. Not all of the platform data code is removed as there are others
> making use of platform_data defined for hsotg. That can be removed once
> all the SoCs start using the new transceiver for usb phy setup.
>
> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
> ---
> arch/arm/mach-s3c64xx/mach-crag6410.c | 3 -
> arch/arm/mach-s3c64xx/mach-smartq.c | 3 -
> arch/arm/mach-s3c64xx/mach-smdk6410.c | 3 -
> arch/arm/mach-s3c64xx/setup-usb-phy.c | 79
> --------------------------------- 4 files changed, 0 insertions(+), 88
> deletions(-)
>
> diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c
> b/arch/arm/mach-s3c64xx/mach-crag6410.c index 2abe95d..48f4a2d 100644
> --- a/arch/arm/mach-s3c64xx/mach-crag6410.c
> +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
> @@ -31,7 +31,6 @@
> #include <linux/spi/spi.h>
>
> #include <linux/i2c/pca953x.h>
> -#include <linux/platform_data/s3c-hsotg.h>
>
> #include <video/platform_lcd.h>
>
> @@ -805,7 +804,6 @@ static const struct gpio_led_platform_data
> gpio_leds_pdata = { .num_leds = ARRAY_SIZE(gpio_leds),
> };
>
> -static struct s3c_hsotg_plat crag6410_hsotg_pdata;
>
> static void __init crag6410_machine_init(void)
> {
> @@ -831,7 +829,6 @@ static void __init crag6410_machine_init(void)
> s3c_i2c0_set_platdata(&i2c0_pdata);
> s3c_i2c1_set_platdata(&i2c1_pdata);
> s3c_fb_set_platdata(&crag6410_lcd_pdata);
> - s3c_hsotg_set_platdata(&crag6410_hsotg_pdata);
>
> i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
> i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
> diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c
> b/arch/arm/mach-s3c64xx/mach-smartq.c index c6d7390..59bb34c 100644
> --- a/arch/arm/mach-s3c64xx/mach-smartq.c
> +++ b/arch/arm/mach-s3c64xx/mach-smartq.c
> @@ -18,7 +18,6 @@
> #include <linux/serial_core.h>
> #include <linux/spi/spi_gpio.h>
> #include <linux/usb/gpio_vbus.h>
> -#include <linux/platform_data/s3c-hsotg.h>
>
> #include <asm/mach-types.h>
> #include <asm/mach/map.h>
> @@ -187,7 +186,6 @@ static struct s3c_hwmon_pdata smartq_hwmon_pdata
> __initdata = { },
> };
>
> -static struct s3c_hsotg_plat smartq_hsotg_pdata;
>
> static int __init smartq_lcd_setup_gpio(void)
> {
> @@ -385,7 +383,6 @@ void __init smartq_map_io(void)
> void __init smartq_machine_init(void)
> {
> s3c_i2c0_set_platdata(NULL);
> - s3c_hsotg_set_platdata(&smartq_hsotg_pdata);
> s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
> s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
> s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
> diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c
> b/arch/arm/mach-s3c64xx/mach-smdk6410.c index da1a771..123f452 100644
> --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
> +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
> @@ -30,7 +30,6 @@
> #include <linux/regulator/fixed.h>
> #include <linux/regulator/machine.h>
> #include <linux/pwm_backlight.h>
> -#include <linux/platform_data/s3c-hsotg.h>
>
> #ifdef CONFIG_SMDK6410_WM1190_EV1
> #include <linux/mfd/wm8350/core.h>
> @@ -627,7 +626,6 @@ static struct platform_pwm_backlight_data
> smdk6410_bl_data = { .pwm_id = 1,
> };
>
> -static struct s3c_hsotg_plat smdk6410_hsotg_pdata;
>
> static void __init smdk6410_map_io(void)
> {
> @@ -657,7 +655,6 @@ static void __init smdk6410_machine_init(void)
> s3c_i2c0_set_platdata(NULL);
> s3c_i2c1_set_platdata(NULL);
> s3c_fb_set_platdata(&smdk6410_lcd_pdata);
> - s3c_hsotg_set_platdata(&smdk6410_hsotg_pdata);
>
> samsung_keypad_set_platdata(&smdk6410_keypad_data);
>
> diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c
> b/arch/arm/mach-s3c64xx/setup-usb-phy.c index f6757e0..7a09553 100644
> --- a/arch/arm/mach-s3c64xx/setup-usb-phy.c
> +++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c
> @@ -9,82 +9,3 @@
> *
> */
>
> -#include <linux/clk.h>
> -#include <linux/delay.h>
> -#include <linux/err.h>
> -#include <linux/io.h>
> -#include <linux/platform_device.h>
> -#include <mach/map.h>
> -#include <mach/regs-sys.h>
> -#include <plat/cpu.h>
> -#include <plat/regs-usb-hsotg-phy.h>
> -#include <plat/usb-phy.h>
> -
> -static int s3c_usb_otgphy_init(struct platform_device *pdev)
> -{
> - struct clk *xusbxti;
> - u32 phyclk;
> -
> - writel(readl(S3C64XX_OTHERS) | S3C64XX_OTHERS_USBMASK,
> S3C64XX_OTHERS); -
> - /* set clock frequency for PLL */
> - phyclk = readl(S3C_PHYCLK) & ~S3C_PHYCLK_CLKSEL_MASK;
> -
> - xusbxti = clk_get(&pdev->dev, "xusbxti");
> - if (xusbxti && !IS_ERR(xusbxti)) {
> - switch (clk_get_rate(xusbxti)) {
> - case 12 * MHZ:
> - phyclk |= S3C_PHYCLK_CLKSEL_12M;
> - break;
> - case 24 * MHZ:
> - phyclk |= S3C_PHYCLK_CLKSEL_24M;
> - break;
> - default:
> - case 48 * MHZ:
> - /* default reference clock */
> - break;
> - }
> - clk_put(xusbxti);
> - }
> -
> - /* TODO: select external clock/oscillator */
> - writel(phyclk | S3C_PHYCLK_CLK_FORCE, S3C_PHYCLK);
> -
> - /* set to normal OTG PHY */
> - writel((readl(S3C_PHYPWR) & ~S3C_PHYPWR_NORMAL_MASK), S3C_PHYPWR);
> - mdelay(1);
> -
> - /* reset OTG PHY and Link */
> - writel(S3C_RSTCON_PHY | S3C_RSTCON_HCLK | S3C_RSTCON_PHYCLK,
> - S3C_RSTCON);
> - udelay(20); /* at-least 10uS */
> - writel(0, S3C_RSTCON);
> -
> - return 0;
> -}
> -
> -static int s3c_usb_otgphy_exit(struct platform_device *pdev)
> -{
> - writel((readl(S3C_PHYPWR) | S3C_PHYPWR_ANALOG_POWERDOWN |
> - S3C_PHYPWR_OTG_DISABLE), S3C_PHYPWR);
> -
> - writel(readl(S3C64XX_OTHERS) & ~S3C64XX_OTHERS_USBMASK,
> S3C64XX_OTHERS); -
> - return 0;
> -}
> -
> -int s5p_usb_phy_init(struct platform_device *pdev, int type)
> -{
> - if (type == S5P_USB_PHY_DEVICE)
> - return s3c_usb_otgphy_init(pdev);
> -
> - return -EINVAL;
> -}
> -
> -int s5p_usb_phy_exit(struct platform_device *pdev, int type)
> -{
> - if (type == S5P_USB_PHY_DEVICE)
> - return s3c_usb_otgphy_exit(pdev);
> -
> - return -EINVAL;
> -}
This patch will break git bisect, because applying it breaks USB gadget on
s3c64xx until patch 2 gets applied.
I suggest you to add usb phy support to s3c64xx first and then remove the
old code.
Best regards,
Tomasz Figa
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v8 1/3] ARM: S3C64XX: Removing old phy setup code
@ 2012-11-21 20:14 ` Tomasz Figa
0 siblings, 0 replies; 20+ messages in thread
From: Tomasz Figa @ 2012-11-21 20:14 UTC (permalink / raw)
To: linux-arm-kernel
Hi Praveen,
On Wednesday 14 of November 2012 16:15:36 Praveen Paneri wrote:
> This patch removes old phy code from platform side. 'setup-usb-phy.c'
> will be used for providing transceiver platform data in next
> patch. Not all of the platform data code is removed as there are others
> making use of platform_data defined for hsotg. That can be removed once
> all the SoCs start using the new transceiver for usb phy setup.
>
> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
> ---
> arch/arm/mach-s3c64xx/mach-crag6410.c | 3 -
> arch/arm/mach-s3c64xx/mach-smartq.c | 3 -
> arch/arm/mach-s3c64xx/mach-smdk6410.c | 3 -
> arch/arm/mach-s3c64xx/setup-usb-phy.c | 79
> --------------------------------- 4 files changed, 0 insertions(+), 88
> deletions(-)
>
> diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c
> b/arch/arm/mach-s3c64xx/mach-crag6410.c index 2abe95d..48f4a2d 100644
> --- a/arch/arm/mach-s3c64xx/mach-crag6410.c
> +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
> @@ -31,7 +31,6 @@
> #include <linux/spi/spi.h>
>
> #include <linux/i2c/pca953x.h>
> -#include <linux/platform_data/s3c-hsotg.h>
>
> #include <video/platform_lcd.h>
>
> @@ -805,7 +804,6 @@ static const struct gpio_led_platform_data
> gpio_leds_pdata = { .num_leds = ARRAY_SIZE(gpio_leds),
> };
>
> -static struct s3c_hsotg_plat crag6410_hsotg_pdata;
>
> static void __init crag6410_machine_init(void)
> {
> @@ -831,7 +829,6 @@ static void __init crag6410_machine_init(void)
> s3c_i2c0_set_platdata(&i2c0_pdata);
> s3c_i2c1_set_platdata(&i2c1_pdata);
> s3c_fb_set_platdata(&crag6410_lcd_pdata);
> - s3c_hsotg_set_platdata(&crag6410_hsotg_pdata);
>
> i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
> i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
> diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c
> b/arch/arm/mach-s3c64xx/mach-smartq.c index c6d7390..59bb34c 100644
> --- a/arch/arm/mach-s3c64xx/mach-smartq.c
> +++ b/arch/arm/mach-s3c64xx/mach-smartq.c
> @@ -18,7 +18,6 @@
> #include <linux/serial_core.h>
> #include <linux/spi/spi_gpio.h>
> #include <linux/usb/gpio_vbus.h>
> -#include <linux/platform_data/s3c-hsotg.h>
>
> #include <asm/mach-types.h>
> #include <asm/mach/map.h>
> @@ -187,7 +186,6 @@ static struct s3c_hwmon_pdata smartq_hwmon_pdata
> __initdata = { },
> };
>
> -static struct s3c_hsotg_plat smartq_hsotg_pdata;
>
> static int __init smartq_lcd_setup_gpio(void)
> {
> @@ -385,7 +383,6 @@ void __init smartq_map_io(void)
> void __init smartq_machine_init(void)
> {
> s3c_i2c0_set_platdata(NULL);
> - s3c_hsotg_set_platdata(&smartq_hsotg_pdata);
> s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
> s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
> s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
> diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c
> b/arch/arm/mach-s3c64xx/mach-smdk6410.c index da1a771..123f452 100644
> --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
> +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
> @@ -30,7 +30,6 @@
> #include <linux/regulator/fixed.h>
> #include <linux/regulator/machine.h>
> #include <linux/pwm_backlight.h>
> -#include <linux/platform_data/s3c-hsotg.h>
>
> #ifdef CONFIG_SMDK6410_WM1190_EV1
> #include <linux/mfd/wm8350/core.h>
> @@ -627,7 +626,6 @@ static struct platform_pwm_backlight_data
> smdk6410_bl_data = { .pwm_id = 1,
> };
>
> -static struct s3c_hsotg_plat smdk6410_hsotg_pdata;
>
> static void __init smdk6410_map_io(void)
> {
> @@ -657,7 +655,6 @@ static void __init smdk6410_machine_init(void)
> s3c_i2c0_set_platdata(NULL);
> s3c_i2c1_set_platdata(NULL);
> s3c_fb_set_platdata(&smdk6410_lcd_pdata);
> - s3c_hsotg_set_platdata(&smdk6410_hsotg_pdata);
>
> samsung_keypad_set_platdata(&smdk6410_keypad_data);
>
> diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c
> b/arch/arm/mach-s3c64xx/setup-usb-phy.c index f6757e0..7a09553 100644
> --- a/arch/arm/mach-s3c64xx/setup-usb-phy.c
> +++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c
> @@ -9,82 +9,3 @@
> *
> */
>
> -#include <linux/clk.h>
> -#include <linux/delay.h>
> -#include <linux/err.h>
> -#include <linux/io.h>
> -#include <linux/platform_device.h>
> -#include <mach/map.h>
> -#include <mach/regs-sys.h>
> -#include <plat/cpu.h>
> -#include <plat/regs-usb-hsotg-phy.h>
> -#include <plat/usb-phy.h>
> -
> -static int s3c_usb_otgphy_init(struct platform_device *pdev)
> -{
> - struct clk *xusbxti;
> - u32 phyclk;
> -
> - writel(readl(S3C64XX_OTHERS) | S3C64XX_OTHERS_USBMASK,
> S3C64XX_OTHERS); -
> - /* set clock frequency for PLL */
> - phyclk = readl(S3C_PHYCLK) & ~S3C_PHYCLK_CLKSEL_MASK;
> -
> - xusbxti = clk_get(&pdev->dev, "xusbxti");
> - if (xusbxti && !IS_ERR(xusbxti)) {
> - switch (clk_get_rate(xusbxti)) {
> - case 12 * MHZ:
> - phyclk |= S3C_PHYCLK_CLKSEL_12M;
> - break;
> - case 24 * MHZ:
> - phyclk |= S3C_PHYCLK_CLKSEL_24M;
> - break;
> - default:
> - case 48 * MHZ:
> - /* default reference clock */
> - break;
> - }
> - clk_put(xusbxti);
> - }
> -
> - /* TODO: select external clock/oscillator */
> - writel(phyclk | S3C_PHYCLK_CLK_FORCE, S3C_PHYCLK);
> -
> - /* set to normal OTG PHY */
> - writel((readl(S3C_PHYPWR) & ~S3C_PHYPWR_NORMAL_MASK), S3C_PHYPWR);
> - mdelay(1);
> -
> - /* reset OTG PHY and Link */
> - writel(S3C_RSTCON_PHY | S3C_RSTCON_HCLK | S3C_RSTCON_PHYCLK,
> - S3C_RSTCON);
> - udelay(20); /* at-least 10uS */
> - writel(0, S3C_RSTCON);
> -
> - return 0;
> -}
> -
> -static int s3c_usb_otgphy_exit(struct platform_device *pdev)
> -{
> - writel((readl(S3C_PHYPWR) | S3C_PHYPWR_ANALOG_POWERDOWN |
> - S3C_PHYPWR_OTG_DISABLE), S3C_PHYPWR);
> -
> - writel(readl(S3C64XX_OTHERS) & ~S3C64XX_OTHERS_USBMASK,
> S3C64XX_OTHERS); -
> - return 0;
> -}
> -
> -int s5p_usb_phy_init(struct platform_device *pdev, int type)
> -{
> - if (type == S5P_USB_PHY_DEVICE)
> - return s3c_usb_otgphy_init(pdev);
> -
> - return -EINVAL;
> -}
> -
> -int s5p_usb_phy_exit(struct platform_device *pdev, int type)
> -{
> - if (type == S5P_USB_PHY_DEVICE)
> - return s3c_usb_otgphy_exit(pdev);
> -
> - return -EINVAL;
> -}
This patch will break git bisect, because applying it breaks USB gadget on
s3c64xx until patch 2 gets applied.
I suggest you to add usb phy support to s3c64xx first and then remove the
old code.
Best regards,
Tomasz Figa
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v8 2/3] ARM: S3C64XX: Enabling samsung-usbphy driver
2012-11-14 10:45 ` Praveen Paneri
@ 2012-11-21 20:24 ` Tomasz Figa
-1 siblings, 0 replies; 20+ messages in thread
From: Tomasz Figa @ 2012-11-21 20:24 UTC (permalink / raw)
To: Praveen Paneri
Cc: linux-samsung-soc, devicetree-discuss, linux-arm-kernel,
kgene.kim, balbi, gregkh, thomas.abraham, ben-linux, broonie,
l.majewski, kyungmin.park, grant.likely, heiko, t.figa,
gautam.vivek
Hi Praveen,
On Wednesday 14 of November 2012 16:15:37 Praveen Paneri wrote:
> Adding platform device for samsung-usbphy driver. Enabling it for
> s3c64xx based machines using s3c-hsotg.
>
> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
> ---
> arch/arm/mach-s3c64xx/include/mach/map.h | 2 +
> arch/arm/mach-s3c64xx/mach-crag6410.c | 7 ++++++
> arch/arm/mach-s3c64xx/mach-smartq.c | 8 +++++++
> arch/arm/mach-s3c64xx/mach-smdk6410.c | 7 ++++++
> arch/arm/mach-s3c64xx/setup-usb-phy.c | 14 +++++++++++++
> arch/arm/plat-samsung/devs.c | 28
> ++++++++++++++++++++++++++ arch/arm/plat-samsung/include/plat/devs.h
> | 1 +
> arch/arm/plat-samsung/include/plat/usb-phy.h | 1 +
> 8 files changed, 68 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-s3c64xx/include/mach/map.h
> b/arch/arm/mach-s3c64xx/include/mach/map.h index 8e2097b..dc482bb
> 100644
> --- a/arch/arm/mach-s3c64xx/include/mach/map.h
> +++ b/arch/arm/mach-s3c64xx/include/mach/map.h
> @@ -65,6 +65,7 @@
>
> #define S3C64XX_PA_NAND (0x70200000)
> #define S3C64XX_PA_FB (0x77100000)
> +#define S3C64XX_PA_USB_HSPHY (0x7C100000)
> #define S3C64XX_PA_USB_HSOTG (0x7C000000)
> #define S3C64XX_PA_WATCHDOG (0x7E004000)
> #define S3C64XX_PA_RTC (0x7E005000)
> @@ -113,6 +114,7 @@
> #define S3C_PA_FB S3C64XX_PA_FB
> #define S3C_PA_USBHOST S3C64XX_PA_USBHOST
> #define S3C_PA_USB_HSOTG S3C64XX_PA_USB_HSOTG
> +#define S3C_PA_USB_PHY S3C64XX_PA_USB_HSPHY
> #define S3C_PA_RTC S3C64XX_PA_RTC
> #define S3C_PA_WDT S3C64XX_PA_WATCHDOG
> #define S3C_PA_SPI0 S3C64XX_PA_SPI0
> diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c
> b/arch/arm/mach-s3c64xx/mach-crag6410.c index 48f4a2d..c602379 100644
> --- a/arch/arm/mach-s3c64xx/mach-crag6410.c
> +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
> @@ -31,6 +31,7 @@
> #include <linux/spi/spi.h>
>
> #include <linux/i2c/pca953x.h>
> +#include <linux/platform_data/samsung-usbphy.h>
>
> #include <video/platform_lcd.h>
>
> @@ -69,6 +70,7 @@
> #include <plat/adc.h>
> #include <linux/platform_data/i2c-s3c2410.h>
> #include <plat/pm.h>
> +#include <plat/usb-phy.h>
>
> #include "common.h"
>
> @@ -353,6 +355,7 @@ static struct platform_device wallvdd_device = {
> };
>
> static struct platform_device *crag6410_devices[] __initdata = {
> + &samsung_device_usbphy,
> &s3c_device_hsmmc0,
> &s3c_device_hsmmc2,
> &s3c_device_i2c0,
> @@ -804,6 +807,9 @@ static const struct gpio_led_platform_data
> gpio_leds_pdata = { .num_leds = ARRAY_SIZE(gpio_leds),
> };
>
> +static struct samsung_usbphy_data crag6410_usbphy_pdata __initdata = {
> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
> +};
Why not define default platform data somewhere and always use it for
s3c64xx, without redefining the same structure in all boards?
> static void __init crag6410_machine_init(void)
> {
> @@ -829,6 +835,7 @@ static void __init crag6410_machine_init(void)
> s3c_i2c0_set_platdata(&i2c0_pdata);
> s3c_i2c1_set_platdata(&i2c1_pdata);
> s3c_fb_set_platdata(&crag6410_lcd_pdata);
> + samsung_usbphy_set_pdata(&crag6410_usbphy_pdata);
>
> i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
> i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
> diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c
> b/arch/arm/mach-s3c64xx/mach-smartq.c index 59bb34c..f18a0ab 100644
> --- a/arch/arm/mach-s3c64xx/mach-smartq.c
> +++ b/arch/arm/mach-s3c64xx/mach-smartq.c
> @@ -18,6 +18,7 @@
> #include <linux/serial_core.h>
> #include <linux/spi/spi_gpio.h>
> #include <linux/usb/gpio_vbus.h>
> +#include <linux/platform_data/samsung-usbphy.h>
>
> #include <asm/mach-types.h>
> #include <asm/mach/map.h>
> @@ -36,6 +37,7 @@
> #include <linux/platform_data/usb-ohci-s3c2410.h>
> #include <plat/sdhci.h>
> #include <linux/platform_data/touchscreen-s3c2410.h>
> +#include <plat/usb-phy.h>
>
> #include <video/platform_lcd.h>
>
> @@ -234,6 +236,7 @@ static struct i2c_board_info smartq_i2c_devs[]
> __initdata = { };
>
> static struct platform_device *smartq_devices[] __initdata = {
> + &samsung_device_usbphy,
> &s3c_device_hsmmc1, /* Init iNAND first, ... */
> &s3c_device_hsmmc0, /* ... then the external SD card */
> &s3c_device_hsmmc2,
> @@ -380,9 +383,14 @@ void __init smartq_map_io(void)
> smartq_lcd_mode_set();
> }
>
> +static struct samsung_usbphy_data smartq_usbphy_pdata __initdata = {
> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
> +};
> +
> void __init smartq_machine_init(void)
> {
> s3c_i2c0_set_platdata(NULL);
> + samsung_usbphy_set_pdata(&smartq_usbphy_pdata);
> s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
> s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
> s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
> diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c
> b/arch/arm/mach-s3c64xx/mach-smdk6410.c index 123f452..00e46a6 100644
> --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
> +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
> @@ -30,6 +30,7 @@
> #include <linux/regulator/fixed.h>
> #include <linux/regulator/machine.h>
> #include <linux/pwm_backlight.h>
> +#include <linux/platform_data/samsung-usbphy.h>
>
> #ifdef CONFIG_SMDK6410_WM1190_EV1
> #include <linux/mfd/wm8350/core.h>
> @@ -72,6 +73,7 @@
> #include <linux/platform_data/touchscreen-s3c2410.h>
> #include <plat/keypad.h>
> #include <plat/backlight.h>
> +#include <plat/usb-phy.h>
>
> #include "common.h"
>
> @@ -263,6 +265,7 @@ static struct samsung_keypad_platdata
> smdk6410_keypad_data __initdata = { static struct map_desc
> smdk6410_iodesc[] = {};
>
> static struct platform_device *smdk6410_devices[] __initdata = {
> + &samsung_device_usbphy,
> #ifdef CONFIG_SMDK6410_SD_CH0
> &s3c_device_hsmmc0,
> #endif
> @@ -626,6 +629,9 @@ static struct platform_pwm_backlight_data
> smdk6410_bl_data = { .pwm_id = 1,
> };
>
> +static struct samsung_usbphy_data smdk6410_usbphy_pdata __initdata = {
> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
> +};
>
> static void __init smdk6410_map_io(void)
> {
> @@ -655,6 +661,7 @@ static void __init smdk6410_machine_init(void)
> s3c_i2c0_set_platdata(NULL);
> s3c_i2c1_set_platdata(NULL);
> s3c_fb_set_platdata(&smdk6410_lcd_pdata);
> + samsung_usbphy_set_pdata(&smdk6410_usbphy_pdata);
>
> samsung_keypad_set_platdata(&smdk6410_keypad_data);
>
> diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c
> b/arch/arm/mach-s3c64xx/setup-usb-phy.c index 7a09553..3aee778 100644
> --- a/arch/arm/mach-s3c64xx/setup-usb-phy.c
> +++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c
> @@ -9,3 +9,17 @@
> *
> */
>
> +#include <linux/io.h>
> +#include <mach/map.h>
> +#include <mach/regs-sys.h>
> +
> +void s5p_usb_phy_pmu_isolation(int on)
> +{
> + if (on) {
> + writel(readl(S3C64XX_OTHERS) & ~S3C64XX_OTHERS_USBMASK,
> + S3C64XX_OTHERS);
> + } else {
> + writel(readl(S3C64XX_OTHERS) | S3C64XX_OTHERS_USBMASK,
> + S3C64XX_OTHERS);
> + }
nitpick: Unnecessary braces for one line if/else.
> +}
> diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
> index bc50b20..4031c77 100644
> --- a/arch/arm/plat-samsung/devs.c
> +++ b/arch/arm/plat-samsung/devs.c
> @@ -31,6 +31,7 @@
> #include <linux/ioport.h>
> #include <linux/platform_data/s3c-hsudc.h>
> #include <linux/platform_data/s3c-hsotg.h>
> +#include <linux/platform_data/samsung-usbphy.h>
>
> #include <media/s5p_hdmi.h>
>
> @@ -1367,6 +1368,30 @@ struct platform_device s5p_device_mixer = {
>
> /* USB */
>
> +#ifdef CONFIG_ARCH_S3C64XX
> +/* USB PHY*/
> +static struct resource samsung_usbphy_resource[] = {
> + [0] = {
> + .start = S3C_PA_USB_PHY,
> + .end = S3C_PA_USB_PHY + SZ_16 - 1,
> + .flags = IORESOURCE_MEM,
> + },
> +};
> +
> +struct platform_device samsung_device_usbphy = {
> + .name = "s3c64xx-usbphy",
> + .id = -1,
> + .num_resources = ARRAY_SIZE(samsung_usbphy_resource),
> + .resource = samsung_usbphy_resource,
> +};
> +
> +void __init samsung_usbphy_set_pdata(struct samsung_usbphy_data *pd)
> +{
> + s3c_set_platdata(pd, sizeof(struct samsung_usbphy_data),
> + &samsung_device_usbphy);
> +}
This is strange. samsung_usbphy_set_pdata is declared unconditionally in
linux/platform_data/samsung-usbphy.h , but it's defined only for S3C64XX?
Maybe the condition should be CONFIG_SAMSUNG_USBPHY not
CONFIG_ARCH_S3C64XX and in case of CONFIG_SAMSUNG_USBPHY disabled a dummy
inline samsung_usphy_set_pdata should be defined in the header?
Best regards,
Tomasz Figa
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v8 2/3] ARM: S3C64XX: Enabling samsung-usbphy driver
@ 2012-11-21 20:24 ` Tomasz Figa
0 siblings, 0 replies; 20+ messages in thread
From: Tomasz Figa @ 2012-11-21 20:24 UTC (permalink / raw)
To: linux-arm-kernel
Hi Praveen,
On Wednesday 14 of November 2012 16:15:37 Praveen Paneri wrote:
> Adding platform device for samsung-usbphy driver. Enabling it for
> s3c64xx based machines using s3c-hsotg.
>
> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
> ---
> arch/arm/mach-s3c64xx/include/mach/map.h | 2 +
> arch/arm/mach-s3c64xx/mach-crag6410.c | 7 ++++++
> arch/arm/mach-s3c64xx/mach-smartq.c | 8 +++++++
> arch/arm/mach-s3c64xx/mach-smdk6410.c | 7 ++++++
> arch/arm/mach-s3c64xx/setup-usb-phy.c | 14 +++++++++++++
> arch/arm/plat-samsung/devs.c | 28
> ++++++++++++++++++++++++++ arch/arm/plat-samsung/include/plat/devs.h
> | 1 +
> arch/arm/plat-samsung/include/plat/usb-phy.h | 1 +
> 8 files changed, 68 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-s3c64xx/include/mach/map.h
> b/arch/arm/mach-s3c64xx/include/mach/map.h index 8e2097b..dc482bb
> 100644
> --- a/arch/arm/mach-s3c64xx/include/mach/map.h
> +++ b/arch/arm/mach-s3c64xx/include/mach/map.h
> @@ -65,6 +65,7 @@
>
> #define S3C64XX_PA_NAND (0x70200000)
> #define S3C64XX_PA_FB (0x77100000)
> +#define S3C64XX_PA_USB_HSPHY (0x7C100000)
> #define S3C64XX_PA_USB_HSOTG (0x7C000000)
> #define S3C64XX_PA_WATCHDOG (0x7E004000)
> #define S3C64XX_PA_RTC (0x7E005000)
> @@ -113,6 +114,7 @@
> #define S3C_PA_FB S3C64XX_PA_FB
> #define S3C_PA_USBHOST S3C64XX_PA_USBHOST
> #define S3C_PA_USB_HSOTG S3C64XX_PA_USB_HSOTG
> +#define S3C_PA_USB_PHY S3C64XX_PA_USB_HSPHY
> #define S3C_PA_RTC S3C64XX_PA_RTC
> #define S3C_PA_WDT S3C64XX_PA_WATCHDOG
> #define S3C_PA_SPI0 S3C64XX_PA_SPI0
> diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c
> b/arch/arm/mach-s3c64xx/mach-crag6410.c index 48f4a2d..c602379 100644
> --- a/arch/arm/mach-s3c64xx/mach-crag6410.c
> +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
> @@ -31,6 +31,7 @@
> #include <linux/spi/spi.h>
>
> #include <linux/i2c/pca953x.h>
> +#include <linux/platform_data/samsung-usbphy.h>
>
> #include <video/platform_lcd.h>
>
> @@ -69,6 +70,7 @@
> #include <plat/adc.h>
> #include <linux/platform_data/i2c-s3c2410.h>
> #include <plat/pm.h>
> +#include <plat/usb-phy.h>
>
> #include "common.h"
>
> @@ -353,6 +355,7 @@ static struct platform_device wallvdd_device = {
> };
>
> static struct platform_device *crag6410_devices[] __initdata = {
> + &samsung_device_usbphy,
> &s3c_device_hsmmc0,
> &s3c_device_hsmmc2,
> &s3c_device_i2c0,
> @@ -804,6 +807,9 @@ static const struct gpio_led_platform_data
> gpio_leds_pdata = { .num_leds = ARRAY_SIZE(gpio_leds),
> };
>
> +static struct samsung_usbphy_data crag6410_usbphy_pdata __initdata = {
> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
> +};
Why not define default platform data somewhere and always use it for
s3c64xx, without redefining the same structure in all boards?
> static void __init crag6410_machine_init(void)
> {
> @@ -829,6 +835,7 @@ static void __init crag6410_machine_init(void)
> s3c_i2c0_set_platdata(&i2c0_pdata);
> s3c_i2c1_set_platdata(&i2c1_pdata);
> s3c_fb_set_platdata(&crag6410_lcd_pdata);
> + samsung_usbphy_set_pdata(&crag6410_usbphy_pdata);
>
> i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
> i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
> diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c
> b/arch/arm/mach-s3c64xx/mach-smartq.c index 59bb34c..f18a0ab 100644
> --- a/arch/arm/mach-s3c64xx/mach-smartq.c
> +++ b/arch/arm/mach-s3c64xx/mach-smartq.c
> @@ -18,6 +18,7 @@
> #include <linux/serial_core.h>
> #include <linux/spi/spi_gpio.h>
> #include <linux/usb/gpio_vbus.h>
> +#include <linux/platform_data/samsung-usbphy.h>
>
> #include <asm/mach-types.h>
> #include <asm/mach/map.h>
> @@ -36,6 +37,7 @@
> #include <linux/platform_data/usb-ohci-s3c2410.h>
> #include <plat/sdhci.h>
> #include <linux/platform_data/touchscreen-s3c2410.h>
> +#include <plat/usb-phy.h>
>
> #include <video/platform_lcd.h>
>
> @@ -234,6 +236,7 @@ static struct i2c_board_info smartq_i2c_devs[]
> __initdata = { };
>
> static struct platform_device *smartq_devices[] __initdata = {
> + &samsung_device_usbphy,
> &s3c_device_hsmmc1, /* Init iNAND first, ... */
> &s3c_device_hsmmc0, /* ... then the external SD card */
> &s3c_device_hsmmc2,
> @@ -380,9 +383,14 @@ void __init smartq_map_io(void)
> smartq_lcd_mode_set();
> }
>
> +static struct samsung_usbphy_data smartq_usbphy_pdata __initdata = {
> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
> +};
> +
> void __init smartq_machine_init(void)
> {
> s3c_i2c0_set_platdata(NULL);
> + samsung_usbphy_set_pdata(&smartq_usbphy_pdata);
> s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
> s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
> s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
> diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c
> b/arch/arm/mach-s3c64xx/mach-smdk6410.c index 123f452..00e46a6 100644
> --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
> +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
> @@ -30,6 +30,7 @@
> #include <linux/regulator/fixed.h>
> #include <linux/regulator/machine.h>
> #include <linux/pwm_backlight.h>
> +#include <linux/platform_data/samsung-usbphy.h>
>
> #ifdef CONFIG_SMDK6410_WM1190_EV1
> #include <linux/mfd/wm8350/core.h>
> @@ -72,6 +73,7 @@
> #include <linux/platform_data/touchscreen-s3c2410.h>
> #include <plat/keypad.h>
> #include <plat/backlight.h>
> +#include <plat/usb-phy.h>
>
> #include "common.h"
>
> @@ -263,6 +265,7 @@ static struct samsung_keypad_platdata
> smdk6410_keypad_data __initdata = { static struct map_desc
> smdk6410_iodesc[] = {};
>
> static struct platform_device *smdk6410_devices[] __initdata = {
> + &samsung_device_usbphy,
> #ifdef CONFIG_SMDK6410_SD_CH0
> &s3c_device_hsmmc0,
> #endif
> @@ -626,6 +629,9 @@ static struct platform_pwm_backlight_data
> smdk6410_bl_data = { .pwm_id = 1,
> };
>
> +static struct samsung_usbphy_data smdk6410_usbphy_pdata __initdata = {
> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
> +};
>
> static void __init smdk6410_map_io(void)
> {
> @@ -655,6 +661,7 @@ static void __init smdk6410_machine_init(void)
> s3c_i2c0_set_platdata(NULL);
> s3c_i2c1_set_platdata(NULL);
> s3c_fb_set_platdata(&smdk6410_lcd_pdata);
> + samsung_usbphy_set_pdata(&smdk6410_usbphy_pdata);
>
> samsung_keypad_set_platdata(&smdk6410_keypad_data);
>
> diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c
> b/arch/arm/mach-s3c64xx/setup-usb-phy.c index 7a09553..3aee778 100644
> --- a/arch/arm/mach-s3c64xx/setup-usb-phy.c
> +++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c
> @@ -9,3 +9,17 @@
> *
> */
>
> +#include <linux/io.h>
> +#include <mach/map.h>
> +#include <mach/regs-sys.h>
> +
> +void s5p_usb_phy_pmu_isolation(int on)
> +{
> + if (on) {
> + writel(readl(S3C64XX_OTHERS) & ~S3C64XX_OTHERS_USBMASK,
> + S3C64XX_OTHERS);
> + } else {
> + writel(readl(S3C64XX_OTHERS) | S3C64XX_OTHERS_USBMASK,
> + S3C64XX_OTHERS);
> + }
nitpick: Unnecessary braces for one line if/else.
> +}
> diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
> index bc50b20..4031c77 100644
> --- a/arch/arm/plat-samsung/devs.c
> +++ b/arch/arm/plat-samsung/devs.c
> @@ -31,6 +31,7 @@
> #include <linux/ioport.h>
> #include <linux/platform_data/s3c-hsudc.h>
> #include <linux/platform_data/s3c-hsotg.h>
> +#include <linux/platform_data/samsung-usbphy.h>
>
> #include <media/s5p_hdmi.h>
>
> @@ -1367,6 +1368,30 @@ struct platform_device s5p_device_mixer = {
>
> /* USB */
>
> +#ifdef CONFIG_ARCH_S3C64XX
> +/* USB PHY*/
> +static struct resource samsung_usbphy_resource[] = {
> + [0] = {
> + .start = S3C_PA_USB_PHY,
> + .end = S3C_PA_USB_PHY + SZ_16 - 1,
> + .flags = IORESOURCE_MEM,
> + },
> +};
> +
> +struct platform_device samsung_device_usbphy = {
> + .name = "s3c64xx-usbphy",
> + .id = -1,
> + .num_resources = ARRAY_SIZE(samsung_usbphy_resource),
> + .resource = samsung_usbphy_resource,
> +};
> +
> +void __init samsung_usbphy_set_pdata(struct samsung_usbphy_data *pd)
> +{
> + s3c_set_platdata(pd, sizeof(struct samsung_usbphy_data),
> + &samsung_device_usbphy);
> +}
This is strange. samsung_usbphy_set_pdata is declared unconditionally in
linux/platform_data/samsung-usbphy.h , but it's defined only for S3C64XX?
Maybe the condition should be CONFIG_SAMSUNG_USBPHY not
CONFIG_ARCH_S3C64XX and in case of CONFIG_SAMSUNG_USBPHY disabled a dummy
inline samsung_usphy_set_pdata should be defined in the header?
Best regards,
Tomasz Figa
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v8 1/3] ARM: S3C64XX: Removing old phy setup code
2012-11-21 20:14 ` Tomasz Figa
@ 2012-11-23 4:29 ` Praveen Paneri
-1 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-23 4:29 UTC (permalink / raw)
To: Tomasz Figa
Cc: linux-samsung-soc, devicetree-discuss, linux-arm-kernel,
Kukjin Kim, Felipe Balbi, gregkh, Thomas Abraham, ben-linux,
broonie, Lukasz Majewski, Kyungmin Park, Grant Likely,
Heiko Stübner, t.figa, Vivek Gautam
On Thu, Nov 22, 2012 at 1:44 AM, Tomasz Figa <tomasz.figa@gmail.com> wrote:
> Hi Praveen,
>
> On Wednesday 14 of November 2012 16:15:36 Praveen Paneri wrote:
>> This patch removes old phy code from platform side. 'setup-usb-phy.c'
>> will be used for providing transceiver platform data in next
>> patch. Not all of the platform data code is removed as there are others
>> making use of platform_data defined for hsotg. That can be removed once
>> all the SoCs start using the new transceiver for usb phy setup.
>>
>> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
>> ---
>> arch/arm/mach-s3c64xx/mach-crag6410.c | 3 -
>> arch/arm/mach-s3c64xx/mach-smartq.c | 3 -
>> arch/arm/mach-s3c64xx/mach-smdk6410.c | 3 -
>> arch/arm/mach-s3c64xx/setup-usb-phy.c | 79
>> --------------------------------- 4 files changed, 0 insertions(+), 88
>> deletions(-)
>>
>> diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c
>> b/arch/arm/mach-s3c64xx/mach-crag6410.c index 2abe95d..48f4a2d 100644
>> --- a/arch/arm/mach-s3c64xx/mach-crag6410.c
>> +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
>> @@ -31,7 +31,6 @@
>> #include <linux/spi/spi.h>
>>
>> #include <linux/i2c/pca953x.h>
>> -#include <linux/platform_data/s3c-hsotg.h>
>>
>> #include <video/platform_lcd.h>
>>
>> @@ -805,7 +804,6 @@ static const struct gpio_led_platform_data
>> gpio_leds_pdata = { .num_leds = ARRAY_SIZE(gpio_leds),
>> };
>>
>> -static struct s3c_hsotg_plat crag6410_hsotg_pdata;
>>
>> static void __init crag6410_machine_init(void)
>> {
>> @@ -831,7 +829,6 @@ static void __init crag6410_machine_init(void)
>> s3c_i2c0_set_platdata(&i2c0_pdata);
>> s3c_i2c1_set_platdata(&i2c1_pdata);
>> s3c_fb_set_platdata(&crag6410_lcd_pdata);
>> - s3c_hsotg_set_platdata(&crag6410_hsotg_pdata);
>>
>> i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
>> i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
>> diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c
>> b/arch/arm/mach-s3c64xx/mach-smartq.c index c6d7390..59bb34c 100644
>> --- a/arch/arm/mach-s3c64xx/mach-smartq.c
>> +++ b/arch/arm/mach-s3c64xx/mach-smartq.c
>> @@ -18,7 +18,6 @@
>> #include <linux/serial_core.h>
>> #include <linux/spi/spi_gpio.h>
>> #include <linux/usb/gpio_vbus.h>
>> -#include <linux/platform_data/s3c-hsotg.h>
>>
>> #include <asm/mach-types.h>
>> #include <asm/mach/map.h>
>> @@ -187,7 +186,6 @@ static struct s3c_hwmon_pdata smartq_hwmon_pdata
>> __initdata = { },
>> };
>>
>> -static struct s3c_hsotg_plat smartq_hsotg_pdata;
>>
>> static int __init smartq_lcd_setup_gpio(void)
>> {
>> @@ -385,7 +383,6 @@ void __init smartq_map_io(void)
>> void __init smartq_machine_init(void)
>> {
>> s3c_i2c0_set_platdata(NULL);
>> - s3c_hsotg_set_platdata(&smartq_hsotg_pdata);
>> s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
>> s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
>> s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
>> diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c
>> b/arch/arm/mach-s3c64xx/mach-smdk6410.c index da1a771..123f452 100644
>> --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
>> +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
>> @@ -30,7 +30,6 @@
>> #include <linux/regulator/fixed.h>
>> #include <linux/regulator/machine.h>
>> #include <linux/pwm_backlight.h>
>> -#include <linux/platform_data/s3c-hsotg.h>
>>
>> #ifdef CONFIG_SMDK6410_WM1190_EV1
>> #include <linux/mfd/wm8350/core.h>
>> @@ -627,7 +626,6 @@ static struct platform_pwm_backlight_data
>> smdk6410_bl_data = { .pwm_id = 1,
>> };
>>
>> -static struct s3c_hsotg_plat smdk6410_hsotg_pdata;
>>
>> static void __init smdk6410_map_io(void)
>> {
>> @@ -657,7 +655,6 @@ static void __init smdk6410_machine_init(void)
>> s3c_i2c0_set_platdata(NULL);
>> s3c_i2c1_set_platdata(NULL);
>> s3c_fb_set_platdata(&smdk6410_lcd_pdata);
>> - s3c_hsotg_set_platdata(&smdk6410_hsotg_pdata);
>>
>> samsung_keypad_set_platdata(&smdk6410_keypad_data);
>>
>> diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c
>> b/arch/arm/mach-s3c64xx/setup-usb-phy.c index f6757e0..7a09553 100644
>> --- a/arch/arm/mach-s3c64xx/setup-usb-phy.c
>> +++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c
>> @@ -9,82 +9,3 @@
>> *
>> */
>>
>> -#include <linux/clk.h>
>> -#include <linux/delay.h>
>> -#include <linux/err.h>
>> -#include <linux/io.h>
>> -#include <linux/platform_device.h>
>> -#include <mach/map.h>
>> -#include <mach/regs-sys.h>
>> -#include <plat/cpu.h>
>> -#include <plat/regs-usb-hsotg-phy.h>
>> -#include <plat/usb-phy.h>
>> -
>> -static int s3c_usb_otgphy_init(struct platform_device *pdev)
>> -{
>> - struct clk *xusbxti;
>> - u32 phyclk;
>> -
>> - writel(readl(S3C64XX_OTHERS) | S3C64XX_OTHERS_USBMASK,
>> S3C64XX_OTHERS); -
>> - /* set clock frequency for PLL */
>> - phyclk = readl(S3C_PHYCLK) & ~S3C_PHYCLK_CLKSEL_MASK;
>> -
>> - xusbxti = clk_get(&pdev->dev, "xusbxti");
>> - if (xusbxti && !IS_ERR(xusbxti)) {
>> - switch (clk_get_rate(xusbxti)) {
>> - case 12 * MHZ:
>> - phyclk |= S3C_PHYCLK_CLKSEL_12M;
>> - break;
>> - case 24 * MHZ:
>> - phyclk |= S3C_PHYCLK_CLKSEL_24M;
>> - break;
>> - default:
>> - case 48 * MHZ:
>> - /* default reference clock */
>> - break;
>> - }
>> - clk_put(xusbxti);
>> - }
>> -
>> - /* TODO: select external clock/oscillator */
>> - writel(phyclk | S3C_PHYCLK_CLK_FORCE, S3C_PHYCLK);
>> -
>> - /* set to normal OTG PHY */
>> - writel((readl(S3C_PHYPWR) & ~S3C_PHYPWR_NORMAL_MASK), S3C_PHYPWR);
>> - mdelay(1);
>> -
>> - /* reset OTG PHY and Link */
>> - writel(S3C_RSTCON_PHY | S3C_RSTCON_HCLK | S3C_RSTCON_PHYCLK,
>> - S3C_RSTCON);
>> - udelay(20); /* at-least 10uS */
>> - writel(0, S3C_RSTCON);
>> -
>> - return 0;
>> -}
>> -
>> -static int s3c_usb_otgphy_exit(struct platform_device *pdev)
>> -{
>> - writel((readl(S3C_PHYPWR) | S3C_PHYPWR_ANALOG_POWERDOWN |
>> - S3C_PHYPWR_OTG_DISABLE), S3C_PHYPWR);
>> -
>> - writel(readl(S3C64XX_OTHERS) & ~S3C64XX_OTHERS_USBMASK,
>> S3C64XX_OTHERS); -
>> - return 0;
>> -}
>> -
>> -int s5p_usb_phy_init(struct platform_device *pdev, int type)
>> -{
>> - if (type == S5P_USB_PHY_DEVICE)
>> - return s3c_usb_otgphy_init(pdev);
>> -
>> - return -EINVAL;
>> -}
>> -
>> -int s5p_usb_phy_exit(struct platform_device *pdev, int type)
>> -{
>> - if (type == S5P_USB_PHY_DEVICE)
>> - return s3c_usb_otgphy_exit(pdev);
>> -
>> - return -EINVAL;
>> -}
>
> This patch will break git bisect, because applying it breaks USB gadget on
> s3c64xx until patch 2 gets applied.
>
> I suggest you to add usb phy support to s3c64xx first and then remove the
> old code.
Will do that.
>
> Best regards,
> Tomasz Figa
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v8 1/3] ARM: S3C64XX: Removing old phy setup code
@ 2012-11-23 4:29 ` Praveen Paneri
0 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-23 4:29 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Nov 22, 2012 at 1:44 AM, Tomasz Figa <tomasz.figa@gmail.com> wrote:
> Hi Praveen,
>
> On Wednesday 14 of November 2012 16:15:36 Praveen Paneri wrote:
>> This patch removes old phy code from platform side. 'setup-usb-phy.c'
>> will be used for providing transceiver platform data in next
>> patch. Not all of the platform data code is removed as there are others
>> making use of platform_data defined for hsotg. That can be removed once
>> all the SoCs start using the new transceiver for usb phy setup.
>>
>> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
>> ---
>> arch/arm/mach-s3c64xx/mach-crag6410.c | 3 -
>> arch/arm/mach-s3c64xx/mach-smartq.c | 3 -
>> arch/arm/mach-s3c64xx/mach-smdk6410.c | 3 -
>> arch/arm/mach-s3c64xx/setup-usb-phy.c | 79
>> --------------------------------- 4 files changed, 0 insertions(+), 88
>> deletions(-)
>>
>> diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c
>> b/arch/arm/mach-s3c64xx/mach-crag6410.c index 2abe95d..48f4a2d 100644
>> --- a/arch/arm/mach-s3c64xx/mach-crag6410.c
>> +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
>> @@ -31,7 +31,6 @@
>> #include <linux/spi/spi.h>
>>
>> #include <linux/i2c/pca953x.h>
>> -#include <linux/platform_data/s3c-hsotg.h>
>>
>> #include <video/platform_lcd.h>
>>
>> @@ -805,7 +804,6 @@ static const struct gpio_led_platform_data
>> gpio_leds_pdata = { .num_leds = ARRAY_SIZE(gpio_leds),
>> };
>>
>> -static struct s3c_hsotg_plat crag6410_hsotg_pdata;
>>
>> static void __init crag6410_machine_init(void)
>> {
>> @@ -831,7 +829,6 @@ static void __init crag6410_machine_init(void)
>> s3c_i2c0_set_platdata(&i2c0_pdata);
>> s3c_i2c1_set_platdata(&i2c1_pdata);
>> s3c_fb_set_platdata(&crag6410_lcd_pdata);
>> - s3c_hsotg_set_platdata(&crag6410_hsotg_pdata);
>>
>> i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
>> i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
>> diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c
>> b/arch/arm/mach-s3c64xx/mach-smartq.c index c6d7390..59bb34c 100644
>> --- a/arch/arm/mach-s3c64xx/mach-smartq.c
>> +++ b/arch/arm/mach-s3c64xx/mach-smartq.c
>> @@ -18,7 +18,6 @@
>> #include <linux/serial_core.h>
>> #include <linux/spi/spi_gpio.h>
>> #include <linux/usb/gpio_vbus.h>
>> -#include <linux/platform_data/s3c-hsotg.h>
>>
>> #include <asm/mach-types.h>
>> #include <asm/mach/map.h>
>> @@ -187,7 +186,6 @@ static struct s3c_hwmon_pdata smartq_hwmon_pdata
>> __initdata = { },
>> };
>>
>> -static struct s3c_hsotg_plat smartq_hsotg_pdata;
>>
>> static int __init smartq_lcd_setup_gpio(void)
>> {
>> @@ -385,7 +383,6 @@ void __init smartq_map_io(void)
>> void __init smartq_machine_init(void)
>> {
>> s3c_i2c0_set_platdata(NULL);
>> - s3c_hsotg_set_platdata(&smartq_hsotg_pdata);
>> s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
>> s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
>> s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
>> diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c
>> b/arch/arm/mach-s3c64xx/mach-smdk6410.c index da1a771..123f452 100644
>> --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
>> +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
>> @@ -30,7 +30,6 @@
>> #include <linux/regulator/fixed.h>
>> #include <linux/regulator/machine.h>
>> #include <linux/pwm_backlight.h>
>> -#include <linux/platform_data/s3c-hsotg.h>
>>
>> #ifdef CONFIG_SMDK6410_WM1190_EV1
>> #include <linux/mfd/wm8350/core.h>
>> @@ -627,7 +626,6 @@ static struct platform_pwm_backlight_data
>> smdk6410_bl_data = { .pwm_id = 1,
>> };
>>
>> -static struct s3c_hsotg_plat smdk6410_hsotg_pdata;
>>
>> static void __init smdk6410_map_io(void)
>> {
>> @@ -657,7 +655,6 @@ static void __init smdk6410_machine_init(void)
>> s3c_i2c0_set_platdata(NULL);
>> s3c_i2c1_set_platdata(NULL);
>> s3c_fb_set_platdata(&smdk6410_lcd_pdata);
>> - s3c_hsotg_set_platdata(&smdk6410_hsotg_pdata);
>>
>> samsung_keypad_set_platdata(&smdk6410_keypad_data);
>>
>> diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c
>> b/arch/arm/mach-s3c64xx/setup-usb-phy.c index f6757e0..7a09553 100644
>> --- a/arch/arm/mach-s3c64xx/setup-usb-phy.c
>> +++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c
>> @@ -9,82 +9,3 @@
>> *
>> */
>>
>> -#include <linux/clk.h>
>> -#include <linux/delay.h>
>> -#include <linux/err.h>
>> -#include <linux/io.h>
>> -#include <linux/platform_device.h>
>> -#include <mach/map.h>
>> -#include <mach/regs-sys.h>
>> -#include <plat/cpu.h>
>> -#include <plat/regs-usb-hsotg-phy.h>
>> -#include <plat/usb-phy.h>
>> -
>> -static int s3c_usb_otgphy_init(struct platform_device *pdev)
>> -{
>> - struct clk *xusbxti;
>> - u32 phyclk;
>> -
>> - writel(readl(S3C64XX_OTHERS) | S3C64XX_OTHERS_USBMASK,
>> S3C64XX_OTHERS); -
>> - /* set clock frequency for PLL */
>> - phyclk = readl(S3C_PHYCLK) & ~S3C_PHYCLK_CLKSEL_MASK;
>> -
>> - xusbxti = clk_get(&pdev->dev, "xusbxti");
>> - if (xusbxti && !IS_ERR(xusbxti)) {
>> - switch (clk_get_rate(xusbxti)) {
>> - case 12 * MHZ:
>> - phyclk |= S3C_PHYCLK_CLKSEL_12M;
>> - break;
>> - case 24 * MHZ:
>> - phyclk |= S3C_PHYCLK_CLKSEL_24M;
>> - break;
>> - default:
>> - case 48 * MHZ:
>> - /* default reference clock */
>> - break;
>> - }
>> - clk_put(xusbxti);
>> - }
>> -
>> - /* TODO: select external clock/oscillator */
>> - writel(phyclk | S3C_PHYCLK_CLK_FORCE, S3C_PHYCLK);
>> -
>> - /* set to normal OTG PHY */
>> - writel((readl(S3C_PHYPWR) & ~S3C_PHYPWR_NORMAL_MASK), S3C_PHYPWR);
>> - mdelay(1);
>> -
>> - /* reset OTG PHY and Link */
>> - writel(S3C_RSTCON_PHY | S3C_RSTCON_HCLK | S3C_RSTCON_PHYCLK,
>> - S3C_RSTCON);
>> - udelay(20); /* at-least 10uS */
>> - writel(0, S3C_RSTCON);
>> -
>> - return 0;
>> -}
>> -
>> -static int s3c_usb_otgphy_exit(struct platform_device *pdev)
>> -{
>> - writel((readl(S3C_PHYPWR) | S3C_PHYPWR_ANALOG_POWERDOWN |
>> - S3C_PHYPWR_OTG_DISABLE), S3C_PHYPWR);
>> -
>> - writel(readl(S3C64XX_OTHERS) & ~S3C64XX_OTHERS_USBMASK,
>> S3C64XX_OTHERS); -
>> - return 0;
>> -}
>> -
>> -int s5p_usb_phy_init(struct platform_device *pdev, int type)
>> -{
>> - if (type == S5P_USB_PHY_DEVICE)
>> - return s3c_usb_otgphy_init(pdev);
>> -
>> - return -EINVAL;
>> -}
>> -
>> -int s5p_usb_phy_exit(struct platform_device *pdev, int type)
>> -{
>> - if (type == S5P_USB_PHY_DEVICE)
>> - return s3c_usb_otgphy_exit(pdev);
>> -
>> - return -EINVAL;
>> -}
>
> This patch will break git bisect, because applying it breaks USB gadget on
> s3c64xx until patch 2 gets applied.
>
> I suggest you to add usb phy support to s3c64xx first and then remove the
> old code.
Will do that.
>
> Best regards,
> Tomasz Figa
>
> --
> 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
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v8 3/3] ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210
2012-11-21 19:46 ` Tomasz Figa
@ 2012-11-23 4:48 ` Praveen Paneri
-1 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-23 4:48 UTC (permalink / raw)
To: Tomasz Figa
Cc: linux-samsung-soc, devicetree-discuss, linux-arm-kernel,
Kukjin Kim, Felipe Balbi, gregkh, Thomas Abraham, ben-linux,
broonie, Lukasz Majewski, Kyungmin Park, Grant Likely,
Heiko Stübner, t.figa, Vivek Gautam
On Thu, Nov 22, 2012 at 1:16 AM, Tomasz Figa <tomasz.figa@gmail.com> wrote:
> Hi Praveen,
>
> On Wednesday 14 of November 2012 16:15:38 Praveen Paneri wrote:
>> Adding usbphy node for Exynos4210 along with the platform data.
>>
>> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
>> ---
>> arch/arm/boot/dts/exynos4210-smdkv310.dts | 5 +++++
>> arch/arm/mach-exynos/Kconfig | 1 +
>> arch/arm/mach-exynos/include/mach/map.h | 1 +
>> arch/arm/mach-exynos/mach-exynos4-dt.c | 8 ++++++++
>> arch/arm/mach-exynos/setup-usb-phy.c | 13 +++++++++++++
>> 5 files changed, 28 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts
>> b/arch/arm/boot/dts/exynos4210-smdkv310.dts index 9b23a82..550903a
>> 100644
>> --- a/arch/arm/boot/dts/exynos4210-smdkv310.dts
>> +++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts
>> @@ -59,6 +59,11 @@
>> status = "okay";
>> };
>>
>> + usbphy@125B0000 {
>> + compatible = "samsung,exynos4210-usbphy";
>> + reg = <0x125B0000 0x100>;
>> + };
>> +
>> keypad@100A0000 {
>> samsung,keypad-num-rows = <2>;
>> samsung,keypad-num-columns = <8>;
>> diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
>> index bb3b09a..315308c 100644
>> --- a/arch/arm/mach-exynos/Kconfig
>> +++ b/arch/arm/mach-exynos/Kconfig
>> @@ -410,6 +410,7 @@ config MACH_EXYNOS4_DT
>> select PINCTRL
>> select PINCTRL_EXYNOS4
>> select USE_OF
>> + select EXYNOS4_SETUP_USB_PHY
>> help
>> Machine support for Samsung Exynos4 machine with device tree
>> enabled. Select this if a fdt blob is available for the Exynos4 SoC
>> based board. diff --git a/arch/arm/mach-exynos/include/mach/map.h
>> b/arch/arm/mach-exynos/include/mach/map.h index ef4958b..e64fe1c 100644
>> --- a/arch/arm/mach-exynos/include/mach/map.h
>> +++ b/arch/arm/mach-exynos/include/mach/map.h
>> @@ -244,6 +244,7 @@
>> #define S3C_PA_SPI1 EXYNOS4_PA_SPI1
>> #define S3C_PA_SPI2 EXYNOS4_PA_SPI2
>> #define S3C_PA_USB_HSOTG EXYNOS4_PA_HSOTG
>> +#define S3C_PA_USB_PHY EXYNOS4_PA_HSPHY
>>
>> #define S5P_PA_EHCI EXYNOS4_PA_EHCI
>> #define S5P_PA_FIMC0 EXYNOS4_PA_FIMC0
>> diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c
>> b/arch/arm/mach-exynos/mach-exynos4-dt.c index 8858068..f7887e5 100644
>> --- a/arch/arm/mach-exynos/mach-exynos4-dt.c
>> +++ b/arch/arm/mach-exynos/mach-exynos4-dt.c
>> @@ -13,6 +13,7 @@
>>
>> #include <linux/of_platform.h>
>> #include <linux/serial_core.h>
>> +#include <linux/platform_data/samsung-usbphy.h>
>>
>> #include <asm/mach/arch.h>
>> #include <asm/hardware/gic.h>
>> @@ -20,9 +21,14 @@
>>
>> #include <plat/cpu.h>
>> #include <plat/regs-serial.h>
>> +#include <plat/usb-phy.h>
>>
>> #include "common.h"
>>
>> +static struct samsung_usbphy_data exynos4_usbphy_pdata = {
>> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
>> +};
>> +
>> /*
>> * The following lookup table is used to override device names when
>> devices * are registered from device tree. This is temporarily added to
>> enable @@ -79,6 +85,8 @@ static const struct of_dev_auxdata
>> exynos4_auxdata_lookup[] __initconst = { OF_DEV_AUXDATA("arm,pl330",
>> EXYNOS4_PA_PDMA1, "dma-pl330.1", NULL),
>> OF_DEV_AUXDATA("samsung,exynos4210-tmu", EXYNOS4_PA_TMU,
>> "exynos-tmu", NULL),
>> + OF_DEV_AUXDATA("samsung,exynos4210-usbphy", EXYNOS4_PA_HSPHY,
>> + "s3c-usbphy", &exynos4_usbphy_pdata),
>
> You should consider reworking the usb phy driver to avoid the need to
> specify platform data through of auxdata, because auxdata array in mach-
> exynos4-dt is going to be removed after including common clock framework
> support for Exynos4.
I am aware of this. We had some discussion earlier
https://patchwork.kernel.org/patch/1266221/
Please suggest a way for the same, that will be helpful.
Regards,
>
> Best regards,
> Tomasz Figa
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v8 3/3] ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210
@ 2012-11-23 4:48 ` Praveen Paneri
0 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-23 4:48 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Nov 22, 2012 at 1:16 AM, Tomasz Figa <tomasz.figa@gmail.com> wrote:
> Hi Praveen,
>
> On Wednesday 14 of November 2012 16:15:38 Praveen Paneri wrote:
>> Adding usbphy node for Exynos4210 along with the platform data.
>>
>> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
>> ---
>> arch/arm/boot/dts/exynos4210-smdkv310.dts | 5 +++++
>> arch/arm/mach-exynos/Kconfig | 1 +
>> arch/arm/mach-exynos/include/mach/map.h | 1 +
>> arch/arm/mach-exynos/mach-exynos4-dt.c | 8 ++++++++
>> arch/arm/mach-exynos/setup-usb-phy.c | 13 +++++++++++++
>> 5 files changed, 28 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts
>> b/arch/arm/boot/dts/exynos4210-smdkv310.dts index 9b23a82..550903a
>> 100644
>> --- a/arch/arm/boot/dts/exynos4210-smdkv310.dts
>> +++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts
>> @@ -59,6 +59,11 @@
>> status = "okay";
>> };
>>
>> + usbphy at 125B0000 {
>> + compatible = "samsung,exynos4210-usbphy";
>> + reg = <0x125B0000 0x100>;
>> + };
>> +
>> keypad at 100A0000 {
>> samsung,keypad-num-rows = <2>;
>> samsung,keypad-num-columns = <8>;
>> diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
>> index bb3b09a..315308c 100644
>> --- a/arch/arm/mach-exynos/Kconfig
>> +++ b/arch/arm/mach-exynos/Kconfig
>> @@ -410,6 +410,7 @@ config MACH_EXYNOS4_DT
>> select PINCTRL
>> select PINCTRL_EXYNOS4
>> select USE_OF
>> + select EXYNOS4_SETUP_USB_PHY
>> help
>> Machine support for Samsung Exynos4 machine with device tree
>> enabled. Select this if a fdt blob is available for the Exynos4 SoC
>> based board. diff --git a/arch/arm/mach-exynos/include/mach/map.h
>> b/arch/arm/mach-exynos/include/mach/map.h index ef4958b..e64fe1c 100644
>> --- a/arch/arm/mach-exynos/include/mach/map.h
>> +++ b/arch/arm/mach-exynos/include/mach/map.h
>> @@ -244,6 +244,7 @@
>> #define S3C_PA_SPI1 EXYNOS4_PA_SPI1
>> #define S3C_PA_SPI2 EXYNOS4_PA_SPI2
>> #define S3C_PA_USB_HSOTG EXYNOS4_PA_HSOTG
>> +#define S3C_PA_USB_PHY EXYNOS4_PA_HSPHY
>>
>> #define S5P_PA_EHCI EXYNOS4_PA_EHCI
>> #define S5P_PA_FIMC0 EXYNOS4_PA_FIMC0
>> diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c
>> b/arch/arm/mach-exynos/mach-exynos4-dt.c index 8858068..f7887e5 100644
>> --- a/arch/arm/mach-exynos/mach-exynos4-dt.c
>> +++ b/arch/arm/mach-exynos/mach-exynos4-dt.c
>> @@ -13,6 +13,7 @@
>>
>> #include <linux/of_platform.h>
>> #include <linux/serial_core.h>
>> +#include <linux/platform_data/samsung-usbphy.h>
>>
>> #include <asm/mach/arch.h>
>> #include <asm/hardware/gic.h>
>> @@ -20,9 +21,14 @@
>>
>> #include <plat/cpu.h>
>> #include <plat/regs-serial.h>
>> +#include <plat/usb-phy.h>
>>
>> #include "common.h"
>>
>> +static struct samsung_usbphy_data exynos4_usbphy_pdata = {
>> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
>> +};
>> +
>> /*
>> * The following lookup table is used to override device names when
>> devices * are registered from device tree. This is temporarily added to
>> enable @@ -79,6 +85,8 @@ static const struct of_dev_auxdata
>> exynos4_auxdata_lookup[] __initconst = { OF_DEV_AUXDATA("arm,pl330",
>> EXYNOS4_PA_PDMA1, "dma-pl330.1", NULL),
>> OF_DEV_AUXDATA("samsung,exynos4210-tmu", EXYNOS4_PA_TMU,
>> "exynos-tmu", NULL),
>> + OF_DEV_AUXDATA("samsung,exynos4210-usbphy", EXYNOS4_PA_HSPHY,
>> + "s3c-usbphy", &exynos4_usbphy_pdata),
>
> You should consider reworking the usb phy driver to avoid the need to
> specify platform data through of auxdata, because auxdata array in mach-
> exynos4-dt is going to be removed after including common clock framework
> support for Exynos4.
I am aware of this. We had some discussion earlier
https://patchwork.kernel.org/patch/1266221/
Please suggest a way for the same, that will be helpful.
Regards,
>
> Best regards,
> Tomasz Figa
>
> --
> 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
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v8 2/3] ARM: S3C64XX: Enabling samsung-usbphy driver
2012-11-21 20:24 ` Tomasz Figa
@ 2012-11-23 4:54 ` Praveen Paneri
-1 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-23 4:54 UTC (permalink / raw)
To: Tomasz Figa
Cc: linux-samsung-soc, devicetree-discuss, linux-arm-kernel,
Kukjin Kim, Felipe Balbi, gregkh, Thomas Abraham, ben-linux,
broonie, Lukasz Majewski, Kyungmin Park, Grant Likely,
Heiko Stübner, t.figa, Vivek Gautam
On Thu, Nov 22, 2012 at 1:54 AM, Tomasz Figa <tomasz.figa@gmail.com> wrote:
> Hi Praveen,
>
> On Wednesday 14 of November 2012 16:15:37 Praveen Paneri wrote:
>> Adding platform device for samsung-usbphy driver. Enabling it for
>> s3c64xx based machines using s3c-hsotg.
>>
>> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
>> ---
>> arch/arm/mach-s3c64xx/include/mach/map.h | 2 +
>> arch/arm/mach-s3c64xx/mach-crag6410.c | 7 ++++++
>> arch/arm/mach-s3c64xx/mach-smartq.c | 8 +++++++
>> arch/arm/mach-s3c64xx/mach-smdk6410.c | 7 ++++++
>> arch/arm/mach-s3c64xx/setup-usb-phy.c | 14 +++++++++++++
>> arch/arm/plat-samsung/devs.c | 28
>> ++++++++++++++++++++++++++ arch/arm/plat-samsung/include/plat/devs.h
>> | 1 +
>> arch/arm/plat-samsung/include/plat/usb-phy.h | 1 +
>> 8 files changed, 68 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-s3c64xx/include/mach/map.h
>> b/arch/arm/mach-s3c64xx/include/mach/map.h index 8e2097b..dc482bb
>> 100644
>> --- a/arch/arm/mach-s3c64xx/include/mach/map.h
>> +++ b/arch/arm/mach-s3c64xx/include/mach/map.h
>> @@ -65,6 +65,7 @@
>>
>> #define S3C64XX_PA_NAND (0x70200000)
>> #define S3C64XX_PA_FB (0x77100000)
>> +#define S3C64XX_PA_USB_HSPHY (0x7C100000)
>> #define S3C64XX_PA_USB_HSOTG (0x7C000000)
>> #define S3C64XX_PA_WATCHDOG (0x7E004000)
>> #define S3C64XX_PA_RTC (0x7E005000)
>> @@ -113,6 +114,7 @@
>> #define S3C_PA_FB S3C64XX_PA_FB
>> #define S3C_PA_USBHOST S3C64XX_PA_USBHOST
>> #define S3C_PA_USB_HSOTG S3C64XX_PA_USB_HSOTG
>> +#define S3C_PA_USB_PHY S3C64XX_PA_USB_HSPHY
>> #define S3C_PA_RTC S3C64XX_PA_RTC
>> #define S3C_PA_WDT S3C64XX_PA_WATCHDOG
>> #define S3C_PA_SPI0 S3C64XX_PA_SPI0
>> diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c
>> b/arch/arm/mach-s3c64xx/mach-crag6410.c index 48f4a2d..c602379 100644
>> --- a/arch/arm/mach-s3c64xx/mach-crag6410.c
>> +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
>> @@ -31,6 +31,7 @@
>> #include <linux/spi/spi.h>
>>
>> #include <linux/i2c/pca953x.h>
>> +#include <linux/platform_data/samsung-usbphy.h>
>>
>> #include <video/platform_lcd.h>
>>
>> @@ -69,6 +70,7 @@
>> #include <plat/adc.h>
>> #include <linux/platform_data/i2c-s3c2410.h>
>> #include <plat/pm.h>
>> +#include <plat/usb-phy.h>
>>
>> #include "common.h"
>>
>> @@ -353,6 +355,7 @@ static struct platform_device wallvdd_device = {
>> };
>>
>> static struct platform_device *crag6410_devices[] __initdata = {
>> + &samsung_device_usbphy,
>> &s3c_device_hsmmc0,
>> &s3c_device_hsmmc2,
>> &s3c_device_i2c0,
>> @@ -804,6 +807,9 @@ static const struct gpio_led_platform_data
>> gpio_leds_pdata = { .num_leds = ARRAY_SIZE(gpio_leds),
>> };
>>
>> +static struct samsung_usbphy_data crag6410_usbphy_pdata __initdata = {
>> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
>> +};
>
> Why not define default platform data somewhere and always use it for
> s3c64xx, without redefining the same structure in all boards?
>
>> static void __init crag6410_machine_init(void)
>> {
>> @@ -829,6 +835,7 @@ static void __init crag6410_machine_init(void)
>> s3c_i2c0_set_platdata(&i2c0_pdata);
>> s3c_i2c1_set_platdata(&i2c1_pdata);
>> s3c_fb_set_platdata(&crag6410_lcd_pdata);
>> + samsung_usbphy_set_pdata(&crag6410_usbphy_pdata);
>>
>> i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
>> i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
>> diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c
>> b/arch/arm/mach-s3c64xx/mach-smartq.c index 59bb34c..f18a0ab 100644
>> --- a/arch/arm/mach-s3c64xx/mach-smartq.c
>> +++ b/arch/arm/mach-s3c64xx/mach-smartq.c
>> @@ -18,6 +18,7 @@
>> #include <linux/serial_core.h>
>> #include <linux/spi/spi_gpio.h>
>> #include <linux/usb/gpio_vbus.h>
>> +#include <linux/platform_data/samsung-usbphy.h>
>>
>> #include <asm/mach-types.h>
>> #include <asm/mach/map.h>
>> @@ -36,6 +37,7 @@
>> #include <linux/platform_data/usb-ohci-s3c2410.h>
>> #include <plat/sdhci.h>
>> #include <linux/platform_data/touchscreen-s3c2410.h>
>> +#include <plat/usb-phy.h>
>>
>> #include <video/platform_lcd.h>
>>
>> @@ -234,6 +236,7 @@ static struct i2c_board_info smartq_i2c_devs[]
>> __initdata = { };
>>
>> static struct platform_device *smartq_devices[] __initdata = {
>> + &samsung_device_usbphy,
>> &s3c_device_hsmmc1, /* Init iNAND first, ... */
>> &s3c_device_hsmmc0, /* ... then the external SD card */
>> &s3c_device_hsmmc2,
>> @@ -380,9 +383,14 @@ void __init smartq_map_io(void)
>> smartq_lcd_mode_set();
>> }
>>
>> +static struct samsung_usbphy_data smartq_usbphy_pdata __initdata = {
>> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
>> +};
>> +
>> void __init smartq_machine_init(void)
>> {
>> s3c_i2c0_set_platdata(NULL);
>> + samsung_usbphy_set_pdata(&smartq_usbphy_pdata);
>> s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
>> s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
>> s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
>> diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c
>> b/arch/arm/mach-s3c64xx/mach-smdk6410.c index 123f452..00e46a6 100644
>> --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
>> +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
>> @@ -30,6 +30,7 @@
>> #include <linux/regulator/fixed.h>
>> #include <linux/regulator/machine.h>
>> #include <linux/pwm_backlight.h>
>> +#include <linux/platform_data/samsung-usbphy.h>
>>
>> #ifdef CONFIG_SMDK6410_WM1190_EV1
>> #include <linux/mfd/wm8350/core.h>
>> @@ -72,6 +73,7 @@
>> #include <linux/platform_data/touchscreen-s3c2410.h>
>> #include <plat/keypad.h>
>> #include <plat/backlight.h>
>> +#include <plat/usb-phy.h>
>>
>> #include "common.h"
>>
>> @@ -263,6 +265,7 @@ static struct samsung_keypad_platdata
>> smdk6410_keypad_data __initdata = { static struct map_desc
>> smdk6410_iodesc[] = {};
>>
>> static struct platform_device *smdk6410_devices[] __initdata = {
>> + &samsung_device_usbphy,
>> #ifdef CONFIG_SMDK6410_SD_CH0
>> &s3c_device_hsmmc0,
>> #endif
>> @@ -626,6 +629,9 @@ static struct platform_pwm_backlight_data
>> smdk6410_bl_data = { .pwm_id = 1,
>> };
>>
>> +static struct samsung_usbphy_data smdk6410_usbphy_pdata __initdata = {
>> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
>> +};
>>
>> static void __init smdk6410_map_io(void)
>> {
>> @@ -655,6 +661,7 @@ static void __init smdk6410_machine_init(void)
>> s3c_i2c0_set_platdata(NULL);
>> s3c_i2c1_set_platdata(NULL);
>> s3c_fb_set_platdata(&smdk6410_lcd_pdata);
>> + samsung_usbphy_set_pdata(&smdk6410_usbphy_pdata);
>>
>> samsung_keypad_set_platdata(&smdk6410_keypad_data);
>>
>> diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c
>> b/arch/arm/mach-s3c64xx/setup-usb-phy.c index 7a09553..3aee778 100644
>> --- a/arch/arm/mach-s3c64xx/setup-usb-phy.c
>> +++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c
>> @@ -9,3 +9,17 @@
>> *
>> */
>>
>> +#include <linux/io.h>
>> +#include <mach/map.h>
>> +#include <mach/regs-sys.h>
>> +
>> +void s5p_usb_phy_pmu_isolation(int on)
>> +{
>> + if (on) {
>> + writel(readl(S3C64XX_OTHERS) & ~S3C64XX_OTHERS_USBMASK,
>> + S3C64XX_OTHERS);
>> + } else {
>> + writel(readl(S3C64XX_OTHERS) | S3C64XX_OTHERS_USBMASK,
>> + S3C64XX_OTHERS);
>> + }
>
> nitpick: Unnecessary braces for one line if/else.
>
>> +}
>> diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
>> index bc50b20..4031c77 100644
>> --- a/arch/arm/plat-samsung/devs.c
>> +++ b/arch/arm/plat-samsung/devs.c
>> @@ -31,6 +31,7 @@
>> #include <linux/ioport.h>
>> #include <linux/platform_data/s3c-hsudc.h>
>> #include <linux/platform_data/s3c-hsotg.h>
>> +#include <linux/platform_data/samsung-usbphy.h>
>>
>> #include <media/s5p_hdmi.h>
>>
>> @@ -1367,6 +1368,30 @@ struct platform_device s5p_device_mixer = {
>>
>> /* USB */
>>
>> +#ifdef CONFIG_ARCH_S3C64XX
>> +/* USB PHY*/
>> +static struct resource samsung_usbphy_resource[] = {
>> + [0] = {
>> + .start = S3C_PA_USB_PHY,
>> + .end = S3C_PA_USB_PHY + SZ_16 - 1,
>> + .flags = IORESOURCE_MEM,
>> + },
>> +};
>> +
>> +struct platform_device samsung_device_usbphy = {
>> + .name = "s3c64xx-usbphy",
>> + .id = -1,
>> + .num_resources = ARRAY_SIZE(samsung_usbphy_resource),
>> + .resource = samsung_usbphy_resource,
>> +};
>> +
>> +void __init samsung_usbphy_set_pdata(struct samsung_usbphy_data *pd)
>> +{
>> + s3c_set_platdata(pd, sizeof(struct samsung_usbphy_data),
>> + &samsung_device_usbphy);
>> +}
>
> This is strange. samsung_usbphy_set_pdata is declared unconditionally in
> linux/platform_data/samsung-usbphy.h , but it's defined only for S3C64XX?
>
> Maybe the condition should be CONFIG_SAMSUNG_USBPHY not
> CONFIG_ARCH_S3C64XX and in case of CONFIG_SAMSUNG_USBPHY disabled a dummy
> inline samsung_usphy_set_pdata should be defined in the header?
Will update accordingly
Thanks,
Praveen
>
> Best regards,
> Tomasz Figa
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v8 2/3] ARM: S3C64XX: Enabling samsung-usbphy driver
@ 2012-11-23 4:54 ` Praveen Paneri
0 siblings, 0 replies; 20+ messages in thread
From: Praveen Paneri @ 2012-11-23 4:54 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Nov 22, 2012 at 1:54 AM, Tomasz Figa <tomasz.figa@gmail.com> wrote:
> Hi Praveen,
>
> On Wednesday 14 of November 2012 16:15:37 Praveen Paneri wrote:
>> Adding platform device for samsung-usbphy driver. Enabling it for
>> s3c64xx based machines using s3c-hsotg.
>>
>> Signed-off-by: Praveen Paneri <p.paneri@samsung.com>
>> ---
>> arch/arm/mach-s3c64xx/include/mach/map.h | 2 +
>> arch/arm/mach-s3c64xx/mach-crag6410.c | 7 ++++++
>> arch/arm/mach-s3c64xx/mach-smartq.c | 8 +++++++
>> arch/arm/mach-s3c64xx/mach-smdk6410.c | 7 ++++++
>> arch/arm/mach-s3c64xx/setup-usb-phy.c | 14 +++++++++++++
>> arch/arm/plat-samsung/devs.c | 28
>> ++++++++++++++++++++++++++ arch/arm/plat-samsung/include/plat/devs.h
>> | 1 +
>> arch/arm/plat-samsung/include/plat/usb-phy.h | 1 +
>> 8 files changed, 68 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-s3c64xx/include/mach/map.h
>> b/arch/arm/mach-s3c64xx/include/mach/map.h index 8e2097b..dc482bb
>> 100644
>> --- a/arch/arm/mach-s3c64xx/include/mach/map.h
>> +++ b/arch/arm/mach-s3c64xx/include/mach/map.h
>> @@ -65,6 +65,7 @@
>>
>> #define S3C64XX_PA_NAND (0x70200000)
>> #define S3C64XX_PA_FB (0x77100000)
>> +#define S3C64XX_PA_USB_HSPHY (0x7C100000)
>> #define S3C64XX_PA_USB_HSOTG (0x7C000000)
>> #define S3C64XX_PA_WATCHDOG (0x7E004000)
>> #define S3C64XX_PA_RTC (0x7E005000)
>> @@ -113,6 +114,7 @@
>> #define S3C_PA_FB S3C64XX_PA_FB
>> #define S3C_PA_USBHOST S3C64XX_PA_USBHOST
>> #define S3C_PA_USB_HSOTG S3C64XX_PA_USB_HSOTG
>> +#define S3C_PA_USB_PHY S3C64XX_PA_USB_HSPHY
>> #define S3C_PA_RTC S3C64XX_PA_RTC
>> #define S3C_PA_WDT S3C64XX_PA_WATCHDOG
>> #define S3C_PA_SPI0 S3C64XX_PA_SPI0
>> diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c
>> b/arch/arm/mach-s3c64xx/mach-crag6410.c index 48f4a2d..c602379 100644
>> --- a/arch/arm/mach-s3c64xx/mach-crag6410.c
>> +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
>> @@ -31,6 +31,7 @@
>> #include <linux/spi/spi.h>
>>
>> #include <linux/i2c/pca953x.h>
>> +#include <linux/platform_data/samsung-usbphy.h>
>>
>> #include <video/platform_lcd.h>
>>
>> @@ -69,6 +70,7 @@
>> #include <plat/adc.h>
>> #include <linux/platform_data/i2c-s3c2410.h>
>> #include <plat/pm.h>
>> +#include <plat/usb-phy.h>
>>
>> #include "common.h"
>>
>> @@ -353,6 +355,7 @@ static struct platform_device wallvdd_device = {
>> };
>>
>> static struct platform_device *crag6410_devices[] __initdata = {
>> + &samsung_device_usbphy,
>> &s3c_device_hsmmc0,
>> &s3c_device_hsmmc2,
>> &s3c_device_i2c0,
>> @@ -804,6 +807,9 @@ static const struct gpio_led_platform_data
>> gpio_leds_pdata = { .num_leds = ARRAY_SIZE(gpio_leds),
>> };
>>
>> +static struct samsung_usbphy_data crag6410_usbphy_pdata __initdata = {
>> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
>> +};
>
> Why not define default platform data somewhere and always use it for
> s3c64xx, without redefining the same structure in all boards?
>
>> static void __init crag6410_machine_init(void)
>> {
>> @@ -829,6 +835,7 @@ static void __init crag6410_machine_init(void)
>> s3c_i2c0_set_platdata(&i2c0_pdata);
>> s3c_i2c1_set_platdata(&i2c1_pdata);
>> s3c_fb_set_platdata(&crag6410_lcd_pdata);
>> + samsung_usbphy_set_pdata(&crag6410_usbphy_pdata);
>>
>> i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
>> i2c_register_board_info(1, i2c_devs1, ARRAY_SIZE(i2c_devs1));
>> diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c
>> b/arch/arm/mach-s3c64xx/mach-smartq.c index 59bb34c..f18a0ab 100644
>> --- a/arch/arm/mach-s3c64xx/mach-smartq.c
>> +++ b/arch/arm/mach-s3c64xx/mach-smartq.c
>> @@ -18,6 +18,7 @@
>> #include <linux/serial_core.h>
>> #include <linux/spi/spi_gpio.h>
>> #include <linux/usb/gpio_vbus.h>
>> +#include <linux/platform_data/samsung-usbphy.h>
>>
>> #include <asm/mach-types.h>
>> #include <asm/mach/map.h>
>> @@ -36,6 +37,7 @@
>> #include <linux/platform_data/usb-ohci-s3c2410.h>
>> #include <plat/sdhci.h>
>> #include <linux/platform_data/touchscreen-s3c2410.h>
>> +#include <plat/usb-phy.h>
>>
>> #include <video/platform_lcd.h>
>>
>> @@ -234,6 +236,7 @@ static struct i2c_board_info smartq_i2c_devs[]
>> __initdata = { };
>>
>> static struct platform_device *smartq_devices[] __initdata = {
>> + &samsung_device_usbphy,
>> &s3c_device_hsmmc1, /* Init iNAND first, ... */
>> &s3c_device_hsmmc0, /* ... then the external SD card */
>> &s3c_device_hsmmc2,
>> @@ -380,9 +383,14 @@ void __init smartq_map_io(void)
>> smartq_lcd_mode_set();
>> }
>>
>> +static struct samsung_usbphy_data smartq_usbphy_pdata __initdata = {
>> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
>> +};
>> +
>> void __init smartq_machine_init(void)
>> {
>> s3c_i2c0_set_platdata(NULL);
>> + samsung_usbphy_set_pdata(&smartq_usbphy_pdata);
>> s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
>> s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
>> s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
>> diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c
>> b/arch/arm/mach-s3c64xx/mach-smdk6410.c index 123f452..00e46a6 100644
>> --- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
>> +++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
>> @@ -30,6 +30,7 @@
>> #include <linux/regulator/fixed.h>
>> #include <linux/regulator/machine.h>
>> #include <linux/pwm_backlight.h>
>> +#include <linux/platform_data/samsung-usbphy.h>
>>
>> #ifdef CONFIG_SMDK6410_WM1190_EV1
>> #include <linux/mfd/wm8350/core.h>
>> @@ -72,6 +73,7 @@
>> #include <linux/platform_data/touchscreen-s3c2410.h>
>> #include <plat/keypad.h>
>> #include <plat/backlight.h>
>> +#include <plat/usb-phy.h>
>>
>> #include "common.h"
>>
>> @@ -263,6 +265,7 @@ static struct samsung_keypad_platdata
>> smdk6410_keypad_data __initdata = { static struct map_desc
>> smdk6410_iodesc[] = {};
>>
>> static struct platform_device *smdk6410_devices[] __initdata = {
>> + &samsung_device_usbphy,
>> #ifdef CONFIG_SMDK6410_SD_CH0
>> &s3c_device_hsmmc0,
>> #endif
>> @@ -626,6 +629,9 @@ static struct platform_pwm_backlight_data
>> smdk6410_bl_data = { .pwm_id = 1,
>> };
>>
>> +static struct samsung_usbphy_data smdk6410_usbphy_pdata __initdata = {
>> + .pmu_isolation = s5p_usb_phy_pmu_isolation,
>> +};
>>
>> static void __init smdk6410_map_io(void)
>> {
>> @@ -655,6 +661,7 @@ static void __init smdk6410_machine_init(void)
>> s3c_i2c0_set_platdata(NULL);
>> s3c_i2c1_set_platdata(NULL);
>> s3c_fb_set_platdata(&smdk6410_lcd_pdata);
>> + samsung_usbphy_set_pdata(&smdk6410_usbphy_pdata);
>>
>> samsung_keypad_set_platdata(&smdk6410_keypad_data);
>>
>> diff --git a/arch/arm/mach-s3c64xx/setup-usb-phy.c
>> b/arch/arm/mach-s3c64xx/setup-usb-phy.c index 7a09553..3aee778 100644
>> --- a/arch/arm/mach-s3c64xx/setup-usb-phy.c
>> +++ b/arch/arm/mach-s3c64xx/setup-usb-phy.c
>> @@ -9,3 +9,17 @@
>> *
>> */
>>
>> +#include <linux/io.h>
>> +#include <mach/map.h>
>> +#include <mach/regs-sys.h>
>> +
>> +void s5p_usb_phy_pmu_isolation(int on)
>> +{
>> + if (on) {
>> + writel(readl(S3C64XX_OTHERS) & ~S3C64XX_OTHERS_USBMASK,
>> + S3C64XX_OTHERS);
>> + } else {
>> + writel(readl(S3C64XX_OTHERS) | S3C64XX_OTHERS_USBMASK,
>> + S3C64XX_OTHERS);
>> + }
>
> nitpick: Unnecessary braces for one line if/else.
>
>> +}
>> diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
>> index bc50b20..4031c77 100644
>> --- a/arch/arm/plat-samsung/devs.c
>> +++ b/arch/arm/plat-samsung/devs.c
>> @@ -31,6 +31,7 @@
>> #include <linux/ioport.h>
>> #include <linux/platform_data/s3c-hsudc.h>
>> #include <linux/platform_data/s3c-hsotg.h>
>> +#include <linux/platform_data/samsung-usbphy.h>
>>
>> #include <media/s5p_hdmi.h>
>>
>> @@ -1367,6 +1368,30 @@ struct platform_device s5p_device_mixer = {
>>
>> /* USB */
>>
>> +#ifdef CONFIG_ARCH_S3C64XX
>> +/* USB PHY*/
>> +static struct resource samsung_usbphy_resource[] = {
>> + [0] = {
>> + .start = S3C_PA_USB_PHY,
>> + .end = S3C_PA_USB_PHY + SZ_16 - 1,
>> + .flags = IORESOURCE_MEM,
>> + },
>> +};
>> +
>> +struct platform_device samsung_device_usbphy = {
>> + .name = "s3c64xx-usbphy",
>> + .id = -1,
>> + .num_resources = ARRAY_SIZE(samsung_usbphy_resource),
>> + .resource = samsung_usbphy_resource,
>> +};
>> +
>> +void __init samsung_usbphy_set_pdata(struct samsung_usbphy_data *pd)
>> +{
>> + s3c_set_platdata(pd, sizeof(struct samsung_usbphy_data),
>> + &samsung_device_usbphy);
>> +}
>
> This is strange. samsung_usbphy_set_pdata is declared unconditionally in
> linux/platform_data/samsung-usbphy.h , but it's defined only for S3C64XX?
>
> Maybe the condition should be CONFIG_SAMSUNG_USBPHY not
> CONFIG_ARCH_S3C64XX and in case of CONFIG_SAMSUNG_USBPHY disabled a dummy
> inline samsung_usphy_set_pdata should be defined in the header?
Will update accordingly
Thanks,
Praveen
>
> Best regards,
> Tomasz Figa
>
> --
> 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
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2012-11-23 4:54 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-14 10:45 [PATCH v8 0/3] ARM: Exynos/S3C64XX: usb phy driver support for S3C64XX and EXYNOS4210 Praveen Paneri
2012-11-14 10:45 ` Praveen Paneri
2012-11-14 10:45 ` [PATCH v8 1/3] ARM: S3C64XX: Removing old phy setup code Praveen Paneri
2012-11-14 10:45 ` Praveen Paneri
2012-11-21 20:14 ` Tomasz Figa
2012-11-21 20:14 ` Tomasz Figa
2012-11-23 4:29 ` Praveen Paneri
2012-11-23 4:29 ` Praveen Paneri
[not found] ` <1352889938-17311-1-git-send-email-p.paneri-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2012-11-14 10:45 ` [PATCH v8 2/3] ARM: S3C64XX: Enabling samsung-usbphy driver Praveen Paneri
2012-11-14 10:45 ` Praveen Paneri
2012-11-21 20:24 ` Tomasz Figa
2012-11-21 20:24 ` Tomasz Figa
2012-11-23 4:54 ` Praveen Paneri
2012-11-23 4:54 ` Praveen Paneri
2012-11-14 10:45 ` [PATCH v8 3/3] ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210 Praveen Paneri
2012-11-14 10:45 ` Praveen Paneri
2012-11-21 19:46 ` Tomasz Figa
2012-11-21 19:46 ` Tomasz Figa
2012-11-23 4:48 ` Praveen Paneri
2012-11-23 4:48 ` Praveen Paneri
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.