[POWERPC] mpc5200: eliminate mpc52xx_*_map_*() functions.
mpc5200 platform code defines a bunch of map functions which duplicate the functionality of of_iomap(). Remove them and use of_iomap() instead. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
@@ -42,10 +42,13 @@
|
|||||||
static void __init
|
static void __init
|
||||||
lite5200_fix_clock_config(void)
|
lite5200_fix_clock_config(void)
|
||||||
{
|
{
|
||||||
|
struct device_node *np;
|
||||||
struct mpc52xx_cdm __iomem *cdm;
|
struct mpc52xx_cdm __iomem *cdm;
|
||||||
|
|
||||||
/* Map zones */
|
/* Map zones */
|
||||||
cdm = mpc52xx_find_and_map("mpc5200-cdm");
|
np = of_find_compatible_node(NULL, NULL, "mpc5200-cdm");
|
||||||
|
cdm = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
if (!cdm) {
|
if (!cdm) {
|
||||||
printk(KERN_ERR "%s() failed; expect abnormal behaviour\n",
|
printk(KERN_ERR "%s() failed; expect abnormal behaviour\n",
|
||||||
__FUNCTION__);
|
__FUNCTION__);
|
||||||
@@ -74,10 +77,13 @@ lite5200_fix_clock_config(void)
|
|||||||
static void __init
|
static void __init
|
||||||
lite5200_fix_port_config(void)
|
lite5200_fix_port_config(void)
|
||||||
{
|
{
|
||||||
|
struct device_node *np;
|
||||||
struct mpc52xx_gpio __iomem *gpio;
|
struct mpc52xx_gpio __iomem *gpio;
|
||||||
u32 port_config;
|
u32 port_config;
|
||||||
|
|
||||||
gpio = mpc52xx_find_and_map("mpc5200-gpio");
|
np = of_find_compatible_node(NULL, NULL, "mpc5200-gpio");
|
||||||
|
gpio = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
if (!gpio) {
|
if (!gpio) {
|
||||||
printk(KERN_ERR "%s() failed. expect abnormal behavior\n",
|
printk(KERN_ERR "%s() failed. expect abnormal behavior\n",
|
||||||
__FUNCTION__);
|
__FUNCTION__);
|
||||||
|
@@ -42,6 +42,8 @@ static int lite5200_pm_set_target(suspend_state_t state)
|
|||||||
|
|
||||||
static int lite5200_pm_prepare(void)
|
static int lite5200_pm_prepare(void)
|
||||||
{
|
{
|
||||||
|
struct device_node *np;
|
||||||
|
|
||||||
/* deep sleep? let mpc52xx code handle that */
|
/* deep sleep? let mpc52xx code handle that */
|
||||||
if (lite5200_pm_target_state == PM_SUSPEND_STANDBY)
|
if (lite5200_pm_target_state == PM_SUSPEND_STANDBY)
|
||||||
return mpc52xx_pm_prepare();
|
return mpc52xx_pm_prepare();
|
||||||
@@ -50,7 +52,9 @@ static int lite5200_pm_prepare(void)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
/* map registers */
|
/* map registers */
|
||||||
mbar = mpc52xx_find_and_map("mpc5200");
|
np = of_find_compatible_node(NULL, NULL, "mpc5200");
|
||||||
|
mbar = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
if (!mbar) {
|
if (!mbar) {
|
||||||
printk(KERN_ERR "%s:%i Error mapping registers\n", __func__, __LINE__);
|
printk(KERN_ERR "%s:%i Error mapping registers\n", __func__, __LINE__);
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
|
@@ -26,45 +26,6 @@
|
|||||||
*/
|
*/
|
||||||
static volatile struct mpc52xx_gpt *mpc52xx_wdt = NULL;
|
static volatile struct mpc52xx_gpt *mpc52xx_wdt = NULL;
|
||||||
|
|
||||||
static void __iomem *
|
|
||||||
mpc52xx_map_node(struct device_node *ofn)
|
|
||||||
{
|
|
||||||
const u32 *regaddr_p;
|
|
||||||
u64 regaddr64, size64;
|
|
||||||
|
|
||||||
if (!ofn)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
regaddr_p = of_get_address(ofn, 0, &size64, NULL);
|
|
||||||
if (!regaddr_p) {
|
|
||||||
of_node_put(ofn);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
regaddr64 = of_translate_address(ofn, regaddr_p);
|
|
||||||
|
|
||||||
of_node_put(ofn);
|
|
||||||
|
|
||||||
return ioremap((u32)regaddr64, (u32)size64);
|
|
||||||
}
|
|
||||||
|
|
||||||
void __iomem *
|
|
||||||
mpc52xx_find_and_map(const char *compatible)
|
|
||||||
{
|
|
||||||
return mpc52xx_map_node(
|
|
||||||
of_find_compatible_node(NULL, NULL, compatible));
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_SYMBOL(mpc52xx_find_and_map);
|
|
||||||
|
|
||||||
void __iomem *
|
|
||||||
mpc52xx_find_and_map_path(const char *path)
|
|
||||||
{
|
|
||||||
return mpc52xx_map_node(of_find_node_by_path(path));
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_SYMBOL(mpc52xx_find_and_map_path);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mpc52xx_find_ipb_freq - Find the IPB bus frequency for a device
|
* mpc52xx_find_ipb_freq - Find the IPB bus frequency for a device
|
||||||
* @node: device node
|
* @node: device node
|
||||||
@@ -101,9 +62,12 @@ EXPORT_SYMBOL(mpc52xx_find_ipb_freq);
|
|||||||
void __init
|
void __init
|
||||||
mpc5200_setup_xlb_arbiter(void)
|
mpc5200_setup_xlb_arbiter(void)
|
||||||
{
|
{
|
||||||
|
struct device_node *np;
|
||||||
struct mpc52xx_xlb __iomem *xlb;
|
struct mpc52xx_xlb __iomem *xlb;
|
||||||
|
|
||||||
xlb = mpc52xx_find_and_map("mpc5200-xlb");
|
np = of_find_compatible_node(NULL, NULL, "mpc5200-xlb");
|
||||||
|
xlb = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
if (!xlb) {
|
if (!xlb) {
|
||||||
printk(KERN_ERR __FILE__ ": "
|
printk(KERN_ERR __FILE__ ": "
|
||||||
"Error mapping XLB in mpc52xx_setup_cpu(). "
|
"Error mapping XLB in mpc52xx_setup_cpu(). "
|
||||||
@@ -156,16 +120,19 @@ mpc52xx_map_wdt(void)
|
|||||||
for_each_compatible_node(np, NULL, "fsl,mpc5200-gpt") {
|
for_each_compatible_node(np, NULL, "fsl,mpc5200-gpt") {
|
||||||
has_wdt = of_get_property(np, "fsl,has-wdt", NULL);
|
has_wdt = of_get_property(np, "fsl,has-wdt", NULL);
|
||||||
if (has_wdt) {
|
if (has_wdt) {
|
||||||
mpc52xx_wdt = mpc52xx_map_node(np);
|
mpc52xx_wdt = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for_each_compatible_node(np, NULL, "mpc5200-gpt") {
|
for_each_compatible_node(np, NULL, "mpc5200-gpt") {
|
||||||
has_wdt = of_get_property(np, "has-wdt", NULL);
|
has_wdt = of_get_property(np, "has-wdt", NULL);
|
||||||
if (has_wdt) {
|
if (has_wdt) {
|
||||||
mpc52xx_wdt = mpc52xx_map_node(np);
|
mpc52xx_wdt = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -364,16 +364,18 @@ void __init mpc52xx_init_irq(void)
|
|||||||
{
|
{
|
||||||
u32 intr_ctrl;
|
u32 intr_ctrl;
|
||||||
struct device_node *picnode;
|
struct device_node *picnode;
|
||||||
|
struct device_node *np;
|
||||||
|
|
||||||
/* Remap the necessary zones */
|
/* Remap the necessary zones */
|
||||||
picnode = of_find_compatible_node(NULL, NULL, "mpc5200-pic");
|
picnode = of_find_compatible_node(NULL, NULL, "mpc5200-pic");
|
||||||
|
intr = of_iomap(picnode, 0);
|
||||||
intr = mpc52xx_find_and_map("mpc5200-pic");
|
|
||||||
if (!intr)
|
if (!intr)
|
||||||
panic(__FILE__ ": find_and_map failed on 'mpc5200-pic'. "
|
panic(__FILE__ ": find_and_map failed on 'mpc5200-pic'. "
|
||||||
"Check node !");
|
"Check node !");
|
||||||
|
|
||||||
sdma = mpc52xx_find_and_map("mpc5200-bestcomm");
|
np = of_find_compatible_node(NULL, NULL, "mpc5200-bestcomm");
|
||||||
|
sdma = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
if (!sdma)
|
if (!sdma)
|
||||||
panic(__FILE__ ": find_and_map failed on 'mpc5200-bestcomm'. "
|
panic(__FILE__ ": find_and_map failed on 'mpc5200-bestcomm'. "
|
||||||
"Check node !");
|
"Check node !");
|
||||||
|
@@ -59,10 +59,14 @@ int mpc52xx_set_wakeup_gpio(u8 pin, u8 level)
|
|||||||
|
|
||||||
int mpc52xx_pm_prepare(void)
|
int mpc52xx_pm_prepare(void)
|
||||||
{
|
{
|
||||||
|
struct device_node *np;
|
||||||
|
|
||||||
/* map the whole register space */
|
/* map the whole register space */
|
||||||
mbar = mpc52xx_find_and_map("mpc5200");
|
np = of_find_compatible_node(NULL, NULL, "mpc5200");
|
||||||
|
mbar = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
if (!mbar) {
|
if (!mbar) {
|
||||||
printk(KERN_ERR "%s:%i Error mapping registers\n", __func__, __LINE__);
|
pr_err("mpc52xx_pm_prepare(): could not map registers\n");
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
/* these offsets are from mpc5200 users manual */
|
/* these offsets are from mpc5200 users manual */
|
||||||
|
@@ -330,6 +330,7 @@ static void mpc52xx_psc_spi_cleanup(struct spi_device *spi)
|
|||||||
|
|
||||||
static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps)
|
static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps)
|
||||||
{
|
{
|
||||||
|
struct device_node *np;
|
||||||
struct mpc52xx_cdm __iomem *cdm;
|
struct mpc52xx_cdm __iomem *cdm;
|
||||||
struct mpc52xx_gpio __iomem *gpio;
|
struct mpc52xx_gpio __iomem *gpio;
|
||||||
struct mpc52xx_psc __iomem *psc = mps->psc;
|
struct mpc52xx_psc __iomem *psc = mps->psc;
|
||||||
@@ -338,8 +339,12 @@ static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps)
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
#if defined(CONFIG_PPC_MERGE)
|
#if defined(CONFIG_PPC_MERGE)
|
||||||
cdm = mpc52xx_find_and_map("mpc5200-cdm");
|
np = of_find_compatible_node(NULL, NULL, "mpc5200-cdm");
|
||||||
gpio = mpc52xx_find_and_map("mpc5200-gpio");
|
cdm = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
|
np = of_find_compatible_node(NULL, NULL, "mpc5200-gpio");
|
||||||
|
gpio = of_iomap(np, 0);
|
||||||
|
of_node_put(np);
|
||||||
#else
|
#else
|
||||||
cdm = ioremap(MPC52xx_PA(MPC52xx_CDM_OFFSET), MPC52xx_CDM_SIZE);
|
cdm = ioremap(MPC52xx_PA(MPC52xx_CDM_OFFSET), MPC52xx_CDM_SIZE);
|
||||||
gpio = ioremap(MPC52xx_PA(MPC52xx_GPIO_OFFSET), MPC52xx_GPIO_SIZE);
|
gpio = ioremap(MPC52xx_PA(MPC52xx_GPIO_OFFSET), MPC52xx_GPIO_SIZE);
|
||||||
|
@@ -248,8 +248,6 @@ struct mpc52xx_cdm {
|
|||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
extern void __iomem * mpc52xx_find_and_map(const char *);
|
|
||||||
extern void __iomem * mpc52xx_find_and_map_path(const char *path);
|
|
||||||
extern unsigned int mpc52xx_find_ipb_freq(struct device_node *node);
|
extern unsigned int mpc52xx_find_ipb_freq(struct device_node *node);
|
||||||
extern void mpc5200_setup_xlb_arbiter(void);
|
extern void mpc5200_setup_xlb_arbiter(void);
|
||||||
extern void mpc52xx_declare_of_platform_devices(void);
|
extern void mpc52xx_declare_of_platform_devices(void);
|
||||||
|
Reference in New Issue
Block a user