Skip to content

Commit

Permalink
soc: mediatek: mtk-svs: delete superfluous platform data entries
Browse files Browse the repository at this point in the history
The platform name and efuse parsing function pointer are only used while
probing the device. Use them from the svs_platform_data struct instead.

Reviewed-by: AngeloGioacchino Del Regno <[email protected]>
Signed-off-by: Roger Lu <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Matthias Brugger <[email protected]>
  • Loading branch information
mbgg committed Jan 31, 2023
1 parent 5343e9f commit 01c9a8b
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions drivers/soc/mediatek/mtk-svs.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,14 +313,12 @@ static const u32 svs_regs_v2[] = {

/**
* struct svs_platform - svs platform control
* @name: svs platform name
* @base: svs platform register base
* @dev: svs platform device
* @main_clk: main clock for svs bank
* @pbank: svs bank pointer needing to be protected by spin_lock section
* @banks: svs banks that svs platform supports
* @rst: svs platform reset control
* @efuse_parsing: svs platform efuse parsing function pointer
* @efuse_max: total number of svs efuse
* @tefuse_max: total number of thermal efuse
* @regs: svs platform registers map
Expand All @@ -329,14 +327,12 @@ static const u32 svs_regs_v2[] = {
* @tefuse: thermal efuse data received from NVMEM framework
*/
struct svs_platform {
char *name;
void __iomem *base;
struct device *dev;
struct clk *main_clk;
struct svs_bank *pbank;
struct svs_bank *banks;
struct reset_control *rst;
bool (*efuse_parsing)(struct svs_platform *svsp);
size_t efuse_max;
size_t tefuse_max;
const u32 *regs;
Expand Down Expand Up @@ -2037,7 +2033,7 @@ static bool svs_is_efuse_data_correct(struct svs_platform *svsp)
svsp->efuse_max /= sizeof(u32);
nvmem_cell_put(cell);

return svsp->efuse_parsing(svsp);
return true;
}

static struct device *svs_get_subsys_device(struct svs_platform *svsp,
Expand Down Expand Up @@ -2366,9 +2362,7 @@ static int svs_probe(struct platform_device *pdev)
return -ENOMEM;

svsp->dev = &pdev->dev;
svsp->name = svsp_data->name;
svsp->banks = svsp_data->banks;
svsp->efuse_parsing = svsp_data->efuse_parsing;
svsp->regs = svsp_data->regs;
svsp->bank_max = svsp_data->bank_max;

Expand All @@ -2379,6 +2373,12 @@ static int svs_probe(struct platform_device *pdev)
if (!svs_is_efuse_data_correct(svsp)) {
dev_notice(svsp->dev, "efuse data isn't correct\n");
ret = -EPERM;
goto svs_probe_free_efuse;
}

if (!svsp_data->efuse_parsing(svsp)) {
dev_err(svsp->dev, "efuse data parsing failed\n");
ret = -EPERM;
goto svs_probe_free_resource;
}

Expand Down Expand Up @@ -2416,7 +2416,7 @@ static int svs_probe(struct platform_device *pdev)
}

ret = devm_request_threaded_irq(svsp->dev, svsp_irq, NULL, svs_isr,
IRQF_ONESHOT, svsp->name, svsp);
IRQF_ONESHOT, svsp_data->name, svsp);
if (ret) {
dev_err(svsp->dev, "register irq(%d) failed: %d\n",
svsp_irq, ret);
Expand Down Expand Up @@ -2446,11 +2446,13 @@ static int svs_probe(struct platform_device *pdev)
clk_disable_unprepare(svsp->main_clk);

svs_probe_free_resource:
if (!IS_ERR_OR_NULL(svsp->efuse))
kfree(svsp->efuse);
if (!IS_ERR_OR_NULL(svsp->tefuse))
kfree(svsp->tefuse);

svs_probe_free_efuse:
if (!IS_ERR_OR_NULL(svsp->efuse))
kfree(svsp->efuse);

return ret;
}

Expand Down

0 comments on commit 01c9a8b

Please sign in to comment.