Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi, On Fri, Apr 25, 2014 at 1:27 PM, Tushar Behera wrote: > On 04/14/2014 08:07 PM, Sylwester Nawrocki wrote: >> On 08/04/14 16:36, Vivek Gautam wrote: >>> diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt >>> b/Documentation/devicetree/bindings/phy/samsung-phy.txt >>> index 28f9edb..6d99ba9 100644 >>> --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt >>> +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt >>> @@ -74,3 +74,45 @@ phy-consumer@1234 { >>> >>> Refer to DT bindings documentation of particular PHY consumer devices for >>> more >>> information about required PHYs and the way of specification. >>> + >>> +Samsung Exynos5 SoC series USB DRD PHY controller >>> +-- >>> + >>> +Required properties: >>> +- compatible : Should be set to one of the following supported values: >>> +- "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, >>> +- "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. >>> +- reg : Register offset and length of USB DRD PHY register set; >>> +- clocks: Clock IDs array as required by the controller >>> +- clock-names: names of clocks correseponding to IDs in the clock property; >>> + Required clocks: >>> +- phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), >>> + used for register access. >>> +- ref: PHY's reference clock (usually crystal clock), associated by >>> + phy name, used to determine bit values for clock settings >>> + register. >>> +Additional clock required for Exynos5420: >>> +- usb30_sclk_100m: Additional special clock used for PHY operation >>> + depicted as 'sclk_usbphy30' in CMU of Exynos5420. >>> +- samsung,syscon-phandle: phandle for syscon interface, which is used to >>> + control pmu registers for power isolation. >> >> Why to append "-phandle" to the property's name ? If this is for PMU >> perhaps make it more explicit and name it: samsung,pmu-syscon or >> samsung,pmureg ? >> > > There are already a couple of nodes (watchdog and sata) using > samsung,syscon-phandle. IMHO, we should keep only property string for > syscon node. Either we keep syscon-phandle here or change sata/watchdog > driver to use the modified property name. IMHO samsung,pmu-syscon make more sense rather than appending a '-phandle' to the property name. This is a 'phandle' and that is in fact understood, isn't it ? We can change in the watchdog, sata drivers to use use the modified name. I can send a patch for the same if we are OK with this, so that we maintain the consistency in the device tree. -- Best Regards Vivek Gautam Samsung R&D Institute, Bangalore India -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On 04/14/2014 08:07 PM, Sylwester Nawrocki wrote: > On 08/04/14 16:36, Vivek Gautam wrote: >> diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt >> b/Documentation/devicetree/bindings/phy/samsung-phy.txt >> index 28f9edb..6d99ba9 100644 >> --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt >> +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt >> @@ -74,3 +74,45 @@ phy-consumer@1234 { >> >> Refer to DT bindings documentation of particular PHY consumer devices for >> more >> information about required PHYs and the way of specification. >> + >> +Samsung Exynos5 SoC series USB DRD PHY controller >> +-- >> + >> +Required properties: >> +- compatible : Should be set to one of the following supported values: >> +- "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, >> +- "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. >> +- reg : Register offset and length of USB DRD PHY register set; >> +- clocks: Clock IDs array as required by the controller >> +- clock-names: names of clocks correseponding to IDs in the clock property; >> + Required clocks: >> +- phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), >> + used for register access. >> +- ref: PHY's reference clock (usually crystal clock), associated by >> + phy name, used to determine bit values for clock settings >> + register. >> +Additional clock required for Exynos5420: >> +- usb30_sclk_100m: Additional special clock used for PHY operation >> + depicted as 'sclk_usbphy30' in CMU of Exynos5420. >> +- samsung,syscon-phandle: phandle for syscon interface, which is used to >> + control pmu registers for power isolation. > > Why to append "-phandle" to the property's name ? If this is for PMU > perhaps make it more explicit and name it: samsung,pmu-syscon or > samsung,pmureg ? > There are already a couple of nodes (watchdog and sata) using samsung,syscon-phandle. IMHO, we should keep only property string for syscon node. Either we keep syscon-phandle here or change sata/watchdog driver to use the modified property name. -- Tushar Behera -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi Jingoo, On Tue, Apr 22, 2014 at 7:48 AM, Jingoo Han wrote: > On Wednesday, April 16, 2014 11:49 PM, Vivek Gautam wrote: >> On Wed, Apr 16, 2014 at 7:14 PM, Tomasz Figa wrote: >> > On 15.04.2014 08:09, Vivek Gautam wrote: >> >> On Thu, Apr 10, 2014 at 5:09 PM, Vivek Gautam wrote: >> >>> On Wed, Apr 9, 2014 at 7:03 PM, Tomasz Figa wrote: >> On 09.04.2014 13:49, Vivek Gautam wrote: >> >>> >> >>> So, USB30_SCLK_100M is the SCLK that we are talking in the driver. I >> >>> don't see any reference to XXTI in the USB 3.0 DRD controller chapter >> >>> (in both Exynos5250 and 5420) >> >>> In addition to this there's one more point to be noticed here. >> >>> On Exynos5420 system, the sclk_usbphy300 (which is the sclk_usbphy30 >> >>> for USB DRD channel 0), is also the PICO phy clock, i.e. USB 2.0 phy >> >>> clock. >> >>> So we should add a similar clk_get() for this clock in the >> >>> phy-exynos5250-usb2 driver too, to support Exynos5420. >> >> >> >> >> >> Is something clear from the above block diagram ? (although the >> >> diagram looks weird - space and tabs problem :-( ) >> >> Basically there's the clock USB30_SCLK_100M which is going into the >> >> USB 3.0 DRD PHY controller. >> >> And this is the only sclk mentioned in the block diagram for USB 3.0 >> >> DRD controller in Exynos5420. >> >> Same is not there in the block diagram in Exynos5250 UM. >> > >> > >> > From what I can see in the documentation, there are 4 USB 3.0 related >> > clocks >> > generated in CMU: >> > >> > - sclk_usbphy300, >> > - sclk_usbphy301, >> > - sclk_usbdrd300, >> > - sclk_usbdrd301, >> > >> > They are all rated to max. 24 MHz and the recommended operating frequency >> > is >> > 24 MHz, so it looks exactly like USB PHY reference, which is usually a 24 >> > MHz clock. >> > >> > To me, this looks like on Exynos5420 a separate special clock path is used >> > instead of xusbxti as reference of USB 3.0 PHY and so the sclk should be >> > simply passed as the "ref" clock. >> >> Ok, i will clear on this with the hardware engineer also once. >> May be Jingoo can help me with this. >> >> Jingoo, >> Can you please enquire about the clock path of usbphy30 reference >> clocks on Exynos5420. >> As mentioned by Tomasz above, we have sclk_usbphy300 and >> sclk_usbphy301 as the reference clocks for USB3.0 DRD phy. *Also* >> sclk_usbphy300 is used for Pico phy (which is the USb 2.0 phy used by >> ehci/ohci controller on Exynos5420). >> It will be of great help. > > Hi Vevek, Tomasz > > Long time no see. > > I asked USB S/W engineer and USB H/W engineer. > > There are two USB3.0 on Exynos5420; thus there are two sclks > such as 'sclk_usbphy300 and sclk_usbphy301'. > > As Tomasz mentioned, 'sclk_usbphy300 and sclk_usbphy301' can > be used instead of 'xusbxti' as reference of USB 3.0 PHY. Thank you so much for getting this information. I can re-spin the patch. :-) > > However, on Exynos5420, "ONLY" 'sclk_usbphy300' can be used > for USB2.0 pico phy. (so, '301' CANNOT support USB2.0 pico phy.) True, for USB 2.0 pico phy, only sclk_usbphy300 can be used. -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On Wednesday, April 16, 2014 11:49 PM, Vivek Gautam wrote: > On Wed, Apr 16, 2014 at 7:14 PM, Tomasz Figa wrote: > > On 15.04.2014 08:09, Vivek Gautam wrote: > >> On Thu, Apr 10, 2014 at 5:09 PM, Vivek Gautam wrote: > >>> On Wed, Apr 9, 2014 at 7:03 PM, Tomasz Figa wrote: > On 09.04.2014 13:49, Vivek Gautam wrote: > >>> > >>> So, USB30_SCLK_100M is the SCLK that we are talking in the driver. I > >>> don't see any reference to XXTI in the USB 3.0 DRD controller chapter > >>> (in both Exynos5250 and 5420) > >>> In addition to this there's one more point to be noticed here. > >>> On Exynos5420 system, the sclk_usbphy300 (which is the sclk_usbphy30 > >>> for USB DRD channel 0), is also the PICO phy clock, i.e. USB 2.0 phy > >>> clock. > >>> So we should add a similar clk_get() for this clock in the > >>> phy-exynos5250-usb2 driver too, to support Exynos5420. > >> > >> > >> Is something clear from the above block diagram ? (although the > >> diagram looks weird - space and tabs problem :-( ) > >> Basically there's the clock USB30_SCLK_100M which is going into the > >> USB 3.0 DRD PHY controller. > >> And this is the only sclk mentioned in the block diagram for USB 3.0 > >> DRD controller in Exynos5420. > >> Same is not there in the block diagram in Exynos5250 UM. > > > > > > From what I can see in the documentation, there are 4 USB 3.0 related clocks > > generated in CMU: > > > > - sclk_usbphy300, > > - sclk_usbphy301, > > - sclk_usbdrd300, > > - sclk_usbdrd301, > > > > They are all rated to max. 24 MHz and the recommended operating frequency is > > 24 MHz, so it looks exactly like USB PHY reference, which is usually a 24 > > MHz clock. > > > > To me, this looks like on Exynos5420 a separate special clock path is used > > instead of xusbxti as reference of USB 3.0 PHY and so the sclk should be > > simply passed as the "ref" clock. > > Ok, i will clear on this with the hardware engineer also once. > May be Jingoo can help me with this. > > Jingoo, > Can you please enquire about the clock path of usbphy30 reference > clocks on Exynos5420. > As mentioned by Tomasz above, we have sclk_usbphy300 and > sclk_usbphy301 as the reference clocks for USB3.0 DRD phy. *Also* > sclk_usbphy300 is used for Pico phy (which is the USb 2.0 phy used by > ehci/ohci controller on Exynos5420). > It will be of great help. Hi Vevek, Tomasz Long time no see. I asked USB S/W engineer and USB H/W engineer. There are two USB3.0 on Exynos5420; thus there are two sclks such as 'sclk_usbphy300 and sclk_usbphy301'. As Tomasz mentioned, 'sclk_usbphy300 and sclk_usbphy301' can be used instead of 'xusbxti' as reference of USB 3.0 PHY. However, on Exynos5420, "ONLY" 'sclk_usbphy300' can be used for USB2.0 pico phy. (so, '301' CANNOT support USB2.0 pico phy.) Best regards, Jingoo Han -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi, On Wed, Apr 16, 2014 at 7:14 PM, Tomasz Figa wrote: > Hi Vivek, > > > On 15.04.2014 08:09, Vivek Gautam wrote: >> >> Hi Tomasz, >> >> >> On Thu, Apr 10, 2014 at 5:09 PM, Vivek Gautam >> wrote: >>> >>> On Wed, Apr 9, 2014 at 7:03 PM, Tomasz Figa wrote: On 09.04.2014 13:49, Vivek Gautam wrote: > > > Hi, > > > On Wed, Apr 9, 2014 at 4:36 PM, Tomasz Figa wrote: >> >> >> Hi Vivek, >> >> Please see my comments inline. >> >> >> On 08.04.2014 16:36, Vivek Gautam wrote: >>> >>> >>> >>> Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. >>> The new driver uses the generic PHY framework and will interact >>> with DWC3 controller present on Exynos5 series of SoCs. >>> Thereby, removing old phy-samsung-usb3 driver and related code >>> used untill now which was based on usb/phy framework. >>> >>> Signed-off-by: Vivek Gautam >>> --- >>> .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ >>> drivers/phy/Kconfig| 11 + >>> drivers/phy/Makefile |1 + >>> drivers/phy/phy-exynos5-usbdrd.c | 668 >>> >>> 4 files changed, 722 insertions(+) >>> create mode 100644 drivers/phy/phy-exynos5-usbdrd.c >> >> >> >> >> [snip] >> >> >>> + Additional clock required for Exynos5420: >>> + - usb30_sclk_100m: Additional special clock used for PHY >>> operation >>> + depicted as 'sclk_usbphy30' in CMU of >>> Exynos5420. >> >> >> >> >> Are you sure this isn't simply a gate for the ref clock, as it can be >> found >> on another SoC that is not upstream yet? I don't have documentation >> for >> Exynos 5420 so I can't tell, but I'd like to ask you to recheck this. > > > >> From what i can see in the manual : > > > sclk_usbphy30 is derived from OSCCLK. > It is coming from a MUX (default input line to this is OSCCLK) and > then through a DIV > there's this gate. > > {OSCCLK + other sources} --->[MUX] ---> [DIV] --> [GATE for > sclk_usbphy30] > > the {rate of sclk_usbphy30} == OSCCLK > > However the 'ref' clock that we have been using is the actual > oscillator > clock. > And on SoC Exynos5250, we don't have any such gate (sclk_usbphy30). > So should this mean that ref clock and sclk_usbphy30 are still be > controlled by > two different gates ? > Is there maybe a diagram of PHY input clocks in the datasheet, like for USB 2.0 PHY in Exynos4210/4412/5250 datasheets in the chapter about USB2.0 Device? Something like: || | ___| XusbXTI | Phy_fsel[2:0]| ___ | ___[X]___|| __|_|___|\__|_| | | _v___ | _ ^ | |/ | | _ | | || | | | | ___ | | ___| | || | | | | | |_|_| |___| | | X 0 ||_| PLL |__|_|_|CLK|_|_| _ | | | | || |DIV|_|_| |___[X] | |_| 12 |_|480 | |___| | | | MHz MHz |Digital| | XusbXTO | USB PHY|___| | || >>> >>> Below is the block diagram given for DRD controller. >>> >>> ___ >>> || >>> | | >>> | | PHY | | >>> | | controller >>> |-|--- >>> | |__ | | >>> | >>> || >>>| >>> | USB 3.0 | >>> V >>> | DRD | >>> --- >>> |Controller | | >>> | >>> ||USB30_SCLK_100M| USB 3.0 DRD | >>> | | ---> >>> | PHY | >>> | | Link cont. | | | >>> | >>> | - | >>> | | >>> |___| |_| >>> >>> Does this help ? >>> >>> So, USB30_SCLK_100M is the SCLK that we are talking in the driver. I >>> don't see any reference to XXTI in the USB 3.0 DRD controller chapter >>> (in both Exynos5250 and 5420) >
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi Vivek, On 15.04.2014 08:09, Vivek Gautam wrote: Hi Tomasz, On Thu, Apr 10, 2014 at 5:09 PM, Vivek Gautam wrote: On Wed, Apr 9, 2014 at 7:03 PM, Tomasz Figa wrote: On 09.04.2014 13:49, Vivek Gautam wrote: Hi, On Wed, Apr 9, 2014 at 4:36 PM, Tomasz Figa wrote: Hi Vivek, Please see my comments inline. On 08.04.2014 16:36, Vivek Gautam wrote: Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. The new driver uses the generic PHY framework and will interact with DWC3 controller present on Exynos5 series of SoCs. Thereby, removing old phy-samsung-usb3 driver and related code used untill now which was based on usb/phy framework. Signed-off-by: Vivek Gautam --- .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ drivers/phy/Kconfig| 11 + drivers/phy/Makefile |1 + drivers/phy/phy-exynos5-usbdrd.c | 668 4 files changed, 722 insertions(+) create mode 100644 drivers/phy/phy-exynos5-usbdrd.c [snip] + Additional clock required for Exynos5420: + - usb30_sclk_100m: Additional special clock used for PHY operation + depicted as 'sclk_usbphy30' in CMU of Exynos5420. Are you sure this isn't simply a gate for the ref clock, as it can be found on another SoC that is not upstream yet? I don't have documentation for Exynos 5420 so I can't tell, but I'd like to ask you to recheck this. From what i can see in the manual : sclk_usbphy30 is derived from OSCCLK. It is coming from a MUX (default input line to this is OSCCLK) and then through a DIV there's this gate. {OSCCLK + other sources} --->[MUX] ---> [DIV] --> [GATE for sclk_usbphy30] the {rate of sclk_usbphy30} == OSCCLK However the 'ref' clock that we have been using is the actual oscillator clock. And on SoC Exynos5250, we don't have any such gate (sclk_usbphy30). So should this mean that ref clock and sclk_usbphy30 are still be controlled by two different gates ? Is there maybe a diagram of PHY input clocks in the datasheet, like for USB 2.0 PHY in Exynos4210/4412/5250 datasheets in the chapter about USB2.0 Device? Something like: || | ___| XusbXTI | Phy_fsel[2:0]| ___ | ___[X]___|| __|_|___|\__|_| | | _v___ | _ ^ | |/ | | _ | | || | | | | ___ | | ___| | || | | | | | |_|_| |___| | | X 0 ||_| PLL |__|_|_|CLK|_|_| _ | | | | || |DIV|_|_| |___[X] | |_| 12 |_|480 | |___| | | | MHz MHz |Digital| | XusbXTO | USB PHY|___| | || Below is the block diagram given for DRD controller. ___ || | | | | PHY | | | | controller |-|--- | |__ | | | || | | USB 3.0 | V | DRD | --- |Controller | | | ||USB30_SCLK_100M| USB 3.0 DRD | | | ---> | PHY | | | Link cont. | | | | | - | | | |___| |_| Does this help ? So, USB30_SCLK_100M is the SCLK that we are talking in the driver. I don't see any reference to XXTI in the USB 3.0 DRD controller chapter (in both Exynos5250 and 5420) In addition to this there's one more point to be noticed here. On Exynos5420 system, the sclk_usbphy300 (which is the sclk_usbphy30 for USB DRD channel 0), is also the PICO phy clock, i.e. USB 2.0 phy clock. So we should add a similar clk_get() for this clock in the phy-exynos5250-usb2 driver too, to support Exynos5420. Is something clear from the above block diagram ? (although the diagram looks weird - space and tabs problem :-( ) Basically there's the clock USB30_SCLK_100M which is going into the USB 3.0 DRD PHY controller. And this is the only sclk mentioned in the block diagram for USB 3.0 DRD controller in Exynos5420. Same is not there in the block diagram in Exynos5250 UM. From what I can see in the documentatio
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi, On Monday 14 April 2014 07:19 PM, Tomasz Figa wrote: > On 14.04.2014 15:40, Vivek Gautam wrote: >> On Mon, Apr 14, 2014 at 6:56 PM, Kishon Vijay Abraham I >> wrote: >>> >>> >>> On Monday 14 April 2014 06:50 PM, Vivek Gautam wrote: On Mon, Apr 14, 2014 at 6:29 PM, Kishon Vijay Abraham I wrote: > > > On Monday 14 April 2014 06:12 PM, Vivek Gautam wrote: >> Hi, >> >> >> On Mon, Apr 14, 2014 at 5:57 PM, Kishon Vijay Abraham I >> wrote: >>> Hi, >>> >>> On Tuesday 08 April 2014 08:06 PM, Vivek Gautam wrote: Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. The new driver uses the generic PHY framework and will interact with DWC3 controller present on Exynos5 series of SoCs. Thereby, removing old phy-samsung-usb3 driver and related code used untill now which was based on usb/phy framework. Signed-off-by: Vivek Gautam --- .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ drivers/phy/Kconfig| 11 + drivers/phy/Makefile |1 + drivers/phy/phy-exynos5-usbdrd.c | 668 4 files changed, 722 insertions(+) create mode 100644 drivers/phy/phy-exynos5-usbdrd.c diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt index 28f9edb..6d99ba9 100644 --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt @@ -74,3 +74,45 @@ phy-consumer@1234 { Refer to DT bindings documentation of particular PHY consumer devices for more information about required PHYs and the way of specification. + +Samsung Exynos5 SoC series USB DRD PHY controller +-- + +Required properties: +- compatible : Should be set to one of the following supported values: + - "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, + - "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. +- reg : Register offset and length of USB DRD PHY register set; +- clocks: Clock IDs array as required by the controller +- clock-names: names of clocks correseponding to IDs in the clock property; +Required clocks: + - phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), +used for register access. + - ref: PHY's reference clock (usually crystal clock), associated by +phy name, used to determine bit values for clock settings +register. + Additional clock required for Exynos5420: + - usb30_sclk_100m: Additional special clock used for PHY operation +depicted as 'sclk_usbphy30' in CMU of Exynos5420. +- samsung,syscon-phandle: phandle for syscon interface, which is used to + control pmu registers for power isolation. +- samsung,pmu-offset: phy power control register offset to pmu-system-controller + base. +- #phy-cells : from the generic PHY bindings, must be 1; + +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" +compatible PHYs, the second cell in the PHY specifier identifies the +PHY id, which is interpreted as follows: + 0 - UTMI+ type phy, + 1 - PIPE3 type phy, + +Example: + usb3_phy: usbphy@1210 { + compatible = "samsung,exynos5250-usbdrd-phy"; + reg = <0x1210 0x100>; + clocks = <&clock 286>, <&clock 1>; + clock-names = "phy", "usb3phy_refclk"; + samsung,syscon-phandle = <&pmu_syscon>; + samsung,pmu-offset = <0x704>; + #phy-cells = <1>; + }; diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig index 8d3c49c..d955a05 100644 --- a/drivers/phy/Kconfig +++ b/drivers/phy/Kconfig @@ -166,4 +166,15 @@ config PHY_XGENE help This option enables support for APM X-Gene SoC multi-purpose PHY. +config PHY_EXYNOS5_USBDRD + tristate "Exynos5 SoC series USB DRD PHY driver" + depends on ARCH_EXYNOS5 && OF + depends on HAS_IOMEM + select GENERIC_PHY + select MFD_SYSCON >>> >>> Lets try to avo
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi Tomasz, On Thu, Apr 10, 2014 at 5:09 PM, Vivek Gautam wrote: > On Wed, Apr 9, 2014 at 7:03 PM, Tomasz Figa wrote: >> On 09.04.2014 13:49, Vivek Gautam wrote: >>> >>> Hi, >>> >>> >>> On Wed, Apr 9, 2014 at 4:36 PM, Tomasz Figa wrote: Hi Vivek, Please see my comments inline. On 08.04.2014 16:36, Vivek Gautam wrote: > > > Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. > The new driver uses the generic PHY framework and will interact > with DWC3 controller present on Exynos5 series of SoCs. > Thereby, removing old phy-samsung-usb3 driver and related code > used untill now which was based on usb/phy framework. > > Signed-off-by: Vivek Gautam > --- >.../devicetree/bindings/phy/samsung-phy.txt| 42 ++ >drivers/phy/Kconfig| 11 + >drivers/phy/Makefile |1 + >drivers/phy/phy-exynos5-usbdrd.c | 668 > >4 files changed, 722 insertions(+) >create mode 100644 drivers/phy/phy-exynos5-usbdrd.c [snip] > + Additional clock required for Exynos5420: > + - usb30_sclk_100m: Additional special clock used for PHY > operation > + depicted as 'sclk_usbphy30' in CMU of > Exynos5420. Are you sure this isn't simply a gate for the ref clock, as it can be found on another SoC that is not upstream yet? I don't have documentation for Exynos 5420 so I can't tell, but I'd like to ask you to recheck this. >>> >>> From what i can see in the manual : >>> >>> sclk_usbphy30 is derived from OSCCLK. >>> It is coming from a MUX (default input line to this is OSCCLK) and >>> then through a DIV >>> there's this gate. >>> >>>{OSCCLK + other sources} --->[MUX] ---> [DIV] --> [GATE for >>> sclk_usbphy30] >>> >>> the {rate of sclk_usbphy30} == OSCCLK >>> >>> However the 'ref' clock that we have been using is the actual oscillator >>> clock. >>> And on SoC Exynos5250, we don't have any such gate (sclk_usbphy30). >>> So should this mean that ref clock and sclk_usbphy30 are still be >>> controlled by >>> two different gates ? >>> >> >> Is there maybe a diagram of PHY input clocks in the datasheet, like for USB >> 2.0 PHY in Exynos4210/4412/5250 datasheets in the chapter about USB2.0 >> Device? Something like: >> >> >> || >> | ___| >> XusbXTI | Phy_fsel[2:0]| ___ | >>___[X]___|| __|_|___|\__|_| >> | | _v___ | _ ^ | |/ | | >> _ | | || | | | | ___ | | >> ___| | || | | | | | |_|_| >> |___| | | X 0 ||_| PLL |__|_|_|CLK|_|_| >> _ | | | | || |DIV|_|_| >> |___[X] | |_| 12 |_|480 | |___| | | >> | MHz MHz |Digital| | >> XusbXTO | USB PHY|___| | >> || >> >> > > Below is the block diagram given for DRD controller. > > ___ > || > | | > | | PHY | | > | | controller |-|--- > | |__ | | | > || > | > | USB 3.0 | V > | DRD | > --- > |Controller | | > | > ||USB30_SCLK_100M| USB 3.0 DRD | > | | ---> > | PHY | > | | Link cont. | | | > | > | - | > | | > |___| |_| > > Does this help ? > > So, USB30_SCLK_100M is the SCLK that we are talking in the driver. I > don't see any reference to XXTI in the USB 3.0 DRD controller chapter > (in both Exynos5250 and 5420) > In addition to this there's one more point to be noticed here. > On Exynos5420 system, the sclk_usbphy300 (which is the sclk_usbphy30 > for USB DRD channel 0), is also the PICO phy clock, i.e. USB 2.0 phy > clock. > So we should add a similar clk_get() for this clock in the > phy-exynos5250-usb2 driver too, to support Exynos5420. Is something clear from the above block diagram ? (alt
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi, On Mon, Apr 14, 2014 at 8:07 PM, Sylwester Nawrocki wrote: > On 08/04/14 16:36, Vivek Gautam wrote: >> diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt >> b/Documentation/devicetree/bindings/phy/samsung-phy.txt >> index 28f9edb..6d99ba9 100644 >> --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt >> +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt >> @@ -74,3 +74,45 @@ phy-consumer@1234 { >> >> Refer to DT bindings documentation of particular PHY consumer devices for >> more >> information about required PHYs and the way of specification. >> + >> +Samsung Exynos5 SoC series USB DRD PHY controller >> +-- >> + >> +Required properties: >> +- compatible : Should be set to one of the following supported values: >> + - "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, >> + - "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. >> +- reg : Register offset and length of USB DRD PHY register set; >> +- clocks: Clock IDs array as required by the controller >> +- clock-names: names of clocks correseponding to IDs in the clock property; >> +Required clocks: >> + - phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), >> +used for register access. >> + - ref: PHY's reference clock (usually crystal clock), associated by >> +phy name, used to determine bit values for clock settings >> +register. >> + Additional clock required for Exynos5420: >> + - usb30_sclk_100m: Additional special clock used for PHY operation >> +depicted as 'sclk_usbphy30' in CMU of Exynos5420. >> +- samsung,syscon-phandle: phandle for syscon interface, which is used to >> + control pmu registers for power isolation. > > Why to append "-phandle" to the property's name ? If this is for PMU > perhaps make it more explicit and name it: samsung,pmu-syscon or > samsung,pmureg ? Right, thanks for pointing out this. Will rename it to samsung,pmu-syscon. That will be inline with the phandle it points to. -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi Sylwester, On Mon, Apr 14, 2014 at 7:51 PM, Sylwester Nawrocki wrote: > On 14/04/14 15:49, Vivek Gautam wrote: >> True, we don't have a scope of instantiating this driver using old >> platform device and >> old legacy board files. >> So we don't need this check then, right ? > > I think it can be dropped. > At least IMHO there is no point to increase size of the module with > an error log that has no chance to be ever called in practice. Ok, i will remove this error message and in fact this check. -- Best Regards Vivek Gautam Samsung R&D Institute, Bangalore India -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On 08/04/14 16:36, Vivek Gautam wrote: > diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt > b/Documentation/devicetree/bindings/phy/samsung-phy.txt > index 28f9edb..6d99ba9 100644 > --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt > +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt > @@ -74,3 +74,45 @@ phy-consumer@1234 { > > Refer to DT bindings documentation of particular PHY consumer devices for > more > information about required PHYs and the way of specification. > + > +Samsung Exynos5 SoC series USB DRD PHY controller > +-- > + > +Required properties: > +- compatible : Should be set to one of the following supported values: > + - "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, > + - "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. > +- reg : Register offset and length of USB DRD PHY register set; > +- clocks: Clock IDs array as required by the controller > +- clock-names: names of clocks correseponding to IDs in the clock property; > +Required clocks: > + - phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), > +used for register access. > + - ref: PHY's reference clock (usually crystal clock), associated by > +phy name, used to determine bit values for clock settings > +register. > + Additional clock required for Exynos5420: > + - usb30_sclk_100m: Additional special clock used for PHY operation > +depicted as 'sclk_usbphy30' in CMU of Exynos5420. > +- samsung,syscon-phandle: phandle for syscon interface, which is used to > + control pmu registers for power isolation. Why to append "-phandle" to the property's name ? If this is for PMU perhaps make it more explicit and name it: samsung,pmu-syscon or samsung,pmureg ? > +- samsung,pmu-offset: phy power control register offset to > pmu-system-controller > + base. > +- #phy-cells : from the generic PHY bindings, must be 1; > + > +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" > +compatible PHYs, the second cell in the PHY specifier identifies the > +PHY id, which is interpreted as follows: > + 0 - UTMI+ type phy, > + 1 - PIPE3 type phy, -- Thanks, Sylwester -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On 14/04/14 15:49, Vivek Gautam wrote: > True, we don't have a scope of instantiating this driver using old > platform device and > old legacy board files. > So we don't need this check then, right ? I think it can be dropped. At least IMHO there is no point to increase size of the module with an error log that has no chance to be ever called in practice. -- Thanks, Sylwester -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi, On Mon, Apr 14, 2014 at 7:14 PM, Tomasz Figa wrote: > On 14.04.2014 15:05, Kishon Vijay Abraham I wrote: >> >> >> >> On Monday 14 April 2014 05:35 PM, Vivek Gautam wrote: >>> >>> Hi Kishon, >>> >>> >>> On Mon, Apr 14, 2014 at 5:24 PM, Kishon Vijay Abraham I >>> wrote: Hi, On Wednesday 09 April 2014 04:36 PM, Tomasz Figa wrote: > > Hi Vivek, > > Please see my comments inline. > > On 08.04.2014 16:36, Vivek Gautam wrote: >> >> Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. >> The new driver uses the generic PHY framework and will interact >> with DWC3 controller present on Exynos5 series of SoCs. >> Thereby, removing old phy-samsung-usb3 driver and related code >> used untill now which was based on usb/phy framework. >> >> Signed-off-by: Vivek Gautam >> --- >>.../devicetree/bindings/phy/samsung-phy.txt| 42 ++ >>drivers/phy/Kconfig| 11 + >>drivers/phy/Makefile |1 + >>drivers/phy/phy-exynos5-usbdrd.c | 668 >> >>4 files changed, 722 insertions(+) >>create mode 100644 drivers/phy/phy-exynos5-usbdrd.c > > > [snip] > >> +Additional clock required for Exynos5420: >> +- usb30_sclk_100m: Additional special clock used for PHY >> operation >> + depicted as 'sclk_usbphy30' in CMU of Exynos5420. > > > Are you sure this isn't simply a gate for the ref clock, as it can be > found on > another SoC that is not upstream yet? I don't have documentation for > Exynos > 5420 so I can't tell, but I'd like to ask you to recheck this. > >> +- samsung,syscon-phandle: phandle for syscon interface, which is used >> to >> + control pmu registers for power isolation. >> +- samsung,pmu-offset: phy power control register offset to >> pmu-system-controller >> + base. >> +- #phy-cells : from the generic PHY bindings, must be 1; >> + >> +For "samsung,exynos5250-usbdrd-phy" and >> "samsung,exynos5420-usbdrd-phy" >> +compatible PHYs, the second cell in the PHY specifier identifies the >> +PHY id, which is interpreted as follows: >> + 0 - UTMI+ type phy, >> + 1 - PIPE3 type phy, >> + >> +Example: >> +usb3_phy: usbphy@1210 { >> +compatible = "samsung,exynos5250-usbdrd-phy"; >> +reg = <0x1210 0x100>; >> +clocks = <&clock 286>, <&clock 1>; >> +clock-names = "phy", "usb3phy_refclk"; > > > Binding description above doesn't mention "usb3phy_refclk" entry. > >> +samsung,syscon-phandle = <&pmu_syscon>; >> +samsung,pmu-offset = <0x704>; >> +#phy-cells = <1>; >> +}; > > > [snip] > >> diff --git a/drivers/phy/phy-exynos5-usbdrd.c >> b/drivers/phy/phy-exynos5-usbdrd.c >> new file mode 100644 >> index 000..ff54a7c >> --- /dev/null >> +++ b/drivers/phy/phy-exynos5-usbdrd.c > > > [snip] > >> +static int exynos5_usbdrd_phy_probe(struct platform_device *pdev) >> +{ >> +struct device *dev = &pdev->dev; >> +struct device_node *node = dev->of_node; >> +struct exynos5_usbdrd_phy *phy_drd; >> +struct phy_provider *phy_provider; >> +struct resource *res; >> +const struct of_device_id *match; >> +const struct exynos5_usbdrd_phy_drvdata *drv_data; >> +struct regmap *reg_pmu; >> +u32 pmu_offset; >> +int i; >> + >> +/* >> + * Exynos systems are completely DT enabled, >> + * so lets not have any platform data support for this driver. >> + */ >> +if (!node) { >> +dev_err(dev, "no device node found\n"); > > > This error message is not very meaningful. I'd rather use something > like "This > driver can be only instantiated using Device Tree". how about just adding depend_on OF in Kconfig? >>> >>> >>> Already added a depend on 'OF'. Copying below the part of Kconfig in this >>> patch. >> >> >> Alright.. Do we need the check then? If config_OF is enabled devices will >> be >> created using device tree no? > > > Not necessarily. Enabling support for OF doesn't mean that it is the only > boot method that can be used. Legacy board files may be still available. I'm > not sure why someone would try to instantiate this driver from them, though. True, we don't have a scope of instantiating this driver using old platform device and old legacy board files. So we don't need this check then, right ? -- Best Regards Vivek Gautam Samsung R&D Institute, Bangalore India -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@v
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On 14.04.2014 15:40, Vivek Gautam wrote: On Mon, Apr 14, 2014 at 6:56 PM, Kishon Vijay Abraham I wrote: On Monday 14 April 2014 06:50 PM, Vivek Gautam wrote: On Mon, Apr 14, 2014 at 6:29 PM, Kishon Vijay Abraham I wrote: On Monday 14 April 2014 06:12 PM, Vivek Gautam wrote: Hi, On Mon, Apr 14, 2014 at 5:57 PM, Kishon Vijay Abraham I wrote: Hi, On Tuesday 08 April 2014 08:06 PM, Vivek Gautam wrote: Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. The new driver uses the generic PHY framework and will interact with DWC3 controller present on Exynos5 series of SoCs. Thereby, removing old phy-samsung-usb3 driver and related code used untill now which was based on usb/phy framework. Signed-off-by: Vivek Gautam --- .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ drivers/phy/Kconfig| 11 + drivers/phy/Makefile |1 + drivers/phy/phy-exynos5-usbdrd.c | 668 4 files changed, 722 insertions(+) create mode 100644 drivers/phy/phy-exynos5-usbdrd.c diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt index 28f9edb..6d99ba9 100644 --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt @@ -74,3 +74,45 @@ phy-consumer@1234 { Refer to DT bindings documentation of particular PHY consumer devices for more information about required PHYs and the way of specification. + +Samsung Exynos5 SoC series USB DRD PHY controller +-- + +Required properties: +- compatible : Should be set to one of the following supported values: + - "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, + - "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. +- reg : Register offset and length of USB DRD PHY register set; +- clocks: Clock IDs array as required by the controller +- clock-names: names of clocks correseponding to IDs in the clock property; +Required clocks: + - phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), +used for register access. + - ref: PHY's reference clock (usually crystal clock), associated by +phy name, used to determine bit values for clock settings +register. + Additional clock required for Exynos5420: + - usb30_sclk_100m: Additional special clock used for PHY operation +depicted as 'sclk_usbphy30' in CMU of Exynos5420. +- samsung,syscon-phandle: phandle for syscon interface, which is used to + control pmu registers for power isolation. +- samsung,pmu-offset: phy power control register offset to pmu-system-controller + base. +- #phy-cells : from the generic PHY bindings, must be 1; + +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" +compatible PHYs, the second cell in the PHY specifier identifies the +PHY id, which is interpreted as follows: + 0 - UTMI+ type phy, + 1 - PIPE3 type phy, + +Example: + usb3_phy: usbphy@1210 { + compatible = "samsung,exynos5250-usbdrd-phy"; + reg = <0x1210 0x100>; + clocks = <&clock 286>, <&clock 1>; + clock-names = "phy", "usb3phy_refclk"; + samsung,syscon-phandle = <&pmu_syscon>; + samsung,pmu-offset = <0x704>; + #phy-cells = <1>; + }; diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig index 8d3c49c..d955a05 100644 --- a/drivers/phy/Kconfig +++ b/drivers/phy/Kconfig @@ -166,4 +166,15 @@ config PHY_XGENE help This option enables support for APM X-Gene SoC multi-purpose PHY. +config PHY_EXYNOS5_USBDRD + tristate "Exynos5 SoC series USB DRD PHY driver" + depends on ARCH_EXYNOS5 && OF + depends on HAS_IOMEM + select GENERIC_PHY + select MFD_SYSCON Lets try to avoid select in Kconfig. We've got enough problems with that. I hope you meant with "select MFD_SYSCON". We are referencing the syscon for accessing pmu reg, for which we need this config to be selected. Other Exynos phy drivers also need this config and for that they have selected this. Do you want me to do it any other way ? depends on is one option. Ok, i can see there are places where depends_on MFD_SYSCON is used. "drivers/gpu/drm/exynos/Kconfig:60" so, do you want me to fix at other places too ? But i also have a question here. MFD_SYSCON is a subsystem that's facilitating us in getting our work done here by giving an access to pmu_system_controller. So unless MFD_SYSCON is exposed, the phy driver will not be exposed to us. So is that valid enough really ? maybe in the Kconfig for MFD_SYSCON, we can select it if PHY_EXYNOS5_USBDRD is enabled? config MFD_SYSCON default y if PHY_EXYNOS5_USBDRD Yes, that seems to be one option. But we will end up adding this
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On Mon, Apr 14, 2014 at 7:10 PM, Vivek Gautam wrote: Just correcting mail-ids for Mark and Dong with the latest ones (earlier ones got bounced back) > On Mon, Apr 14, 2014 at 6:56 PM, Kishon Vijay Abraham I wrote: >> >> >> On Monday 14 April 2014 06:50 PM, Vivek Gautam wrote: >>> On Mon, Apr 14, 2014 at 6:29 PM, Kishon Vijay Abraham I >>> wrote: On Monday 14 April 2014 06:12 PM, Vivek Gautam wrote: > Hi, > > > On Mon, Apr 14, 2014 at 5:57 PM, Kishon Vijay Abraham I > wrote: >> Hi, >> >> On Tuesday 08 April 2014 08:06 PM, Vivek Gautam wrote: >>> Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. >>> The new driver uses the generic PHY framework and will interact >>> with DWC3 controller present on Exynos5 series of SoCs. >>> Thereby, removing old phy-samsung-usb3 driver and related code >>> used untill now which was based on usb/phy framework. >>> >>> Signed-off-by: Vivek Gautam >>> --- >>> .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ >>> drivers/phy/Kconfig| 11 + >>> drivers/phy/Makefile |1 + >>> drivers/phy/phy-exynos5-usbdrd.c | 668 >>> >>> 4 files changed, 722 insertions(+) >>> create mode 100644 drivers/phy/phy-exynos5-usbdrd.c >>> >>> diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt >>> b/Documentation/devicetree/bindings/phy/samsung-phy.txt >>> index 28f9edb..6d99ba9 100644 >>> --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt >>> +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt >>> @@ -74,3 +74,45 @@ phy-consumer@1234 { >>> >>> Refer to DT bindings documentation of particular PHY consumer devices >>> for more >>> information about required PHYs and the way of specification. >>> + >>> +Samsung Exynos5 SoC series USB DRD PHY controller >>> +-- >>> + >>> +Required properties: >>> +- compatible : Should be set to one of the following supported values: >>> + - "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, >>> + - "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. >>> +- reg : Register offset and length of USB DRD PHY register set; >>> +- clocks: Clock IDs array as required by the controller >>> +- clock-names: names of clocks correseponding to IDs in the clock >>> property; >>> +Required clocks: >>> + - phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP >>> clock), >>> +used for register access. >>> + - ref: PHY's reference clock (usually crystal clock), associated >>> by >>> +phy name, used to determine bit values for clock settings >>> +register. >>> + Additional clock required for Exynos5420: >>> + - usb30_sclk_100m: Additional special clock used for PHY operation >>> +depicted as 'sclk_usbphy30' in CMU of >>> Exynos5420. >>> +- samsung,syscon-phandle: phandle for syscon interface, which is used >>> to >>> + control pmu registers for power isolation. >>> +- samsung,pmu-offset: phy power control register offset to >>> pmu-system-controller >>> + base. >>> +- #phy-cells : from the generic PHY bindings, must be 1; >>> + >>> +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" >>> +compatible PHYs, the second cell in the PHY specifier identifies the >>> +PHY id, which is interpreted as follows: >>> + 0 - UTMI+ type phy, >>> + 1 - PIPE3 type phy, >>> + >>> +Example: >>> + usb3_phy: usbphy@1210 { >>> + compatible = "samsung,exynos5250-usbdrd-phy"; >>> + reg = <0x1210 0x100>; >>> + clocks = <&clock 286>, <&clock 1>; >>> + clock-names = "phy", "usb3phy_refclk"; >>> + samsung,syscon-phandle = <&pmu_syscon>; >>> + samsung,pmu-offset = <0x704>; >>> + #phy-cells = <1>; >>> + }; >>> diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig >>> index 8d3c49c..d955a05 100644 >>> --- a/drivers/phy/Kconfig >>> +++ b/drivers/phy/Kconfig >>> @@ -166,4 +166,15 @@ config PHY_XGENE >>> help >>> This option enables support for APM X-Gene SoC multi-purpose >>> PHY. >>> >>> +config PHY_EXYNOS5_USBDRD >>> + tristate "Exynos5 SoC series USB DRD PHY driver" >>> + depends on ARCH_EXYNOS5 && OF >>> + depends on HAS_IOMEM >>> + select GENERIC_PHY >>> + select MFD_SYSCON >> >> Lets try to avoid select in Kconfig. We've got enough problems with that. > > I hope you mea
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On 14.04.2014 15:05, Kishon Vijay Abraham I wrote: On Monday 14 April 2014 05:35 PM, Vivek Gautam wrote: Hi Kishon, On Mon, Apr 14, 2014 at 5:24 PM, Kishon Vijay Abraham I wrote: Hi, On Wednesday 09 April 2014 04:36 PM, Tomasz Figa wrote: Hi Vivek, Please see my comments inline. On 08.04.2014 16:36, Vivek Gautam wrote: Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. The new driver uses the generic PHY framework and will interact with DWC3 controller present on Exynos5 series of SoCs. Thereby, removing old phy-samsung-usb3 driver and related code used untill now which was based on usb/phy framework. Signed-off-by: Vivek Gautam --- .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ drivers/phy/Kconfig| 11 + drivers/phy/Makefile |1 + drivers/phy/phy-exynos5-usbdrd.c | 668 4 files changed, 722 insertions(+) create mode 100644 drivers/phy/phy-exynos5-usbdrd.c [snip] +Additional clock required for Exynos5420: +- usb30_sclk_100m: Additional special clock used for PHY operation + depicted as 'sclk_usbphy30' in CMU of Exynos5420. Are you sure this isn't simply a gate for the ref clock, as it can be found on another SoC that is not upstream yet? I don't have documentation for Exynos 5420 so I can't tell, but I'd like to ask you to recheck this. +- samsung,syscon-phandle: phandle for syscon interface, which is used to + control pmu registers for power isolation. +- samsung,pmu-offset: phy power control register offset to pmu-system-controller + base. +- #phy-cells : from the generic PHY bindings, must be 1; + +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" +compatible PHYs, the second cell in the PHY specifier identifies the +PHY id, which is interpreted as follows: + 0 - UTMI+ type phy, + 1 - PIPE3 type phy, + +Example: +usb3_phy: usbphy@1210 { +compatible = "samsung,exynos5250-usbdrd-phy"; +reg = <0x1210 0x100>; +clocks = <&clock 286>, <&clock 1>; +clock-names = "phy", "usb3phy_refclk"; Binding description above doesn't mention "usb3phy_refclk" entry. +samsung,syscon-phandle = <&pmu_syscon>; +samsung,pmu-offset = <0x704>; +#phy-cells = <1>; +}; [snip] diff --git a/drivers/phy/phy-exynos5-usbdrd.c b/drivers/phy/phy-exynos5-usbdrd.c new file mode 100644 index 000..ff54a7c --- /dev/null +++ b/drivers/phy/phy-exynos5-usbdrd.c [snip] +static int exynos5_usbdrd_phy_probe(struct platform_device *pdev) +{ +struct device *dev = &pdev->dev; +struct device_node *node = dev->of_node; +struct exynos5_usbdrd_phy *phy_drd; +struct phy_provider *phy_provider; +struct resource *res; +const struct of_device_id *match; +const struct exynos5_usbdrd_phy_drvdata *drv_data; +struct regmap *reg_pmu; +u32 pmu_offset; +int i; + +/* + * Exynos systems are completely DT enabled, + * so lets not have any platform data support for this driver. + */ +if (!node) { +dev_err(dev, "no device node found\n"); This error message is not very meaningful. I'd rather use something like "This driver can be only instantiated using Device Tree". how about just adding depend_on OF in Kconfig? Already added a depend on 'OF'. Copying below the part of Kconfig in this patch. Alright.. Do we need the check then? If config_OF is enabled devices will be created using device tree no? Not necessarily. Enabling support for OF doesn't mean that it is the only boot method that can be used. Legacy board files may be still available. I'm not sure why someone would try to instantiate this driver from them, though. Best regards, Tomasz -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On Mon, Apr 14, 2014 at 6:56 PM, Kishon Vijay Abraham I wrote: > > > On Monday 14 April 2014 06:50 PM, Vivek Gautam wrote: >> On Mon, Apr 14, 2014 at 6:29 PM, Kishon Vijay Abraham I >> wrote: >>> >>> >>> On Monday 14 April 2014 06:12 PM, Vivek Gautam wrote: Hi, On Mon, Apr 14, 2014 at 5:57 PM, Kishon Vijay Abraham I wrote: > Hi, > > On Tuesday 08 April 2014 08:06 PM, Vivek Gautam wrote: >> Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. >> The new driver uses the generic PHY framework and will interact >> with DWC3 controller present on Exynos5 series of SoCs. >> Thereby, removing old phy-samsung-usb3 driver and related code >> used untill now which was based on usb/phy framework. >> >> Signed-off-by: Vivek Gautam >> --- >> .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ >> drivers/phy/Kconfig| 11 + >> drivers/phy/Makefile |1 + >> drivers/phy/phy-exynos5-usbdrd.c | 668 >> >> 4 files changed, 722 insertions(+) >> create mode 100644 drivers/phy/phy-exynos5-usbdrd.c >> >> diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt >> b/Documentation/devicetree/bindings/phy/samsung-phy.txt >> index 28f9edb..6d99ba9 100644 >> --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt >> +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt >> @@ -74,3 +74,45 @@ phy-consumer@1234 { >> >> Refer to DT bindings documentation of particular PHY consumer devices >> for more >> information about required PHYs and the way of specification. >> + >> +Samsung Exynos5 SoC series USB DRD PHY controller >> +-- >> + >> +Required properties: >> +- compatible : Should be set to one of the following supported values: >> + - "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, >> + - "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. >> +- reg : Register offset and length of USB DRD PHY register set; >> +- clocks: Clock IDs array as required by the controller >> +- clock-names: names of clocks correseponding to IDs in the clock >> property; >> +Required clocks: >> + - phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP >> clock), >> +used for register access. >> + - ref: PHY's reference clock (usually crystal clock), associated by >> +phy name, used to determine bit values for clock settings >> +register. >> + Additional clock required for Exynos5420: >> + - usb30_sclk_100m: Additional special clock used for PHY operation >> +depicted as 'sclk_usbphy30' in CMU of >> Exynos5420. >> +- samsung,syscon-phandle: phandle for syscon interface, which is used to >> + control pmu registers for power isolation. >> +- samsung,pmu-offset: phy power control register offset to >> pmu-system-controller >> + base. >> +- #phy-cells : from the generic PHY bindings, must be 1; >> + >> +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" >> +compatible PHYs, the second cell in the PHY specifier identifies the >> +PHY id, which is interpreted as follows: >> + 0 - UTMI+ type phy, >> + 1 - PIPE3 type phy, >> + >> +Example: >> + usb3_phy: usbphy@1210 { >> + compatible = "samsung,exynos5250-usbdrd-phy"; >> + reg = <0x1210 0x100>; >> + clocks = <&clock 286>, <&clock 1>; >> + clock-names = "phy", "usb3phy_refclk"; >> + samsung,syscon-phandle = <&pmu_syscon>; >> + samsung,pmu-offset = <0x704>; >> + #phy-cells = <1>; >> + }; >> diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig >> index 8d3c49c..d955a05 100644 >> --- a/drivers/phy/Kconfig >> +++ b/drivers/phy/Kconfig >> @@ -166,4 +166,15 @@ config PHY_XGENE >> help >> This option enables support for APM X-Gene SoC multi-purpose PHY. >> >> +config PHY_EXYNOS5_USBDRD >> + tristate "Exynos5 SoC series USB DRD PHY driver" >> + depends on ARCH_EXYNOS5 && OF >> + depends on HAS_IOMEM >> + select GENERIC_PHY >> + select MFD_SYSCON > > Lets try to avoid select in Kconfig. We've got enough problems with that. I hope you meant with "select MFD_SYSCON". We are referencing the syscon for accessing pmu reg, for which we need this config to be selected. Other Exynos phy drivers also need this config and for that they have selected this. Do you want me to do it any other way ? >>>
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On Monday 14 April 2014 06:50 PM, Vivek Gautam wrote: > On Mon, Apr 14, 2014 at 6:29 PM, Kishon Vijay Abraham I wrote: >> >> >> On Monday 14 April 2014 06:12 PM, Vivek Gautam wrote: >>> Hi, >>> >>> >>> On Mon, Apr 14, 2014 at 5:57 PM, Kishon Vijay Abraham I >>> wrote: Hi, On Tuesday 08 April 2014 08:06 PM, Vivek Gautam wrote: > Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. > The new driver uses the generic PHY framework and will interact > with DWC3 controller present on Exynos5 series of SoCs. > Thereby, removing old phy-samsung-usb3 driver and related code > used untill now which was based on usb/phy framework. > > Signed-off-by: Vivek Gautam > --- > .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ > drivers/phy/Kconfig| 11 + > drivers/phy/Makefile |1 + > drivers/phy/phy-exynos5-usbdrd.c | 668 > > 4 files changed, 722 insertions(+) > create mode 100644 drivers/phy/phy-exynos5-usbdrd.c > > diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt > b/Documentation/devicetree/bindings/phy/samsung-phy.txt > index 28f9edb..6d99ba9 100644 > --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt > +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt > @@ -74,3 +74,45 @@ phy-consumer@1234 { > > Refer to DT bindings documentation of particular PHY consumer devices > for more > information about required PHYs and the way of specification. > + > +Samsung Exynos5 SoC series USB DRD PHY controller > +-- > + > +Required properties: > +- compatible : Should be set to one of the following supported values: > + - "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, > + - "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. > +- reg : Register offset and length of USB DRD PHY register set; > +- clocks: Clock IDs array as required by the controller > +- clock-names: names of clocks correseponding to IDs in the clock > property; > +Required clocks: > + - phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP > clock), > +used for register access. > + - ref: PHY's reference clock (usually crystal clock), associated by > +phy name, used to determine bit values for clock settings > +register. > + Additional clock required for Exynos5420: > + - usb30_sclk_100m: Additional special clock used for PHY operation > +depicted as 'sclk_usbphy30' in CMU of Exynos5420. > +- samsung,syscon-phandle: phandle for syscon interface, which is used to > + control pmu registers for power isolation. > +- samsung,pmu-offset: phy power control register offset to > pmu-system-controller > + base. > +- #phy-cells : from the generic PHY bindings, must be 1; > + > +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" > +compatible PHYs, the second cell in the PHY specifier identifies the > +PHY id, which is interpreted as follows: > + 0 - UTMI+ type phy, > + 1 - PIPE3 type phy, > + > +Example: > + usb3_phy: usbphy@1210 { > + compatible = "samsung,exynos5250-usbdrd-phy"; > + reg = <0x1210 0x100>; > + clocks = <&clock 286>, <&clock 1>; > + clock-names = "phy", "usb3phy_refclk"; > + samsung,syscon-phandle = <&pmu_syscon>; > + samsung,pmu-offset = <0x704>; > + #phy-cells = <1>; > + }; > diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig > index 8d3c49c..d955a05 100644 > --- a/drivers/phy/Kconfig > +++ b/drivers/phy/Kconfig > @@ -166,4 +166,15 @@ config PHY_XGENE > help > This option enables support for APM X-Gene SoC multi-purpose PHY. > > +config PHY_EXYNOS5_USBDRD > + tristate "Exynos5 SoC series USB DRD PHY driver" > + depends on ARCH_EXYNOS5 && OF > + depends on HAS_IOMEM > + select GENERIC_PHY > + select MFD_SYSCON Lets try to avoid select in Kconfig. We've got enough problems with that. >>> >>> I hope you meant with "select MFD_SYSCON". >>> We are referencing the syscon for accessing pmu reg, for which we need >>> this config to be selected. >>> Other Exynos phy drivers also need this config and for that they have >>> selected this. >>> >>> Do you want me to do it any other way ? >> >> depends on is one option. > > Ok, i can see there are places where depends_on MFD_SYSCON is used. > "drivers/gpu/drm/exynos/Kconfig:60" > > so, do you want me to fix at other places t
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On Mon, Apr 14, 2014 at 6:29 PM, Kishon Vijay Abraham I wrote: > > > On Monday 14 April 2014 06:12 PM, Vivek Gautam wrote: >> Hi, >> >> >> On Mon, Apr 14, 2014 at 5:57 PM, Kishon Vijay Abraham I >> wrote: >>> Hi, >>> >>> On Tuesday 08 April 2014 08:06 PM, Vivek Gautam wrote: Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. The new driver uses the generic PHY framework and will interact with DWC3 controller present on Exynos5 series of SoCs. Thereby, removing old phy-samsung-usb3 driver and related code used untill now which was based on usb/phy framework. Signed-off-by: Vivek Gautam --- .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ drivers/phy/Kconfig| 11 + drivers/phy/Makefile |1 + drivers/phy/phy-exynos5-usbdrd.c | 668 4 files changed, 722 insertions(+) create mode 100644 drivers/phy/phy-exynos5-usbdrd.c diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt index 28f9edb..6d99ba9 100644 --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt @@ -74,3 +74,45 @@ phy-consumer@1234 { Refer to DT bindings documentation of particular PHY consumer devices for more information about required PHYs and the way of specification. + +Samsung Exynos5 SoC series USB DRD PHY controller +-- + +Required properties: +- compatible : Should be set to one of the following supported values: + - "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, + - "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. +- reg : Register offset and length of USB DRD PHY register set; +- clocks: Clock IDs array as required by the controller +- clock-names: names of clocks correseponding to IDs in the clock property; +Required clocks: + - phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), +used for register access. + - ref: PHY's reference clock (usually crystal clock), associated by +phy name, used to determine bit values for clock settings +register. + Additional clock required for Exynos5420: + - usb30_sclk_100m: Additional special clock used for PHY operation +depicted as 'sclk_usbphy30' in CMU of Exynos5420. +- samsung,syscon-phandle: phandle for syscon interface, which is used to + control pmu registers for power isolation. +- samsung,pmu-offset: phy power control register offset to pmu-system-controller + base. +- #phy-cells : from the generic PHY bindings, must be 1; + +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" +compatible PHYs, the second cell in the PHY specifier identifies the +PHY id, which is interpreted as follows: + 0 - UTMI+ type phy, + 1 - PIPE3 type phy, + +Example: + usb3_phy: usbphy@1210 { + compatible = "samsung,exynos5250-usbdrd-phy"; + reg = <0x1210 0x100>; + clocks = <&clock 286>, <&clock 1>; + clock-names = "phy", "usb3phy_refclk"; + samsung,syscon-phandle = <&pmu_syscon>; + samsung,pmu-offset = <0x704>; + #phy-cells = <1>; + }; diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig index 8d3c49c..d955a05 100644 --- a/drivers/phy/Kconfig +++ b/drivers/phy/Kconfig @@ -166,4 +166,15 @@ config PHY_XGENE help This option enables support for APM X-Gene SoC multi-purpose PHY. +config PHY_EXYNOS5_USBDRD + tristate "Exynos5 SoC series USB DRD PHY driver" + depends on ARCH_EXYNOS5 && OF + depends on HAS_IOMEM + select GENERIC_PHY + select MFD_SYSCON >>> >>> Lets try to avoid select in Kconfig. We've got enough problems with that. >> >> I hope you meant with "select MFD_SYSCON". >> We are referencing the syscon for accessing pmu reg, for which we need >> this config to be selected. >> Other Exynos phy drivers also need this config and for that they have >> selected this. >> >> Do you want me to do it any other way ? > > depends on is one option. Ok, i can see there are places where depends_on MFD_SYSCON is used. "drivers/gpu/drm/exynos/Kconfig:60" so, do you want me to fix at other places too ? But i also have a question here. MFD_SYSCON is a subsystem that's facilitating us in getting our work done here by giving an access to pmu_system_controller. So unless MF
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On Monday 14 April 2014 05:35 PM, Vivek Gautam wrote: > Hi Kishon, > > > On Mon, Apr 14, 2014 at 5:24 PM, Kishon Vijay Abraham I wrote: >> Hi, >> >> On Wednesday 09 April 2014 04:36 PM, Tomasz Figa wrote: >>> Hi Vivek, >>> >>> Please see my comments inline. >>> >>> On 08.04.2014 16:36, Vivek Gautam wrote: Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. The new driver uses the generic PHY framework and will interact with DWC3 controller present on Exynos5 series of SoCs. Thereby, removing old phy-samsung-usb3 driver and related code used untill now which was based on usb/phy framework. Signed-off-by: Vivek Gautam --- .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ drivers/phy/Kconfig| 11 + drivers/phy/Makefile |1 + drivers/phy/phy-exynos5-usbdrd.c | 668 4 files changed, 722 insertions(+) create mode 100644 drivers/phy/phy-exynos5-usbdrd.c >>> >>> [snip] >>> +Additional clock required for Exynos5420: +- usb30_sclk_100m: Additional special clock used for PHY operation + depicted as 'sclk_usbphy30' in CMU of Exynos5420. >>> >>> Are you sure this isn't simply a gate for the ref clock, as it can be found >>> on >>> another SoC that is not upstream yet? I don't have documentation for Exynos >>> 5420 so I can't tell, but I'd like to ask you to recheck this. >>> +- samsung,syscon-phandle: phandle for syscon interface, which is used to + control pmu registers for power isolation. +- samsung,pmu-offset: phy power control register offset to pmu-system-controller + base. +- #phy-cells : from the generic PHY bindings, must be 1; + +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" +compatible PHYs, the second cell in the PHY specifier identifies the +PHY id, which is interpreted as follows: + 0 - UTMI+ type phy, + 1 - PIPE3 type phy, + +Example: +usb3_phy: usbphy@1210 { +compatible = "samsung,exynos5250-usbdrd-phy"; +reg = <0x1210 0x100>; +clocks = <&clock 286>, <&clock 1>; +clock-names = "phy", "usb3phy_refclk"; >>> >>> Binding description above doesn't mention "usb3phy_refclk" entry. >>> +samsung,syscon-phandle = <&pmu_syscon>; +samsung,pmu-offset = <0x704>; +#phy-cells = <1>; +}; >>> >>> [snip] >>> diff --git a/drivers/phy/phy-exynos5-usbdrd.c b/drivers/phy/phy-exynos5-usbdrd.c new file mode 100644 index 000..ff54a7c --- /dev/null +++ b/drivers/phy/phy-exynos5-usbdrd.c >>> >>> [snip] >>> +static int exynos5_usbdrd_phy_probe(struct platform_device *pdev) +{ +struct device *dev = &pdev->dev; +struct device_node *node = dev->of_node; +struct exynos5_usbdrd_phy *phy_drd; +struct phy_provider *phy_provider; +struct resource *res; +const struct of_device_id *match; +const struct exynos5_usbdrd_phy_drvdata *drv_data; +struct regmap *reg_pmu; +u32 pmu_offset; +int i; + +/* + * Exynos systems are completely DT enabled, + * so lets not have any platform data support for this driver. + */ +if (!node) { +dev_err(dev, "no device node found\n"); >>> >>> This error message is not very meaningful. I'd rather use something like >>> "This >>> driver can be only instantiated using Device Tree". >> >> how about just adding depend_on OF in Kconfig? > > Already added a depend on 'OF'. Copying below the part of Kconfig in this > patch. Alright.. Do we need the check then? If config_OF is enabled devices will be created using device tree no? Thanks Kishon -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On Monday 14 April 2014 06:12 PM, Vivek Gautam wrote: > Hi, > > > On Mon, Apr 14, 2014 at 5:57 PM, Kishon Vijay Abraham I wrote: >> Hi, >> >> On Tuesday 08 April 2014 08:06 PM, Vivek Gautam wrote: >>> Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. >>> The new driver uses the generic PHY framework and will interact >>> with DWC3 controller present on Exynos5 series of SoCs. >>> Thereby, removing old phy-samsung-usb3 driver and related code >>> used untill now which was based on usb/phy framework. >>> >>> Signed-off-by: Vivek Gautam >>> --- >>> .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ >>> drivers/phy/Kconfig| 11 + >>> drivers/phy/Makefile |1 + >>> drivers/phy/phy-exynos5-usbdrd.c | 668 >>> >>> 4 files changed, 722 insertions(+) >>> create mode 100644 drivers/phy/phy-exynos5-usbdrd.c >>> >>> diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt >>> b/Documentation/devicetree/bindings/phy/samsung-phy.txt >>> index 28f9edb..6d99ba9 100644 >>> --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt >>> +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt >>> @@ -74,3 +74,45 @@ phy-consumer@1234 { >>> >>> Refer to DT bindings documentation of particular PHY consumer devices for >>> more >>> information about required PHYs and the way of specification. >>> + >>> +Samsung Exynos5 SoC series USB DRD PHY controller >>> +-- >>> + >>> +Required properties: >>> +- compatible : Should be set to one of the following supported values: >>> + - "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, >>> + - "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. >>> +- reg : Register offset and length of USB DRD PHY register set; >>> +- clocks: Clock IDs array as required by the controller >>> +- clock-names: names of clocks correseponding to IDs in the clock property; >>> +Required clocks: >>> + - phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), >>> +used for register access. >>> + - ref: PHY's reference clock (usually crystal clock), associated by >>> +phy name, used to determine bit values for clock settings >>> +register. >>> + Additional clock required for Exynos5420: >>> + - usb30_sclk_100m: Additional special clock used for PHY operation >>> +depicted as 'sclk_usbphy30' in CMU of Exynos5420. >>> +- samsung,syscon-phandle: phandle for syscon interface, which is used to >>> + control pmu registers for power isolation. >>> +- samsung,pmu-offset: phy power control register offset to >>> pmu-system-controller >>> + base. >>> +- #phy-cells : from the generic PHY bindings, must be 1; >>> + >>> +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" >>> +compatible PHYs, the second cell in the PHY specifier identifies the >>> +PHY id, which is interpreted as follows: >>> + 0 - UTMI+ type phy, >>> + 1 - PIPE3 type phy, >>> + >>> +Example: >>> + usb3_phy: usbphy@1210 { >>> + compatible = "samsung,exynos5250-usbdrd-phy"; >>> + reg = <0x1210 0x100>; >>> + clocks = <&clock 286>, <&clock 1>; >>> + clock-names = "phy", "usb3phy_refclk"; >>> + samsung,syscon-phandle = <&pmu_syscon>; >>> + samsung,pmu-offset = <0x704>; >>> + #phy-cells = <1>; >>> + }; >>> diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig >>> index 8d3c49c..d955a05 100644 >>> --- a/drivers/phy/Kconfig >>> +++ b/drivers/phy/Kconfig >>> @@ -166,4 +166,15 @@ config PHY_XGENE >>> help >>> This option enables support for APM X-Gene SoC multi-purpose PHY. >>> >>> +config PHY_EXYNOS5_USBDRD >>> + tristate "Exynos5 SoC series USB DRD PHY driver" >>> + depends on ARCH_EXYNOS5 && OF >>> + depends on HAS_IOMEM >>> + select GENERIC_PHY >>> + select MFD_SYSCON >> >> Lets try to avoid select in Kconfig. We've got enough problems with that. > > I hope you meant with "select MFD_SYSCON". > We are referencing the syscon for accessing pmu reg, for which we need > this config to be selected. > Other Exynos phy drivers also need this config and for that they have > selected this. > > Do you want me to do it any other way ? depends on is one option. Thanks Kishon -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi, On Mon, Apr 14, 2014 at 5:57 PM, Kishon Vijay Abraham I wrote: > Hi, > > On Tuesday 08 April 2014 08:06 PM, Vivek Gautam wrote: >> Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. >> The new driver uses the generic PHY framework and will interact >> with DWC3 controller present on Exynos5 series of SoCs. >> Thereby, removing old phy-samsung-usb3 driver and related code >> used untill now which was based on usb/phy framework. >> >> Signed-off-by: Vivek Gautam >> --- >> .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ >> drivers/phy/Kconfig| 11 + >> drivers/phy/Makefile |1 + >> drivers/phy/phy-exynos5-usbdrd.c | 668 >> >> 4 files changed, 722 insertions(+) >> create mode 100644 drivers/phy/phy-exynos5-usbdrd.c >> >> diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt >> b/Documentation/devicetree/bindings/phy/samsung-phy.txt >> index 28f9edb..6d99ba9 100644 >> --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt >> +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt >> @@ -74,3 +74,45 @@ phy-consumer@1234 { >> >> Refer to DT bindings documentation of particular PHY consumer devices for >> more >> information about required PHYs and the way of specification. >> + >> +Samsung Exynos5 SoC series USB DRD PHY controller >> +-- >> + >> +Required properties: >> +- compatible : Should be set to one of the following supported values: >> + - "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, >> + - "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. >> +- reg : Register offset and length of USB DRD PHY register set; >> +- clocks: Clock IDs array as required by the controller >> +- clock-names: names of clocks correseponding to IDs in the clock property; >> +Required clocks: >> + - phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), >> +used for register access. >> + - ref: PHY's reference clock (usually crystal clock), associated by >> +phy name, used to determine bit values for clock settings >> +register. >> + Additional clock required for Exynos5420: >> + - usb30_sclk_100m: Additional special clock used for PHY operation >> +depicted as 'sclk_usbphy30' in CMU of Exynos5420. >> +- samsung,syscon-phandle: phandle for syscon interface, which is used to >> + control pmu registers for power isolation. >> +- samsung,pmu-offset: phy power control register offset to >> pmu-system-controller >> + base. >> +- #phy-cells : from the generic PHY bindings, must be 1; >> + >> +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" >> +compatible PHYs, the second cell in the PHY specifier identifies the >> +PHY id, which is interpreted as follows: >> + 0 - UTMI+ type phy, >> + 1 - PIPE3 type phy, >> + >> +Example: >> + usb3_phy: usbphy@1210 { >> + compatible = "samsung,exynos5250-usbdrd-phy"; >> + reg = <0x1210 0x100>; >> + clocks = <&clock 286>, <&clock 1>; >> + clock-names = "phy", "usb3phy_refclk"; >> + samsung,syscon-phandle = <&pmu_syscon>; >> + samsung,pmu-offset = <0x704>; >> + #phy-cells = <1>; >> + }; >> diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig >> index 8d3c49c..d955a05 100644 >> --- a/drivers/phy/Kconfig >> +++ b/drivers/phy/Kconfig >> @@ -166,4 +166,15 @@ config PHY_XGENE >> help >> This option enables support for APM X-Gene SoC multi-purpose PHY. >> >> +config PHY_EXYNOS5_USBDRD >> + tristate "Exynos5 SoC series USB DRD PHY driver" >> + depends on ARCH_EXYNOS5 && OF >> + depends on HAS_IOMEM >> + select GENERIC_PHY >> + select MFD_SYSCON > > Lets try to avoid select in Kconfig. We've got enough problems with that. I hope you meant with "select MFD_SYSCON". We are referencing the syscon for accessing pmu reg, for which we need this config to be selected. Other Exynos phy drivers also need this config and for that they have selected this. Do you want me to do it any other way ? >> + help >> + Enable USB DRD PHY support for Exynos 5 SoC series. >> + This driver provides PHY interface for USB 3.0 DRD controller >> + present on Exynos5 SoC series. >> + >> endmenu >> diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile >> index 2faf78e..31baa0c 100644 >> --- a/drivers/phy/Makefile >> +++ b/drivers/phy/Makefile >> @@ -18,3 +18,4 @@ obj-$(CONFIG_PHY_EXYNOS4210_USB2) += >> phy-exynos4210-usb2.o >> obj-$(CONFIG_PHY_EXYNOS4X12_USB2)+= phy-exynos4x12-usb2.o >> obj-$(CONFIG_PHY_EXYNOS5250_USB2)+= phy-exynos5250-usb2.o >> obj-$(CONFIG_PHY_XGENE) += phy-xgene.o >> +obj-$(CONFIG_PHY_EXYNOS5_USBDRD) += phy-exynos5-us
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi, On Tuesday 08 April 2014 08:06 PM, Vivek Gautam wrote: > Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. > The new driver uses the generic PHY framework and will interact > with DWC3 controller present on Exynos5 series of SoCs. > Thereby, removing old phy-samsung-usb3 driver and related code > used untill now which was based on usb/phy framework. > > Signed-off-by: Vivek Gautam > --- > .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ > drivers/phy/Kconfig| 11 + > drivers/phy/Makefile |1 + > drivers/phy/phy-exynos5-usbdrd.c | 668 > > 4 files changed, 722 insertions(+) > create mode 100644 drivers/phy/phy-exynos5-usbdrd.c > > diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt > b/Documentation/devicetree/bindings/phy/samsung-phy.txt > index 28f9edb..6d99ba9 100644 > --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt > +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt > @@ -74,3 +74,45 @@ phy-consumer@1234 { > > Refer to DT bindings documentation of particular PHY consumer devices for > more > information about required PHYs and the way of specification. > + > +Samsung Exynos5 SoC series USB DRD PHY controller > +-- > + > +Required properties: > +- compatible : Should be set to one of the following supported values: > + - "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, > + - "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. > +- reg : Register offset and length of USB DRD PHY register set; > +- clocks: Clock IDs array as required by the controller > +- clock-names: names of clocks correseponding to IDs in the clock property; > +Required clocks: > + - phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), > +used for register access. > + - ref: PHY's reference clock (usually crystal clock), associated by > +phy name, used to determine bit values for clock settings > +register. > + Additional clock required for Exynos5420: > + - usb30_sclk_100m: Additional special clock used for PHY operation > +depicted as 'sclk_usbphy30' in CMU of Exynos5420. > +- samsung,syscon-phandle: phandle for syscon interface, which is used to > + control pmu registers for power isolation. > +- samsung,pmu-offset: phy power control register offset to > pmu-system-controller > + base. > +- #phy-cells : from the generic PHY bindings, must be 1; > + > +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" > +compatible PHYs, the second cell in the PHY specifier identifies the > +PHY id, which is interpreted as follows: > + 0 - UTMI+ type phy, > + 1 - PIPE3 type phy, > + > +Example: > + usb3_phy: usbphy@1210 { > + compatible = "samsung,exynos5250-usbdrd-phy"; > + reg = <0x1210 0x100>; > + clocks = <&clock 286>, <&clock 1>; > + clock-names = "phy", "usb3phy_refclk"; > + samsung,syscon-phandle = <&pmu_syscon>; > + samsung,pmu-offset = <0x704>; > + #phy-cells = <1>; > + }; > diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig > index 8d3c49c..d955a05 100644 > --- a/drivers/phy/Kconfig > +++ b/drivers/phy/Kconfig > @@ -166,4 +166,15 @@ config PHY_XGENE > help > This option enables support for APM X-Gene SoC multi-purpose PHY. > > +config PHY_EXYNOS5_USBDRD > + tristate "Exynos5 SoC series USB DRD PHY driver" > + depends on ARCH_EXYNOS5 && OF > + depends on HAS_IOMEM > + select GENERIC_PHY > + select MFD_SYSCON Lets try to avoid select in Kconfig. We've got enough problems with that. > + help > + Enable USB DRD PHY support for Exynos 5 SoC series. > + This driver provides PHY interface for USB 3.0 DRD controller > + present on Exynos5 SoC series. > + > endmenu > diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile > index 2faf78e..31baa0c 100644 > --- a/drivers/phy/Makefile > +++ b/drivers/phy/Makefile > @@ -18,3 +18,4 @@ obj-$(CONFIG_PHY_EXYNOS4210_USB2) += phy-exynos4210-usb2.o > obj-$(CONFIG_PHY_EXYNOS4X12_USB2)+= phy-exynos4x12-usb2.o > obj-$(CONFIG_PHY_EXYNOS5250_USB2)+= phy-exynos5250-usb2.o > obj-$(CONFIG_PHY_XGENE) += phy-xgene.o > +obj-$(CONFIG_PHY_EXYNOS5_USBDRD) += phy-exynos5-usbdrd.o > diff --git a/drivers/phy/phy-exynos5-usbdrd.c > b/drivers/phy/phy-exynos5-usbdrd.c > new file mode 100644 > index 000..ff54a7c > --- /dev/null > +++ b/drivers/phy/phy-exynos5-usbdrd.c > @@ -0,0 +1,668 @@ > +/* > + * Samsung EXYNOS5 SoC series USB DRD PHY driver > + * > + * Phy provider for USB 3.0 DRD controller on Exynos5 SoC series > + * > + * Copyright (C) 2013 Samsung Electronics Co., Ltd. 2014 already ;-) > + * Author: V
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi Kishon, On Mon, Apr 14, 2014 at 5:24 PM, Kishon Vijay Abraham I wrote: > Hi, > > On Wednesday 09 April 2014 04:36 PM, Tomasz Figa wrote: >> Hi Vivek, >> >> Please see my comments inline. >> >> On 08.04.2014 16:36, Vivek Gautam wrote: >>> Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. >>> The new driver uses the generic PHY framework and will interact >>> with DWC3 controller present on Exynos5 series of SoCs. >>> Thereby, removing old phy-samsung-usb3 driver and related code >>> used untill now which was based on usb/phy framework. >>> >>> Signed-off-by: Vivek Gautam >>> --- >>> .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ >>> drivers/phy/Kconfig| 11 + >>> drivers/phy/Makefile |1 + >>> drivers/phy/phy-exynos5-usbdrd.c | 668 >>> >>> 4 files changed, 722 insertions(+) >>> create mode 100644 drivers/phy/phy-exynos5-usbdrd.c >> >> [snip] >> >>> +Additional clock required for Exynos5420: >>> +- usb30_sclk_100m: Additional special clock used for PHY operation >>> + depicted as 'sclk_usbphy30' in CMU of Exynos5420. >> >> Are you sure this isn't simply a gate for the ref clock, as it can be found >> on >> another SoC that is not upstream yet? I don't have documentation for Exynos >> 5420 so I can't tell, but I'd like to ask you to recheck this. >> >>> +- samsung,syscon-phandle: phandle for syscon interface, which is used to >>> + control pmu registers for power isolation. >>> +- samsung,pmu-offset: phy power control register offset to >>> pmu-system-controller >>> + base. >>> +- #phy-cells : from the generic PHY bindings, must be 1; >>> + >>> +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" >>> +compatible PHYs, the second cell in the PHY specifier identifies the >>> +PHY id, which is interpreted as follows: >>> + 0 - UTMI+ type phy, >>> + 1 - PIPE3 type phy, >>> + >>> +Example: >>> +usb3_phy: usbphy@1210 { >>> +compatible = "samsung,exynos5250-usbdrd-phy"; >>> +reg = <0x1210 0x100>; >>> +clocks = <&clock 286>, <&clock 1>; >>> +clock-names = "phy", "usb3phy_refclk"; >> >> Binding description above doesn't mention "usb3phy_refclk" entry. >> >>> +samsung,syscon-phandle = <&pmu_syscon>; >>> +samsung,pmu-offset = <0x704>; >>> +#phy-cells = <1>; >>> +}; >> >> [snip] >> >>> diff --git a/drivers/phy/phy-exynos5-usbdrd.c >>> b/drivers/phy/phy-exynos5-usbdrd.c >>> new file mode 100644 >>> index 000..ff54a7c >>> --- /dev/null >>> +++ b/drivers/phy/phy-exynos5-usbdrd.c >> >> [snip] >> >>> +static int exynos5_usbdrd_phy_probe(struct platform_device *pdev) >>> +{ >>> +struct device *dev = &pdev->dev; >>> +struct device_node *node = dev->of_node; >>> +struct exynos5_usbdrd_phy *phy_drd; >>> +struct phy_provider *phy_provider; >>> +struct resource *res; >>> +const struct of_device_id *match; >>> +const struct exynos5_usbdrd_phy_drvdata *drv_data; >>> +struct regmap *reg_pmu; >>> +u32 pmu_offset; >>> +int i; >>> + >>> +/* >>> + * Exynos systems are completely DT enabled, >>> + * so lets not have any platform data support for this driver. >>> + */ >>> +if (!node) { >>> +dev_err(dev, "no device node found\n"); >> >> This error message is not very meaningful. I'd rather use something like >> "This >> driver can be only instantiated using Device Tree". > > how about just adding depend_on OF in Kconfig? Already added a depend on 'OF'. Copying below the part of Kconfig in this patch. config PHY_EXYNOS5_USBDRD tristate "Exynos5 SoC series USB DRD PHY driver" depends on ARCH_EXYNOS5 && OF depends on HAS_IOMEM -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi, On Wednesday 09 April 2014 04:36 PM, Tomasz Figa wrote: > Hi Vivek, > > Please see my comments inline. > > On 08.04.2014 16:36, Vivek Gautam wrote: >> Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. >> The new driver uses the generic PHY framework and will interact >> with DWC3 controller present on Exynos5 series of SoCs. >> Thereby, removing old phy-samsung-usb3 driver and related code >> used untill now which was based on usb/phy framework. >> >> Signed-off-by: Vivek Gautam >> --- >> .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ >> drivers/phy/Kconfig| 11 + >> drivers/phy/Makefile |1 + >> drivers/phy/phy-exynos5-usbdrd.c | 668 >> >> 4 files changed, 722 insertions(+) >> create mode 100644 drivers/phy/phy-exynos5-usbdrd.c > > [snip] > >> +Additional clock required for Exynos5420: >> +- usb30_sclk_100m: Additional special clock used for PHY operation >> + depicted as 'sclk_usbphy30' in CMU of Exynos5420. > > Are you sure this isn't simply a gate for the ref clock, as it can be found on > another SoC that is not upstream yet? I don't have documentation for Exynos > 5420 so I can't tell, but I'd like to ask you to recheck this. > >> +- samsung,syscon-phandle: phandle for syscon interface, which is used to >> + control pmu registers for power isolation. >> +- samsung,pmu-offset: phy power control register offset to >> pmu-system-controller >> + base. >> +- #phy-cells : from the generic PHY bindings, must be 1; >> + >> +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" >> +compatible PHYs, the second cell in the PHY specifier identifies the >> +PHY id, which is interpreted as follows: >> + 0 - UTMI+ type phy, >> + 1 - PIPE3 type phy, >> + >> +Example: >> +usb3_phy: usbphy@1210 { >> +compatible = "samsung,exynos5250-usbdrd-phy"; >> +reg = <0x1210 0x100>; >> +clocks = <&clock 286>, <&clock 1>; >> +clock-names = "phy", "usb3phy_refclk"; > > Binding description above doesn't mention "usb3phy_refclk" entry. > >> +samsung,syscon-phandle = <&pmu_syscon>; >> +samsung,pmu-offset = <0x704>; >> +#phy-cells = <1>; >> +}; > > [snip] > >> diff --git a/drivers/phy/phy-exynos5-usbdrd.c >> b/drivers/phy/phy-exynos5-usbdrd.c >> new file mode 100644 >> index 000..ff54a7c >> --- /dev/null >> +++ b/drivers/phy/phy-exynos5-usbdrd.c > > [snip] > >> +static int exynos5_usbdrd_phy_probe(struct platform_device *pdev) >> +{ >> +struct device *dev = &pdev->dev; >> +struct device_node *node = dev->of_node; >> +struct exynos5_usbdrd_phy *phy_drd; >> +struct phy_provider *phy_provider; >> +struct resource *res; >> +const struct of_device_id *match; >> +const struct exynos5_usbdrd_phy_drvdata *drv_data; >> +struct regmap *reg_pmu; >> +u32 pmu_offset; >> +int i; >> + >> +/* >> + * Exynos systems are completely DT enabled, >> + * so lets not have any platform data support for this driver. >> + */ >> +if (!node) { >> +dev_err(dev, "no device node found\n"); > > This error message is not very meaningful. I'd rather use something like "This > driver can be only instantiated using Device Tree". how about just adding depend_on OF in Kconfig? Thanks Kishon -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On Wed, Apr 9, 2014 at 7:03 PM, Tomasz Figa wrote: > On 09.04.2014 13:49, Vivek Gautam wrote: >> >> Hi, >> >> >> On Wed, Apr 9, 2014 at 4:36 PM, Tomasz Figa wrote: >>> >>> Hi Vivek, >>> >>> Please see my comments inline. >>> >>> >>> On 08.04.2014 16:36, Vivek Gautam wrote: Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. The new driver uses the generic PHY framework and will interact with DWC3 controller present on Exynos5 series of SoCs. Thereby, removing old phy-samsung-usb3 driver and related code used untill now which was based on usb/phy framework. Signed-off-by: Vivek Gautam --- .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ drivers/phy/Kconfig| 11 + drivers/phy/Makefile |1 + drivers/phy/phy-exynos5-usbdrd.c | 668 4 files changed, 722 insertions(+) create mode 100644 drivers/phy/phy-exynos5-usbdrd.c >>> >>> >>> >>> [snip] >>> >>> + Additional clock required for Exynos5420: + - usb30_sclk_100m: Additional special clock used for PHY operation + depicted as 'sclk_usbphy30' in CMU of Exynos5420. >>> >>> >>> >>> Are you sure this isn't simply a gate for the ref clock, as it can be >>> found >>> on another SoC that is not upstream yet? I don't have documentation for >>> Exynos 5420 so I can't tell, but I'd like to ask you to recheck this. >> >> >>> From what i can see in the manual : >> >> sclk_usbphy30 is derived from OSCCLK. >> It is coming from a MUX (default input line to this is OSCCLK) and >> then through a DIV >> there's this gate. >> >>{OSCCLK + other sources} --->[MUX] ---> [DIV] --> [GATE for >> sclk_usbphy30] >> >> the {rate of sclk_usbphy30} == OSCCLK >> >> However the 'ref' clock that we have been using is the actual oscillator >> clock. >> And on SoC Exynos5250, we don't have any such gate (sclk_usbphy30). >> So should this mean that ref clock and sclk_usbphy30 are still be >> controlled by >> two different gates ? >> > > Is there maybe a diagram of PHY input clocks in the datasheet, like for USB > 2.0 PHY in Exynos4210/4412/5250 datasheets in the chapter about USB2.0 > Device? Something like: > > > || > | ___| > XusbXTI | Phy_fsel[2:0]| ___ | >___[X]___|| __|_|___|\__|_| > | | _v___ | _ ^ | |/ | | > _ | | || | | | | ___ | | > ___| | || | | | | | |_|_| > |___| | | X 0 ||_| PLL |__|_|_|CLK|_|_| > _ | | | | || |DIV|_|_| > |___[X] | |_| 12 |_|480 | |___| | | > | MHz MHz |Digital| | > XusbXTO | USB PHY|___| | > || > > Below is the block diagram given for DRD controller. ___ || | | | | PHY | | | | controller |-|--- | |__ | | | || | | USB 3.0 | V | DRD | --- |Controller | | | ||USB30_SCLK_100M| USB 3.0 DRD | | | ---> | PHY | | | Link cont. | | | | | - | | | |___| |_| Does this help ? So, USB30_SCLK_100M is the SCLK that we are talking in the driver. I don't see any reference to XXTI in the USB 3.0 DRD controller chapter (in both Exynos5250 and 5420) In addition to this there's one more point to be noticed here. On Exynos5420 system, the sclk_usbphy300 (which is the sclk_usbphy30 for USB DRD channel 0), is also the PICO phy clock, i.e. USB 2.0 phy clock. So we should add a similar clk_get() for this clock in the phy-exynos5250-usb2 driver too, to support Exynos5420. > > Best regards, > Tomasz > -- > To unsubscribe from this list: send the line "unsubscribe linux-usb" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Best Regards Vivek Gautam Samsung R&D Institu
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
On 09.04.2014 13:49, Vivek Gautam wrote: Hi, On Wed, Apr 9, 2014 at 4:36 PM, Tomasz Figa wrote: Hi Vivek, Please see my comments inline. On 08.04.2014 16:36, Vivek Gautam wrote: Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. The new driver uses the generic PHY framework and will interact with DWC3 controller present on Exynos5 series of SoCs. Thereby, removing old phy-samsung-usb3 driver and related code used untill now which was based on usb/phy framework. Signed-off-by: Vivek Gautam --- .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ drivers/phy/Kconfig| 11 + drivers/phy/Makefile |1 + drivers/phy/phy-exynos5-usbdrd.c | 668 4 files changed, 722 insertions(+) create mode 100644 drivers/phy/phy-exynos5-usbdrd.c [snip] + Additional clock required for Exynos5420: + - usb30_sclk_100m: Additional special clock used for PHY operation + depicted as 'sclk_usbphy30' in CMU of Exynos5420. Are you sure this isn't simply a gate for the ref clock, as it can be found on another SoC that is not upstream yet? I don't have documentation for Exynos 5420 so I can't tell, but I'd like to ask you to recheck this. From what i can see in the manual : sclk_usbphy30 is derived from OSCCLK. It is coming from a MUX (default input line to this is OSCCLK) and then through a DIV there's this gate. {OSCCLK + other sources} --->[MUX] ---> [DIV] --> [GATE for sclk_usbphy30] the {rate of sclk_usbphy30} == OSCCLK However the 'ref' clock that we have been using is the actual oscillator clock. And on SoC Exynos5250, we don't have any such gate (sclk_usbphy30). So should this mean that ref clock and sclk_usbphy30 are still be controlled by two different gates ? Is there maybe a diagram of PHY input clocks in the datasheet, like for USB 2.0 PHY in Exynos4210/4412/5250 datasheets in the chapter about USB2.0 Device? Something like: || | ___| XusbXTI | Phy_fsel[2:0]| ___ | ___[X]___|| __|_|___|\__|_| | | _v___ | _ ^ | |/ | | _ | | || | | | | ___ | | ___| | || | | | | | |_|_| |___| | | X 0 ||_| PLL |__|_|_|CLK|_|_| _ | | | | || |DIV|_|_| |___[X] | |_| 12 |_|480 | |___| | | | MHz MHz |Digital| | XusbXTO | USB PHY|___| | || Best regards, Tomasz -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi, On Wed, Apr 9, 2014 at 4:36 PM, Tomasz Figa wrote: > Hi Vivek, > > Please see my comments inline. > > > On 08.04.2014 16:36, Vivek Gautam wrote: >> >> Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. >> The new driver uses the generic PHY framework and will interact >> with DWC3 controller present on Exynos5 series of SoCs. >> Thereby, removing old phy-samsung-usb3 driver and related code >> used untill now which was based on usb/phy framework. >> >> Signed-off-by: Vivek Gautam >> --- >> .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ >> drivers/phy/Kconfig| 11 + >> drivers/phy/Makefile |1 + >> drivers/phy/phy-exynos5-usbdrd.c | 668 >> >> 4 files changed, 722 insertions(+) >> create mode 100644 drivers/phy/phy-exynos5-usbdrd.c > > > [snip] > > >> + Additional clock required for Exynos5420: >> + - usb30_sclk_100m: Additional special clock used for PHY operation >> + depicted as 'sclk_usbphy30' in CMU of >> Exynos5420. > > > Are you sure this isn't simply a gate for the ref clock, as it can be found > on another SoC that is not upstream yet? I don't have documentation for > Exynos 5420 so I can't tell, but I'd like to ask you to recheck this. >From what i can see in the manual : sclk_usbphy30 is derived from OSCCLK. It is coming from a MUX (default input line to this is OSCCLK) and then through a DIV there's this gate. {OSCCLK + other sources} --->[MUX] ---> [DIV] --> [GATE for sclk_usbphy30] the {rate of sclk_usbphy30} == OSCCLK However the 'ref' clock that we have been using is the actual oscillator clock. And on SoC Exynos5250, we don't have any such gate (sclk_usbphy30). So should this mean that ref clock and sclk_usbphy30 are still be controlled by two different gates ? > > >> +- samsung,syscon-phandle: phandle for syscon interface, which is used to >> + control pmu registers for power isolation. >> +- samsung,pmu-offset: phy power control register offset to >> pmu-system-controller >> + base. >> +- #phy-cells : from the generic PHY bindings, must be 1; >> + >> +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" >> +compatible PHYs, the second cell in the PHY specifier identifies the >> +PHY id, which is interpreted as follows: >> + 0 - UTMI+ type phy, >> + 1 - PIPE3 type phy, >> + >> +Example: >> + usb3_phy: usbphy@1210 { >> + compatible = "samsung,exynos5250-usbdrd-phy"; >> + reg = <0x1210 0x100>; >> + clocks = <&clock 286>, <&clock 1>; >> + clock-names = "phy", "usb3phy_refclk"; > > > Binding description above doesn't mention "usb3phy_refclk" entry. my bad !! will correct this. > > >> + samsung,syscon-phandle = <&pmu_syscon>; >> + samsung,pmu-offset = <0x704>; >> + #phy-cells = <1>; >> + }; > > > [snip] > > >> diff --git a/drivers/phy/phy-exynos5-usbdrd.c >> b/drivers/phy/phy-exynos5-usbdrd.c >> new file mode 100644 >> index 000..ff54a7c >> --- /dev/null >> +++ b/drivers/phy/phy-exynos5-usbdrd.c > > > [snip] > > >> +static int exynos5_usbdrd_phy_probe(struct platform_device *pdev) >> +{ >> + struct device *dev = &pdev->dev; >> + struct device_node *node = dev->of_node; >> + struct exynos5_usbdrd_phy *phy_drd; >> + struct phy_provider *phy_provider; >> + struct resource *res; >> + const struct of_device_id *match; >> + const struct exynos5_usbdrd_phy_drvdata *drv_data; >> + struct regmap *reg_pmu; >> + u32 pmu_offset; >> + int i; >> + >> + /* >> +* Exynos systems are completely DT enabled, >> +* so lets not have any platform data support for this driver. >> +*/ >> + if (!node) { >> + dev_err(dev, "no device node found\n"); > > > This error message is not very meaningful. I'd rather use something like > "This driver can be only instantiated using Device Tree". Sure, will amend this. > > >> + return -ENODEV; >> + } >> + >> + match = of_match_node(exynos5_usbdrd_phy_of_match, >> pdev->dev.of_node); >> + if (!match) { >> + dev_err(dev, "of_match_node() failed\n"); >> + return -EINVAL; >> + } >> + drv_data = match->data; >> + >> + phy_drd = devm_kzalloc(dev, sizeof(*phy_drd), GFP_KERNEL); >> + if (!phy_drd) >> + return -ENOMEM; >> + >> + dev_set_drvdata(dev, phy_drd); >> + phy_drd->dev = dev; >> + >> + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); >> + phy_drd->reg_phy = devm_ioremap_resource(dev, res); >> + if (IS_ERR(phy_drd->reg_phy)) { >> + dev_err(dev, "Failed to map register memory (phy)\n"); > > > devm_ioremap_resource() already prints an error message.
Re: [PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Hi Vivek, Please see my comments inline. On 08.04.2014 16:36, Vivek Gautam wrote: Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. The new driver uses the generic PHY framework and will interact with DWC3 controller present on Exynos5 series of SoCs. Thereby, removing old phy-samsung-usb3 driver and related code used untill now which was based on usb/phy framework. Signed-off-by: Vivek Gautam --- .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ drivers/phy/Kconfig| 11 + drivers/phy/Makefile |1 + drivers/phy/phy-exynos5-usbdrd.c | 668 4 files changed, 722 insertions(+) create mode 100644 drivers/phy/phy-exynos5-usbdrd.c [snip] + Additional clock required for Exynos5420: + - usb30_sclk_100m: Additional special clock used for PHY operation + depicted as 'sclk_usbphy30' in CMU of Exynos5420. Are you sure this isn't simply a gate for the ref clock, as it can be found on another SoC that is not upstream yet? I don't have documentation for Exynos 5420 so I can't tell, but I'd like to ask you to recheck this. +- samsung,syscon-phandle: phandle for syscon interface, which is used to + control pmu registers for power isolation. +- samsung,pmu-offset: phy power control register offset to pmu-system-controller + base. +- #phy-cells : from the generic PHY bindings, must be 1; + +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" +compatible PHYs, the second cell in the PHY specifier identifies the +PHY id, which is interpreted as follows: + 0 - UTMI+ type phy, + 1 - PIPE3 type phy, + +Example: + usb3_phy: usbphy@1210 { + compatible = "samsung,exynos5250-usbdrd-phy"; + reg = <0x1210 0x100>; + clocks = <&clock 286>, <&clock 1>; + clock-names = "phy", "usb3phy_refclk"; Binding description above doesn't mention "usb3phy_refclk" entry. + samsung,syscon-phandle = <&pmu_syscon>; + samsung,pmu-offset = <0x704>; + #phy-cells = <1>; + }; [snip] diff --git a/drivers/phy/phy-exynos5-usbdrd.c b/drivers/phy/phy-exynos5-usbdrd.c new file mode 100644 index 000..ff54a7c --- /dev/null +++ b/drivers/phy/phy-exynos5-usbdrd.c [snip] +static int exynos5_usbdrd_phy_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct device_node *node = dev->of_node; + struct exynos5_usbdrd_phy *phy_drd; + struct phy_provider *phy_provider; + struct resource *res; + const struct of_device_id *match; + const struct exynos5_usbdrd_phy_drvdata *drv_data; + struct regmap *reg_pmu; + u32 pmu_offset; + int i; + + /* +* Exynos systems are completely DT enabled, +* so lets not have any platform data support for this driver. +*/ + if (!node) { + dev_err(dev, "no device node found\n"); This error message is not very meaningful. I'd rather use something like "This driver can be only instantiated using Device Tree". + return -ENODEV; + } + + match = of_match_node(exynos5_usbdrd_phy_of_match, pdev->dev.of_node); + if (!match) { + dev_err(dev, "of_match_node() failed\n"); + return -EINVAL; + } + drv_data = match->data; + + phy_drd = devm_kzalloc(dev, sizeof(*phy_drd), GFP_KERNEL); + if (!phy_drd) + return -ENOMEM; + + dev_set_drvdata(dev, phy_drd); + phy_drd->dev = dev; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + phy_drd->reg_phy = devm_ioremap_resource(dev, res); + if (IS_ERR(phy_drd->reg_phy)) { + dev_err(dev, "Failed to map register memory (phy)\n"); devm_ioremap_resource() already prints an error message. Best regards, Tomasz -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH V4 1/5] phy: Add new Exynos5 USB 3.0 PHY driver
Add a new driver for the USB 3.0 PHY on Exynos5 series of SoCs. The new driver uses the generic PHY framework and will interact with DWC3 controller present on Exynos5 series of SoCs. Thereby, removing old phy-samsung-usb3 driver and related code used untill now which was based on usb/phy framework. Signed-off-by: Vivek Gautam --- .../devicetree/bindings/phy/samsung-phy.txt| 42 ++ drivers/phy/Kconfig| 11 + drivers/phy/Makefile |1 + drivers/phy/phy-exynos5-usbdrd.c | 668 4 files changed, 722 insertions(+) create mode 100644 drivers/phy/phy-exynos5-usbdrd.c diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt index 28f9edb..6d99ba9 100644 --- a/Documentation/devicetree/bindings/phy/samsung-phy.txt +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt @@ -74,3 +74,45 @@ phy-consumer@1234 { Refer to DT bindings documentation of particular PHY consumer devices for more information about required PHYs and the way of specification. + +Samsung Exynos5 SoC series USB DRD PHY controller +-- + +Required properties: +- compatible : Should be set to one of the following supported values: + - "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, + - "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. +- reg : Register offset and length of USB DRD PHY register set; +- clocks: Clock IDs array as required by the controller +- clock-names: names of clocks correseponding to IDs in the clock property; + Required clocks: + - phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), + used for register access. + - ref: PHY's reference clock (usually crystal clock), associated by + phy name, used to determine bit values for clock settings + register. + Additional clock required for Exynos5420: + - usb30_sclk_100m: Additional special clock used for PHY operation + depicted as 'sclk_usbphy30' in CMU of Exynos5420. +- samsung,syscon-phandle: phandle for syscon interface, which is used to + control pmu registers for power isolation. +- samsung,pmu-offset: phy power control register offset to pmu-system-controller + base. +- #phy-cells : from the generic PHY bindings, must be 1; + +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" +compatible PHYs, the second cell in the PHY specifier identifies the +PHY id, which is interpreted as follows: + 0 - UTMI+ type phy, + 1 - PIPE3 type phy, + +Example: + usb3_phy: usbphy@1210 { + compatible = "samsung,exynos5250-usbdrd-phy"; + reg = <0x1210 0x100>; + clocks = <&clock 286>, <&clock 1>; + clock-names = "phy", "usb3phy_refclk"; + samsung,syscon-phandle = <&pmu_syscon>; + samsung,pmu-offset = <0x704>; + #phy-cells = <1>; + }; diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig index 8d3c49c..d955a05 100644 --- a/drivers/phy/Kconfig +++ b/drivers/phy/Kconfig @@ -166,4 +166,15 @@ config PHY_XGENE help This option enables support for APM X-Gene SoC multi-purpose PHY. +config PHY_EXYNOS5_USBDRD + tristate "Exynos5 SoC series USB DRD PHY driver" + depends on ARCH_EXYNOS5 && OF + depends on HAS_IOMEM + select GENERIC_PHY + select MFD_SYSCON + help + Enable USB DRD PHY support for Exynos 5 SoC series. + This driver provides PHY interface for USB 3.0 DRD controller + present on Exynos5 SoC series. + endmenu diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile index 2faf78e..31baa0c 100644 --- a/drivers/phy/Makefile +++ b/drivers/phy/Makefile @@ -18,3 +18,4 @@ obj-$(CONFIG_PHY_EXYNOS4210_USB2) += phy-exynos4210-usb2.o obj-$(CONFIG_PHY_EXYNOS4X12_USB2) += phy-exynos4x12-usb2.o obj-$(CONFIG_PHY_EXYNOS5250_USB2) += phy-exynos5250-usb2.o obj-$(CONFIG_PHY_XGENE)+= phy-xgene.o +obj-$(CONFIG_PHY_EXYNOS5_USBDRD) += phy-exynos5-usbdrd.o diff --git a/drivers/phy/phy-exynos5-usbdrd.c b/drivers/phy/phy-exynos5-usbdrd.c new file mode 100644 index 000..ff54a7c --- /dev/null +++ b/drivers/phy/phy-exynos5-usbdrd.c @@ -0,0 +1,668 @@ +/* + * Samsung EXYNOS5 SoC series USB DRD PHY driver + * + * Phy provider for USB 3.0 DRD controller on Exynos5 SoC series + * + * Copyright (C) 2013 Samsung Electronics Co., Ltd. + * Author: Vivek Gautam + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#