diff --git a/drivers/soc/hisilicon/sysctl/sysctl_drv.c b/drivers/soc/hisilicon/sysctl/sysctl_drv.c index 8bb6a9fa20e25028e007ae420b5db21fae3c9759..660d15a092ca87059a6961de72ff65dd8c2420b2 100644 --- a/drivers/soc/hisilicon/sysctl/sysctl_drv.c +++ b/drivers/soc/hisilicon/sysctl/sysctl_drv.c @@ -48,7 +48,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #define DEBUG -#define SYSCTL_DRIVER_VERSION "1.9.32.0" +#define SYSCTL_DRIVER_VERSION "1.9.38.0" unsigned int g_sysctrl_debug; diff --git a/drivers/soc/hisilicon/sysctl/sysctl_local_ras.c b/drivers/soc/hisilicon/sysctl/sysctl_local_ras.c index d09ab42492737357e379ee1b8ac1568772f81fdd..0ad5756768368dc77e7961a41061b6e82054861d 100644 --- a/drivers/soc/hisilicon/sysctl/sysctl_local_ras.c +++ b/drivers/soc/hisilicon/sysctl/sysctl_local_ras.c @@ -90,6 +90,9 @@ static int sysctl_tdh_reset(u8 chip_id) return SYSCTL_ERR_PARAM; } + if (!sysctl_subctrl_tdh_priv[chip_id]) + return SYSCTL_ERR_PARAM; + addr = sysctl_subctrl_tdh_priv[chip_id] + SUBCTRL_TDH_RESET_OFFSET; writel(0x3, addr); @@ -105,6 +108,9 @@ static int sysctl_tdh_unreset(u8 chip_id) return SYSCTL_ERR_PARAM; } + if (!sysctl_subctrl_tdh_priv[chip_id]) + return SYSCTL_ERR_PARAM; + addr = sysctl_subctrl_tdh_priv[chip_id] + SUBCTRL_TDH_UNRESET_OFFSET; writel(0x3, addr); @@ -115,6 +121,11 @@ static int sysctl_tdh_mem_access_open(u8 chip_id) { void __iomem *addr; + if (chip_id >= CHIP_ID_NUM_MAX) { + pr_err("err chip id %u %s\n", chip_id, __func__); + return SYSCTL_ERR_PARAM; + } + if (!sysctl_tdh_priv[chip_id]) return SYSCTL_ERR_PARAM;