Commit a6a1747a authored by Stefan Wahren's avatar Stefan Wahren Committed by Lee Jones

soc: bcm: bcm2835-power: Resolve ASB register macros

The macros in order to access the ASB registers have a hard coded base
address. So extending them for other platforms would make them harder
to read. As a solution resolve these macros.
Signed-off-by: default avatarStefan Wahren <stefan.wahren@i2se.com>
Reviewed-by: default avatarPeter Robinson <pbrobinson@gmail.com>
Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
Link: https://lore.kernel.org/r/20220625113619.15944-10-stefan.wahren@i2se.com
parent c494a447
...@@ -126,9 +126,6 @@ ...@@ -126,9 +126,6 @@
#define ASB_AXI_BRDG_ID 0x20 #define ASB_AXI_BRDG_ID 0x20
#define ASB_READ(reg) readl(power->asb + (reg))
#define ASB_WRITE(reg, val) writel(PM_PASSWORD | (val), power->asb + (reg))
struct bcm2835_power_domain { struct bcm2835_power_domain {
struct generic_pm_domain base; struct generic_pm_domain base;
struct bcm2835_power *power; struct bcm2835_power *power;
...@@ -150,7 +147,9 @@ struct bcm2835_power { ...@@ -150,7 +147,9 @@ struct bcm2835_power {
static int bcm2835_asb_control(struct bcm2835_power *power, u32 reg, bool enable) static int bcm2835_asb_control(struct bcm2835_power *power, u32 reg, bool enable)
{ {
void __iomem *base = power->asb;
u64 start; u64 start;
u32 val;
if (!reg) if (!reg)
return 0; return 0;
...@@ -159,12 +158,13 @@ static int bcm2835_asb_control(struct bcm2835_power *power, u32 reg, bool enable ...@@ -159,12 +158,13 @@ static int bcm2835_asb_control(struct bcm2835_power *power, u32 reg, bool enable
/* Enable the module's async AXI bridges. */ /* Enable the module's async AXI bridges. */
if (enable) { if (enable) {
ASB_WRITE(reg, ASB_READ(reg) & ~ASB_REQ_STOP); val = readl(base + reg) & ~ASB_REQ_STOP;
} else { } else {
ASB_WRITE(reg, ASB_READ(reg) | ASB_REQ_STOP); val = readl(base + reg) | ASB_REQ_STOP;
} }
writel(PM_PASSWORD | val, base + reg);
while (ASB_READ(reg) & ASB_ACK) { while (readl(base + reg) & ASB_ACK) {
cpu_relax(); cpu_relax();
if (ktime_get_ns() - start >= 1000) if (ktime_get_ns() - start >= 1000)
return -ETIMEDOUT; return -ETIMEDOUT;
...@@ -622,7 +622,7 @@ static int bcm2835_power_probe(struct platform_device *pdev) ...@@ -622,7 +622,7 @@ static int bcm2835_power_probe(struct platform_device *pdev)
power->base = pm->base; power->base = pm->base;
power->asb = pm->asb; power->asb = pm->asb;
id = ASB_READ(ASB_AXI_BRDG_ID); id = readl(power->asb + ASB_AXI_BRDG_ID);
if (id != 0x62726467 /* "BRDG" */) { if (id != 0x62726467 /* "BRDG" */) {
dev_err(dev, "ASB register ID returned 0x%08x\n", id); dev_err(dev, "ASB register ID returned 0x%08x\n", id);
return -ENODEV; return -ENODEV;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment