vexpress: Move setting master site to vexpress-config bus
There's only a single caller of vexpress_config_set_master() from vexpress-sysreg.c. Let's just make the registers needed available to vexpress-config and move all the code there. The registers needed aren't used anywhere else either. With this, we can get rid of the private API between these 2 drivers. Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Acked-by: Liviu Dudau <liviu.dudau@arm.com> Acked-by: Sudeep Holla <sudeep.holla@arm.com> Acked-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Rob Herring <robh@kernel.org>
This commit is contained in:
@@ -14,7 +14,6 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/stat.h>
|
||||
#include <linux/vexpress.h>
|
||||
|
||||
#define SYS_ID 0x000
|
||||
#define SYS_SW 0x004
|
||||
@@ -37,11 +36,6 @@
|
||||
#define SYS_CFGCTRL 0x0a4
|
||||
#define SYS_CFGSTAT 0x0a8
|
||||
|
||||
#define SYS_HBI_MASK 0xfff
|
||||
#define SYS_PROCIDx_HBI_SHIFT 0
|
||||
|
||||
#define SYS_MISC_MASTERSITE (1 << 14)
|
||||
|
||||
/* The sysreg block is just a random collection of various functions... */
|
||||
|
||||
static struct bgpio_pdata vexpress_sysreg_sys_led_pdata = {
|
||||
@@ -94,7 +88,7 @@ static struct mfd_cell vexpress_sysreg_cells[] = {
|
||||
.name = "vexpress-syscfg",
|
||||
.num_resources = 1,
|
||||
.resources = (struct resource []) {
|
||||
DEFINE_RES_MEM(SYS_CFGDATA, 0xc),
|
||||
DEFINE_RES_MEM(SYS_MISC, 0x4c),
|
||||
},
|
||||
}
|
||||
};
|
||||
@@ -104,8 +98,6 @@ static int vexpress_sysreg_probe(struct platform_device *pdev)
|
||||
struct resource *mem;
|
||||
void __iomem *base;
|
||||
struct gpio_chip *mmc_gpio_chip;
|
||||
int master;
|
||||
u32 dt_hbi;
|
||||
|
||||
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (!mem)
|
||||
@@ -115,21 +107,6 @@ static int vexpress_sysreg_probe(struct platform_device *pdev)
|
||||
if (!base)
|
||||
return -ENOMEM;
|
||||
|
||||
master = readl(base + SYS_MISC) & SYS_MISC_MASTERSITE ?
|
||||
VEXPRESS_SITE_DB2 : VEXPRESS_SITE_DB1;
|
||||
vexpress_config_set_master(master);
|
||||
|
||||
/* Confirm board type against DT property, if available */
|
||||
if (of_property_read_u32(of_root, "arm,hbi", &dt_hbi) == 0) {
|
||||
u32 id = readl(base + (master == VEXPRESS_SITE_DB1 ?
|
||||
SYS_PROCID0 : SYS_PROCID1));
|
||||
u32 hbi = (id >> SYS_PROCIDx_HBI_SHIFT) & SYS_HBI_MASK;
|
||||
|
||||
if (WARN_ON(dt_hbi != hbi))
|
||||
dev_warn(&pdev->dev, "DT HBI (%x) is not matching hardware (%x)!\n",
|
||||
dt_hbi, hbi);
|
||||
}
|
||||
|
||||
/*
|
||||
* Duplicated SYS_MCI pseudo-GPIO controller for compatibility with
|
||||
* older trees using sysreg node for MMC control lines.
|
||||
|
Reference in New Issue
Block a user