From: Kristoffer E. <kri...@ho...> - 2007-03-12 20:49:15
|
Greetings, I've synced the changes I had with git and it now compiles without any issues. At bootup though I receive a kernel panic and "not syncing: Attempted to kill init!". Im unable to create a bootlog since I have no serial cable for my jornada. The only part of the Kernel panic I can see is just the data dump, which doesnt help you much. (adresses running from 1c80: -> 1fe0). I believe its somehow related to the PATA driver, but hard to be sure. My patches for git are these: diff --git a/arch/sh/boards/hp6xx/setup.c b/arch/sh/boards/hp6xx/setup.c index b5a9664..abec0e0 100644 --- a/arch/sh/boards/hp6xx/setup.c +++ b/arch/sh/boards/hp6xx/setup.c @@ -15,15 +15,52 @@ #include <asm/io.h> #include <asm/irq.h> #include <asm/hp6xx.h> #include <asm/cpu/dac.h> +#include <linux/platform_device.h> #define SCPCR 0xa4000116 #define SCPDR 0xa4000136 +static struct resource cf_ide_resources[] = { + [0] = { + .start = 0x1f0, + .end = 0x1f0 + 8, + .flags = IORESOURCE_IO, + }, + [1] = { + .start = 0x3f6, + .end = 0x3f7, + .flags = IORESOURCE_IO, + }, + [2] = { + .start = 93, + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device cf_ide_device = { + .name = "pata_platform", + .id = -1, + .num_resources = ARRAY_SIZE(cf_ide_resources), + .resource = cf_ide_resources, +}; + +static struct platform_device *hp6xx_devices[] __initdata = { + + &cf_ide_device, +}; + +static int __init hp6xx_devices_setup(void) +{ + return platform_add_devices(hp6xx_devices,ARRAY_SIZE(hp6xx_devices)); +} + static void __init hp6xx_setup(char **cmdline_p) { u8 v8; u16 v; + device_initcall(hp6xx_devices_setup); + v = inw(HD64461_STBCR); v |= HD64461_STBCR_SURTST | HD64461_STBCR_SIRST | HD64461_STBCR_STM1ST | HD64461_STBCR_STM0ST | diff --git a/arch/sh/drivers/dma/dma-sh.c b/arch/sh/drivers/dma/dma-sh.c index 06ed060..b56fab8 100644 --- a/arch/sh/drivers/dma/dma-sh.c +++ b/arch/sh/drivers/dma/dma-sh.c @@ -19,6 +19,13 @@ #include <asm/dma.h> #include <asm/io.h> #include "dma-sh.h" +#ifdef CONFIG_CPU_SUBTYPE_SH7709 + #define DMTE0_IRQ 48 + #define DMTE1_IRQ 49 + #define DMTE2_IRQ 50 + #define DMTE3_IRQ 51 +#endif + static int dmte_irq_map[] = { DMTE0_IRQ, DMTE1_IRQ, diff --git a/include/asm-sh/hp6xx.h b/include/asm-sh/hp6xx.h index f35134c..f628be7 100644 --- a/include/asm-sh/hp6xx.h +++ b/include/asm-sh/hp6xx.h @@ -14,6 +14,8 @@ #define HP680_BTN_IRQ IRQ0_IRQ #define HP680_TS_IRQ IRQ3_IRQ #define HP680_HD64461_IRQ IRQ4_IRQ +#define IRQ3_IRQ 35 + #define DAC_LCD_BRIGHTNESS 0 #define DAC_SPEAKER_VOLUME 1 diff --git a/include/asm-sh/hp6xx.h b/include/asm-sh/hp6xx.h index f628be7..17787a6 100644 --- a/include/asm-sh/hp6xx.h +++ b/include/asm-sh/hp6xx.h @@ -47,6 +47,8 @@ #define ADC_CHANNEL_CHARGE 5 #define HD64461_GPADR_SPEAKER 0x01 #define HD64461_GPADR_PCMCIA0 (0x02|0x08) +#define TIMER1_IRQ 16 + #define HD64461_GPBDR_LCDOFF 0x01 #define HD64461_GPBDR_LCD_CONTRAST_MASK 0x78 #define HD64461_GPBDR_LED_RED 0x80 diff --git a/drivers/input/touchscreen/hp680_ts_input.c b/drivers/input/touchscreen/hp680_ts_input.c index 2490874..61c1502 100644 --- a/drivers/input/touchscreen/hp680_ts_input.c +++ b/drivers/input/touchscreen/hp680_ts_input.c @@ -21,7 +21,7 @@ #define SCPDR 0xa4000136 static void do_softint(void *data); static struct input_dev *hp680_ts_dev; -static DECLARE_WORK(work, do_softint, 0); +static DECLARE_WORK(work, do_softint); static void do_softint(void *data) { diff --git a/drivers/video/backlight/hp680_bl.c b/drivers/video/backlight/hp680_bl.c index 0899fcc..b2faf82 100644 --- a/drivers/video/backlight/hp680_bl.c +++ b/drivers/video/backlight/hp680_bl.c @@ -125,8 +125,7 @@ static int hp680bl_remove(struct platfor { struct backlight_device *bd = platform_get_drvdata(pdev); +// hp680bl_data.brightness = 0; +// hp680bl_data.power = 0; hp680bl_send_intensity(bd); backlight_device_unregister(bd); diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7709.c b/arch/sh/kernel/cpu/sh3/setup-sh7709.c index dc9b211..013e87f 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh7709.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh7709.c @@ -55,6 +55,8 @@ __initcall(sh7709_devices_setup); #define IPRx(A,N) .addr=A, .shift=0*N*-1 #define IPRA(N) IPRx(0xfffffee2UL,N) #define IPRB(N) IPRx(0xfffffee4UL,N) +#define IPRC(N) IPRx(0xa0000016UL,N) +#define IPRD(N) IPRx(0xa0000018UL,N) #define IPRE(N) IPRx(0xa400001aUL,N) static struct ipr_data sh7709_ipr_map[] = { @@ -63,6 +65,12 @@ static struct ipr_data sh7709_ipr_map[] [22] = { IPRA(3-0), 2 }, /* RTC CUI */ [23 ... 26] = { IPRB(7-4), 3 }, /* SCI */ [27] = { IPRB(15-12), 2 }, /* WDT ITI */ + [32] = { IPRC(0), 1 }, /* IRQ 0 */ + [33] = { IPRC(1), 1 }, /* IRQ 1 */ + [34] = { IPRC(2), 1 }, /* IRQ 2 APM */ + [35] = { IPRC(3), 1 }, /* IRQ 3 TOUCHSCREEN */ + [36] = { IPRD(0), 1 }, /* IRQ 4 */ + [37] = { IPRD(1), 1 }, /* IRQ 5 */ [48 ... 51] = { IPRE(15-12), 7 }, /* DMA */ [52 ... 55] = { IPRE(11-8), 3 }, /* IRDA */ [56 ... 59] = { IPRE(7-4), 3 }, /* SCIF */ diff --git a/include/asm-sh/irq.h b/include/asm-sh/irq.h index 29d4fb9..eaf77fe 100644 --- a/include/asm-sh/irq.h +++ b/include/asm-sh/irq.h @@ -190,7 +190,7 @@ static inline int generic_irq_demux(int #define irq_canonicalize(irq) (irq) #define irq_demux(irq) sh_mv.mv_irq_demux(irq) - +#define __irq_demux(irq) (irq) #ifdef CONFIG_4KSTACKS extern void irq_ctx_init(int cpu); extern void irq_ctx_exit(int cpu); diff --git a/include/asm-sh/irq.h b/include/asm-sh/irq.h index 8ccf7ae..29d4fb9 100644 --- a/include/asm-sh/irq.h +++ b/include/asm-sh/irq.h @@ -23,6 +23,40 @@ #elif defined(CONFIG_CPU_SUBTYPE_SH7709) defined(CONFIG_CPU_SUBTYPE_SH7705) # define ONCHIP_NR_IRQS 64 // Actually 61 # define PINT_NR_IRQS 16 + + #define INTC_IRR0 0xa4000004UL + #define INTC_IRR1 0xa4000006UL + #define INTC_IRR2 0xa4000008UL + + #define INTC_IPRA 0xfffffee2UL + #define INTC_IPRB 0xfffffee4UL + #define INTC_IPRD 0xa4000018UL + + #define INTC_INTER 0xa4000014UL + + #define INTC_ICR0 0xfffffee0UL + #define INTC_ICR1 0xa4000010UL + #define INTC_ICR2 0xa4000012UL + + #define PORT_PACR 0xa4000100UL + #define PORT_PBCR 0xa4000102UL + #define PORT_PCCR 0xa4000104UL + #define PORT_PFCR 0xa400010aUL + + #define PORT_PADR 0xa4000120UL + #define PORT_PBDR 0xa4000122UL + #define PORT_PCDR 0xa4000124UL + #define PORT_PFDR 0xa400012aUL + + #define PINT0_IRQ 40 + #define PINT8_IRQ 41 + #define PINT0_IPR_ADDR INTC_IPRD + #define PINT8_IPR_ADDR INTC_IPRD + #define PINT0_IPR_POS 3 + #define PINT8_IPR_POS 2 + #define PINT0_PRIORITY 2 + #define PINT8_PRIORITY 2 + #elif defined(CONFIG_CPU_SUBTYPE_SH7710) # define ONCHIP_NR_IRQS 104 #elif defined(CONFIG_CPU_SUBTYPE_SH7750) diff --git a/sound/oss/sh_dac_audio.c b/sound/oss/sh_dac_audio.c index 7ea9acc..b493660 100644 --- a/sound/oss/sh_dac_audio.c +++ b/sound/oss/sh_dac_audio.c @@ -104,7 +104,7 @@ static void dac_audio_set_rate(void) unsigned long interval; struct clk *clk; - clk = clk_get("module_clk"); + clk = clk_get(NULL, "module_clk"); interval = (clk_get_rate(clk) / 4) / rate; clk_put(clk); ctrl_outl(interval, TMU1_TCOR); _________________________________________________________________ Don't just search. Find. Check out the new MSN Search! http://search.msn.click-url.com/go/onm00200636ave/direct/01/ |