mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2024-11-08 07:49:21 +01:00
ltq-ptm: propagate reset errors to probe
Instead of avoiding returning, propagate error so that the kernel infrastructure can handle it. Signed-off-by: Rosen Penev <rosenp@gmail.com> Link: https://github.com/openwrt/openwrt/pull/16262 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
42a763ef04
commit
4b7e7046ba
@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
include $(INCLUDE_DIR)/kernel.mk
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
PKG_NAME:=ltq-ptm
|
PKG_NAME:=ltq-ptm
|
||||||
PKG_RELEASE:=3
|
PKG_RELEASE:=4
|
||||||
|
|
||||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||||
PKG_LICENSE:=GPL-2.0+
|
PKG_LICENSE:=GPL-2.0+
|
||||||
|
@ -993,7 +993,9 @@ static int ltq_ptm_probe(struct platform_device *pdev)
|
|||||||
goto INIT_PRIV_DATA_FAIL;
|
goto INIT_PRIV_DATA_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ifx_ptm_init_chip(pdev);
|
ret = ifx_ptm_init_chip(pdev);
|
||||||
|
if (ret)
|
||||||
|
goto INIT_PRIV_DATA_FAIL;
|
||||||
ret = init_tables();
|
ret = init_tables();
|
||||||
if ( ret != 0 ) {
|
if ( ret != 0 ) {
|
||||||
err("INIT_TABLES_FAIL");
|
err("INIT_TABLES_FAIL");
|
||||||
|
@ -112,7 +112,7 @@ extern unsigned int ifx_ptm_dbg_enable;
|
|||||||
|
|
||||||
extern void ifx_ptm_get_fw_ver(unsigned int *major, unsigned int *mid, unsigned int *minor);
|
extern void ifx_ptm_get_fw_ver(unsigned int *major, unsigned int *mid, unsigned int *minor);
|
||||||
|
|
||||||
extern void ifx_ptm_init_chip(struct platform_device *pdev);
|
extern int ifx_ptm_init_chip(struct platform_device *pdev);
|
||||||
extern void ifx_ptm_uninit_chip(void);
|
extern void ifx_ptm_uninit_chip(void);
|
||||||
|
|
||||||
extern int ifx_pp32_start(int pp32);
|
extern int ifx_pp32_start(int pp32);
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
|
|
||||||
static inline void init_pmu(void);
|
static inline void init_pmu(void);
|
||||||
static inline void uninit_pmu(void);
|
static inline void uninit_pmu(void);
|
||||||
static inline void reset_ppe(struct platform_device *pdev);
|
static inline int reset_ppe(struct platform_device *pdev);
|
||||||
static inline void init_pdma(void);
|
static inline void init_pdma(void);
|
||||||
static inline void init_mailbox(void);
|
static inline void init_mailbox(void);
|
||||||
static inline void init_atm_tc(void);
|
static inline void init_atm_tc(void);
|
||||||
@ -82,7 +82,7 @@ static inline void uninit_pmu(void)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void reset_ppe(struct platform_device *pdev)
|
static inline int reset_ppe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
struct reset_control *dsp;
|
struct reset_control *dsp;
|
||||||
@ -90,25 +90,16 @@ static inline void reset_ppe(struct platform_device *pdev)
|
|||||||
struct reset_control *tc;
|
struct reset_control *tc;
|
||||||
|
|
||||||
dsp = devm_reset_control_get(dev, "dsp");
|
dsp = devm_reset_control_get(dev, "dsp");
|
||||||
if (IS_ERR(dsp)) {
|
if (IS_ERR(dsp))
|
||||||
if (PTR_ERR(dsp) != -EPROBE_DEFER)
|
return dev_err_probe(dev, PTR_ERR(dsp), "Failed to lookup dsp reset");
|
||||||
dev_err(dev, "Failed to lookup dsp reset\n");
|
|
||||||
// return PTR_ERR(dsp);
|
|
||||||
}
|
|
||||||
|
|
||||||
dfe = devm_reset_control_get(dev, "dfe");
|
dfe = devm_reset_control_get(dev, "dfe");
|
||||||
if (IS_ERR(dfe)) {
|
if (IS_ERR(dfe))
|
||||||
if (PTR_ERR(dfe) != -EPROBE_DEFER)
|
return dev_err_probe(dev, PTR_ERR(dfe), "Failed to lookup dfe reset");
|
||||||
dev_err(dev, "Failed to lookup dfe reset\n");
|
|
||||||
// return PTR_ERR(dfe);
|
|
||||||
}
|
|
||||||
|
|
||||||
tc = devm_reset_control_get(dev, "tc");
|
tc = devm_reset_control_get(dev, "tc");
|
||||||
if (IS_ERR(tc)) {
|
if (IS_ERR(tc))
|
||||||
if (PTR_ERR(tc) != -EPROBE_DEFER)
|
return dev_err_probe(dev, PTR_ERR(tc), "Failed to lookup tc reset");
|
||||||
dev_err(dev, "Failed to lookup tc reset\n");
|
|
||||||
// return PTR_ERR(tc);
|
|
||||||
}
|
|
||||||
|
|
||||||
reset_control_assert(dsp);
|
reset_control_assert(dsp);
|
||||||
udelay(1000);
|
udelay(1000);
|
||||||
@ -120,6 +111,8 @@ static inline void reset_ppe(struct platform_device *pdev)
|
|||||||
udelay(1000);
|
udelay(1000);
|
||||||
*PP32_SRST |= 0x000303CF;
|
*PP32_SRST |= 0x000303CF;
|
||||||
udelay(1000);
|
udelay(1000);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void init_pdma(void)
|
static inline void init_pdma(void)
|
||||||
@ -263,11 +256,15 @@ void ifx_ptm_get_fw_ver(unsigned int *major, unsigned int *mid, unsigned int *mi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ifx_ptm_init_chip(struct platform_device *pdev)
|
int ifx_ptm_init_chip(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
|
int r;
|
||||||
|
|
||||||
init_pmu();
|
init_pmu();
|
||||||
|
|
||||||
reset_ppe(pdev);
|
r = reset_ppe(pdev);
|
||||||
|
if (r)
|
||||||
|
return r;
|
||||||
|
|
||||||
init_pdma();
|
init_pdma();
|
||||||
|
|
||||||
@ -276,6 +273,8 @@ void ifx_ptm_init_chip(struct platform_device *pdev)
|
|||||||
init_atm_tc();
|
init_atm_tc();
|
||||||
|
|
||||||
clear_share_buffer();
|
clear_share_buffer();
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ifx_ptm_uninit_chip(void)
|
void ifx_ptm_uninit_chip(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user