Commit 74fac66e authored by Russell King's avatar Russell King Committed by Russell King

Merge branch 's3c-fixes' of git://aeryn.fluff.org.uk/bjdooks/linux

parents ef449e6d 1264fa6f
...@@ -129,7 +129,7 @@ static struct s3c_fb_platdata smdk6410_lcd_pdata __initdata = { ...@@ -129,7 +129,7 @@ static struct s3c_fb_platdata smdk6410_lcd_pdata __initdata = {
.vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC, .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
}; };
struct map_desc smdk6410_iodesc[] = {}; static struct map_desc smdk6410_iodesc[] = {};
static struct platform_device *smdk6410_devices[] __initdata = { static struct platform_device *smdk6410_devices[] __initdata = {
#ifdef CONFIG_SMDK6410_SD_CH0 #ifdef CONFIG_SMDK6410_SD_CH0
...@@ -146,7 +146,7 @@ static struct platform_device *smdk6410_devices[] __initdata = { ...@@ -146,7 +146,7 @@ static struct platform_device *smdk6410_devices[] __initdata = {
static struct i2c_board_info i2c_devs0[] __initdata = { static struct i2c_board_info i2c_devs0[] __initdata = {
{ I2C_BOARD_INFO("24c08", 0x50), }, { I2C_BOARD_INFO("24c08", 0x50), },
{ I2C_BOARD_INFO("WM8580", 0X1b), }, { I2C_BOARD_INFO("wm8580", 0x1b), },
}; };
static struct i2c_board_info i2c_devs1[] __initdata = { static struct i2c_board_info i2c_devs1[] __initdata = {
......
...@@ -248,7 +248,7 @@ static struct clk *clks[] __initdata = { ...@@ -248,7 +248,7 @@ static struct clk *clks[] __initdata = {
&clk_48m, &clk_48m,
}; };
void s3c64xx_register_clocks(void) void __init s3c64xx_register_clocks(void)
{ {
struct clk *clkp; struct clk *clkp;
int ret; int ret;
......
...@@ -417,4 +417,4 @@ static __init int s3c64xx_gpiolib_init(void) ...@@ -417,4 +417,4 @@ static __init int s3c64xx_gpiolib_init(void)
return 0; return 0;
} }
arch_initcall(s3c64xx_gpiolib_init); core_initcall(s3c64xx_gpiolib_init);
...@@ -117,7 +117,7 @@ ...@@ -117,7 +117,7 @@
#define IRQ_ONENAND1 S3C64XX_IRQ_VIC1(12) #define IRQ_ONENAND1 S3C64XX_IRQ_VIC1(12)
#define IRQ_NFC S3C64XX_IRQ_VIC1(13) #define IRQ_NFC S3C64XX_IRQ_VIC1(13)
#define IRQ_CFCON S3C64XX_IRQ_VIC1(14) #define IRQ_CFCON S3C64XX_IRQ_VIC1(14)
#define IRQ_UHOST S3C64XX_IRQ_VIC1(15) #define IRQ_USBH S3C64XX_IRQ_VIC1(15)
#define IRQ_SPI0 S3C64XX_IRQ_VIC1(16) #define IRQ_SPI0 S3C64XX_IRQ_VIC1(16)
#define IRQ_SPI1 S3C64XX_IRQ_VIC1(17) #define IRQ_SPI1 S3C64XX_IRQ_VIC1(17)
#define IRQ_IIC S3C64XX_IRQ_VIC1(18) #define IRQ_IIC S3C64XX_IRQ_VIC1(18)
......
...@@ -14,12 +14,15 @@ ...@@ -14,12 +14,15 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/gpio.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/io.h> #include <linux/io.h>
#include <asm/hardware/vic.h> #include <asm/hardware/vic.h>
#include <plat/regs-irqtype.h> #include <plat/regs-irqtype.h>
#include <plat/regs-gpio.h>
#include <plat/gpio-cfg.h>
#include <mach/map.h> #include <mach/map.h>
#include <plat/cpu.h> #include <plat/cpu.h>
...@@ -74,6 +77,7 @@ static void s3c_irq_eint_maskack(unsigned int irq) ...@@ -74,6 +77,7 @@ static void s3c_irq_eint_maskack(unsigned int irq)
static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type) static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
{ {
int offs = eint_offset(irq); int offs = eint_offset(irq);
int pin;
int shift; int shift;
u32 ctrl, mask; u32 ctrl, mask;
u32 newvalue = 0; u32 newvalue = 0;
...@@ -125,6 +129,15 @@ static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type) ...@@ -125,6 +129,15 @@ static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
ctrl |= newvalue << shift; ctrl |= newvalue << shift;
__raw_writel(ctrl, reg); __raw_writel(ctrl, reg);
/* set the GPIO pin appropriately */
if (offs < 23)
pin = S3C64XX_GPN(offs);
else
pin = S3C64XX_GPM(offs - 23);
s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(2));
return 0; return 0;
} }
...@@ -181,7 +194,7 @@ static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc) ...@@ -181,7 +194,7 @@ static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
s3c_irq_demux_eint(20, 27); s3c_irq_demux_eint(20, 27);
} }
int __init s3c64xx_init_irq_eint(void) static int __init s3c64xx_init_irq_eint(void)
{ {
int irq; int irq;
......
...@@ -207,7 +207,7 @@ static struct irq_chip s3c_irq_uart = { ...@@ -207,7 +207,7 @@ static struct irq_chip s3c_irq_uart = {
static void __init s3c64xx_uart_irq(struct uart_irq *uirq) static void __init s3c64xx_uart_irq(struct uart_irq *uirq)
{ {
void *reg_base = uirq->regs; void __iomem *reg_base = uirq->regs;
unsigned int irq; unsigned int irq;
int offs; int offs;
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
* ext_xtal_mux for want of an actual name from the manual. * ext_xtal_mux for want of an actual name from the manual.
*/ */
struct clk clk_ext_xtal_mux = { static struct clk clk_ext_xtal_mux = {
.name = "ext_xtal", .name = "ext_xtal",
.id = -1, .id = -1,
}; };
...@@ -63,7 +63,7 @@ struct clksrc_clk { ...@@ -63,7 +63,7 @@ struct clksrc_clk {
void __iomem *reg_divider; void __iomem *reg_divider;
}; };
struct clk clk_fout_apll = { static struct clk clk_fout_apll = {
.name = "fout_apll", .name = "fout_apll",
.id = -1, .id = -1,
}; };
...@@ -78,7 +78,7 @@ static struct clk_sources clk_src_apll = { ...@@ -78,7 +78,7 @@ static struct clk_sources clk_src_apll = {
.nr_sources = ARRAY_SIZE(clk_src_apll_list), .nr_sources = ARRAY_SIZE(clk_src_apll_list),
}; };
struct clksrc_clk clk_mout_apll = { static struct clksrc_clk clk_mout_apll = {
.clk = { .clk = {
.name = "mout_apll", .name = "mout_apll",
.id = -1, .id = -1,
...@@ -88,7 +88,7 @@ struct clksrc_clk clk_mout_apll = { ...@@ -88,7 +88,7 @@ struct clksrc_clk clk_mout_apll = {
.sources = &clk_src_apll, .sources = &clk_src_apll,
}; };
struct clk clk_fout_epll = { static struct clk clk_fout_epll = {
.name = "fout_epll", .name = "fout_epll",
.id = -1, .id = -1,
}; };
...@@ -103,7 +103,7 @@ static struct clk_sources clk_src_epll = { ...@@ -103,7 +103,7 @@ static struct clk_sources clk_src_epll = {
.nr_sources = ARRAY_SIZE(clk_src_epll_list), .nr_sources = ARRAY_SIZE(clk_src_epll_list),
}; };
struct clksrc_clk clk_mout_epll = { static struct clksrc_clk clk_mout_epll = {
.clk = { .clk = {
.name = "mout_epll", .name = "mout_epll",
.id = -1, .id = -1,
...@@ -123,7 +123,7 @@ static struct clk_sources clk_src_mpll = { ...@@ -123,7 +123,7 @@ static struct clk_sources clk_src_mpll = {
.nr_sources = ARRAY_SIZE(clk_src_mpll_list), .nr_sources = ARRAY_SIZE(clk_src_mpll_list),
}; };
struct clksrc_clk clk_mout_mpll = { static struct clksrc_clk clk_mout_mpll = {
.clk = { .clk = {
.name = "mout_mpll", .name = "mout_mpll",
.id = -1, .id = -1,
...@@ -145,7 +145,7 @@ static unsigned long s3c64xx_clk_doutmpll_get_rate(struct clk *clk) ...@@ -145,7 +145,7 @@ static unsigned long s3c64xx_clk_doutmpll_get_rate(struct clk *clk)
return rate; return rate;
} }
struct clk clk_dout_mpll = { static struct clk clk_dout_mpll = {
.name = "dout_mpll", .name = "dout_mpll",
.id = -1, .id = -1,
.parent = &clk_mout_mpll.clk, .parent = &clk_mout_mpll.clk,
...@@ -189,10 +189,10 @@ static struct clk_sources clkset_uart = { ...@@ -189,10 +189,10 @@ static struct clk_sources clkset_uart = {
}; };
static struct clk *clkset_uhost_list[] = { static struct clk *clkset_uhost_list[] = {
&clk_48m,
&clk_mout_epll.clk, &clk_mout_epll.clk,
&clk_dout_mpll, &clk_dout_mpll,
&clk_fin_epll, &clk_fin_epll,
&clk_48m,
}; };
static struct clk_sources clkset_uhost = { static struct clk_sources clkset_uhost = {
...@@ -239,10 +239,12 @@ static int s3c64xx_setrate_clksrc(struct clk *clk, unsigned long rate) ...@@ -239,10 +239,12 @@ static int s3c64xx_setrate_clksrc(struct clk *clk, unsigned long rate)
rate = clk_round_rate(clk, rate); rate = clk_round_rate(clk, rate);
div = clk_get_rate(clk->parent) / rate; div = clk_get_rate(clk->parent) / rate;
if (div > 16)
return -EINVAL;
val = __raw_readl(reg); val = __raw_readl(reg);
val &= ~sclk->mask; val &= ~(0xf << sclk->shift);
val |= (rate - 1) << sclk->shift; val |= (div - 1) << sclk->shift;
__raw_writel(val, reg); __raw_writel(val, reg);
return 0; return 0;
...@@ -351,7 +353,7 @@ static struct clksrc_clk clk_mmc2 = { ...@@ -351,7 +353,7 @@ static struct clksrc_clk clk_mmc2 = {
static struct clksrc_clk clk_usbhost = { static struct clksrc_clk clk_usbhost = {
.clk = { .clk = {
.name = "usb-host-bus", .name = "usb-bus-host",
.id = -1, .id = -1,
.ctrlbit = S3C_CLKCON_SCLK_UHOST, .ctrlbit = S3C_CLKCON_SCLK_UHOST,
.enable = s3c64xx_sclk_ctrl, .enable = s3c64xx_sclk_ctrl,
......
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