diff --git a/arch/arm/boot/dts/xilinx/zynq-adrv9361-z7035-userspace.dts b/arch/arm/boot/dts/xilinx/zynq-adrv9361-z7035-userspace.dts index 03e4a7d4645356..c193923eccf793 100644 --- a/arch/arm/boot/dts/xilinx/zynq-adrv9361-z7035-userspace.dts +++ b/arch/arm/boot/dts/xilinx/zynq-adrv9361-z7035-userspace.dts @@ -12,6 +12,7 @@ */ /dts-v1/; #include "zynq.dtsi" +#include / { model = "Analog Devices ADRV9361-Z7035"; @@ -53,7 +54,7 @@ }; &usb0 { - xlnx,phy-reset-gpio = <&gpio0 7 0>; + xlnx,phy-reset-gpio = <&gpio0 7 GPIO_ACTIVE_LOW>; }; &qspi { diff --git a/arch/arm/boot/dts/xilinx/zynq-adrv9361-z7035.dtsi b/arch/arm/boot/dts/xilinx/zynq-adrv9361-z7035.dtsi index c39ee1c1ab48c5..388b0e1c6f4b65 100644 --- a/arch/arm/boot/dts/xilinx/zynq-adrv9361-z7035.dtsi +++ b/arch/arm/boot/dts/xilinx/zynq-adrv9361-z7035.dtsi @@ -6,6 +6,7 @@ */ #include "zynq.dtsi" +#include #include / { @@ -64,7 +65,7 @@ }; &usb0 { - xlnx,phy-reset-gpio = <&gpio0 7 0>; + xlnx,phy-reset-gpio = <&gpio0 7 GPIO_ACTIVE_LOW>; }; &qspi { diff --git a/arch/arm/boot/dts/xilinx/zynq-adrv9364-z7020.dtsi b/arch/arm/boot/dts/xilinx/zynq-adrv9364-z7020.dtsi index 75318e0d52482c..48a1eb936990b2 100644 --- a/arch/arm/boot/dts/xilinx/zynq-adrv9364-z7020.dtsi +++ b/arch/arm/boot/dts/xilinx/zynq-adrv9364-z7020.dtsi @@ -6,6 +6,7 @@ */ #include "zynq.dtsi" +#include #include / { @@ -57,7 +58,7 @@ }; &usb0 { - xlnx,phy-reset-gpio = <&gpio0 7 0>; + xlnx,phy-reset-gpio = <&gpio0 7 GPIO_ACTIVE_LOW>; }; &qspi { diff --git a/arch/arm/boot/dts/xilinx/zynq-e310.dts b/arch/arm/boot/dts/xilinx/zynq-e310.dts index 28321c499b3736..873ab1163996e1 100644 --- a/arch/arm/boot/dts/xilinx/zynq-e310.dts +++ b/arch/arm/boot/dts/xilinx/zynq-e310.dts @@ -86,7 +86,7 @@ }; &usb0 { - xlnx,phy-reset-gpio = <&gpio0 7 0>; + xlnx,phy-reset-gpio = <&gpio0 7 GPIO_ACTIVE_LOW>; }; &sdhci0 { diff --git a/arch/arm/boot/dts/xilinx/zynq-m2k.dtsi b/arch/arm/boot/dts/xilinx/zynq-m2k.dtsi index 032ca05539223d..054311ba0914f3 100644 --- a/arch/arm/boot/dts/xilinx/zynq-m2k.dtsi +++ b/arch/arm/boot/dts/xilinx/zynq-m2k.dtsi @@ -6,6 +6,7 @@ */ #include "zynq.dtsi" +#include #include / { @@ -42,7 +43,7 @@ }; &usb0 { - xlnx,phy-reset-gpio = <&gpio0 52 0>; + xlnx,phy-reset-gpio = <&gpio0 52 GPIO_ACTIVE_LOW>; dr_mode = "otg"; status = "okay"; }; diff --git a/arch/arm/boot/dts/xilinx/zynq-microzed.dtsi b/arch/arm/boot/dts/xilinx/zynq-microzed.dtsi index 1fcb8c063bdf4d..eef9ea104e158e 100644 --- a/arch/arm/boot/dts/xilinx/zynq-microzed.dtsi +++ b/arch/arm/boot/dts/xilinx/zynq-microzed.dtsi @@ -2,6 +2,7 @@ /* Copyright (C) 2024 Analog Devices Inc. */ #include "zynq.dtsi" +#include / { model = "Avnet MicroZed"; @@ -34,7 +35,7 @@ }; &usb0 { - xlnx,phy-reset-gpio = <&gpio0 7 0>; + xlnx,phy-reset-gpio = <&gpio0 7 GPIO_ACTIVE_LOW>; }; &qspi { diff --git a/arch/arm/boot/dts/xilinx/zynq-pluto-sdr.dtsi b/arch/arm/boot/dts/xilinx/zynq-pluto-sdr.dtsi index cc9a432f3da4a1..4c102e7de7e318 100644 --- a/arch/arm/boot/dts/xilinx/zynq-pluto-sdr.dtsi +++ b/arch/arm/boot/dts/xilinx/zynq-pluto-sdr.dtsi @@ -6,6 +6,7 @@ */ #include "zynq.dtsi" +#include #include / { @@ -41,7 +42,7 @@ }; &usb0 { - xlnx,phy-reset-gpio = <&gpio0 52 0>; + xlnx,phy-reset-gpio = <&gpio0 52 GPIO_ACTIVE_LOW>; dr_mode = "otg"; status = "okay"; }; diff --git a/arch/arm/boot/dts/xilinx/zynq-zc702.dtsi b/arch/arm/boot/dts/xilinx/zynq-zc702.dtsi index b14d6e274467fd..8c35e8751e70fb 100644 --- a/arch/arm/boot/dts/xilinx/zynq-zc702.dtsi +++ b/arch/arm/boot/dts/xilinx/zynq-zc702.dtsi @@ -3,6 +3,7 @@ #include "zynq.dtsi" +#include #include / { @@ -129,7 +130,7 @@ }; &usb0 { - xlnx,phy-reset-gpio = <&gpio0 7 0>; + xlnx,phy-reset-gpio = <&gpio0 7 GPIO_ACTIVE_LOW>; }; &qspi { diff --git a/arch/arm/boot/dts/xilinx/zynq-zc706.dtsi b/arch/arm/boot/dts/xilinx/zynq-zc706.dtsi index 6dbdb3a3b54887..38eb791aec8185 100644 --- a/arch/arm/boot/dts/xilinx/zynq-zc706.dtsi +++ b/arch/arm/boot/dts/xilinx/zynq-zc706.dtsi @@ -3,6 +3,7 @@ #include "zynq.dtsi" +#include #include / { @@ -77,7 +78,7 @@ }; &usb0 { - xlnx,phy-reset-gpio = <&gpio0 7 0>; + xlnx,phy-reset-gpio = <&gpio0 7 GPIO_ACTIVE_LOW>; }; &qspi { diff --git a/arch/arm/boot/dts/xilinx/zynq-zed-adv7511.dtsi b/arch/arm/boot/dts/xilinx/zynq-zed-adv7511.dtsi index 38357b6a1eae09..6d4177d02c0f40 100644 --- a/arch/arm/boot/dts/xilinx/zynq-zed-adv7511.dtsi +++ b/arch/arm/boot/dts/xilinx/zynq-zed-adv7511.dtsi @@ -326,5 +326,5 @@ }; &usb0 { - xlnx,phy-reset-gpio = <&gpio0 85 GPIO_ACTIVE_HIGH>; + xlnx,phy-reset-gpio = <&gpio0 85 GPIO_ACTIVE_LOW>; }; diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c index 0bdad818944136..535a212bacd06f 100644 --- a/drivers/usb/chipidea/core.c +++ b/drivers/usb/chipidea/core.c @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include @@ -36,7 +36,6 @@ #include #include #include -#include #include #include #include @@ -993,20 +992,22 @@ static void ci_get_otg_capable(struct ci_hdrc *ci) static int ci_hdrc_create_ulpi_phy(struct device *dev, struct ci_hdrc *ci) { struct usb_phy *ulpi; - int reset_gpio; - int ret; + struct gpio_desc *reset_gpio; - reset_gpio = of_get_named_gpio(dev->parent->of_node, "xlnx,phy-reset-gpio", 0); - if (gpio_is_valid(reset_gpio)) { - ret = devm_gpio_request_one(dev, reset_gpio, - GPIOF_OUT_INIT_LOW, "ulpi resetb"); - if (ret) { - dev_err(dev, "Failed to request ULPI reset gpio: %d\n", ret); + reset_gpio = devm_gpiod_get_optional(dev->parent, "xlnx,phy-reset-gpio", + GPIOD_OUT_HIGH); + if (IS_ERR(reset_gpio)) + return dev_err_probe(dev, PTR_ERR(reset_gpio), "Failed to get ULPI reset gpio\n"); + if (reset_gpio) { + int ret; + + ret = gpiod_set_consumer_name(reset_gpio, "ulpi resetb"); + if (ret) return ret; - } - msleep(5); - gpio_set_value_cansleep(reset_gpio, 1); - msleep(1); + + fsleep(5); + gpiod_set_value_cansleep(reset_gpio, 0); + fsleep(1); } ulpi = otg_ulpi_create(&ulpi_viewport_access_ops,