* Current git very broken on the Dreamcast @ 2008-02-16 18:38 Adrian McMenamin 2008-02-16 19:48 ` Adrian McMenamin 2008-02-17 19:40 ` Kristoffer Ericson 0 siblings, 2 replies; 12+ messages in thread From: Adrian McMenamin @ 2008-02-16 18:38 UTC (permalink / raw) To: linux-sh, LKML Will seek to bisect this, but I have just updated my sources to the latest git and it is not booting at all on the Dreamcast. With early printk on, I get nothing more than this before an instant reboot: [ 0.000000] Linux version 2.6.25-rc2-10953-g52065cd (adrian@bossclass) (gcc version 3.4.6) #511 PREEMPT Sat Feb 16 18:31:43 GMT 2008 [ 0.000000] console [sercon0] enabled [ 0.000000] Booting machvec: Sega Dreamcast ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Current git very broken on the Dreamcast 2008-02-16 18:38 Current git very broken on the Dreamcast Adrian McMenamin @ 2008-02-16 19:48 ` Adrian McMenamin 2008-02-16 19:59 ` Adrian McMenamin 2008-02-18 8:57 ` Magnus Damm 2008-02-17 19:40 ` Kristoffer Ericson 1 sibling, 2 replies; 12+ messages in thread From: Adrian McMenamin @ 2008-02-16 19:48 UTC (permalink / raw) To: linux-sh, Paul Mundt, Magnus Damm, matsi; +Cc: LKML On Sat, 2008-02-16 at 18:38 +0000, Adrian McMenamin wrote: > Will seek to bisect this, but I have just updated my sources to the > latest git and it is not booting at all on the Dreamcast. > > With early printk on, I get nothing more than this before an instant > reboot: > > [ 0.000000] Linux version 2.6.25-rc2-10953-g52065cd > (adrian@bossclass) (gcc version 3.4.6) #511 PREEMPT Sat Feb 16 18:31:43 > GMT 2008 > [ 0.000000] console [sercon0] enabled > [ 0.000000] Booting machvec: Sega Dreamcast adrian@bossclass:~/gdrom-dev$ git bisect good e036eaa681a17f71b64f6d9040fe605555623919 is first bad commit commit e036eaa681a17f71b64f6d9040fe605555623919 Author: Magnus Damm <magnus.damm@gmail.com> Date: Thu Feb 14 13:52:43 2008 +0900 sh: use ctrl_in/out for on chip pci access This patch makes sure ctrl_inN/outN are used instead of inN/outN for on chip pci registers. Without this patch addresses may be adjusted using the value in generic_io_base. This patch makes it possible to set generic_io_base and have pci without reading and writing all over the place. Signed-off-by: Magnus Damm <damm@igel.co.jp> Acked-by: Katsuya MATSUBARA <matsu@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org> :040000 040000 17a9f8181301e3a082d8a1a2fdef9b13ff1185e4 87e4a2e912be56b0d12e8a92db9489d6615c31f7 M arch I'll now try reverting this and seeing what happens.... Adrian ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Current git very broken on the Dreamcast 2008-02-16 19:48 ` Adrian McMenamin @ 2008-02-16 19:59 ` Adrian McMenamin 2008-02-17 19:42 ` Kristoffer Ericson 2008-02-17 19:55 ` Kristoffer Ericson 2008-02-18 8:57 ` Magnus Damm 1 sibling, 2 replies; 12+ messages in thread From: Adrian McMenamin @ 2008-02-16 19:59 UTC (permalink / raw) To: linux-sh; +Cc: Paul Mundt, Magnus Damm, matsu, LKML On Sat, 2008-02-16 at 19:48 +0000, Adrian McMenamin wrote: > On Sat, 2008-02-16 at 18:38 +0000, Adrian McMenamin wrote: > > Will seek to bisect this, but I have just updated my sources to the > > latest git and it is not booting at all on the Dreamcast. > > > adrian@bossclass:~/gdrom-dev$ git bisect good > e036eaa681a17f71b64f6d9040fe605555623919 is first bad commit > commit e036eaa681a17f71b64f6d9040fe605555623919 > Author: Magnus Damm <magnus.damm@gmail.com> > Date: Thu Feb 14 13:52:43 2008 +0900 > Reverting this commit *will* let my Dreamcast boot - can it be rolled back pending further testing for a patch please? Adrian ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Current git very broken on the Dreamcast 2008-02-16 19:59 ` Adrian McMenamin @ 2008-02-17 19:42 ` Kristoffer Ericson 2008-02-17 19:55 ` Kristoffer Ericson 1 sibling, 0 replies; 12+ messages in thread From: Kristoffer Ericson @ 2008-02-17 19:42 UTC (permalink / raw) To: Adrian McMenamin; +Cc: linux-sh, Paul Mundt, Magnus Damm, matsu, LKML On Sat, 16 Feb 2008 19:59:48 +0000 Adrian McMenamin <adrian@newgolddream.dyndns.info> wrote: > > On Sat, 2008-02-16 at 19:48 +0000, Adrian McMenamin wrote: > > On Sat, 2008-02-16 at 18:38 +0000, Adrian McMenamin wrote: > > > Will seek to bisect this, but I have just updated my sources to the > > > latest git and it is not booting at all on the Dreamcast. > > > > > > adrian@bossclass:~/gdrom-dev$ git bisect good > > e036eaa681a17f71b64f6d9040fe605555623919 is first bad commit > > commit e036eaa681a17f71b64f6d9040fe605555623919 > > Author: Magnus Damm <magnus.damm@gmail.com> > > Date: Thu Feb 14 13:52:43 2008 +0900 > > > > Reverting this commit *will* let my Dreamcast boot - can it be rolled > back pending further testing for a patch please? Since you know the cause I'm sure Magnus will have some ideas about why it broke, so just hold on for him to reply. > > Adrian > > - > To unsubscribe from this list: send the line "unsubscribe linux-sh" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Current git very broken on the Dreamcast @ 2008-02-17 19:42 ` Kristoffer Ericson 0 siblings, 0 replies; 12+ messages in thread From: Kristoffer Ericson @ 2008-02-17 19:42 UTC (permalink / raw) To: Adrian McMenamin; +Cc: linux-sh, Paul Mundt, Magnus Damm, matsu, LKML On Sat, 16 Feb 2008 19:59:48 +0000 Adrian McMenamin <adrian@newgolddream.dyndns.info> wrote: > > On Sat, 2008-02-16 at 19:48 +0000, Adrian McMenamin wrote: > > On Sat, 2008-02-16 at 18:38 +0000, Adrian McMenamin wrote: > > > Will seek to bisect this, but I have just updated my sources to the > > > latest git and it is not booting at all on the Dreamcast. > > > > > > adrian@bossclass:~/gdrom-dev$ git bisect good > > e036eaa681a17f71b64f6d9040fe605555623919 is first bad commit > > commit e036eaa681a17f71b64f6d9040fe605555623919 > > Author: Magnus Damm <magnus.damm@gmail.com> > > Date: Thu Feb 14 13:52:43 2008 +0900 > > > > Reverting this commit *will* let my Dreamcast boot - can it be rolled > back pending further testing for a patch please? Since you know the cause I'm sure Magnus will have some ideas about why it broke, so just hold on for him to reply. > > Adrian > > - > To unsubscribe from this list: send the line "unsubscribe linux-sh" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Current git very broken on the Dreamcast 2008-02-16 19:59 ` Adrian McMenamin @ 2008-02-17 19:55 ` Kristoffer Ericson 2008-02-17 19:55 ` Kristoffer Ericson 1 sibling, 0 replies; 12+ messages in thread From: Kristoffer Ericson @ 2008-02-17 19:55 UTC (permalink / raw) To: Adrian McMenamin; +Cc: linux-sh, Paul Mundt, Magnus Damm, matsu, LKML On Sat, 16 Feb 2008 19:59:48 +0000 Adrian McMenamin <adrian@newgolddream.dyndns.info> wrote: > > On Sat, 2008-02-16 at 19:48 +0000, Adrian McMenamin wrote: > > On Sat, 2008-02-16 at 18:38 +0000, Adrian McMenamin wrote: > > > Will seek to bisect this, but I have just updated my sources to the > > > latest git and it is not booting at all on the Dreamcast. > > > > > > adrian@bossclass:~/gdrom-dev$ git bisect good > > e036eaa681a17f71b64f6d9040fe605555623919 is first bad commit > > commit e036eaa681a17f71b64f6d9040fe605555623919 > > Author: Magnus Damm <magnus.damm@gmail.com> > > Date: Thu Feb 14 13:52:43 2008 +0900 > > > > Reverting this commit *will* let my Dreamcast boot - can it be rolled > back pending further testing for a patch please? > Just had a look at the patch. If that patch made your dreamcast not boot then you had somekind of io_base that was used in in/out. Perhaps its better to adjust your PORT defines than work around the issue? > Adrian > > - > To unsubscribe from this list: send the line "unsubscribe linux-sh" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Current git very broken on the Dreamcast @ 2008-02-17 19:55 ` Kristoffer Ericson 0 siblings, 0 replies; 12+ messages in thread From: Kristoffer Ericson @ 2008-02-17 19:55 UTC (permalink / raw) To: Adrian McMenamin; +Cc: linux-sh, Paul Mundt, Magnus Damm, matsu, LKML On Sat, 16 Feb 2008 19:59:48 +0000 Adrian McMenamin <adrian@newgolddream.dyndns.info> wrote: > > On Sat, 2008-02-16 at 19:48 +0000, Adrian McMenamin wrote: > > On Sat, 2008-02-16 at 18:38 +0000, Adrian McMenamin wrote: > > > Will seek to bisect this, but I have just updated my sources to the > > > latest git and it is not booting at all on the Dreamcast. > > > > > > adrian@bossclass:~/gdrom-dev$ git bisect good > > e036eaa681a17f71b64f6d9040fe605555623919 is first bad commit > > commit e036eaa681a17f71b64f6d9040fe605555623919 > > Author: Magnus Damm <magnus.damm@gmail.com> > > Date: Thu Feb 14 13:52:43 2008 +0900 > > > > Reverting this commit *will* let my Dreamcast boot - can it be rolled > back pending further testing for a patch please? > Just had a look at the patch. If that patch made your dreamcast not boot then you had somekind of io_base that was used in in/out. Perhaps its better to adjust your PORT defines than work around the issue? > Adrian > > - > To unsubscribe from this list: send the line "unsubscribe linux-sh" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Current git very broken on the Dreamcast 2008-02-16 19:48 ` Adrian McMenamin @ 2008-02-18 8:57 ` Magnus Damm 2008-02-18 8:57 ` Magnus Damm 1 sibling, 0 replies; 12+ messages in thread From: Magnus Damm @ 2008-02-18 8:57 UTC (permalink / raw) To: Adrian McMenamin; +Cc: linux-sh, Paul Mundt, matsu, LKML [-- Attachment #1: Type: text/plain, Size: 2976 bytes --] Hi Adrian, [fixed up Matsubara-sans address] On Feb 17, 2008 4:48 AM, Adrian McMenamin <adrian@newgolddream.dyndns.info> wrote: > On Sat, 2008-02-16 at 18:38 +0000, Adrian McMenamin wrote: > > Will seek to bisect this, but I have just updated my sources to the > > latest git and it is not booting at all on the Dreamcast. > > > > With early printk on, I get nothing more than this before an instant > > reboot: > > > > [ 0.000000] Linux version 2.6.25-rc2-10953-g52065cd > > (adrian@bossclass) (gcc version 3.4.6) #511 PREEMPT Sat Feb 16 18:31:43 > > GMT 2008 > > [ 0.000000] console [sercon0] enabled > > [ 0.000000] Booting machvec: Sega Dreamcast > > > adrian@bossclass:~/gdrom-dev$ git bisect good > e036eaa681a17f71b64f6d9040fe605555623919 is first bad commit > commit e036eaa681a17f71b64f6d9040fe605555623919 > Author: Magnus Damm <magnus.damm@gmail.com> > Date: Thu Feb 14 13:52:43 2008 +0900 > > sh: use ctrl_in/out for on chip pci access > > This patch makes sure ctrl_inN/outN are used instead of inN/outN for > on chip > pci registers. Without this patch addresses may be adjusted using > the value > in generic_io_base. This patch makes it possible to set > generic_io_base and > have pci without reading and writing all over the place. > > Signed-off-by: Magnus Damm <damm@igel.co.jp> > Acked-by: Katsuya MATSUBARA <matsu@igel.co.jp> > Signed-off-by: Paul Mundt <lethal@linux-sh.org> > > :040000 040000 17a9f8181301e3a082d8a1a2fdef9b13ff1185e4 > 87e4a2e912be56b0d12e8a92db9489d6615c31f7 M arch Thanks for tracking this down and sorry for breaking the dreamcast pci driver. Most code for the dreamcast currently do direct register access using ctrl_inN/outN or readN/writeN. Only a few places use inN/outN and depend on the value of generic_io_base. Doing inN/outN is ok (but outdated, use ioreadN/iowriteN instead) in a portable pci/isa driver, but it doesn't make sense for any dreamcast specific code to rely on generic_io_base. For the dreamcast we already know the address at compile time so doing adjustment during runtime is just unnecessary overhead. It is of course possible to revert the dreamcast-specific bits of the commit you pointed out, but I think the change for the dreamcast makes sense since it makes the code both faster and more uniform. However, at this point it is broken. Sorry about that. I just looked through all upstream dreamcast-specific code I could find and irq.c is now the only file that does inN/outN. I've attached a patch that makes the irq code independent of generic_io_base. There is also another patch attached that adjusts the addresses of the pci register. Together they should solve the problem you are seeing. Please try them on top of 2.6.25-rc2. With these patches io ports count from 0 -> 8k-1 instead of being a pointer. We currently rely on generic_io_base logic but that will be changed in the future. Please let me know the results. Thank you. / magnus [-- Attachment #2: linux-2.6.25-rc2-sh-dreamcast-irq-20080218.patch --] [-- Type: application/octet-stream, Size: 2260 bytes --] --- 0001/arch/sh/boards/dreamcast/irq.c +++ work/arch/sh/boards/dreamcast/irq.c 2008-02-18 17:02:08.000000000 +0900 @@ -12,6 +12,7 @@ #include <linux/irq.h> #include <asm/io.h> #include <asm/irq.h> +#include <asm/addrspace.h> #include <asm/dreamcast/sysasic.h> /* Dreamcast System ASIC Hardware Events - @@ -40,8 +41,8 @@ */ -#define ESR_BASE 0x005f6900 /* Base event status register */ -#define EMR_BASE 0x005f6910 /* Base event mask register */ +#define ESR_BASE P2SEGADDR(0x005f6900) /* Base event status register */ +#define EMR_BASE P2SEGADDR(0x005f6910) /* Base event mask register */ /* Helps us determine the EMR group that this event belongs to: 0 = 0x6910, 1 = 0x6920, 2 = 0x6930; also determine the event offset */ @@ -59,9 +60,9 @@ static inline void disable_systemasic_ir __u32 emr = EMR_BASE + (LEVEL(irq) << 4) + (LEVEL(irq) << 2); __u32 mask; - mask = inl(emr); + mask = ctrl_inl(emr); mask &= ~(1 << EVENT_BIT(irq)); - outl(mask, emr); + ctrl_outl(mask, emr); } /* Enable the hardware event by setting its bit in its EMR */ @@ -70,9 +71,9 @@ static inline void enable_systemasic_irq __u32 emr = EMR_BASE + (LEVEL(irq) << 4) + (LEVEL(irq) << 2); __u32 mask; - mask = inl(emr); + mask = ctrl_inl(emr); mask |= (1 << EVENT_BIT(irq)); - outl(mask, emr); + ctrl_outl(mask, emr); } /* Acknowledge a hardware event by writing its bit back to its ESR */ @@ -80,7 +81,7 @@ static void ack_systemasic_irq(unsigned { __u32 esr = ESR_BASE + (LEVEL(irq) << 2); disable_systemasic_irq(irq); - outl((1 << EVENT_BIT(irq)), esr); + ctrl_outl((1 << EVENT_BIT(irq)), esr); } /* After a IRQ has been ack'd and responded to, it needs to be renabled */ @@ -137,8 +138,8 @@ int systemasic_irq_demux(int irq) esr = ESR_BASE + (level << 2); /* Mask the ESR to filter any spurious, unwanted interrupts */ - status = inl(esr); - status &= inl(emr); + status = ctrl_inl(esr); + status &= ctrl_inl(emr); /* Now scan and find the first set bit as the event to map */ for (bit = 1, j = 0; j < 32; bit <<= 1, j++) { [-- Attachment #3: linux-2.6.25-rc2-sh-dreamcast-pci-20080218b.patch --] [-- Type: application/octet-stream, Size: 1668 bytes --] --- 0001/arch/sh/boards/dreamcast/setup.c +++ work/arch/sh/boards/dreamcast/setup.c 2008-02-18 17:05:45.000000000 +0900 @@ -43,8 +43,6 @@ static void __init dreamcast_setup(char /* Acknowledge any previous events */ /* XXX */ - __set_io_port_base(0xa0000000); - /* Assign all virtual IRQs to the System ASIC int. handler */ for (i = HW_EVENT_IRQ_BASE; i < HW_EVENT_IRQ_MAX; i++) irq_desc[i].chip = &systemasic_int; --- 0001/arch/sh/drivers/pci/ops-dreamcast.c +++ work/arch/sh/drivers/pci/ops-dreamcast.c 2008-02-18 17:06:19.000000000 +0900 @@ -29,8 +29,8 @@ static struct resource gapspci_io_resource = { .name = "GAPSPCI IO", - .start = GAPSPCI_BBA_CONFIG, - .end = GAPSPCI_BBA_CONFIG + GAPSPCI_BBA_CONFIG_SIZE - 1, + .start = 0, + .end = GAPSPCI_BBA_CONFIG_SIZE - 1, .flags = IORESOURCE_IO, }; @@ -158,6 +158,8 @@ int __init gapspci_init(void) ctrl_outl(0x00002001, GAPSPCI_BBA_CONFIG+0x10); ctrl_outl(0x01000000, GAPSPCI_BBA_CONFIG+0x14); + __set_io_port_base(GAPSPCI_BBA_CONFIG); + return 0; } --- 0001/include/asm-sh/dreamcast/pci.h +++ work/include/asm-sh/dreamcast/pci.h 2008-02-18 17:18:10.000000000 +0900 @@ -11,12 +11,13 @@ #ifndef __ASM_SH_DREAMCAST_PCI_H #define __ASM_SH_DREAMCAST_PCI_H +#include <asm/addrspace.h> #include <asm/mach/sysasic.h> -#define GAPSPCI_REGS 0x01001400 -#define GAPSPCI_DMA_BASE 0x01840000 +#define GAPSPCI_REGS P2SEGADDR(0x01001400) +#define GAPSPCI_DMA_BASE P2SEGADDR(0x01840000) #define GAPSPCI_DMA_SIZE 32768 -#define GAPSPCI_BBA_CONFIG 0x01001600 +#define GAPSPCI_BBA_CONFIG P2SEGADDR(0x01001600) #define GAPSPCI_BBA_CONFIG_SIZE 0x2000 #define GAPSPCI_IRQ HW_EVENT_EXTERNAL ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Current git very broken on the Dreamcast @ 2008-02-18 8:57 ` Magnus Damm 0 siblings, 0 replies; 12+ messages in thread From: Magnus Damm @ 2008-02-18 8:57 UTC (permalink / raw) To: Adrian McMenamin; +Cc: linux-sh, Paul Mundt, matsu, LKML [-- Attachment #1: Type: text/plain, Size: 2976 bytes --] Hi Adrian, [fixed up Matsubara-sans address] On Feb 17, 2008 4:48 AM, Adrian McMenamin <adrian@newgolddream.dyndns.info> wrote: > On Sat, 2008-02-16 at 18:38 +0000, Adrian McMenamin wrote: > > Will seek to bisect this, but I have just updated my sources to the > > latest git and it is not booting at all on the Dreamcast. > > > > With early printk on, I get nothing more than this before an instant > > reboot: > > > > [ 0.000000] Linux version 2.6.25-rc2-10953-g52065cd > > (adrian@bossclass) (gcc version 3.4.6) #511 PREEMPT Sat Feb 16 18:31:43 > > GMT 2008 > > [ 0.000000] console [sercon0] enabled > > [ 0.000000] Booting machvec: Sega Dreamcast > > > adrian@bossclass:~/gdrom-dev$ git bisect good > e036eaa681a17f71b64f6d9040fe605555623919 is first bad commit > commit e036eaa681a17f71b64f6d9040fe605555623919 > Author: Magnus Damm <magnus.damm@gmail.com> > Date: Thu Feb 14 13:52:43 2008 +0900 > > sh: use ctrl_in/out for on chip pci access > > This patch makes sure ctrl_inN/outN are used instead of inN/outN for > on chip > pci registers. Without this patch addresses may be adjusted using > the value > in generic_io_base. This patch makes it possible to set > generic_io_base and > have pci without reading and writing all over the place. > > Signed-off-by: Magnus Damm <damm@igel.co.jp> > Acked-by: Katsuya MATSUBARA <matsu@igel.co.jp> > Signed-off-by: Paul Mundt <lethal@linux-sh.org> > > :040000 040000 17a9f8181301e3a082d8a1a2fdef9b13ff1185e4 > 87e4a2e912be56b0d12e8a92db9489d6615c31f7 M arch Thanks for tracking this down and sorry for breaking the dreamcast pci driver. Most code for the dreamcast currently do direct register access using ctrl_inN/outN or readN/writeN. Only a few places use inN/outN and depend on the value of generic_io_base. Doing inN/outN is ok (but outdated, use ioreadN/iowriteN instead) in a portable pci/isa driver, but it doesn't make sense for any dreamcast specific code to rely on generic_io_base. For the dreamcast we already know the address at compile time so doing adjustment during runtime is just unnecessary overhead. It is of course possible to revert the dreamcast-specific bits of the commit you pointed out, but I think the change for the dreamcast makes sense since it makes the code both faster and more uniform. However, at this point it is broken. Sorry about that. I just looked through all upstream dreamcast-specific code I could find and irq.c is now the only file that does inN/outN. I've attached a patch that makes the irq code independent of generic_io_base. There is also another patch attached that adjusts the addresses of the pci register. Together they should solve the problem you are seeing. Please try them on top of 2.6.25-rc2. With these patches io ports count from 0 -> 8k-1 instead of being a pointer. We currently rely on generic_io_base logic but that will be changed in the future. Please let me know the results. Thank you. / magnus [-- Attachment #2: linux-2.6.25-rc2-sh-dreamcast-irq-20080218.patch --] [-- Type: application/octet-stream, Size: 2260 bytes --] --- 0001/arch/sh/boards/dreamcast/irq.c +++ work/arch/sh/boards/dreamcast/irq.c 2008-02-18 17:02:08.000000000 +0900 @@ -12,6 +12,7 @@ #include <linux/irq.h> #include <asm/io.h> #include <asm/irq.h> +#include <asm/addrspace.h> #include <asm/dreamcast/sysasic.h> /* Dreamcast System ASIC Hardware Events - @@ -40,8 +41,8 @@ */ -#define ESR_BASE 0x005f6900 /* Base event status register */ -#define EMR_BASE 0x005f6910 /* Base event mask register */ +#define ESR_BASE P2SEGADDR(0x005f6900) /* Base event status register */ +#define EMR_BASE P2SEGADDR(0x005f6910) /* Base event mask register */ /* Helps us determine the EMR group that this event belongs to: 0 = 0x6910, 1 = 0x6920, 2 = 0x6930; also determine the event offset */ @@ -59,9 +60,9 @@ static inline void disable_systemasic_ir __u32 emr = EMR_BASE + (LEVEL(irq) << 4) + (LEVEL(irq) << 2); __u32 mask; - mask = inl(emr); + mask = ctrl_inl(emr); mask &= ~(1 << EVENT_BIT(irq)); - outl(mask, emr); + ctrl_outl(mask, emr); } /* Enable the hardware event by setting its bit in its EMR */ @@ -70,9 +71,9 @@ static inline void enable_systemasic_irq __u32 emr = EMR_BASE + (LEVEL(irq) << 4) + (LEVEL(irq) << 2); __u32 mask; - mask = inl(emr); + mask = ctrl_inl(emr); mask |= (1 << EVENT_BIT(irq)); - outl(mask, emr); + ctrl_outl(mask, emr); } /* Acknowledge a hardware event by writing its bit back to its ESR */ @@ -80,7 +81,7 @@ static void ack_systemasic_irq(unsigned { __u32 esr = ESR_BASE + (LEVEL(irq) << 2); disable_systemasic_irq(irq); - outl((1 << EVENT_BIT(irq)), esr); + ctrl_outl((1 << EVENT_BIT(irq)), esr); } /* After a IRQ has been ack'd and responded to, it needs to be renabled */ @@ -137,8 +138,8 @@ int systemasic_irq_demux(int irq) esr = ESR_BASE + (level << 2); /* Mask the ESR to filter any spurious, unwanted interrupts */ - status = inl(esr); - status &= inl(emr); + status = ctrl_inl(esr); + status &= ctrl_inl(emr); /* Now scan and find the first set bit as the event to map */ for (bit = 1, j = 0; j < 32; bit <<= 1, j++) { [-- Attachment #3: linux-2.6.25-rc2-sh-dreamcast-pci-20080218b.patch --] [-- Type: application/octet-stream, Size: 1668 bytes --] --- 0001/arch/sh/boards/dreamcast/setup.c +++ work/arch/sh/boards/dreamcast/setup.c 2008-02-18 17:05:45.000000000 +0900 @@ -43,8 +43,6 @@ static void __init dreamcast_setup(char /* Acknowledge any previous events */ /* XXX */ - __set_io_port_base(0xa0000000); - /* Assign all virtual IRQs to the System ASIC int. handler */ for (i = HW_EVENT_IRQ_BASE; i < HW_EVENT_IRQ_MAX; i++) irq_desc[i].chip = &systemasic_int; --- 0001/arch/sh/drivers/pci/ops-dreamcast.c +++ work/arch/sh/drivers/pci/ops-dreamcast.c 2008-02-18 17:06:19.000000000 +0900 @@ -29,8 +29,8 @@ static struct resource gapspci_io_resource = { .name = "GAPSPCI IO", - .start = GAPSPCI_BBA_CONFIG, - .end = GAPSPCI_BBA_CONFIG + GAPSPCI_BBA_CONFIG_SIZE - 1, + .start = 0, + .end = GAPSPCI_BBA_CONFIG_SIZE - 1, .flags = IORESOURCE_IO, }; @@ -158,6 +158,8 @@ int __init gapspci_init(void) ctrl_outl(0x00002001, GAPSPCI_BBA_CONFIG+0x10); ctrl_outl(0x01000000, GAPSPCI_BBA_CONFIG+0x14); + __set_io_port_base(GAPSPCI_BBA_CONFIG); + return 0; } --- 0001/include/asm-sh/dreamcast/pci.h +++ work/include/asm-sh/dreamcast/pci.h 2008-02-18 17:18:10.000000000 +0900 @@ -11,12 +11,13 @@ #ifndef __ASM_SH_DREAMCAST_PCI_H #define __ASM_SH_DREAMCAST_PCI_H +#include <asm/addrspace.h> #include <asm/mach/sysasic.h> -#define GAPSPCI_REGS 0x01001400 -#define GAPSPCI_DMA_BASE 0x01840000 +#define GAPSPCI_REGS P2SEGADDR(0x01001400) +#define GAPSPCI_DMA_BASE P2SEGADDR(0x01840000) #define GAPSPCI_DMA_SIZE 32768 -#define GAPSPCI_BBA_CONFIG 0x01001600 +#define GAPSPCI_BBA_CONFIG P2SEGADDR(0x01001600) #define GAPSPCI_BBA_CONFIG_SIZE 0x2000 #define GAPSPCI_IRQ HW_EVENT_EXTERNAL ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Current git very broken on the Dreamcast 2008-02-18 8:57 ` Magnus Damm (?) @ 2008-02-18 20:11 ` Adrian McMenamin -1 siblings, 0 replies; 12+ messages in thread From: Adrian McMenamin @ 2008-02-18 20:11 UTC (permalink / raw) To: Magnus Damm; +Cc: linux-sh, Paul Mundt, matsu, LKML On Mon, 2008-02-18 at 17:57 +0900, Magnus Damm wrote: > Hi Adrian, > > [fixed up Matsubara-sans address] > > On Feb 17, 2008 4:48 AM, Adrian McMenamin > <adrian@newgolddream.dyndns.info> wrote: > > On Sat, 2008-02-16 at 18:38 +0000, Adrian McMenamin wrote: > > > Will seek to bisect this, but I have just updated my sources to the > > > latest git and it is not booting at all on the Dreamcast. > > > > > > With early printk on, I get nothing more than this before an instant > > > reboot: > > > > > > [ 0.000000] Linux version 2.6.25-rc2-10953-g52065cd > > > (adrian@bossclass) (gcc version 3.4.6) #511 PREEMPT Sat Feb 16 18:31:43 > > > GMT 2008 > > > [ 0.000000] console [sercon0] enabled > > > [ 0.000000] Booting machvec: Sega Dreamcast > > > > > > adrian@bossclass:~/gdrom-dev$ git bisect good > > e036eaa681a17f71b64f6d9040fe605555623919 is first bad commit > > commit e036eaa681a17f71b64f6d9040fe605555623919 > > Author: Magnus Damm <magnus.damm@gmail.com> > > Date: Thu Feb 14 13:52:43 2008 +0900 > > > > sh: use ctrl_in/out for on chip pci access > > > > This patch makes sure ctrl_inN/outN are used instead of inN/outN for > > on chip > > pci registers. Without this patch addresses may be adjusted using > > the value > > in generic_io_base. This patch makes it possible to set > > generic_io_base and > > have pci without reading and writing all over the place. > > > > Signed-off-by: Magnus Damm <damm@igel.co.jp> > > Acked-by: Katsuya MATSUBARA <matsu@igel.co.jp> > > Signed-off-by: Paul Mundt <lethal@linux-sh.org> > > > > :040000 040000 17a9f8181301e3a082d8a1a2fdef9b13ff1185e4 > > 87e4a2e912be56b0d12e8a92db9489d6615c31f7 M arch > > Thanks for tracking this down and sorry for breaking the dreamcast pci driver. > > Most code for the dreamcast currently do direct register access using > ctrl_inN/outN or readN/writeN. Only a few places use inN/outN and > depend on the value of generic_io_base. Doing inN/outN is ok (but > outdated, use ioreadN/iowriteN instead) in a portable pci/isa driver, > but it doesn't make sense for any dreamcast specific code to rely on > generic_io_base. For the dreamcast we already know the address at > compile time so doing adjustment during runtime is just unnecessary > overhead. > > It is of course possible to revert the dreamcast-specific bits of the > commit you pointed out, but I think the change for the dreamcast makes > sense since it makes the code both faster and more uniform. > > However, at this point it is broken. Sorry about that. I just looked > through all upstream dreamcast-specific code I could find and irq.c is > now the only file that does inN/outN. I've attached a patch that makes > the irq code independent of generic_io_base. There is also another > patch attached that adjusts the addresses of the pci register. > Together they should solve the problem you are seeing. Please try them > on top of 2.6.25-rc2. > > With these patches io ports count from 0 -> 8k-1 instead of being a > pointer. We currently rely on generic_io_base logic but that will be > changed in the future. > Magnus, This fixed the original problem but re-introduced the problem I had before with not having a a working nic - so it's stole broken atm: [ 2.220263] NET: Registered protocol family 17 [ 2.224976] RPC: Registered udp transport module. [ 2.228064] RPC: Registered tcp transport module. [ 2.740995] IP-Config: Failed to open eth0 [ 2.744076] IP-Config: No network devices available. [ 2.748232] Looking up port of RPC 100003/2 on 192.168.61.50 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Current git very broken on the Dreamcast 2008-02-16 18:38 Current git very broken on the Dreamcast Adrian McMenamin @ 2008-02-17 19:40 ` Kristoffer Ericson 2008-02-17 19:40 ` Kristoffer Ericson 1 sibling, 0 replies; 12+ messages in thread From: Kristoffer Ericson @ 2008-02-17 19:40 UTC (permalink / raw) To: Adrian McMenamin; +Cc: linux-sh, LKML On Sat, 16 Feb 2008 18:38:00 +0000 Adrian McMenamin <adrian@newgolddream.dyndns.info> wrote: > Will seek to bisect this, but I have just updated my sources to the > latest git and it is not booting at all on the Dreamcast. > > With early printk on, I get nothing more than this before an instant > reboot: I haven't tested anything after 2.6.24 vanilla which works fine. A bisect sounds like a good idea since you got pretty much zero clues. > > [ 0.000000] Linux version 2.6.25-rc2-10953-g52065cd > (adrian@bossclass) (gcc version 3.4.6) #511 PREEMPT Sat Feb 16 18:31:43 > GMT 2008 > [ 0.000000] console [sercon0] enabled > [ 0.000000] Booting machvec: Sega Dreamcast > > > - > To unsubscribe from this list: send the line "unsubscribe linux-sh" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Current git very broken on the Dreamcast @ 2008-02-17 19:40 ` Kristoffer Ericson 0 siblings, 0 replies; 12+ messages in thread From: Kristoffer Ericson @ 2008-02-17 19:40 UTC (permalink / raw) To: Adrian McMenamin; +Cc: linux-sh, LKML On Sat, 16 Feb 2008 18:38:00 +0000 Adrian McMenamin <adrian@newgolddream.dyndns.info> wrote: > Will seek to bisect this, but I have just updated my sources to the > latest git and it is not booting at all on the Dreamcast. > > With early printk on, I get nothing more than this before an instant > reboot: I haven't tested anything after 2.6.24 vanilla which works fine. A bisect sounds like a good idea since you got pretty much zero clues. > > [ 0.000000] Linux version 2.6.25-rc2-10953-g52065cd > (adrian@bossclass) (gcc version 3.4.6) #511 PREEMPT Sat Feb 16 18:31:43 > GMT 2008 > [ 0.000000] console [sercon0] enabled > [ 0.000000] Booting machvec: Sega Dreamcast > > > - > To unsubscribe from this list: send the line "unsubscribe linux-sh" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2008-02-18 20:11 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-02-16 18:38 Current git very broken on the Dreamcast Adrian McMenamin 2008-02-16 19:48 ` Adrian McMenamin 2008-02-16 19:59 ` Adrian McMenamin 2008-02-17 19:42 ` Kristoffer Ericson 2008-02-17 19:42 ` Kristoffer Ericson 2008-02-17 19:55 ` Kristoffer Ericson 2008-02-17 19:55 ` Kristoffer Ericson 2008-02-18 8:57 ` Magnus Damm 2008-02-18 8:57 ` Magnus Damm 2008-02-18 20:11 ` Adrian McMenamin 2008-02-17 19:40 ` Kristoffer Ericson 2008-02-17 19:40 ` Kristoffer Ericson
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.