[openwrt/openwrt] ltq-atm: propagate EPROBE_DEFER to probe
LEDE Commits
lede-commits at lists.infradead.org
Fri Sep 6 13:24:58 PDT 2024
hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/42a763ef0460d634a0bd744214617a99255b5e3a
commit 42a763ef0460d634a0bd744214617a99255b5e3a
Author: Rosen Penev <rosenp at gmail.com>
AuthorDate: Wed Aug 14 19:40:00 2024 -0700
ltq-atm: propagate EPROBE_DEFER to probe
Instead of ignoring errors, let the linux infrastructure handle it.
Signed-off-by: Rosen Penev <rosenp at gmail.com>
Link: https://github.com/openwrt/openwrt/pull/16262
Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
.../lantiq/ltq-atm/src/ifxmips_atm_amazon_se.c | 4 ++-
.../kernel/lantiq/ltq-atm/src/ifxmips_atm_ar9.c | 4 ++-
.../kernel/lantiq/ltq-atm/src/ifxmips_atm_core.h | 2 +-
.../kernel/lantiq/ltq-atm/src/ifxmips_atm_danube.c | 4 ++-
.../kernel/lantiq/ltq-atm/src/ifxmips_atm_vr9.c | 34 ++++++++++------------
package/kernel/lantiq/ltq-atm/src/ltq_atm.c | 5 +++-
6 files changed, 30 insertions(+), 23 deletions(-)
diff --git a/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_amazon_se.c b/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_amazon_se.c
index 8777418dc5..0c6d9c101a 100644
--- a/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_amazon_se.c
+++ b/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_amazon_se.c
@@ -263,7 +263,7 @@ extern void ase_fw_ver(unsigned int *major, unsigned int *minor)
*minor = FW_VER_ID->minor;
}
-void ase_init(struct platform_device *pdev)
+int ase_init(struct platform_device *pdev)
{
init_pmu();
@@ -276,6 +276,8 @@ void ase_init(struct platform_device *pdev)
init_atm_tc();
clear_share_buffer();
+
+ return 0;
}
void ase_shutdown(void)
diff --git a/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_ar9.c b/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_ar9.c
index 2100aea81e..d786557682 100644
--- a/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_ar9.c
+++ b/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_ar9.c
@@ -194,13 +194,15 @@ void ar9_fw_ver(unsigned int *major, unsigned int *minor)
*minor = FW_VER_ID->minor;
}
-void ar9_init(struct platform_device *pdev)
+int ar9_init(struct platform_device *pdev)
{
init_pmu();
reset_ppe(pdev);
init_ema();
init_mailbox();
clear_share_buffer();
+
+ return 0;
}
void ar9_shutdown(void)
diff --git a/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_core.h b/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_core.h
index 20aa14445a..807b170b08 100644
--- a/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_core.h
+++ b/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_core.h
@@ -32,7 +32,7 @@
#define SET_BITS(x, msb, lsb, value) (((x) & ~(((1 << ((msb) + 1)) - 1) ^ ((1 << (lsb)) - 1))) | (((value) & ((1 << (1 + (msb) - (lsb))) - 1)) << (lsb)))
struct ltq_atm_ops {
- void (*init)(struct platform_device *pdev);
+ int (*init)(struct platform_device *pdev);
void (*shutdown)(void);
int (*start)(int pp32);
diff --git a/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_danube.c b/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_danube.c
index 8302ae743a..3ff21fa03e 100644
--- a/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_danube.c
+++ b/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_danube.c
@@ -141,7 +141,7 @@ static void danube_fw_ver(unsigned int *major, unsigned int *minor)
*minor = FW_VER_ID->minor;
}
-static void danube_init(struct platform_device *pdev)
+static int danube_init(struct platform_device *pdev)
{
volatile u32 *p = SB_RAM0_ADDR(0);
unsigned int i;
@@ -190,6 +190,8 @@ static void danube_init(struct platform_device *pdev)
for ( i = 0; i < SB_RAM0_DWLEN + SB_RAM1_DWLEN + SB_RAM2_DWLEN + SB_RAM3_DWLEN; i++ )
IFX_REG_W32(0, p++);
+
+ return 0;
}
static void danube_shutdown(void)
diff --git a/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_vr9.c b/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_vr9.c
index 85f27156b5..c6bb772e4c 100644
--- a/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_vr9.c
+++ b/package/kernel/lantiq/ltq-atm/src/ifxmips_atm_vr9.c
@@ -58,7 +58,7 @@
#define IFX_PMU_MODULE_AHBS BIT(13)
#define IFX_PMU_MODULE_DSL_DFE BIT(9)
-static inline void vr9_reset_ppe(struct platform_device *pdev)
+static inline int vr9_reset_ppe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct reset_control *dsp;
@@ -66,25 +66,16 @@ static inline void vr9_reset_ppe(struct platform_device *pdev)
struct reset_control *tc;
dsp = devm_reset_control_get(dev, "dsp");
- if (IS_ERR(dsp)) {
- if (PTR_ERR(dsp) != -EPROBE_DEFER)
- dev_err(dev, "Failed to lookup dsp reset\n");
-// return PTR_ERR(dsp);
- }
+ if (IS_ERR(dsp))
+ return dev_err_probe(dev, PTR_ERR(dsp), "Failed to lookup dsp reset");
dfe = devm_reset_control_get(dev, "dfe");
- if (IS_ERR(dfe)) {
- if (PTR_ERR(dfe) != -EPROBE_DEFER)
- dev_err(dev, "Failed to lookup dfe reset\n");
-// return PTR_ERR(dfe);
- }
+ if (IS_ERR(dfe))
+ return dev_err_probe(dev, PTR_ERR(dfe), "Failed to lookup dfe reset");
tc = devm_reset_control_get(dev, "tc");
- if (IS_ERR(tc)) {
- if (PTR_ERR(tc) != -EPROBE_DEFER)
- dev_err(dev, "Failed to lookup tc reset\n");
-// return PTR_ERR(tc);
- }
+ if (IS_ERR(tc))
+ return dev_err_probe(dev, PTR_ERR(tc), "Failed to lookup tc reset");
reset_control_assert(dsp);
udelay(1000);
@@ -96,6 +87,8 @@ static inline void vr9_reset_ppe(struct platform_device *pdev)
udelay(1000);
*PP32_SRST |= 0x000303CF;
udelay(1000);
+
+ return 0;
}
static inline int vr9_pp32_download_code(int pp32, u32 *code_src, unsigned int code_dword_len, u32 *data_src, unsigned int data_dword_len)
@@ -132,10 +125,11 @@ static void vr9_fw_ver(unsigned int *major, unsigned int *minor)
*minor = FW_VER_ID->minor;
}
-static void vr9_init(struct platform_device *pdev)
+static int vr9_init(struct platform_device *pdev)
{
volatile u32 *p;
unsigned int i;
+ int ret;
/* setup pmu */
ltq_pmu_enable(IFX_PMU_MODULE_PPE_SLL01 |
@@ -145,7 +139,9 @@ static void vr9_init(struct platform_device *pdev)
IFX_PMU_MODULE_AHBS |
IFX_PMU_MODULE_DSL_DFE);
- vr9_reset_ppe(pdev);
+ ret = vr9_reset_ppe(pdev);
+ if (ret)
+ return ret;
/* pdma init */
IFX_REG_W32(0x08, PDMA_CFG);
@@ -170,6 +166,8 @@ static void vr9_init(struct platform_device *pdev)
p = SB_RAM6_ADDR(0);
for ( i = 0; i < SB_RAM6_DWLEN; i++ )
IFX_REG_W32(0, p++);
+
+ return 0;
}
static void vr9_shutdown(void)
diff --git a/package/kernel/lantiq/ltq-atm/src/ltq_atm.c b/package/kernel/lantiq/ltq-atm/src/ltq_atm.c
index bf2a4a50ec..0cb49a59bd 100644
--- a/package/kernel/lantiq/ltq-atm/src/ltq_atm.c
+++ b/package/kernel/lantiq/ltq-atm/src/ltq_atm.c
@@ -1782,7 +1782,10 @@ static int ltq_atm_probe(struct platform_device *pdev)
goto INIT_PRIV_DATA_FAIL;
}
- ops->init(pdev);
+ ret = ops->init(pdev);
+ if (ret)
+ return ret;
+
init_rx_tables();
init_tx_tables();
More information about the lede-commits
mailing list