Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 81424
b: refs/heads/master
c: 4fb4c55
h: refs/heads/master
v: v3
  • Loading branch information
Grant Likely committed Jan 26, 2008
1 parent 0bdd768 commit b49ee1c
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 76 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c8004a28186110657aa3e75135a6b96ebfa3e8f0
refs/heads/master: 4fb4c5582475452d3bf7c5072ef2d15ee06f7723
77 changes: 2 additions & 75 deletions trunk/drivers/spi/mpc52xx_psc_spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -330,80 +330,13 @@ 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)
{
struct device_node *np;
struct mpc52xx_cdm __iomem *cdm;
struct mpc52xx_gpio __iomem *gpio;
struct mpc52xx_psc __iomem *psc = mps->psc;
u32 ul;
u32 mclken_div;
int ret = 0;

#if defined(CONFIG_PPC_MERGE)
np = of_find_compatible_node(NULL, NULL, "mpc5200-cdm");
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
cdm = ioremap(MPC52xx_PA(MPC52xx_CDM_OFFSET), MPC52xx_CDM_SIZE);
gpio = ioremap(MPC52xx_PA(MPC52xx_GPIO_OFFSET), MPC52xx_GPIO_SIZE);
#endif
if (!cdm || !gpio) {
printk(KERN_ERR "Error mapping CDM/GPIO\n");
ret = -EFAULT;
goto unmap_regs;
}

/* default sysclk is 512MHz */
mclken_div = 0x8000 |
(((mps->sysclk ? mps->sysclk : 512000000) / MCLK) & 0x1FF);

switch (psc_id) {
case 1:
ul = in_be32(&gpio->port_config);
ul &= 0xFFFFFFF8;
ul |= 0x00000006;
out_be32(&gpio->port_config, ul);
out_be16(&cdm->mclken_div_psc1, mclken_div);
ul = in_be32(&cdm->clk_enables);
ul |= 0x00000020;
out_be32(&cdm->clk_enables, ul);
break;
case 2:
ul = in_be32(&gpio->port_config);
ul &= 0xFFFFFF8F;
ul |= 0x00000060;
out_be32(&gpio->port_config, ul);
out_be16(&cdm->mclken_div_psc2, mclken_div);
ul = in_be32(&cdm->clk_enables);
ul |= 0x00000040;
out_be32(&cdm->clk_enables, ul);
break;
case 3:
ul = in_be32(&gpio->port_config);
ul &= 0xFFFFF0FF;
ul |= 0x00000600;
out_be32(&gpio->port_config, ul);
out_be16(&cdm->mclken_div_psc3, mclken_div);
ul = in_be32(&cdm->clk_enables);
ul |= 0x00000080;
out_be32(&cdm->clk_enables, ul);
break;
case 6:
ul = in_be32(&gpio->port_config);
ul &= 0xFF8FFFFF;
ul |= 0x00700000;
out_be32(&gpio->port_config, ul);
out_be16(&cdm->mclken_div_psc6, mclken_div);
ul = in_be32(&cdm->clk_enables);
ul |= 0x00000010;
out_be32(&cdm->clk_enables, ul);
break;
default:
ret = -EINVAL;
goto unmap_regs;
}
mclken_div = (mps->sysclk ? mps->sysclk : 512000000) / MCLK;
mpc52xx_set_psc_clkdiv(psc_id, mclken_div);

/* Reset the PSC into a known state */
out_8(&psc->command, MPC52xx_PSC_RST_RX);
Expand All @@ -427,12 +360,6 @@ static int mpc52xx_psc_spi_port_config(int psc_id, struct mpc52xx_psc_spi *mps)

mps->bits_per_word = 8;

unmap_regs:
if (cdm)
iounmap(cdm);
if (gpio)
iounmap(gpio);

return ret;
}

Expand Down

0 comments on commit b49ee1c

Please sign in to comment.