From bbe2dff178b2d827e850908c413a753476f5b361 Mon Sep 17 00:00:00 2001 From: Mathias Kresin Date: Thu, 7 Jan 2021 01:32:00 +0100 Subject: [PATCH] lantiq: pcie: use devm_gpiod_get_optional Use devm_gpiod_get_optional to aquire the reset gpio and get rid of quite some code this way. The devicetree property name changes from gpio-reset to reset-gpios due to this change. Signed-off-by: Mathias Kresin --- .../dts/lantiq/vr9_alphanetworks_asl56026.dts | 2 +- .../dts/lantiq/vr9_arcadyan_arv7519rw22.dts | 2 +- .../boot/dts/lantiq/vr9_arcadyan_vg3503j.dts | 2 +- .../dts/lantiq/vr9_avm_fritz3370-rev2.dtsi | 2 +- .../boot/dts/lantiq/vr9_avm_fritz3390.dts | 2 +- .../boot/dts/lantiq/vr9_avm_fritz736x.dtsi | 2 +- .../boot/dts/lantiq/vr9_avm_fritz7412.dts | 2 +- .../boot/dts/lantiq/vr9_avm_fritz7430.dts | 2 +- .../boot/dts/lantiq/vr9_bt_homehub-v5a.dts | 2 +- .../dts/lantiq/vr9_buffalo_wbmr-300hpd.dts | 2 +- .../boot/dts/lantiq/vr9_lantiq_easy80920.dtsi | 2 +- .../boot/dts/lantiq/vr9_tplink_tdw89x0.dtsi | 2 +- .../boot/dts/lantiq/vr9_tplink_vr200.dtsi | 2 +- .../dts/lantiq/vr9_zyxel_p-2812hnu-f3.dts | 2 +- .../0151-lantiq-ifxmips_pcie-use-of.patch | 28 ++++++++---------- .../0151-lantiq-ifxmips_pcie-use-of.patch | 29 +++++++++---------- 16 files changed, 40 insertions(+), 45 deletions(-) diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_alphanetworks_asl56026.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_alphanetworks_asl56026.dts index e7937c1952..ea59edc35c 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_alphanetworks_asl56026.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_alphanetworks_asl56026.dts @@ -154,5 +154,5 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 38 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>; }; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_arcadyan_arv7519rw22.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_arcadyan_arv7519rw22.dts index 9c43c14861..bd6954fb7a 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_arcadyan_arv7519rw22.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_arcadyan_arv7519rw22.dts @@ -222,7 +222,7 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 21 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio 21 GPIO_ACTIVE_LOW>; }; &usb_phy0 { diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_arcadyan_vg3503j.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_arcadyan_vg3503j.dts index 93d3a9feb4..6afaf5f09c 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_arcadyan_vg3503j.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_arcadyan_vg3503j.dts @@ -143,5 +143,5 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 38 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>; }; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3370-rev2.dtsi b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3370-rev2.dtsi index a69b7b68b2..c1fe73e498 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3370-rev2.dtsi +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3370-rev2.dtsi @@ -210,7 +210,7 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 21 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio 21 GPIO_ACTIVE_LOW>; }; &pcie_bridge0 { diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3390.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3390.dts index d887e10c45..b941da23e2 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3390.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz3390.dts @@ -290,7 +290,7 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 21 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio 21 GPIO_ACTIVE_HIGH>; }; &pcie_bridge0 { diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz736x.dtsi b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz736x.dtsi index 064c5c25af..fda7993d6e 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz736x.dtsi +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz736x.dtsi @@ -179,7 +179,7 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 21 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio 21 GPIO_ACTIVE_HIGH>; }; &pcie_bridge0 { diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7412.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7412.dts index 37929a2feb..fb67b8363c 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7412.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7412.dts @@ -147,7 +147,7 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 11 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio 11 GPIO_ACTIVE_LOW>; }; &pcie_bridge0 { diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7430.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7430.dts index 5d53cd5092..2c37784eac 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7430.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_avm_fritz7430.dts @@ -159,7 +159,7 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 11 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio 11 GPIO_ACTIVE_HIGH>; }; &pcie_bridge0 { diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_bt_homehub-v5a.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_bt_homehub-v5a.dts index 3afe801c36..fe395b40d1 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_bt_homehub-v5a.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_bt_homehub-v5a.dts @@ -273,7 +273,7 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 38 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>; }; &usb_phy0 { diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_buffalo_wbmr-300hpd.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_buffalo_wbmr-300hpd.dts index 3fbcd8ef40..bc67e197d9 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_buffalo_wbmr-300hpd.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_buffalo_wbmr-300hpd.dts @@ -311,5 +311,5 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 38 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>; }; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_lantiq_easy80920.dtsi b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_lantiq_easy80920.dtsi index df835d72a9..1dfc8a1528 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_lantiq_easy80920.dtsi +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_lantiq_easy80920.dtsi @@ -281,5 +281,5 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 38 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>; }; diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_tplink_tdw89x0.dtsi b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_tplink_tdw89x0.dtsi index 70ae5314ef..0e44bc39fd 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_tplink_tdw89x0.dtsi +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_tplink_tdw89x0.dtsi @@ -201,7 +201,7 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 38 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>; }; &pcie_bridge0 { diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_tplink_vr200.dtsi b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_tplink_vr200.dtsi index 346f026878..fa345fb0c1 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_tplink_vr200.dtsi +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_tplink_vr200.dtsi @@ -191,7 +191,7 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 38 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>; }; &pcie_bridge0 { diff --git a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_zyxel_p-2812hnu-f3.dts b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_zyxel_p-2812hnu-f3.dts index e52fbb0668..1baa0eb4a2 100644 --- a/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_zyxel_p-2812hnu-f3.dts +++ b/target/linux/lantiq/files/arch/mips/boot/dts/lantiq/vr9_zyxel_p-2812hnu-f3.dts @@ -72,5 +72,5 @@ &pcie0 { status = "okay"; - gpio-reset = <&gpio 38 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpio 38 GPIO_ACTIVE_LOW>; }; diff --git a/target/linux/lantiq/patches-5.10/0151-lantiq-ifxmips_pcie-use-of.patch b/target/linux/lantiq/patches-5.10/0151-lantiq-ifxmips_pcie-use-of.patch index 794ff23cc7..1691e4c2f6 100644 --- a/target/linux/lantiq/patches-5.10/0151-lantiq-ifxmips_pcie-use-of.patch +++ b/target/linux/lantiq/patches-5.10/0151-lantiq-ifxmips_pcie-use-of.patch @@ -20,7 +20,7 @@ static DEFINE_SPINLOCK(ifx_pcie_lock); u32 g_pcie_debug_flag = PCIE_MSG_ANY & (~PCIE_MSG_CFG); -+static int pcie_reset_gpio; ++static struct gpio_desc *pcie_reset_gpio; +static struct phy *ltq_pcie_phy; +static struct reset_control *ltq_pcie_reset; +static struct regmap *ltq_rcu_regmap; @@ -33,18 +33,18 @@ +static inline void pcie_ep_gpio_rst_init(int pcie_port) +{ -+ gpio_set_value(pcie_reset_gpio, 0); ++ gpiod_set_value(pcie_reset_gpio, 0); +} + +static inline void pcie_device_rst_assert(int pcie_port) +{ -+ gpio_set_value(pcie_reset_gpio, 1); ++ gpiod_set_value(pcie_reset_gpio, 1); +} + +static inline void pcie_device_rst_deassert(int pcie_port) +{ + mdelay(100); -+ gpio_set_value(pcie_reset_gpio, 0); ++ gpiod_set_value(pcie_reset_gpio, 0); +} static inline int pcie_ltssm_enable(int pcie_port) @@ -122,7 +122,7 @@ } if (i >= IFX_PCIE_PHY_LOOP_CNT) { printk(KERN_ERR "%s link up failed!!!!!\n", __func__); -@@ -1045,17 +1082,67 @@ pcie_rc_initialize(int pcie_port) +@@ -1045,17 +1082,63 @@ pcie_rc_initialize(int pcie_port) return 0; } @@ -179,20 +179,16 @@ + if (IS_ERR(ltq_rcu_regmap)) + return PTR_ERR(ltq_rcu_regmap); + -+ pcie_reset_gpio = of_get_named_gpio(node, "gpio-reset", 0); -+ if (gpio_is_valid(pcie_reset_gpio)) { -+ int ret = devm_gpio_request(&pdev->dev, pcie_reset_gpio, "pcie-reset"); -+ if (ret) { -+ dev_err(&pdev->dev, "failed to request gpio %d\n", pcie_reset_gpio); -+ return ret; -+ } -+ gpio_direction_output(pcie_reset_gpio, 0); -+ } ++ pcie_reset_gpio = devm_gpiod_get_optional(&pdev->dev, "reset", ++ GPIOD_OUT_LOW); ++ if (IS_ERR(pcie_reset_gpio)) { ++ return dev_err_probe(&pdev->dev, PTR_ERR(pcie_reset_gpio), ++ "failed to request gpio\n"); + for (pcie_port = startup_port; pcie_port < IFX_PCIE_CORE_NR; pcie_port++){ if (pcie_rc_initialize(pcie_port) == 0) { IFX_PCIE_PRINT(PCIE_MSG_INIT, "%s: ifx_pcie_cfg_base 0x%p\n", -@@ -1067,6 +1154,7 @@ static int __init ifx_pcie_bios_init(voi +@@ -1067,6 +1150,7 @@ static int __init ifx_pcie_bios_init(voi return -ENOMEM; } ifx_pcie_controller[pcie_port].pcic.io_map_base = (unsigned long)io_map_base; @@ -200,7 +196,7 @@ register_pci_controller(&ifx_pcie_controller[pcie_port].pcic); /* XXX, clear error status */ -@@ -1083,6 +1171,30 @@ static int __init ifx_pcie_bios_init(voi +@@ -1083,6 +1167,30 @@ static int __init ifx_pcie_bios_init(voi return 0; } diff --git a/target/linux/lantiq/patches-5.4/0151-lantiq-ifxmips_pcie-use-of.patch b/target/linux/lantiq/patches-5.4/0151-lantiq-ifxmips_pcie-use-of.patch index b4ef88e94f..36bf442f02 100644 --- a/target/linux/lantiq/patches-5.4/0151-lantiq-ifxmips_pcie-use-of.patch +++ b/target/linux/lantiq/patches-5.4/0151-lantiq-ifxmips_pcie-use-of.patch @@ -20,7 +20,7 @@ static DEFINE_SPINLOCK(ifx_pcie_lock); u32 g_pcie_debug_flag = PCIE_MSG_ANY & (~PCIE_MSG_CFG); -+static int pcie_reset_gpio; ++static struct gpio_desc *pcie_reset_gpio; +static struct phy *ltq_pcie_phy; +static struct reset_control *ltq_pcie_reset; +static struct regmap *ltq_rcu_regmap; @@ -33,18 +33,18 @@ +static inline void pcie_ep_gpio_rst_init(int pcie_port) +{ -+ gpio_set_value(pcie_reset_gpio, 0); ++ gpiod_set_value(pcie_reset_gpio, 0); +} + +static inline void pcie_device_rst_assert(int pcie_port) +{ -+ gpio_set_value(pcie_reset_gpio, 1); ++ gpiod_set_value(pcie_reset_gpio, 1); +} + +static inline void pcie_device_rst_deassert(int pcie_port) +{ + mdelay(100); -+ gpio_set_value(pcie_reset_gpio, 0); ++ gpiod_set_value(pcie_reset_gpio, 0); +} static inline int pcie_ltssm_enable(int pcie_port) @@ -122,7 +122,7 @@ } if (i >= IFX_PCIE_PHY_LOOP_CNT) { printk(KERN_ERR "%s link up failed!!!!!\n", __func__); -@@ -1045,17 +1082,67 @@ pcie_rc_initialize(int pcie_port) +@@ -1045,17 +1082,66 @@ pcie_rc_initialize(int pcie_port) return 0; } @@ -179,20 +179,19 @@ + if (IS_ERR(ltq_rcu_regmap)) + return PTR_ERR(ltq_rcu_regmap); + -+ pcie_reset_gpio = of_get_named_gpio(node, "gpio-reset", 0); -+ if (gpio_is_valid(pcie_reset_gpio)) { -+ int ret = devm_gpio_request(&pdev->dev, pcie_reset_gpio, "pcie-reset"); -+ if (ret) { -+ dev_err(&pdev->dev, "failed to request gpio %d\n", pcie_reset_gpio); -+ return ret; -+ } -+ gpio_direction_output(pcie_reset_gpio, 0); ++ pcie_reset_gpio = devm_gpiod_get_optional(&pdev->dev, "reset", ++ GPIOD_OUT_LOW); ++ if (IS_ERR(pcie_reset_gpio)) { ++ if (PTR_ERR(pcie_reset_gpio) != -EPROBE_DEFER) ++ dev_err(&pdev->dev, "failed to request gpio\n"); ++ ++ return PTR_ERR(pcie_reset_gpio); + } + for (pcie_port = startup_port; pcie_port < IFX_PCIE_CORE_NR; pcie_port++){ if (pcie_rc_initialize(pcie_port) == 0) { IFX_PCIE_PRINT(PCIE_MSG_INIT, "%s: ifx_pcie_cfg_base 0x%p\n", -@@ -1067,6 +1154,7 @@ static int __init ifx_pcie_bios_init(voi +@@ -1067,6 +1153,7 @@ static int __init ifx_pcie_bios_init(voi return -ENOMEM; } ifx_pcie_controller[pcie_port].pcic.io_map_base = (unsigned long)io_map_base; @@ -200,7 +199,7 @@ register_pci_controller(&ifx_pcie_controller[pcie_port].pcic); /* XXX, clear error status */ -@@ -1083,6 +1171,30 @@ static int __init ifx_pcie_bios_init(voi +@@ -1083,6 +1170,30 @@ static int __init ifx_pcie_bios_init(voi return 0; } -- 2.30.2