All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/5] add usb support for hi6220
@ 2015-02-10  7:50 ` Zhangfei Gao
  0 siblings, 0 replies; 23+ messages in thread
From: Zhangfei Gao @ 2015-02-10  7:50 UTC (permalink / raw)
  To: balbi-l0cyMroinI0, john.youn-HKixBCOQz3hWk0Htik3J/w,
	Mian Yousaf Kaukab, dan . zhao, Wangbinghui, Peter Chen,
	Sergei Shtylyov
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA, Zhangfei Gao

v3:
fix typo and add -EPROBE_DEFER of regulator, pointed by Peter

v2:
address comments from Sergei and Peter
add hi6220_phy_setup(false) code

v1:
hi6220 usb controller is inherited from dwc2
add phy accordingly
support otg gadget/host


Zhangfei Gao (5):
  Documentation: dt-bindings: add dt binding info for hi6220 dwc2
  Documentation: dt-bindings: add dt binding info for hi6220
  usb: dwc2: platform: add hi6220 support
  usb: phy: load usb phy earlier
  usb: phy: add phy-hi6220-usb

 Documentation/devicetree/bindings/usb/dwc2.txt     |   1 +
 .../devicetree/bindings/usb/hi6220-usb.txt         |  49 ++++
 drivers/usb/Makefile                               |   2 +-
 drivers/usb/dwc2/platform.c                        |  30 ++
 drivers/usb/phy/Kconfig                            |   9 +
 drivers/usb/phy/Makefile                           |   1 +
 drivers/usb/phy/phy-hi6220-usb.c                   | 308 +++++++++++++++++++++
 7 files changed, 399 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/usb/hi6220-usb.txt
 create mode 100644 drivers/usb/phy/phy-hi6220-usb.c

-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH v3 0/5] add usb support for hi6220
@ 2015-02-10  7:50 ` Zhangfei Gao
  0 siblings, 0 replies; 23+ messages in thread
From: Zhangfei Gao @ 2015-02-10  7:50 UTC (permalink / raw)
  To: linux-arm-kernel

v3:
fix typo and add -EPROBE_DEFER of regulator, pointed by Peter

v2:
address comments from Sergei and Peter
add hi6220_phy_setup(false) code

v1:
hi6220 usb controller is inherited from dwc2
add phy accordingly
support otg gadget/host


Zhangfei Gao (5):
  Documentation: dt-bindings: add dt binding info for hi6220 dwc2
  Documentation: dt-bindings: add dt binding info for hi6220
  usb: dwc2: platform: add hi6220 support
  usb: phy: load usb phy earlier
  usb: phy: add phy-hi6220-usb

 Documentation/devicetree/bindings/usb/dwc2.txt     |   1 +
 .../devicetree/bindings/usb/hi6220-usb.txt         |  49 ++++
 drivers/usb/Makefile                               |   2 +-
 drivers/usb/dwc2/platform.c                        |  30 ++
 drivers/usb/phy/Kconfig                            |   9 +
 drivers/usb/phy/Makefile                           |   1 +
 drivers/usb/phy/phy-hi6220-usb.c                   | 308 +++++++++++++++++++++
 7 files changed, 399 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/usb/hi6220-usb.txt
 create mode 100644 drivers/usb/phy/phy-hi6220-usb.c

-- 
1.9.1

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH v3 1/5] Documentation: dt-bindings: add dt binding info for hi6220 dwc2
  2015-02-10  7:50 ` Zhangfei Gao
@ 2015-02-10  7:50     ` Zhangfei Gao
  -1 siblings, 0 replies; 23+ messages in thread
From: Zhangfei Gao @ 2015-02-10  7:50 UTC (permalink / raw)
  To: balbi-l0cyMroinI0, john.youn-HKixBCOQz3hWk0Htik3J/w,
	Mian Yousaf Kaukab, dan . zhao, Wangbinghui, Peter Chen,
	Sergei Shtylyov
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA, Zhangfei Gao

Add necessary dwc2 binding documentation for Hisilicon soc: hi6220

Signed-off-by: Zhangfei Gao <zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
---
 Documentation/devicetree/bindings/usb/dwc2.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/usb/dwc2.txt b/Documentation/devicetree/bindings/usb/dwc2.txt
index fd132cb..2213682 100644
--- a/Documentation/devicetree/bindings/usb/dwc2.txt
+++ b/Documentation/devicetree/bindings/usb/dwc2.txt
@@ -4,6 +4,7 @@ Platform DesignWare HS OTG USB 2.0 controller
 Required properties:
 - compatible : One of:
   - brcm,bcm2835-usb: The DWC2 USB controller instance in the BCM2835 SoC.
+  - hisilicon,hi6220-usb: The DWC2 USB controller instance in the hi6220 SoC.
   - rockchip,rk3066-usb: The DWC2 USB controller instance in the rk3066 Soc;
   - "rockchip,rk3188-usb", "rockchip,rk3066-usb", "snps,dwc2": for rk3188 Soc;
   - "rockchip,rk3288-usb", "rockchip,rk3066-usb", "snps,dwc2": for rk3288 Soc;
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 1/5] Documentation: dt-bindings: add dt binding info for hi6220 dwc2
@ 2015-02-10  7:50     ` Zhangfei Gao
  0 siblings, 0 replies; 23+ messages in thread
From: Zhangfei Gao @ 2015-02-10  7:50 UTC (permalink / raw)
  To: linux-arm-kernel

Add necessary dwc2 binding documentation for Hisilicon soc: hi6220

Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
---
 Documentation/devicetree/bindings/usb/dwc2.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/usb/dwc2.txt b/Documentation/devicetree/bindings/usb/dwc2.txt
index fd132cb..2213682 100644
--- a/Documentation/devicetree/bindings/usb/dwc2.txt
+++ b/Documentation/devicetree/bindings/usb/dwc2.txt
@@ -4,6 +4,7 @@ Platform DesignWare HS OTG USB 2.0 controller
 Required properties:
 - compatible : One of:
   - brcm,bcm2835-usb: The DWC2 USB controller instance in the BCM2835 SoC.
+  - hisilicon,hi6220-usb: The DWC2 USB controller instance in the hi6220 SoC.
   - rockchip,rk3066-usb: The DWC2 USB controller instance in the rk3066 Soc;
   - "rockchip,rk3188-usb", "rockchip,rk3066-usb", "snps,dwc2": for rk3188 Soc;
   - "rockchip,rk3288-usb", "rockchip,rk3066-usb", "snps,dwc2": for rk3288 Soc;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 2/5] Documentation: dt-bindings: add dt binding info for hi6220
  2015-02-10  7:50 ` Zhangfei Gao
@ 2015-02-10  7:50     ` Zhangfei Gao
  -1 siblings, 0 replies; 23+ messages in thread
From: Zhangfei Gao @ 2015-02-10  7:50 UTC (permalink / raw)
  To: balbi-l0cyMroinI0, john.youn-HKixBCOQz3hWk0Htik3J/w,
	Mian Yousaf Kaukab, dan . zhao, Wangbinghui, Peter Chen,
	Sergei Shtylyov
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA, Zhangfei Gao

Signed-off-by: Zhangfei Gao <zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
---
 .../devicetree/bindings/usb/hi6220-usb.txt         | 49 ++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/usb/hi6220-usb.txt

diff --git a/Documentation/devicetree/bindings/usb/hi6220-usb.txt b/Documentation/devicetree/bindings/usb/hi6220-usb.txt
new file mode 100644
index 0000000..b8278de
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/hi6220-usb.txt
@@ -0,0 +1,49 @@
+Hisilicon hi6220 SoC USB controller
+-----------------------------
+
+usb controller is inherited from dwc2, refer dwc2.txt
+-----
+
+Required properties:
+- compatible: "hisilicon,hi6220-usb"
+Refer to dwc2.txt for dwc2 usb properties
+
+
+PHY:
+-----
+
+Required properties:
+- compatible: "hisilicon,hi6220-usb-phy"
+- vcc-supply: phandle to the regulator that provides power to the PHY.
+- clocks: phandle and clock specifier of the PHY clock.
+- hisilicon,peripheral-syscon: phandle of syscon used to control peripheral.
+- hisilicon,gpio-vbus: gpio of detecting vbus.
+- hisilicon,gpio-id: gpio of detecting id.
+
+Example:
+
+	peripheral_ctrl: syscon@f7030000 {
+	        compatible = "syscon";
+	        reg = <0x0 0xf7030000 0x0 0x1000>;
+	};
+
+	usb2_phy: usbphy {
+		compatible = "hisilicon,hi6220-usb-phy";
+		vcc-supply = <&fixed_5v_hub>;
+		hisilicon,gpio-vbus = <&gpio2 6 0>;
+		hisilicon,gpio-id = <&gpio2 5 0>;
+		hisilicon,peripheral-syscon = <&peripheral_ctrl>;
+		clocks = <&clock_sys HI6220_USBOTG_HCLK>;
+	};
+
+	usb: usb@f72c0000 {
+		compatible = "hisilicon,hi6220-usb";
+		reg = <0x0 0xf72c0000 0x0 0x40000>;
+		phys = <&usb2_phy>;
+		dr_mode = "otg";
+		g-use-dma;
+		g-rx-fifo-size = <512>;
+		g-np-tx-fifo-size = <128>;
+		g-tx-fifo-size = <128>;
+		interrupts = <0 77 0x4>;
+	};
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 2/5] Documentation: dt-bindings: add dt binding info for hi6220
@ 2015-02-10  7:50     ` Zhangfei Gao
  0 siblings, 0 replies; 23+ messages in thread
From: Zhangfei Gao @ 2015-02-10  7:50 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
---
 .../devicetree/bindings/usb/hi6220-usb.txt         | 49 ++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/usb/hi6220-usb.txt

diff --git a/Documentation/devicetree/bindings/usb/hi6220-usb.txt b/Documentation/devicetree/bindings/usb/hi6220-usb.txt
new file mode 100644
index 0000000..b8278de
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/hi6220-usb.txt
@@ -0,0 +1,49 @@
+Hisilicon hi6220 SoC USB controller
+-----------------------------
+
+usb controller is inherited from dwc2, refer dwc2.txt
+-----
+
+Required properties:
+- compatible: "hisilicon,hi6220-usb"
+Refer to dwc2.txt for dwc2 usb properties
+
+
+PHY:
+-----
+
+Required properties:
+- compatible: "hisilicon,hi6220-usb-phy"
+- vcc-supply: phandle to the regulator that provides power to the PHY.
+- clocks: phandle and clock specifier of the PHY clock.
+- hisilicon,peripheral-syscon: phandle of syscon used to control peripheral.
+- hisilicon,gpio-vbus: gpio of detecting vbus.
+- hisilicon,gpio-id: gpio of detecting id.
+
+Example:
+
+	peripheral_ctrl: syscon at f7030000 {
+	        compatible = "syscon";
+	        reg = <0x0 0xf7030000 0x0 0x1000>;
+	};
+
+	usb2_phy: usbphy {
+		compatible = "hisilicon,hi6220-usb-phy";
+		vcc-supply = <&fixed_5v_hub>;
+		hisilicon,gpio-vbus = <&gpio2 6 0>;
+		hisilicon,gpio-id = <&gpio2 5 0>;
+		hisilicon,peripheral-syscon = <&peripheral_ctrl>;
+		clocks = <&clock_sys HI6220_USBOTG_HCLK>;
+	};
+
+	usb: usb at f72c0000 {
+		compatible = "hisilicon,hi6220-usb";
+		reg = <0x0 0xf72c0000 0x0 0x40000>;
+		phys = <&usb2_phy>;
+		dr_mode = "otg";
+		g-use-dma;
+		g-rx-fifo-size = <512>;
+		g-np-tx-fifo-size = <128>;
+		g-tx-fifo-size = <128>;
+		interrupts = <0 77 0x4>;
+	};
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 3/5] usb: dwc2: platform: add hi6220 support
  2015-02-10  7:50 ` Zhangfei Gao
@ 2015-02-10  7:50     ` Zhangfei Gao
  -1 siblings, 0 replies; 23+ messages in thread
From: Zhangfei Gao @ 2015-02-10  7:50 UTC (permalink / raw)
  To: balbi-l0cyMroinI0, john.youn-HKixBCOQz3hWk0Htik3J/w,
	Mian Yousaf Kaukab, dan . zhao, Wangbinghui, Peter Chen,
	Sergei Shtylyov
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA, Zhangfei Gao

Signed-off-by: Zhangfei Gao <zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
---
 drivers/usb/dwc2/platform.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
index ae095f0..f7c67db 100644
--- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c
@@ -50,6 +50,35 @@
 
 static const char dwc2_driver_name[] = "dwc2";
 
+static const struct dwc2_core_params params_hi6220 = {
+	.otg_cap			= 2,	/* No HNP/SRP capable */
+	.otg_ver			= 0,	/* 1.3 */
+	.dma_enable			= 1,
+	.dma_desc_enable		= 0,
+	.speed				= 0,	/* High Speed */
+	.enable_dynamic_fifo		= 1,
+	.en_multiple_tx_fifo		= 1,
+	.host_rx_fifo_size		= 512,
+	.host_nperio_tx_fifo_size	= 512,
+	.host_perio_tx_fifo_size	= 512,
+	.max_transfer_size		= 65535,
+	.max_packet_count		= 511,
+	.host_channels			= 16,
+	.phy_type			= 1,	/* UTMI */
+	.phy_utmi_width			= 8,
+	.phy_ulpi_ddr			= 0,	/* Single */
+	.phy_ulpi_ext_vbus		= 0,
+	.i2c_enable			= 0,
+	.ulpi_fs_ls			= 0,
+	.host_support_fs_ls_low_power	= 0,
+	.host_ls_low_power_phy_clk	= 0,	/* 48 MHz */
+	.ts_dline			= 0,
+	.reload_ctl			= 0,
+	.ahbcfg				= GAHBCFG_HBSTLEN_INCR16 <<
+					  GAHBCFG_HBSTLEN_SHIFT,
+	.uframe_sched			= 0,
+};
+
 static const struct dwc2_core_params params_bcm2835 = {
 	.otg_cap			= 0,	/* HNP/SRP capable */
 	.otg_ver			= 0,	/* 1.3 */
@@ -129,6 +158,7 @@ static int dwc2_driver_remove(struct platform_device *dev)
 
 static const struct of_device_id dwc2_of_match_table[] = {
 	{ .compatible = "brcm,bcm2835-usb", .data = &params_bcm2835 },
+	{ .compatible = "hisilicon,hi6220-usb", .data = &params_hi6220 },
 	{ .compatible = "rockchip,rk3066-usb", .data = &params_rk3066 },
 	{ .compatible = "snps,dwc2", .data = NULL },
 	{ .compatible = "samsung,s3c6400-hsotg", .data = NULL},
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 3/5] usb: dwc2: platform: add hi6220 support
@ 2015-02-10  7:50     ` Zhangfei Gao
  0 siblings, 0 replies; 23+ messages in thread
From: Zhangfei Gao @ 2015-02-10  7:50 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
---
 drivers/usb/dwc2/platform.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
index ae095f0..f7c67db 100644
--- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c
@@ -50,6 +50,35 @@
 
 static const char dwc2_driver_name[] = "dwc2";
 
+static const struct dwc2_core_params params_hi6220 = {
+	.otg_cap			= 2,	/* No HNP/SRP capable */
+	.otg_ver			= 0,	/* 1.3 */
+	.dma_enable			= 1,
+	.dma_desc_enable		= 0,
+	.speed				= 0,	/* High Speed */
+	.enable_dynamic_fifo		= 1,
+	.en_multiple_tx_fifo		= 1,
+	.host_rx_fifo_size		= 512,
+	.host_nperio_tx_fifo_size	= 512,
+	.host_perio_tx_fifo_size	= 512,
+	.max_transfer_size		= 65535,
+	.max_packet_count		= 511,
+	.host_channels			= 16,
+	.phy_type			= 1,	/* UTMI */
+	.phy_utmi_width			= 8,
+	.phy_ulpi_ddr			= 0,	/* Single */
+	.phy_ulpi_ext_vbus		= 0,
+	.i2c_enable			= 0,
+	.ulpi_fs_ls			= 0,
+	.host_support_fs_ls_low_power	= 0,
+	.host_ls_low_power_phy_clk	= 0,	/* 48 MHz */
+	.ts_dline			= 0,
+	.reload_ctl			= 0,
+	.ahbcfg				= GAHBCFG_HBSTLEN_INCR16 <<
+					  GAHBCFG_HBSTLEN_SHIFT,
+	.uframe_sched			= 0,
+};
+
 static const struct dwc2_core_params params_bcm2835 = {
 	.otg_cap			= 0,	/* HNP/SRP capable */
 	.otg_ver			= 0,	/* 1.3 */
@@ -129,6 +158,7 @@ static int dwc2_driver_remove(struct platform_device *dev)
 
 static const struct of_device_id dwc2_of_match_table[] = {
 	{ .compatible = "brcm,bcm2835-usb", .data = &params_bcm2835 },
+	{ .compatible = "hisilicon,hi6220-usb", .data = &params_hi6220 },
 	{ .compatible = "rockchip,rk3066-usb", .data = &params_rk3066 },
 	{ .compatible = "snps,dwc2", .data = NULL },
 	{ .compatible = "samsung,s3c6400-hsotg", .data = NULL},
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 4/5] usb: phy: load usb phy earlier
  2015-02-10  7:50 ` Zhangfei Gao
@ 2015-02-10  7:50     ` Zhangfei Gao
  -1 siblings, 0 replies; 23+ messages in thread
From: Zhangfei Gao @ 2015-02-10  7:50 UTC (permalink / raw)
  To: balbi-l0cyMroinI0, john.youn-HKixBCOQz3hWk0Htik3J/w,
	Mian Yousaf Kaukab, dan . zhao, Wangbinghui, Peter Chen,
	Sergei Shtylyov
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA, Zhangfei Gao

Since phy is definitely used in usb controller, load the phy
earlier to make boot time shorter.

Signed-off-by: Zhangfei Gao <zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Acked-by: Peter Chen <peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
---
 drivers/usb/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
index 2f1e2aa..d8926c6 100644
--- a/drivers/usb/Makefile
+++ b/drivers/usb/Makefile
@@ -5,6 +5,7 @@
 # Object files in subdirectories
 
 obj-$(CONFIG_USB)		+= core/
+obj-$(CONFIG_USB_SUPPORT)	+= phy/
 
 obj-$(CONFIG_USB_DWC3)		+= dwc3/
 obj-$(CONFIG_USB_DWC2)		+= dwc2/
@@ -48,7 +49,6 @@ obj-$(CONFIG_USB_MICROTEK)	+= image/
 obj-$(CONFIG_USB_SERIAL)	+= serial/
 
 obj-$(CONFIG_USB)		+= misc/
-obj-$(CONFIG_USB_SUPPORT)	+= phy/
 obj-$(CONFIG_EARLY_PRINTK_DBGP)	+= early/
 
 obj-$(CONFIG_USB_ATM)		+= atm/
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 4/5] usb: phy: load usb phy earlier
@ 2015-02-10  7:50     ` Zhangfei Gao
  0 siblings, 0 replies; 23+ messages in thread
From: Zhangfei Gao @ 2015-02-10  7:50 UTC (permalink / raw)
  To: linux-arm-kernel

Since phy is definitely used in usb controller, load the phy
earlier to make boot time shorter.

Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Acked-by: Peter Chen <peter.chen@freescale.com>
---
 drivers/usb/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
index 2f1e2aa..d8926c6 100644
--- a/drivers/usb/Makefile
+++ b/drivers/usb/Makefile
@@ -5,6 +5,7 @@
 # Object files in subdirectories
 
 obj-$(CONFIG_USB)		+= core/
+obj-$(CONFIG_USB_SUPPORT)	+= phy/
 
 obj-$(CONFIG_USB_DWC3)		+= dwc3/
 obj-$(CONFIG_USB_DWC2)		+= dwc2/
@@ -48,7 +49,6 @@ obj-$(CONFIG_USB_MICROTEK)	+= image/
 obj-$(CONFIG_USB_SERIAL)	+= serial/
 
 obj-$(CONFIG_USB)		+= misc/
-obj-$(CONFIG_USB_SUPPORT)	+= phy/
 obj-$(CONFIG_EARLY_PRINTK_DBGP)	+= early/
 
 obj-$(CONFIG_USB_ATM)		+= atm/
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 5/5] usb: phy: add phy-hi6220-usb
  2015-02-10  7:50 ` Zhangfei Gao
@ 2015-02-10  7:50     ` Zhangfei Gao
  -1 siblings, 0 replies; 23+ messages in thread
From: Zhangfei Gao @ 2015-02-10  7:50 UTC (permalink / raw)
  To: balbi-l0cyMroinI0, john.youn-HKixBCOQz3hWk0Htik3J/w,
	Mian Yousaf Kaukab, dan . zhao, Wangbinghui, Peter Chen,
	Sergei Shtylyov
  Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA, Zhangfei Gao

Add usb phy controller for hi6220 platform

Signed-off-by: Zhangfei Gao <zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
---
 drivers/usb/phy/Kconfig          |   9 ++
 drivers/usb/phy/Makefile         |   1 +
 drivers/usb/phy/phy-hi6220-usb.c | 308 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 318 insertions(+)
 create mode 100644 drivers/usb/phy/phy-hi6220-usb.c

diff --git a/drivers/usb/phy/Kconfig b/drivers/usb/phy/Kconfig
index c6d0c8e..405a3d0 100644
--- a/drivers/usb/phy/Kconfig
+++ b/drivers/usb/phy/Kconfig
@@ -173,6 +173,15 @@ config USB_MXS_PHY
 
 	  MXS Phy is used by some of the i.MX SoCs, for example imx23/28/6x.
 
+config USB_HI6220_PHY
+	tristate "hi6220 USB PHY support"
+	select USB_PHY
+	select MFD_SYSCON
+	help
+	  Enable this to support the HISILICON HI6220 USB PHY.
+
+	  To compile this driver as a module, choose M here.
+
 config USB_RCAR_PHY
 	tristate "Renesas R-Car USB PHY support"
 	depends on USB || USB_GADGET
diff --git a/drivers/usb/phy/Makefile b/drivers/usb/phy/Makefile
index 75f2bba..00172d3 100644
--- a/drivers/usb/phy/Makefile
+++ b/drivers/usb/phy/Makefile
@@ -18,6 +18,7 @@ obj-$(CONFIG_SAMSUNG_USBPHY)		+= phy-samsung-usb.o
 obj-$(CONFIG_TWL6030_USB)		+= phy-twl6030-usb.o
 obj-$(CONFIG_USB_EHCI_TEGRA)		+= phy-tegra-usb.o
 obj-$(CONFIG_USB_GPIO_VBUS)		+= phy-gpio-vbus-usb.o
+obj-$(CONFIG_USB_HI6220_PHY)		+= phy-hi6220-usb.o
 obj-$(CONFIG_USB_ISP1301)		+= phy-isp1301.o
 obj-$(CONFIG_USB_MSM_OTG)		+= phy-msm-usb.o
 obj-$(CONFIG_USB_MV_OTG)		+= phy-mv-usb.o
diff --git a/drivers/usb/phy/phy-hi6220-usb.c b/drivers/usb/phy/phy-hi6220-usb.c
new file mode 100644
index 0000000..b251e85
--- /dev/null
+++ b/drivers/usb/phy/phy-hi6220-usb.c
@@ -0,0 +1,308 @@
+/*
+ * Copyright (c) 2015 Linaro Ltd.
+ * Copyright (c) 2015 Hisilicon Limited.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <linux/clk.h>
+#include <linux/mfd/syscon.h>
+#include <linux/of_gpio.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+#include <linux/regulator/consumer.h>
+#include <linux/usb/gadget.h>
+#include <linux/usb/otg.h>
+
+#define SC_PERIPH_CTRL4			0x00c
+
+#define CTRL4_PICO_SIDDQ		BIT(6)
+#define CTRL4_PICO_OGDISABLE		BIT(8)
+#define CTRL4_PICO_VBUSVLDEXT		BIT(10)
+#define CTRL4_PICO_VBUSVLDEXTSEL	BIT(11)
+#define CTRL4_OTG_PHY_SEL		BIT(21)
+
+#define SC_PERIPH_CTRL5			0x010
+
+#define CTRL5_USBOTG_RES_SEL		BIT(3)
+#define CTRL5_PICOPHY_ACAENB		BIT(4)
+#define CTRL5_PICOPHY_BC_MODE		BIT(5)
+#define CTRL5_PICOPHY_CHRGSEL		BIT(6)
+#define CTRL5_PICOPHY_VDATSRCEND	BIT(7)
+#define CTRL5_PICOPHY_VDATDETENB	BIT(8)
+#define CTRL5_PICOPHY_DCDENB		BIT(9)
+#define CTRL5_PICOPHY_IDDIG		BIT(10)
+
+#define SC_PERIPH_CTRL8			0x018
+#define SC_PERIPH_RSTEN0		0x300
+#define SC_PERIPH_RSTDIS0		0x304
+
+#define RST0_USBOTG_BUS			BIT(4)
+#define RST0_POR_PICOPHY		BIT(5)
+#define RST0_USBOTG			BIT(6)
+#define RST0_USBOTG_32K			BIT(7)
+
+#define EYE_PATTERN_PARA		0x7053348c
+
+struct hi6220_priv {
+	struct usb_phy phy;
+	struct delayed_work work;
+	struct regmap *reg;
+	struct clk *clk;
+	struct regulator *vcc;
+	struct device *dev;
+	int gpio_vbus;
+	int gpio_id;
+	enum usb_otg_state state;
+};
+
+static void hi6220_start_periphrals(struct hi6220_priv *priv, bool on)
+{
+	struct usb_otg *otg = priv->phy.otg;
+
+	if (!otg->gadget)
+		return;
+
+	if (on)
+		usb_gadget_connect(otg->gadget);
+	else
+		usb_gadget_disconnect(otg->gadget);
+}
+
+static void hi6220_detect_work(struct work_struct *work)
+{
+	struct hi6220_priv *priv =
+		container_of(work, struct hi6220_priv, work.work);
+	int gpio_id, gpio_vbus;
+	enum usb_otg_state state;
+
+	if (!gpio_is_valid(priv->gpio_id) || !gpio_is_valid(priv->gpio_vbus))
+		return;
+
+	gpio_id = gpio_get_value_cansleep(priv->gpio_id);
+	gpio_vbus = gpio_get_value_cansleep(priv->gpio_vbus);
+
+	if (gpio_vbus == 0) {
+		if (gpio_id == 1)
+			state = OTG_STATE_B_PERIPHERAL;
+		else
+			state = OTG_STATE_A_HOST;
+	} else {
+		state = OTG_STATE_A_HOST;
+	}
+
+	if (priv->state != state) {
+		hi6220_start_periphrals(priv, state == OTG_STATE_B_PERIPHERAL);
+		priv->state = state;
+	}
+}
+
+static irqreturn_t hiusb_gpio_intr(int irq, void *data)
+{
+	struct hi6220_priv *priv = (struct hi6220_priv *)data;
+
+	/* add debounce time */
+	schedule_delayed_work(&priv->work, msecs_to_jiffies(100));
+	return IRQ_HANDLED;
+}
+
+static int hi6220_set_peripheral(struct usb_otg *otg, struct usb_gadget *gadget)
+{
+	otg->gadget = gadget;
+	return 0;
+}
+
+static int hi6220_phy_setup(struct hi6220_priv *priv, bool on)
+{
+	struct regmap *reg = priv->reg;
+	u32 val, mask;
+	int ret;
+
+	if (priv->reg == NULL)
+		return 0;
+
+	if (on) {
+		val = RST0_USBOTG_BUS | RST0_POR_PICOPHY |
+		      RST0_USBOTG | RST0_USBOTG_32K;
+		mask = val;
+		ret = regmap_update_bits(reg, SC_PERIPH_RSTDIS0, mask, val);
+		if (ret)
+			goto out;
+
+		ret = regmap_read(reg, SC_PERIPH_CTRL5, &val);
+		val = CTRL5_USBOTG_RES_SEL | CTRL5_PICOPHY_ACAENB;
+		mask = val | CTRL5_PICOPHY_BC_MODE;
+		ret = regmap_update_bits(reg, SC_PERIPH_CTRL5, mask, val);
+		if (ret)
+			goto out;
+
+		val =  CTRL4_PICO_VBUSVLDEXT | CTRL4_PICO_VBUSVLDEXTSEL |
+		       CTRL4_OTG_PHY_SEL;
+		mask = val | CTRL4_PICO_SIDDQ | CTRL4_PICO_OGDISABLE;
+		ret = regmap_update_bits(reg, SC_PERIPH_CTRL4, mask, val);
+		if (ret)
+			goto out;
+
+		ret = regmap_write(reg, SC_PERIPH_CTRL8, EYE_PATTERN_PARA);
+		if (ret)
+			goto out;
+	} else {
+		val = CTRL4_PICO_SIDDQ;
+		mask = val;
+		ret = regmap_update_bits(reg, SC_PERIPH_CTRL4, mask, val);
+		if (ret)
+			goto out;
+
+		ret = regmap_read(reg, SC_PERIPH_CTRL4, &val);
+		val = RST0_USBOTG_BUS | RST0_POR_PICOPHY |
+		      RST0_USBOTG | RST0_USBOTG_32K;
+		mask = val;
+		ret = regmap_update_bits(reg, SC_PERIPH_RSTEN0, mask, val);
+		if (ret)
+			goto out;
+	}
+
+	return 0;
+out:
+	dev_err(priv->dev, "failed to setup phy ret: %d\n", ret);
+	return ret;
+}
+
+static int hi6220_phy_probe(struct platform_device *pdev)
+{
+	struct hi6220_priv *priv;
+	struct usb_otg *otg;
+	struct device_node *np = pdev->dev.of_node;
+	struct device *dev = &pdev->dev;
+	int ret, irq;
+
+	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+	if (!priv)
+		return -ENOMEM;
+
+	otg = devm_kzalloc(dev, sizeof(*otg), GFP_KERNEL);
+	if (!otg)
+		return -ENOMEM;
+
+	priv->dev = dev;
+	priv->phy.dev = &pdev->dev;
+	priv->phy.otg = otg;
+	priv->phy.label = "hi6220";
+	priv->phy.type = USB_PHY_TYPE_USB2;
+	otg->set_peripheral = hi6220_set_peripheral;
+	platform_set_drvdata(pdev, priv);
+
+	priv->gpio_vbus = of_get_named_gpio(np, "hisilicon,gpio-vbus", 0);
+	if (priv->gpio_vbus == -EPROBE_DEFER)
+		return -EPROBE_DEFER;
+	if (!gpio_is_valid(priv->gpio_vbus)) {
+		dev_err(dev, "invalid gpio %d\n", priv->gpio_vbus);
+		return -ENODEV;
+	}
+
+	priv->gpio_id = of_get_named_gpio(np, "hisilicon,gpio-id", 0);
+	if (priv->gpio_id == -EPROBE_DEFER)
+		return -EPROBE_DEFER;
+	if (!gpio_is_valid(priv->gpio_id)) {
+		dev_err(dev, "invalid gpio %d\n", priv->gpio_id);
+		return -ENODEV;
+	}
+
+	priv->reg = syscon_regmap_lookup_by_phandle(pdev->dev.of_node,
+					"hisilicon,peripheral-syscon");
+	if (IS_ERR(priv->reg))
+		priv->reg = NULL;
+
+	ret = devm_gpio_request_one(dev, priv->gpio_vbus,
+				    GPIOF_IN, "gpio_vbus");
+	if (ret < 0) {
+		dev_err(dev, "gpio request failed for gpio_vbus\n");
+		return ret;
+	}
+
+	ret = devm_gpio_request_one(dev, priv->gpio_id, GPIOF_IN, "gpio_id");
+	if (ret < 0) {
+		dev_err(dev, "gpio request failed for gpio_id\n");
+		return ret;
+	}
+
+	priv->vcc = devm_regulator_get(dev, "vcc");
+	if (IS_ERR(priv->vcc)) {
+		if (PTR_ERR(priv->vcc) == -EPROBE_DEFER)
+			return -EPROBE_DEFER;
+		dev_info(dev, "No regulator found\n");
+	} else {
+		ret = regulator_enable(priv->vcc);
+		if (ret) {
+			dev_err(dev, "Failed to enable regulator\n");
+			return -ENODEV;
+		}
+	}
+
+	priv->clk = devm_clk_get(dev, NULL);
+	if (IS_ERR(priv->clk)) {
+		regulator_disable(priv->vcc);
+		return PTR_ERR(priv->clk);
+	}
+	clk_prepare_enable(priv->clk);
+	INIT_DELAYED_WORK(&priv->work, hi6220_detect_work);
+
+	irq = gpio_to_irq(priv->gpio_vbus);
+	ret = devm_request_irq(dev, gpio_to_irq(priv->gpio_vbus),
+			       hiusb_gpio_intr, IRQF_NO_SUSPEND |
+			       IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
+			       "vbus_gpio_intr", priv);
+	if (ret) {
+		dev_err(dev, "request gpio irq failed.\n");
+		goto err_irq;
+	}
+
+	hi6220_phy_setup(priv, true);
+	ret = usb_add_phy_dev(&priv->phy);
+	if (ret) {
+		dev_err(dev, "Can't register transceiver\n");
+		goto err_irq;
+	}
+	schedule_delayed_work(&priv->work, 0);
+
+	return 0;
+err_irq:
+	cancel_delayed_work_sync(&priv->work);
+	clk_disable_unprepare(priv->clk);
+	regulator_disable(priv->vcc);
+	return ret;
+}
+
+static int hi6220_phy_remove(struct platform_device *pdev)
+{
+	struct hi6220_priv *priv = platform_get_drvdata(pdev);
+
+	cancel_delayed_work_sync(&priv->work);
+	hi6220_phy_setup(priv, false);
+	clk_disable_unprepare(priv->clk);
+	regulator_disable(priv->vcc);
+	return 0;
+}
+
+static const struct of_device_id hi6220_phy_of_match[] = {
+	{.compatible = "hisilicon,hi6220-usb-phy",},
+	{ },
+};
+MODULE_DEVICE_TABLE(of, hi6220_phy_of_match);
+
+static struct platform_driver hi6220_phy_driver = {
+	.probe	= hi6220_phy_probe,
+	.remove	= hi6220_phy_remove,
+	.driver = {
+		.name	= "hi6220-usb-phy",
+		.of_match_table	= hi6220_phy_of_match,
+	}
+};
+module_platform_driver(hi6220_phy_driver);
+
+MODULE_DESCRIPTION("HISILICON HI6220 USB PHY driver");
+MODULE_ALIAS("platform:hi6220-usb-phy");
+MODULE_LICENSE("GPL");
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH v3 5/5] usb: phy: add phy-hi6220-usb
@ 2015-02-10  7:50     ` Zhangfei Gao
  0 siblings, 0 replies; 23+ messages in thread
From: Zhangfei Gao @ 2015-02-10  7:50 UTC (permalink / raw)
  To: linux-arm-kernel

Add usb phy controller for hi6220 platform

Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
---
 drivers/usb/phy/Kconfig          |   9 ++
 drivers/usb/phy/Makefile         |   1 +
 drivers/usb/phy/phy-hi6220-usb.c | 308 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 318 insertions(+)
 create mode 100644 drivers/usb/phy/phy-hi6220-usb.c

diff --git a/drivers/usb/phy/Kconfig b/drivers/usb/phy/Kconfig
index c6d0c8e..405a3d0 100644
--- a/drivers/usb/phy/Kconfig
+++ b/drivers/usb/phy/Kconfig
@@ -173,6 +173,15 @@ config USB_MXS_PHY
 
 	  MXS Phy is used by some of the i.MX SoCs, for example imx23/28/6x.
 
+config USB_HI6220_PHY
+	tristate "hi6220 USB PHY support"
+	select USB_PHY
+	select MFD_SYSCON
+	help
+	  Enable this to support the HISILICON HI6220 USB PHY.
+
+	  To compile this driver as a module, choose M here.
+
 config USB_RCAR_PHY
 	tristate "Renesas R-Car USB PHY support"
 	depends on USB || USB_GADGET
diff --git a/drivers/usb/phy/Makefile b/drivers/usb/phy/Makefile
index 75f2bba..00172d3 100644
--- a/drivers/usb/phy/Makefile
+++ b/drivers/usb/phy/Makefile
@@ -18,6 +18,7 @@ obj-$(CONFIG_SAMSUNG_USBPHY)		+= phy-samsung-usb.o
 obj-$(CONFIG_TWL6030_USB)		+= phy-twl6030-usb.o
 obj-$(CONFIG_USB_EHCI_TEGRA)		+= phy-tegra-usb.o
 obj-$(CONFIG_USB_GPIO_VBUS)		+= phy-gpio-vbus-usb.o
+obj-$(CONFIG_USB_HI6220_PHY)		+= phy-hi6220-usb.o
 obj-$(CONFIG_USB_ISP1301)		+= phy-isp1301.o
 obj-$(CONFIG_USB_MSM_OTG)		+= phy-msm-usb.o
 obj-$(CONFIG_USB_MV_OTG)		+= phy-mv-usb.o
diff --git a/drivers/usb/phy/phy-hi6220-usb.c b/drivers/usb/phy/phy-hi6220-usb.c
new file mode 100644
index 0000000..b251e85
--- /dev/null
+++ b/drivers/usb/phy/phy-hi6220-usb.c
@@ -0,0 +1,308 @@
+/*
+ * Copyright (c) 2015 Linaro Ltd.
+ * Copyright (c) 2015 Hisilicon Limited.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <linux/clk.h>
+#include <linux/mfd/syscon.h>
+#include <linux/of_gpio.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+#include <linux/regulator/consumer.h>
+#include <linux/usb/gadget.h>
+#include <linux/usb/otg.h>
+
+#define SC_PERIPH_CTRL4			0x00c
+
+#define CTRL4_PICO_SIDDQ		BIT(6)
+#define CTRL4_PICO_OGDISABLE		BIT(8)
+#define CTRL4_PICO_VBUSVLDEXT		BIT(10)
+#define CTRL4_PICO_VBUSVLDEXTSEL	BIT(11)
+#define CTRL4_OTG_PHY_SEL		BIT(21)
+
+#define SC_PERIPH_CTRL5			0x010
+
+#define CTRL5_USBOTG_RES_SEL		BIT(3)
+#define CTRL5_PICOPHY_ACAENB		BIT(4)
+#define CTRL5_PICOPHY_BC_MODE		BIT(5)
+#define CTRL5_PICOPHY_CHRGSEL		BIT(6)
+#define CTRL5_PICOPHY_VDATSRCEND	BIT(7)
+#define CTRL5_PICOPHY_VDATDETENB	BIT(8)
+#define CTRL5_PICOPHY_DCDENB		BIT(9)
+#define CTRL5_PICOPHY_IDDIG		BIT(10)
+
+#define SC_PERIPH_CTRL8			0x018
+#define SC_PERIPH_RSTEN0		0x300
+#define SC_PERIPH_RSTDIS0		0x304
+
+#define RST0_USBOTG_BUS			BIT(4)
+#define RST0_POR_PICOPHY		BIT(5)
+#define RST0_USBOTG			BIT(6)
+#define RST0_USBOTG_32K			BIT(7)
+
+#define EYE_PATTERN_PARA		0x7053348c
+
+struct hi6220_priv {
+	struct usb_phy phy;
+	struct delayed_work work;
+	struct regmap *reg;
+	struct clk *clk;
+	struct regulator *vcc;
+	struct device *dev;
+	int gpio_vbus;
+	int gpio_id;
+	enum usb_otg_state state;
+};
+
+static void hi6220_start_periphrals(struct hi6220_priv *priv, bool on)
+{
+	struct usb_otg *otg = priv->phy.otg;
+
+	if (!otg->gadget)
+		return;
+
+	if (on)
+		usb_gadget_connect(otg->gadget);
+	else
+		usb_gadget_disconnect(otg->gadget);
+}
+
+static void hi6220_detect_work(struct work_struct *work)
+{
+	struct hi6220_priv *priv =
+		container_of(work, struct hi6220_priv, work.work);
+	int gpio_id, gpio_vbus;
+	enum usb_otg_state state;
+
+	if (!gpio_is_valid(priv->gpio_id) || !gpio_is_valid(priv->gpio_vbus))
+		return;
+
+	gpio_id = gpio_get_value_cansleep(priv->gpio_id);
+	gpio_vbus = gpio_get_value_cansleep(priv->gpio_vbus);
+
+	if (gpio_vbus == 0) {
+		if (gpio_id == 1)
+			state = OTG_STATE_B_PERIPHERAL;
+		else
+			state = OTG_STATE_A_HOST;
+	} else {
+		state = OTG_STATE_A_HOST;
+	}
+
+	if (priv->state != state) {
+		hi6220_start_periphrals(priv, state == OTG_STATE_B_PERIPHERAL);
+		priv->state = state;
+	}
+}
+
+static irqreturn_t hiusb_gpio_intr(int irq, void *data)
+{
+	struct hi6220_priv *priv = (struct hi6220_priv *)data;
+
+	/* add debounce time */
+	schedule_delayed_work(&priv->work, msecs_to_jiffies(100));
+	return IRQ_HANDLED;
+}
+
+static int hi6220_set_peripheral(struct usb_otg *otg, struct usb_gadget *gadget)
+{
+	otg->gadget = gadget;
+	return 0;
+}
+
+static int hi6220_phy_setup(struct hi6220_priv *priv, bool on)
+{
+	struct regmap *reg = priv->reg;
+	u32 val, mask;
+	int ret;
+
+	if (priv->reg == NULL)
+		return 0;
+
+	if (on) {
+		val = RST0_USBOTG_BUS | RST0_POR_PICOPHY |
+		      RST0_USBOTG | RST0_USBOTG_32K;
+		mask = val;
+		ret = regmap_update_bits(reg, SC_PERIPH_RSTDIS0, mask, val);
+		if (ret)
+			goto out;
+
+		ret = regmap_read(reg, SC_PERIPH_CTRL5, &val);
+		val = CTRL5_USBOTG_RES_SEL | CTRL5_PICOPHY_ACAENB;
+		mask = val | CTRL5_PICOPHY_BC_MODE;
+		ret = regmap_update_bits(reg, SC_PERIPH_CTRL5, mask, val);
+		if (ret)
+			goto out;
+
+		val =  CTRL4_PICO_VBUSVLDEXT | CTRL4_PICO_VBUSVLDEXTSEL |
+		       CTRL4_OTG_PHY_SEL;
+		mask = val | CTRL4_PICO_SIDDQ | CTRL4_PICO_OGDISABLE;
+		ret = regmap_update_bits(reg, SC_PERIPH_CTRL4, mask, val);
+		if (ret)
+			goto out;
+
+		ret = regmap_write(reg, SC_PERIPH_CTRL8, EYE_PATTERN_PARA);
+		if (ret)
+			goto out;
+	} else {
+		val = CTRL4_PICO_SIDDQ;
+		mask = val;
+		ret = regmap_update_bits(reg, SC_PERIPH_CTRL4, mask, val);
+		if (ret)
+			goto out;
+
+		ret = regmap_read(reg, SC_PERIPH_CTRL4, &val);
+		val = RST0_USBOTG_BUS | RST0_POR_PICOPHY |
+		      RST0_USBOTG | RST0_USBOTG_32K;
+		mask = val;
+		ret = regmap_update_bits(reg, SC_PERIPH_RSTEN0, mask, val);
+		if (ret)
+			goto out;
+	}
+
+	return 0;
+out:
+	dev_err(priv->dev, "failed to setup phy ret: %d\n", ret);
+	return ret;
+}
+
+static int hi6220_phy_probe(struct platform_device *pdev)
+{
+	struct hi6220_priv *priv;
+	struct usb_otg *otg;
+	struct device_node *np = pdev->dev.of_node;
+	struct device *dev = &pdev->dev;
+	int ret, irq;
+
+	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+	if (!priv)
+		return -ENOMEM;
+
+	otg = devm_kzalloc(dev, sizeof(*otg), GFP_KERNEL);
+	if (!otg)
+		return -ENOMEM;
+
+	priv->dev = dev;
+	priv->phy.dev = &pdev->dev;
+	priv->phy.otg = otg;
+	priv->phy.label = "hi6220";
+	priv->phy.type = USB_PHY_TYPE_USB2;
+	otg->set_peripheral = hi6220_set_peripheral;
+	platform_set_drvdata(pdev, priv);
+
+	priv->gpio_vbus = of_get_named_gpio(np, "hisilicon,gpio-vbus", 0);
+	if (priv->gpio_vbus == -EPROBE_DEFER)
+		return -EPROBE_DEFER;
+	if (!gpio_is_valid(priv->gpio_vbus)) {
+		dev_err(dev, "invalid gpio %d\n", priv->gpio_vbus);
+		return -ENODEV;
+	}
+
+	priv->gpio_id = of_get_named_gpio(np, "hisilicon,gpio-id", 0);
+	if (priv->gpio_id == -EPROBE_DEFER)
+		return -EPROBE_DEFER;
+	if (!gpio_is_valid(priv->gpio_id)) {
+		dev_err(dev, "invalid gpio %d\n", priv->gpio_id);
+		return -ENODEV;
+	}
+
+	priv->reg = syscon_regmap_lookup_by_phandle(pdev->dev.of_node,
+					"hisilicon,peripheral-syscon");
+	if (IS_ERR(priv->reg))
+		priv->reg = NULL;
+
+	ret = devm_gpio_request_one(dev, priv->gpio_vbus,
+				    GPIOF_IN, "gpio_vbus");
+	if (ret < 0) {
+		dev_err(dev, "gpio request failed for gpio_vbus\n");
+		return ret;
+	}
+
+	ret = devm_gpio_request_one(dev, priv->gpio_id, GPIOF_IN, "gpio_id");
+	if (ret < 0) {
+		dev_err(dev, "gpio request failed for gpio_id\n");
+		return ret;
+	}
+
+	priv->vcc = devm_regulator_get(dev, "vcc");
+	if (IS_ERR(priv->vcc)) {
+		if (PTR_ERR(priv->vcc) == -EPROBE_DEFER)
+			return -EPROBE_DEFER;
+		dev_info(dev, "No regulator found\n");
+	} else {
+		ret = regulator_enable(priv->vcc);
+		if (ret) {
+			dev_err(dev, "Failed to enable regulator\n");
+			return -ENODEV;
+		}
+	}
+
+	priv->clk = devm_clk_get(dev, NULL);
+	if (IS_ERR(priv->clk)) {
+		regulator_disable(priv->vcc);
+		return PTR_ERR(priv->clk);
+	}
+	clk_prepare_enable(priv->clk);
+	INIT_DELAYED_WORK(&priv->work, hi6220_detect_work);
+
+	irq = gpio_to_irq(priv->gpio_vbus);
+	ret = devm_request_irq(dev, gpio_to_irq(priv->gpio_vbus),
+			       hiusb_gpio_intr, IRQF_NO_SUSPEND |
+			       IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
+			       "vbus_gpio_intr", priv);
+	if (ret) {
+		dev_err(dev, "request gpio irq failed.\n");
+		goto err_irq;
+	}
+
+	hi6220_phy_setup(priv, true);
+	ret = usb_add_phy_dev(&priv->phy);
+	if (ret) {
+		dev_err(dev, "Can't register transceiver\n");
+		goto err_irq;
+	}
+	schedule_delayed_work(&priv->work, 0);
+
+	return 0;
+err_irq:
+	cancel_delayed_work_sync(&priv->work);
+	clk_disable_unprepare(priv->clk);
+	regulator_disable(priv->vcc);
+	return ret;
+}
+
+static int hi6220_phy_remove(struct platform_device *pdev)
+{
+	struct hi6220_priv *priv = platform_get_drvdata(pdev);
+
+	cancel_delayed_work_sync(&priv->work);
+	hi6220_phy_setup(priv, false);
+	clk_disable_unprepare(priv->clk);
+	regulator_disable(priv->vcc);
+	return 0;
+}
+
+static const struct of_device_id hi6220_phy_of_match[] = {
+	{.compatible = "hisilicon,hi6220-usb-phy",},
+	{ },
+};
+MODULE_DEVICE_TABLE(of, hi6220_phy_of_match);
+
+static struct platform_driver hi6220_phy_driver = {
+	.probe	= hi6220_phy_probe,
+	.remove	= hi6220_phy_remove,
+	.driver = {
+		.name	= "hi6220-usb-phy",
+		.of_match_table	= hi6220_phy_of_match,
+	}
+};
+module_platform_driver(hi6220_phy_driver);
+
+MODULE_DESCRIPTION("HISILICON HI6220 USB PHY driver");
+MODULE_ALIAS("platform:hi6220-usb-phy");
+MODULE_LICENSE("GPL");
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH v3 2/5] Documentation: dt-bindings: add dt binding info for hi6220
  2015-02-10  7:50     ` Zhangfei Gao
@ 2015-02-10 13:28         ` Mark Rutland
  -1 siblings, 0 replies; 23+ messages in thread
From: Mark Rutland @ 2015-02-10 13:28 UTC (permalink / raw)
  To: Zhangfei Gao
  Cc: balbi-l0cyMroinI0, john.youn-HKixBCOQz3hWk0Htik3J/w,
	Mian Yousaf Kaukab, dan . zhao, Wangbinghui, Peter Chen,
	Sergei Shtylyov,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA

On Tue, Feb 10, 2015 at 07:50:24AM +0000, Zhangfei Gao wrote:
> Signed-off-by: Zhangfei Gao <zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> ---
>  .../devicetree/bindings/usb/hi6220-usb.txt         | 49 ++++++++++++++++++++++
>  1 file changed, 49 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/usb/hi6220-usb.txt
> 
> diff --git a/Documentation/devicetree/bindings/usb/hi6220-usb.txt b/Documentation/devicetree/bindings/usb/hi6220-usb.txt
> new file mode 100644
> index 0000000..b8278de
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/usb/hi6220-usb.txt
> @@ -0,0 +1,49 @@
> +Hisilicon hi6220 SoC USB controller
> +-----------------------------
> +
> +usb controller is inherited from dwc2, refer dwc2.txt
> +-----
> +
> +Required properties:
> +- compatible: "hisilicon,hi6220-usb"
> +Refer to dwc2.txt for dwc2 usb properties
> +
> +
> +PHY:
> +-----
> +
> +Required properties:
> +- compatible: "hisilicon,hi6220-usb-phy"
> +- vcc-supply: phandle to the regulator that provides power to the PHY.
> +- clocks: phandle and clock specifier of the PHY clock.
> +- hisilicon,peripheral-syscon: phandle of syscon used to control peripheral.
> +- hisilicon,gpio-vbus: gpio of detecting vbus.
> +- hisilicon,gpio-id: gpio of detecting id.

These should be vbus-gpios and id-gpios respectively.

> +
> +Example:
> +
> +	peripheral_ctrl: syscon@f7030000 {
> +	        compatible = "syscon";
> +	        reg = <0x0 0xf7030000 0x0 0x1000>;
> +	};

We should have a real string for this in addition to "syscon".

Thanks,
Mark.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH v3 2/5] Documentation: dt-bindings: add dt binding info for hi6220
@ 2015-02-10 13:28         ` Mark Rutland
  0 siblings, 0 replies; 23+ messages in thread
From: Mark Rutland @ 2015-02-10 13:28 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Feb 10, 2015 at 07:50:24AM +0000, Zhangfei Gao wrote:
> Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
> ---
>  .../devicetree/bindings/usb/hi6220-usb.txt         | 49 ++++++++++++++++++++++
>  1 file changed, 49 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/usb/hi6220-usb.txt
> 
> diff --git a/Documentation/devicetree/bindings/usb/hi6220-usb.txt b/Documentation/devicetree/bindings/usb/hi6220-usb.txt
> new file mode 100644
> index 0000000..b8278de
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/usb/hi6220-usb.txt
> @@ -0,0 +1,49 @@
> +Hisilicon hi6220 SoC USB controller
> +-----------------------------
> +
> +usb controller is inherited from dwc2, refer dwc2.txt
> +-----
> +
> +Required properties:
> +- compatible: "hisilicon,hi6220-usb"
> +Refer to dwc2.txt for dwc2 usb properties
> +
> +
> +PHY:
> +-----
> +
> +Required properties:
> +- compatible: "hisilicon,hi6220-usb-phy"
> +- vcc-supply: phandle to the regulator that provides power to the PHY.
> +- clocks: phandle and clock specifier of the PHY clock.
> +- hisilicon,peripheral-syscon: phandle of syscon used to control peripheral.
> +- hisilicon,gpio-vbus: gpio of detecting vbus.
> +- hisilicon,gpio-id: gpio of detecting id.

These should be vbus-gpios and id-gpios respectively.

> +
> +Example:
> +
> +	peripheral_ctrl: syscon at f7030000 {
> +	        compatible = "syscon";
> +	        reg = <0x0 0xf7030000 0x0 0x1000>;
> +	};

We should have a real string for this in addition to "syscon".

Thanks,
Mark.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* RE: [PATCH v3 4/5] usb: phy: load usb phy earlier
  2015-02-10 14:49   ` Felipe Balbi
@ 2015-02-11  1:36       ` Peter Chen
  -1 siblings, 0 replies; 23+ messages in thread
From: Peter Chen @ 2015-02-11  1:36 UTC (permalink / raw)
  To: balbi-l0cyMroinI0, Zhangfei Gao
  Cc: john.youn-HKixBCOQz3hWk0Htik3J/w, Mian Yousaf Kaukab, dan . zhao,
	Wangbinghui, Sergei Shtylyov,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA

 
> On Tue, Feb 10, 2015 at 03:04:28PM +0800, Peter Chen wrote:
> > This patch does not belong to phy, so, doesn't need to add phy in
> > subject, meanwhile, please add GregKH as TO list, he is the right one
> > to queue this patch.
> >
> > Reply-To:
> > In-Reply-To: <1423554627-694-5-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> >
> > On Tue, Feb 10, 2015 at 03:50:26PM +0800, Zhangfei Gao wrote:
> > > Since phy is definitely used in usb controller, load the phy earlier
> > > to make boot time shorter.
> > >
> > > Signed-off-by: Zhangfei Gao <zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> > > Acked-by: Peter Chen <peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
> 
> NAK, make sure there are no such dependencies with your controller driver.
> They should know how to defer probing if their resources aren't available yet.
> 

I NAKed it first.

But after thinking more, I think it is a good patch, USB PHY works proper
is the base for coming USB controller operation, with this patch,
it can avoid the controller drivers which are linked earlier than USB PHY
always being probed deferral, look at drivers/Makefile, it links drivers
follow the similar method.

Zhangfei, you may need to add more description in your commit log to prove
it is a good improvement.

Peter
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH v3 4/5] usb: phy: load usb phy earlier
@ 2015-02-11  1:36       ` Peter Chen
  0 siblings, 0 replies; 23+ messages in thread
From: Peter Chen @ 2015-02-11  1:36 UTC (permalink / raw)
  To: linux-arm-kernel

 
> On Tue, Feb 10, 2015 at 03:04:28PM +0800, Peter Chen wrote:
> > This patch does not belong to phy, so, doesn't need to add phy in
> > subject, meanwhile, please add GregKH as TO list, he is the right one
> > to queue this patch.
> >
> > Reply-To:
> > In-Reply-To: <1423554627-694-5-git-send-email-zhangfei.gao@linaro.org>
> >
> > On Tue, Feb 10, 2015 at 03:50:26PM +0800, Zhangfei Gao wrote:
> > > Since phy is definitely used in usb controller, load the phy earlier
> > > to make boot time shorter.
> > >
> > > Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
> > > Acked-by: Peter Chen <peter.chen@freescale.com>
> 
> NAK, make sure there are no such dependencies with your controller driver.
> They should know how to defer probing if their resources aren't available yet.
> 

I NAKed it first.

But after thinking more, I think it is a good patch, USB PHY works proper
is the base for coming USB controller operation, with this patch,
it can avoid the controller drivers which are linked earlier than USB PHY
always being probed deferral, look at drivers/Makefile, it links drivers
follow the similar method.

Zhangfei, you may need to add more description in your commit log to prove
it is a good improvement.

Peter

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v3 4/5] usb: phy: load usb phy earlier
  2015-02-10 14:49   ` Felipe Balbi
@ 2015-02-10 15:20       ` zhangfei
  -1 siblings, 0 replies; 23+ messages in thread
From: zhangfei @ 2015-02-10 15:20 UTC (permalink / raw)
  To: balbi-l0cyMroinI0, Peter Chen
  Cc: john.youn-HKixBCOQz3hWk0Htik3J/w, Mian Yousaf Kaukab, dan . zhao,
	Wangbinghui, Sergei Shtylyov,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA



On 02/10/2015 10:49 PM, Felipe Balbi wrote:
> On Tue, Feb 10, 2015 at 03:04:28PM +0800, Peter Chen wrote:
>> This patch does not belong to phy, so, doesn't need to
>> add phy in subject, meanwhile, please add GregKH as TO list,
>> he is the right one to queue this patch.
>>
>> Reply-To:
>> In-Reply-To: <1423554627-694-5-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>>
>> On Tue, Feb 10, 2015 at 03:50:26PM +0800, Zhangfei Gao wrote:
>>> Since phy is definitely used in usb controller, load the phy
>>> earlier to make boot time shorter.
>>>
>>> Signed-off-by: Zhangfei Gao <zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>>> Acked-by: Peter Chen <peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
>
> NAK, make sure there are no such dependencies with your controller
> driver. They should know how to defer probing if their resources aren't
> available yet.

Sorry for the confusion,
There is no dependencies at all, just for optimization.
Peter already told me this patch should not be put here, causing confusion.
And I resend in another thread.

The controller is dwc2, which use defer probe. And dwc2 controller defer 
probe every time even the phy driver in the same folder.
Since we know the calling sequence, we can simply change the sequence to 
load the phy earlier.


However, as you said the new driver will be put in drivers/phy, there 
should be no such issue in the future.
It is OK not using this patch.

Thanks

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH v3 4/5] usb: phy: load usb phy earlier
@ 2015-02-10 15:20       ` zhangfei
  0 siblings, 0 replies; 23+ messages in thread
From: zhangfei @ 2015-02-10 15:20 UTC (permalink / raw)
  To: linux-arm-kernel



On 02/10/2015 10:49 PM, Felipe Balbi wrote:
> On Tue, Feb 10, 2015 at 03:04:28PM +0800, Peter Chen wrote:
>> This patch does not belong to phy, so, doesn't need to
>> add phy in subject, meanwhile, please add GregKH as TO list,
>> he is the right one to queue this patch.
>>
>> Reply-To:
>> In-Reply-To: <1423554627-694-5-git-send-email-zhangfei.gao@linaro.org>
>>
>> On Tue, Feb 10, 2015 at 03:50:26PM +0800, Zhangfei Gao wrote:
>>> Since phy is definitely used in usb controller, load the phy
>>> earlier to make boot time shorter.
>>>
>>> Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
>>> Acked-by: Peter Chen <peter.chen@freescale.com>
>
> NAK, make sure there are no such dependencies with your controller
> driver. They should know how to defer probing if their resources aren't
> available yet.

Sorry for the confusion,
There is no dependencies at all, just for optimization.
Peter already told me this patch should not be put here, causing confusion.
And I resend in another thread.

The controller is dwc2, which use defer probe. And dwc2 controller defer 
probe every time even the phy driver in the same folder.
Since we know the calling sequence, we can simply change the sequence to 
load the phy earlier.


However, as you said the new driver will be put in drivers/phy, there 
should be no such issue in the future.
It is OK not using this patch.

Thanks

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v3 4/5] usb: phy: load usb phy earlier
  2015-02-10  7:04 [PATCH v3 4/5] usb: phy: load usb phy earlier Peter Chen
@ 2015-02-10 14:49   ` Felipe Balbi
  2015-02-10 14:49   ` Felipe Balbi
  1 sibling, 0 replies; 23+ messages in thread
From: Felipe Balbi @ 2015-02-10 14:49 UTC (permalink / raw)
  To: Peter Chen
  Cc: Zhangfei Gao, balbi-l0cyMroinI0,
	john.youn-HKixBCOQz3hWk0Htik3J/w, Mian Yousaf Kaukab, dan . zhao,
	Wangbinghui, Sergei Shtylyov,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA

[-- Attachment #1: Type: text/plain, Size: 869 bytes --]

On Tue, Feb 10, 2015 at 03:04:28PM +0800, Peter Chen wrote:
> This patch does not belong to phy, so, doesn't need to
> add phy in subject, meanwhile, please add GregKH as TO list,
> he is the right one to queue this patch.
> 
> Reply-To: 
> In-Reply-To: <1423554627-694-5-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> 
> On Tue, Feb 10, 2015 at 03:50:26PM +0800, Zhangfei Gao wrote:
> > Since phy is definitely used in usb controller, load the phy
> > earlier to make boot time shorter.
> > 
> > Signed-off-by: Zhangfei Gao <zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> > Acked-by: Peter Chen <peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>

NAK, make sure there are no such dependencies with your controller
driver. They should know how to defer probing if their resources aren't
available yet.

-- 
balbi

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH v3 4/5] usb: phy: load usb phy earlier
@ 2015-02-10 14:49   ` Felipe Balbi
  0 siblings, 0 replies; 23+ messages in thread
From: Felipe Balbi @ 2015-02-10 14:49 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Feb 10, 2015 at 03:04:28PM +0800, Peter Chen wrote:
> This patch does not belong to phy, so, doesn't need to
> add phy in subject, meanwhile, please add GregKH as TO list,
> he is the right one to queue this patch.
> 
> Reply-To: 
> In-Reply-To: <1423554627-694-5-git-send-email-zhangfei.gao@linaro.org>
> 
> On Tue, Feb 10, 2015 at 03:50:26PM +0800, Zhangfei Gao wrote:
> > Since phy is definitely used in usb controller, load the phy
> > earlier to make boot time shorter.
> > 
> > Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
> > Acked-by: Peter Chen <peter.chen@freescale.com>

NAK, make sure there are no such dependencies with your controller
driver. They should know how to defer probing if their resources aren't
available yet.

-- 
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150210/6c13a06b/attachment.sig>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v3 4/5] usb: phy: load usb phy earlier
  2015-02-10  7:04 [PATCH v3 4/5] usb: phy: load usb phy earlier Peter Chen
@ 2015-02-10  8:36   ` zhangfei
  2015-02-10 14:49   ` Felipe Balbi
  1 sibling, 0 replies; 23+ messages in thread
From: zhangfei @ 2015-02-10  8:36 UTC (permalink / raw)
  To: Peter Chen
  Cc: balbi-l0cyMroinI0, john.youn-HKixBCOQz3hWk0Htik3J/w,
	Mian Yousaf Kaukab, dan . zhao, Wangbinghui, Sergei Shtylyov,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA



On 02/10/2015 03:04 PM, Peter Chen wrote:
> This patch does not belong to phy, so, doesn't need to
> add phy in subject, meanwhile, please add GregKH as TO list,
> he is the right one to queue this patch.
>
> Reply-To:
> In-Reply-To: <1423554627-694-5-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>

OK, thanks Peter.
Will resend this patchset and drop this one.

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH v3 4/5] usb: phy: load usb phy earlier
@ 2015-02-10  8:36   ` zhangfei
  0 siblings, 0 replies; 23+ messages in thread
From: zhangfei @ 2015-02-10  8:36 UTC (permalink / raw)
  To: linux-arm-kernel



On 02/10/2015 03:04 PM, Peter Chen wrote:
> This patch does not belong to phy, so, doesn't need to
> add phy in subject, meanwhile, please add GregKH as TO list,
> he is the right one to queue this patch.
>
> Reply-To:
> In-Reply-To: <1423554627-694-5-git-send-email-zhangfei.gao@linaro.org>

OK, thanks Peter.
Will resend this patchset and drop this one.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH v3 4/5] usb: phy: load usb phy earlier
@ 2015-02-10  7:04 Peter Chen
  2015-02-10  8:36   ` zhangfei
  2015-02-10 14:49   ` Felipe Balbi
  0 siblings, 2 replies; 23+ messages in thread
From: Peter Chen @ 2015-02-10  7:04 UTC (permalink / raw)
  To: Zhangfei Gao
  Cc: balbi-l0cyMroinI0, john.youn-HKixBCOQz3hWk0Htik3J/w,
	Mian Yousaf Kaukab, dan . zhao, Wangbinghui, Sergei Shtylyov,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA

This patch does not belong to phy, so, doesn't need to
add phy in subject, meanwhile, please add GregKH as TO list,
he is the right one to queue this patch.

Reply-To: 
In-Reply-To: <1423554627-694-5-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>

On Tue, Feb 10, 2015 at 03:50:26PM +0800, Zhangfei Gao wrote:
> Since phy is definitely used in usb controller, load the phy
> earlier to make boot time shorter.
> 
> Signed-off-by: Zhangfei Gao <zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> Acked-by: Peter Chen <peter.chen-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
> ---
>  drivers/usb/Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
> index 2f1e2aa..d8926c6 100644
> --- a/drivers/usb/Makefile
> +++ b/drivers/usb/Makefile
> @@ -5,6 +5,7 @@
>  # Object files in subdirectories
>  
>  obj-$(CONFIG_USB)		+= core/
> +obj-$(CONFIG_USB_SUPPORT)	+= phy/
>  
>  obj-$(CONFIG_USB_DWC3)		+= dwc3/
>  obj-$(CONFIG_USB_DWC2)		+= dwc2/
> @@ -48,7 +49,6 @@ obj-$(CONFIG_USB_MICROTEK)	+= image/
>  obj-$(CONFIG_USB_SERIAL)	+= serial/
>  
>  obj-$(CONFIG_USB)		+= misc/
> -obj-$(CONFIG_USB_SUPPORT)	+= phy/
>  obj-$(CONFIG_EARLY_PRINTK_DBGP)	+= early/
>  
>  obj-$(CONFIG_USB_ATM)		+= atm/
> -- 
> 1.9.1
> 

-- 

Best Regards,
Peter Chen
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2015-02-11  1:36 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-10  7:50 [PATCH v3 0/5] add usb support for hi6220 Zhangfei Gao
2015-02-10  7:50 ` Zhangfei Gao
     [not found] ` <1423554627-694-1-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-02-10  7:50   ` [PATCH v3 1/5] Documentation: dt-bindings: add dt binding info for hi6220 dwc2 Zhangfei Gao
2015-02-10  7:50     ` Zhangfei Gao
2015-02-10  7:50   ` [PATCH v3 2/5] Documentation: dt-bindings: add dt binding info for hi6220 Zhangfei Gao
2015-02-10  7:50     ` Zhangfei Gao
     [not found]     ` <1423554627-694-3-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-02-10 13:28       ` Mark Rutland
2015-02-10 13:28         ` Mark Rutland
2015-02-10  7:50   ` [PATCH v3 3/5] usb: dwc2: platform: add hi6220 support Zhangfei Gao
2015-02-10  7:50     ` Zhangfei Gao
2015-02-10  7:50   ` [PATCH v3 4/5] usb: phy: load usb phy earlier Zhangfei Gao
2015-02-10  7:50     ` Zhangfei Gao
2015-02-10  7:50   ` [PATCH v3 5/5] usb: phy: add phy-hi6220-usb Zhangfei Gao
2015-02-10  7:50     ` Zhangfei Gao
  -- strict thread matches above, loose matches on Subject: below --
2015-02-10  7:04 [PATCH v3 4/5] usb: phy: load usb phy earlier Peter Chen
2015-02-10  8:36 ` zhangfei
2015-02-10  8:36   ` zhangfei
2015-02-10 14:49 ` Felipe Balbi
2015-02-10 14:49   ` Felipe Balbi
     [not found]   ` <20150210144925.GD16711-HgARHv6XitJaoMGHk7MhZQC/G2K4zDHf@public.gmane.org>
2015-02-10 15:20     ` zhangfei
2015-02-10 15:20       ` zhangfei
2015-02-11  1:36     ` Peter Chen
2015-02-11  1:36       ` Peter Chen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.