From 5159c615701766d2ceee87e274e86343152a3a27 Mon Sep 17 00:00:00 2001 From: Sham Muthayyan Date: Tue, 5 Mar 2019 12:13:42 +0530 Subject: [PATCH] ipq807x: Add SFP TX reset Change-Id: I0f01a9c2b1b749220853c91af8fc9297e5fa5e80 Signed-off-by: Sham Muthayyan --- arch/arm/dts/ipq807x-hk01-c2.dts | 1 + board/qca/arm/ipq807x/ipq807x.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/arch/arm/dts/ipq807x-hk01-c2.dts b/arch/arm/dts/ipq807x-hk01-c2.dts index d24dd60080..325d2ca845 100644 --- a/arch/arm/dts/ipq807x-hk01-c2.dts +++ b/arch/arm/dts/ipq807x-hk01-c2.dts @@ -33,6 +33,7 @@ switch_mac_mode1 = <0x7>; switch_mac_mode2 = <0x2>; sfp_port = <4>; + sfp_gpio = <59>; aquantia_port = <5>; aquantia_gpio = <44>; }; diff --git a/board/qca/arm/ipq807x/ipq807x.c b/board/qca/arm/ipq807x/ipq807x.c index 8e844f9a82..d5cbae3094 100644 --- a/board/qca/arm/ipq807x/ipq807x.c +++ b/board/qca/arm/ipq807x/ipq807x.c @@ -374,6 +374,21 @@ void napa_phy_reset_init(void) } } +void sfp_reset_init(void) +{ + int sfp_gpio = -1, node; + unsigned int *sfp_gpio_base; + + node = fdt_path_offset(gd->fdt_blob, "/ess-switch"); + if (node >= 0) + sfp_gpio = fdtdec_get_uint(gd->fdt_blob, node, "sfp_gpio", -1); + + if (sfp_gpio >=0) { + sfp_gpio_base = (unsigned int *)GPIO_CONFIG_ADDR(sfp_gpio); + writel(0x2C1, sfp_gpio_base); + } +} + void napa_phy_reset_init_done(void) { int napa_gpio[2] = {0}, napa_gpio_cnt, i; @@ -459,6 +474,7 @@ void eth_clock_enable(void) writel(0, tlmm_base + 0x4); aquantia_phy_reset_init(); napa_phy_reset_init(); + sfp_reset_init(); mdelay(500); writel(2, tlmm_base + 0x4); aquantia_phy_reset_init_done();