|
@@ -11,7 +11,6 @@
|
|
|
* (at your option) any later version.
|
|
|
*/
|
|
|
#include <linux/init.h>
|
|
|
-#include <linux/platform_data/syscon.h>
|
|
|
#include <linux/platform_device.h>
|
|
|
#include <linux/dma-contiguous.h>
|
|
|
#include <linux/serial_8250.h>
|
|
@@ -1118,29 +1117,33 @@ int __init da850_register_sata(unsigned long refclkpn)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
-static struct syscon_platform_data da8xx_cfgchip_platform_data = {
|
|
|
- .label = "cfgchip",
|
|
|
-};
|
|
|
+static struct regmap *da8xx_cfgchip;
|
|
|
|
|
|
-static struct resource da8xx_cfgchip_resources[] = {
|
|
|
- {
|
|
|
- .start = DA8XX_SYSCFG0_BASE + DA8XX_CFGCHIP0_REG,
|
|
|
- .end = DA8XX_SYSCFG0_BASE + DA8XX_CFGCHIP4_REG + 3,
|
|
|
- .flags = IORESOURCE_MEM,
|
|
|
- },
|
|
|
-};
|
|
|
+/* regmap doesn't make a copy of this, so we need to keep the pointer around */
|
|
|
+static const char da8xx_cfgchip_name[] = "cfgchip";
|
|
|
|
|
|
-static struct platform_device da8xx_cfgchip_device = {
|
|
|
- .name = "syscon",
|
|
|
- .id = -1,
|
|
|
- .dev = {
|
|
|
- .platform_data = &da8xx_cfgchip_platform_data,
|
|
|
- },
|
|
|
- .num_resources = ARRAY_SIZE(da8xx_cfgchip_resources),
|
|
|
- .resource = da8xx_cfgchip_resources,
|
|
|
+static const struct regmap_config da8xx_cfgchip_config __initconst = {
|
|
|
+ .name = da8xx_cfgchip_name,
|
|
|
+ .reg_bits = 32,
|
|
|
+ .val_bits = 32,
|
|
|
+ .reg_stride = 4,
|
|
|
+ .max_register = DA8XX_CFGCHIP4_REG - DA8XX_CFGCHIP0_REG,
|
|
|
};
|
|
|
|
|
|
-int __init da8xx_register_cfgchip(void)
|
|
|
+/**
|
|
|
+ * da8xx_get_cfgchip - Lazy gets CFGCHIP as regmap
|
|
|
+ *
|
|
|
+ * This is for use on non-DT boards only. For DT boards, use
|
|
|
+ * syscon_regmap_lookup_by_compatible("ti,da830-cfgchip")
|
|
|
+ *
|
|
|
+ * Returns: Pointer to the CFGCHIP regmap or negative error code.
|
|
|
+ */
|
|
|
+struct regmap * __init da8xx_get_cfgchip(void)
|
|
|
{
|
|
|
- return platform_device_register(&da8xx_cfgchip_device);
|
|
|
+ if (IS_ERR_OR_NULL(da8xx_cfgchip))
|
|
|
+ da8xx_cfgchip = regmap_init_mmio(NULL,
|
|
|
+ DA8XX_SYSCFG0_VIRT(DA8XX_CFGCHIP0_REG),
|
|
|
+ &da8xx_cfgchip_config);
|
|
|
+
|
|
|
+ return da8xx_cfgchip;
|
|
|
}
|