mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
pinctrl: stm32: add firewall checks before probing the HDP driver
Because the HDP peripheral both depends on debug and firewall configuration, when CONFIG_STM32_FIREWALL is present, use the stm32 firewall framework to be able to check these configuration against the relevant controllers. Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com> Reviewed-by: Clément Le Goffic <legoffic.clement@gmail.com> Reviewed-by: Linus Walleij <linusw@kernel.org> Link: https://lore.kernel.org/r/20260226-debug_bus-v6-12-5d794697798d@foss.st.com Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
This commit is contained in:
committed by
Alexandre Torgue
parent
f1939c6a0b
commit
348741a97c
@@ -4,6 +4,7 @@
|
||||
* Author: Clément Le Goffic <clement.legoffic@foss.st.com> for STMicroelectronics.
|
||||
*/
|
||||
#include <linux/bits.h>
|
||||
#include <linux/bus/stm32_firewall_device.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/gpio/driver.h>
|
||||
#include <linux/gpio/generic.h>
|
||||
@@ -46,9 +47,11 @@ struct stm32_hdp {
|
||||
void __iomem *base;
|
||||
struct clk *clk;
|
||||
struct pinctrl_dev *pctl_dev;
|
||||
struct stm32_firewall *firewall;
|
||||
struct gpio_generic_chip gpio_chip;
|
||||
u32 mux_conf;
|
||||
u32 gposet_conf;
|
||||
int nb_firewall_entries;
|
||||
const char * const *func_name;
|
||||
};
|
||||
|
||||
@@ -615,6 +618,13 @@ static int stm32_hdp_probe(struct platform_device *pdev)
|
||||
return -ENOMEM;
|
||||
hdp->dev = dev;
|
||||
|
||||
if (IS_ENABLED(CONFIG_STM32_FIREWALL)) {
|
||||
err = stm32_firewall_get_grant_all_access(dev, &hdp->firewall,
|
||||
&hdp->nb_firewall_entries);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, hdp);
|
||||
|
||||
hdp->base = devm_platform_ioremap_resource(pdev, 0);
|
||||
@@ -670,8 +680,12 @@ static int stm32_hdp_probe(struct platform_device *pdev)
|
||||
static void stm32_hdp_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct stm32_hdp *hdp = platform_get_drvdata(pdev);
|
||||
int i;
|
||||
|
||||
writel_relaxed(HDP_CTRL_DISABLE, hdp->base + HDP_CTRL);
|
||||
|
||||
for (i = 0; i < hdp->nb_firewall_entries; i++)
|
||||
stm32_firewall_release_access(&hdp->firewall[i]);
|
||||
}
|
||||
|
||||
static int stm32_hdp_suspend(struct device *dev)
|
||||
|
||||
Reference in New Issue
Block a user