Commit 2c86c83b authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/home/rmk/linux-2.6-arm

parents cffc7b38 d1856637
...@@ -67,7 +67,7 @@ static void impd1_setvco(struct clk *clk, struct icst525_vco vco) ...@@ -67,7 +67,7 @@ static void impd1_setvco(struct clk *clk, struct icst525_vco vco)
} }
writel(0, impd1->base + IMPD1_LOCK); writel(0, impd1->base + IMPD1_LOCK);
#if DEBUG #ifdef DEBUG
vco.v = val & 0x1ff; vco.v = val & 0x1ff;
vco.r = (val >> 9) & 0x7f; vco.r = (val >> 9) & 0x7f;
vco.s = (val >> 16) & 7; vco.s = (val >> 16) & 7;
...@@ -427,17 +427,18 @@ static int impd1_probe(struct lm_device *dev) ...@@ -427,17 +427,18 @@ static int impd1_probe(struct lm_device *dev)
return ret; return ret;
} }
static int impd1_remove_one(struct device *dev, void *data)
{
device_unregister(dev);
return 0;
}
static void impd1_remove(struct lm_device *dev) static void impd1_remove(struct lm_device *dev)
{ {
struct impd1_module *impd1 = lm_get_drvdata(dev); struct impd1_module *impd1 = lm_get_drvdata(dev);
struct list_head *l, *n;
int i; int i;
list_for_each_safe(l, n, &dev->dev.children) { device_for_each_child(&dev->dev, NULL, impd1_remove_one);
struct device *d = list_to_dev(l);
device_unregister(d);
}
for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++) for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++)
clk_unregister(&impd1->vcos[i]); clk_unregister(&impd1->vcos[i]);
......
...@@ -250,6 +250,25 @@ void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info) ...@@ -250,6 +250,25 @@ void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info)
i2c_device.dev.platform_data = info; i2c_device.dev.platform_data = info;
} }
static struct resource i2s_resources[] = {
{
.start = 0x40400000,
.end = 0x40400083,
.flags = IORESOURCE_MEM,
}, {
.start = IRQ_I2S,
.end = IRQ_I2S,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device i2s_device = {
.name = "pxa2xx-i2s",
.id = -1,
.resource = i2c_resources,
.num_resources = ARRAY_SIZE(i2s_resources),
};
static struct platform_device *devices[] __initdata = { static struct platform_device *devices[] __initdata = {
&pxamci_device, &pxamci_device,
&udc_device, &udc_device,
...@@ -258,6 +277,7 @@ static struct platform_device *devices[] __initdata = { ...@@ -258,6 +277,7 @@ static struct platform_device *devices[] __initdata = {
&btuart_device, &btuart_device,
&stuart_device, &stuart_device,
&i2c_device, &i2c_device,
&i2s_device,
}; };
static int __init pxa_init(void) static int __init pxa_init(void)
......
...@@ -307,9 +307,9 @@ static void bast_nand_select(struct s3c2410_nand_set *set, int slot) ...@@ -307,9 +307,9 @@ static void bast_nand_select(struct s3c2410_nand_set *set, int slot)
} }
static struct s3c2410_platform_nand bast_nand_info = { static struct s3c2410_platform_nand bast_nand_info = {
.tacls = 40, .tacls = 30,
.twrph0 = 80, .twrph0 = 60,
.twrph1 = 80, .twrph1 = 60,
.nr_sets = ARRAY_SIZE(bast_nand_sets), .nr_sets = ARRAY_SIZE(bast_nand_sets),
.sets = bast_nand_sets, .sets = bast_nand_sets,
.select_chip = bast_nand_select, .select_chip = bast_nand_select,
......
...@@ -18,7 +18,9 @@ ...@@ -18,7 +18,9 @@
* 10-Feb-2005 Ben Dooks Fixed CAMDIVN address (Guillaume Gourat) * 10-Feb-2005 Ben Dooks Fixed CAMDIVN address (Guillaume Gourat)
* 10-Mar-2005 Lucas Villa Real Changed S3C2410_VA to S3C24XX_VA * 10-Mar-2005 Lucas Villa Real Changed S3C2410_VA to S3C24XX_VA
* 27-Aug-2005 Ben Dooks Add clock-slow info * 27-Aug-2005 Ben Dooks Add clock-slow info
*/ * 20-Oct-2005 Ben Dooks Fixed overflow in PLL (Guillaume Gourat)
* 20-Oct-2005 Ben Dooks Add masks for DCLK (Guillaume Gourat)
*/
#ifndef __ASM_ARM_REGS_CLOCK #ifndef __ASM_ARM_REGS_CLOCK
#define __ASM_ARM_REGS_CLOCK "$Id: clock.h,v 1.4 2003/04/30 14:50:51 ben Exp $" #define __ASM_ARM_REGS_CLOCK "$Id: clock.h,v 1.4 2003/04/30 14:50:51 ben Exp $"
...@@ -66,11 +68,16 @@ ...@@ -66,11 +68,16 @@
#define S3C2410_DCLKCON_DCLK0_UCLK (1<<1) #define S3C2410_DCLKCON_DCLK0_UCLK (1<<1)
#define S3C2410_DCLKCON_DCLK0_DIV(x) (((x) - 1 )<<4) #define S3C2410_DCLKCON_DCLK0_DIV(x) (((x) - 1 )<<4)
#define S3C2410_DCLKCON_DCLK0_CMP(x) (((x) - 1 )<<8) #define S3C2410_DCLKCON_DCLK0_CMP(x) (((x) - 1 )<<8)
#define S3C2410_DCLKCON_DCLK0_DIV_MASK ((0xf)<<4)
#define S3C2410_DCLKCON_DCLK0_CMP_MASK ((0xf)<<8)
#define S3C2410_DCLKCON_DCLK1EN (1<<16) #define S3C2410_DCLKCON_DCLK1EN (1<<16)
#define S3C2410_DCLKCON_DCLK1_PCLK (0<<17) #define S3C2410_DCLKCON_DCLK1_PCLK (0<<17)
#define S3C2410_DCLKCON_DCLK1_UCLK (1<<17) #define S3C2410_DCLKCON_DCLK1_UCLK (1<<17)
#define S3C2410_DCLKCON_DCLK1_DIV(x) (((x) - 1) <<20) #define S3C2410_DCLKCON_DCLK1_DIV(x) (((x) - 1) <<20)
#define S3C2410_DCLKCON_DCLK1_CMP(x) (((x) - 1) <<24)
#define S3C2410_DCLKCON_DCLK1_DIV_MASK ((0xf) <<20)
#define S3C2410_DCLKCON_DCLK1_CMP_MASK ((0xf) <<24)
#define S3C2410_CLKDIVN_PDIVN (1<<0) #define S3C2410_CLKDIVN_PDIVN (1<<0)
#define S3C2410_CLKDIVN_HDIVN (1<<1) #define S3C2410_CLKDIVN_HDIVN (1<<1)
...@@ -83,10 +90,13 @@ ...@@ -83,10 +90,13 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <asm/div64.h>
static inline unsigned int static inline unsigned int
s3c2410_get_pll(int pllval, int baseclk) s3c2410_get_pll(unsigned int pllval, unsigned int baseclk)
{ {
int mdiv, pdiv, sdiv; unsigned int mdiv, pdiv, sdiv;
uint64_t fvco;
mdiv = pllval >> S3C2410_PLLCON_MDIVSHIFT; mdiv = pllval >> S3C2410_PLLCON_MDIVSHIFT;
pdiv = pllval >> S3C2410_PLLCON_PDIVSHIFT; pdiv = pllval >> S3C2410_PLLCON_PDIVSHIFT;
...@@ -96,7 +106,10 @@ s3c2410_get_pll(int pllval, int baseclk) ...@@ -96,7 +106,10 @@ s3c2410_get_pll(int pllval, int baseclk)
pdiv &= S3C2410_PLLCON_PDIVMASK; pdiv &= S3C2410_PLLCON_PDIVMASK;
sdiv &= S3C2410_PLLCON_SDIVMASK; sdiv &= S3C2410_PLLCON_SDIVMASK;
return (baseclk * (mdiv + 8)) / ((pdiv + 2) << sdiv); fvco = (uint64_t)baseclk * (mdiv + 8);
do_div(fvco, (pdiv + 2) << sdiv);
return (unsigned int)fvco;
} }
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
......
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