* [PATCH v8 0/3] ARM: Exynos/S3C64XX: usb phy driver support for S3C64XX and EXYNOS4210 @ 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 ` (2 more replies) 0 siblings, 3 replies; 10+ 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] 10+ messages in thread
* [PATCH v8 1/3] ARM: S3C64XX: Removing old phy setup code 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-21 20:14 ` Tomasz Figa [not found] ` <1352889938-17311-1-git-send-email-p.paneri-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2012-11-14 10:45 ` [PATCH v8 3/3] ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210 Praveen Paneri 2 siblings, 1 reply; 10+ 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] 10+ messages in thread
* Re: [PATCH v8 1/3] ARM: S3C64XX: Removing old phy setup code 2012-11-14 10:45 ` [PATCH v8 1/3] ARM: S3C64XX: Removing old phy setup code Praveen Paneri @ 2012-11-21 20:14 ` Tomasz Figa 2012-11-23 4:29 ` Praveen Paneri 0 siblings, 1 reply; 10+ 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] 10+ 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 0 siblings, 0 replies; 10+ 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] 10+ messages in thread
[parent not found: <1352889938-17311-1-git-send-email-p.paneri-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>]
* [PATCH v8 2/3] ARM: S3C64XX: Enabling samsung-usbphy driver [not found] ` <1352889938-17311-1-git-send-email-p.paneri-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> @ 2012-11-14 10:45 ` Praveen Paneri 2012-11-21 20:24 ` Tomasz Figa 0 siblings, 1 reply; 10+ 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] 10+ messages in thread
* Re: [PATCH v8 2/3] ARM: S3C64XX: Enabling samsung-usbphy driver 2012-11-14 10:45 ` [PATCH v8 2/3] ARM: S3C64XX: Enabling samsung-usbphy driver Praveen Paneri @ 2012-11-21 20:24 ` Tomasz Figa 2012-11-23 4:54 ` Praveen Paneri 0 siblings, 1 reply; 10+ 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] 10+ 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 0 siblings, 0 replies; 10+ 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] 10+ messages in thread
* [PATCH v8 3/3] ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210 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 ` [PATCH v8 1/3] ARM: S3C64XX: Removing old phy setup code Praveen Paneri [not found] ` <1352889938-17311-1-git-send-email-p.paneri-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> @ 2012-11-14 10:45 ` Praveen Paneri 2012-11-21 19:46 ` Tomasz Figa 2 siblings, 1 reply; 10+ 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] 10+ messages in thread
* Re: [PATCH v8 3/3] ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210 2012-11-14 10:45 ` [PATCH v8 3/3] ARM: EXYNOS: Enabling samsung-usbphy driver for EXYNOS4210 Praveen Paneri @ 2012-11-21 19:46 ` Tomasz Figa 2012-11-23 4:48 ` Praveen Paneri 0 siblings, 1 reply; 10+ 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] 10+ 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 0 siblings, 0 replies; 10+ 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] 10+ messages in thread
end of thread, other threads:[~2012-11-23 4:54 UTC | newest] Thread overview: 10+ 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 ` [PATCH v8 1/3] ARM: S3C64XX: Removing old phy setup code Praveen Paneri 2012-11-21 20:14 ` Tomasz Figa 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-21 20:24 ` Tomasz Figa 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-21 19:46 ` Tomasz Figa 2012-11-23 4:48 ` Praveen Paneri
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).