sh: Update dma-sh api
PATCH v2 1/1 sh: Update dma-sh api
Add DMA support of new SH CPU and the change of definition. And add Multi IRQ support for SH7763/64/80/85.
--- Makefile | 4 +- arch/sh/drivers/dma/Kconfig | 8 +- arch/sh/drivers/dma/dma-sh.c | 172 ++++++++++++++++++++---------- arch/sh/drivers/dma/dma-sh.h | 75 ------------- arch/sh/include/asm/dma-sh.h | 117 ++++++++++++++++++++ arch/sh/include/asm/dma.h | 8 +- arch/sh/include/cpu-sh3/cpu/dma.h | 17 +-- arch/sh/include/cpu-sh4/cpu/dma-sh4a.h | 94 ++++++++++++++++ arch/sh/include/cpu-sh4/cpu/dma-sh7780.h | 39 ------- arch/sh/include/cpu-sh4/cpu/dma.h | 30 +++--- 10 files changed, 354 insertions(+), 210 deletions(-) delete mode 100644 arch/sh/drivers/dma/dma-sh.h create mode 100644 arch/sh/include/asm/dma-sh.h create mode 100644 arch/sh/include/cpu-sh4/cpu/dma-sh4a.h delete mode 100644 arch/sh/include/cpu-sh4/cpu/dma-sh7780.h
Makefile +1 -2
@@ -190,8 +190,8 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \ # Default value for CROSS_COMPILE is not to prefix executables # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile export KBUILD_BUILDHOST := $(SUBARCH) -ARCH ?= $(SUBARCH) -CROSS_COMPILE ?+ARCH ?= sh +CROSS_COMPILE ?= sh4-unknown-linux-gnu- # Architecture as present in compile.h UTS_MACHINE := $(ARCH)
arch/sh/drivers/dma/Kconfig +4 -4
@@ -12,10 +12,10 @@ config SH_DMA config NR_ONCHIP_DMA_CHANNELS int depends on SH_DMA - default "6" if CPU_SUBTYPE_SH7720 || CPU_SUBTYPE_SH7721 - default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R - default "12" if CPU_SUBTYPE_SH7780 - default "4" + default "4" if CPU_SUBTYPE_SH7750 || CPU_SUBTYPE_SH7751 || CPU_SUBTYPE_SH7750S + default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R || CPU_SUBTYPE_SH7760 + default "12" if CPU_SUBTYPE_SH7723 || CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785 + default "6" help This allows you to specify the number of channels that the on-chip DMAC supports. This will be 4 for SH7750/SH7751 and 8 for the
arch/sh/drivers/dma/dma-sh.c +115 -57
296 lines not on this page · raw message
arch/sh/drivers/dma/dma-sh.h deleted +0 -75
75 lines not on this page · raw message
arch/sh/include/asm/dma-sh.h new file +117 -0
117 lines not on this page · raw message
arch/sh/include/asm/dma.h +2 -6
@@ -23,12 +23,8 @@/* But... */ /* XXX: This is not applicable to SuperH, just needed for alloc_bootmem */ #define MAX_DMA_ADDRESS (PAGE_OFFSET+0x10000000) - -#ifdef CONFIG_NR_DMA_CHANNELS -# define MAX_DMA_CHANNELS (CONFIG_NR_DMA_CHANNELS) -#else -# define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS) -#endif +/* MAX DMA Channel */ +#define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS)/* * Read and write modes can mean drastically different things depending on the
arch/sh/include/cpu-sh3/cpu/dma.h +6 -11
@@ -1,22 +1,17 @@#ifndef __ASM_CPU_SH3_DMA_H#define __ASM_CPU_SH3_DMA_H -#if defined(CONFIG_CPU_SUBTYPE_SH7720 ) || \ - defined(CONFIG_CPU_SUBTYPE_SH7721 ) -#define SH_DMAC_BASE 0xa4010020 -#else -#define SH_DMAC_BASE 0xa4000020 + defined(CONFIG_CPU_SUBTYPE_SH7721 ) || \ + defined(CONFIG_CPU_SUBTYPE_SH7710 ) || \ + defined(CONFIG_CPU_SUBTYPE_SH7712 ) +#define SH_DMAC_BASE0 0xa4010020 +#else /* SH7705/06/07/09 */ +#define SH_DMAC_BASE0 0xa4000020#endif -#if defined(CONFIG_CPU_SUBTYPE_SH7720 ) || defined(CONFIG_CPU_SUBTYPE_SH7709 )#define DMTE0_IRQ 48 -#define DMTE1_IRQ 49 -#define DMTE2_IRQ 50 -#define DMTE3_IRQ 51#define DMTE4_IRQ 76 -#define DMTE5_IRQ 77 -#endif /* Definitions for the SuperH DMAC */ #define TM_BURST 0x00000020
arch/sh/include/cpu-sh4/cpu/dma-sh4a.h new file +94 -0
94 lines not on this page · raw message
arch/sh/include/cpu-sh4/cpu/dma-sh7780.h deleted +0 -39
@@ -1,39 +0,0 @@ -#ifndef __ASM_SH_CPU_SH4_DMA_SH7780_H -#define __ASM_SH_CPU_SH4_DMA_SH7780_H - -#define REQ_HE 0x000000C0 -#define REQ_H 0x00000080 -#define REQ_LE 0x00000040 -#define TM_BURST 0x0000020 -#define TS_8 0x00000000 -#define TS_16 0x00000008 -#define TS_32 0x00000010 -#define TS_16BLK 0x00000018 -#define TS_32BLK 0x00100000 - -/* -* The SuperH DMAC supports a number of transmit sizes, we list them here, -* with their respective values as they appear in the CHCR registers. -* -* Defaults to a 64-bit transfer size. -*/ -enum { -XMIT_SZ_8BIT , -XMIT_SZ_16BIT , -XMIT_SZ_32BIT , -XMIT_SZ_128BIT , -XMIT_SZ_256BIT , -}; - -/* -* The DMA count is defined as the number of bytes to transfer. -*/ -static unsigned int ts_shift[]__maybe_unused = { - [XMIT_SZ_8BIT ] =0 , - [XMIT_SZ_16BIT ] =1 , - [XMIT_SZ_32BIT ] =2 , - [XMIT_SZ_128BIT ] =4 , - [XMIT_SZ_256BIT ] =5 , -}; - -#endif /* __ASM_SH_CPU_SH4_DMA_SH7780_H */
arch/sh/include/cpu-sh4/cpu/dma.h +14 -16
@@ -1,31 +1,29 @@#ifndef __ASM_CPU_SH4_DMA_H#define __ASM_CPU_SH4_DMA_H -#define DMAOR_INIT ( 0x8000 | DMAOR_DME ) -/* SH7751/7760/7780 DMA IRQ sources */ -#define DMTE0_IRQ 34 -#define DMTE1_IRQ 35 -#define DMTE2_IRQ 36 -#define DMTE3_IRQ 37 -#define DMTE4_IRQ 44 -#define DMTE5_IRQ 45 -#define DMTE6_IRQ 46 -#define DMTE7_IRQ 47 -#define DMAE_IRQ 38#ifdef CONFIG_CPU_SH4A -#define SH_DMAC_BASE 0xfc808020 +#define DMAOR_INIT (DMAOR_DME)#define CHCR_TS_MASK 0x18#define CHCR_TS_SHIFT 3 -#include <cpu/dma-sh7780.h> -#else -#define SH_DMAC_BASE 0xffa00000 +#include <cpu/dma-sh4a.h> +#else /* CONFIG_CPU_SH4A */ +/* +* SH7750/SH7751/SH7760 +*/ +#define DMTE0_IRQ 34 +#define DMTE4_IRQ 44 +#define DMTE6_IRQ 46 +#define DMAE0_IRQ 38 +#define DMAOR_INIT (0x8000|DMAOR_DME) +#define SH_DMAC_BASE0 0xffa00000 +#define SH_DMAC_BASE1 0xffa00070/* Definitions for the SuperH DMAC */ -#define TM_BURST 0x0000080 +#define TM_BURST 0x00000080#define TS_8 0x00000010#define TS_16 0x00000020#define TS_32 0x00000030
Signature · 1 line
1.6.1.3
PATCH v2 1/1 sh: Update dma-sh api
Add DMA support of new SH CPU and the change of definition. And add Multi IRQ support for SH7763/64/80/85.
---
V2: Remove Makefile
arch/sh/drivers/dma/Kconfig | 8 +- arch/sh/drivers/dma/dma-sh.c | 172 ++++++++++++++++++++---------- arch/sh/drivers/dma/dma-sh.h | 75 ------------- arch/sh/include/asm/dma-sh.h | 117 ++++++++++++++++++++ arch/sh/include/asm/dma.h | 8 +- arch/sh/include/cpu-sh3/cpu/dma.h | 17 +-- arch/sh/include/cpu-sh4/cpu/dma-sh4a.h | 94 ++++++++++++++++ arch/sh/include/cpu-sh4/cpu/dma-sh7780.h | 39 ------- arch/sh/include/cpu-sh4/cpu/dma.h | 30 +++--- 9 files changed, 352 insertions(+), 208 deletions(-) delete mode 100644 arch/sh/drivers/dma/dma-sh.h create mode 100644 arch/sh/include/asm/dma-sh.h create mode 100644 arch/sh/include/cpu-sh4/cpu/dma-sh4a.h delete mode 100644 arch/sh/include/cpu-sh4/cpu/dma-sh7780.h
arch/sh/drivers/dma/Kconfig +4 -4
@@ -12,10 +12,10 @@ config SH_DMA config NR_ONCHIP_DMA_CHANNELS int depends on SH_DMA - default "6" if CPU_SUBTYPE_SH7720 || CPU_SUBTYPE_SH7721 - default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R - default "12" if CPU_SUBTYPE_SH7780 - default "4" + default "4" if CPU_SUBTYPE_SH7750 || CPU_SUBTYPE_SH7751 || CPU_SUBTYPE_SH7750S + default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R || CPU_SUBTYPE_SH7760 + default "12" if CPU_SUBTYPE_SH7723 || CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785 + default "6" help This allows you to specify the number of channels that the on-chip DMAC supports. This will be 4 for SH7750/SH7751 and 8 for the
arch/sh/drivers/dma/dma-sh.c +115 -57
296 lines not on this page · raw message
arch/sh/drivers/dma/dma-sh.h deleted +0 -75
75 lines not on this page · raw message
arch/sh/include/asm/dma-sh.h new file +117 -0
117 lines not on this page · raw message
arch/sh/include/asm/dma.h +2 -6
@@ -23,12 +23,8 @@/* But... */ /* XXX: This is not applicable to SuperH, just needed for alloc_bootmem */ #define MAX_DMA_ADDRESS (PAGE_OFFSET+0x10000000) - -#ifdef CONFIG_NR_DMA_CHANNELS -# define MAX_DMA_CHANNELS (CONFIG_NR_DMA_CHANNELS) -#else -# define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS) -#endif +/* MAX DMA Channel */ +#define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS)/* * Read and write modes can mean drastically different things depending on the
arch/sh/include/cpu-sh3/cpu/dma.h +6 -11
@@ -1,22 +1,17 @@#ifndef __ASM_CPU_SH3_DMA_H#define __ASM_CPU_SH3_DMA_H -#if defined(CONFIG_CPU_SUBTYPE_SH7720 ) || \ - defined(CONFIG_CPU_SUBTYPE_SH7721 ) -#define SH_DMAC_BASE 0xa4010020 -#else -#define SH_DMAC_BASE 0xa4000020 + defined(CONFIG_CPU_SUBTYPE_SH7721 ) || \ + defined(CONFIG_CPU_SUBTYPE_SH7710 ) || \ + defined(CONFIG_CPU_SUBTYPE_SH7712 ) +#define SH_DMAC_BASE0 0xa4010020 +#else /* SH7705/06/07/09 */ +#define SH_DMAC_BASE0 0xa4000020#endif -#if defined(CONFIG_CPU_SUBTYPE_SH7720 ) || defined(CONFIG_CPU_SUBTYPE_SH7709 )#define DMTE0_IRQ 48 -#define DMTE1_IRQ 49 -#define DMTE2_IRQ 50 -#define DMTE3_IRQ 51#define DMTE4_IRQ 76 -#define DMTE5_IRQ 77 -#endif /* Definitions for the SuperH DMAC */ #define TM_BURST 0x00000020
arch/sh/include/cpu-sh4/cpu/dma-sh4a.h new file +94 -0
94 lines not on this page · raw message
arch/sh/include/cpu-sh4/cpu/dma-sh7780.h deleted +0 -39
@@ -1,39 +0,0 @@ -#ifndef __ASM_SH_CPU_SH4_DMA_SH7780_H -#define __ASM_SH_CPU_SH4_DMA_SH7780_H - -#define REQ_HE 0x000000C0 -#define REQ_H 0x00000080 -#define REQ_LE 0x00000040 -#define TM_BURST 0x0000020 -#define TS_8 0x00000000 -#define TS_16 0x00000008 -#define TS_32 0x00000010 -#define TS_16BLK 0x00000018 -#define TS_32BLK 0x00100000 - -/* -* The SuperH DMAC supports a number of transmit sizes, we list them here, -* with their respective values as they appear in the CHCR registers. -* -* Defaults to a 64-bit transfer size. -*/ -enum { -XMIT_SZ_8BIT , -XMIT_SZ_16BIT , -XMIT_SZ_32BIT , -XMIT_SZ_128BIT , -XMIT_SZ_256BIT , -}; - -/* -* The DMA count is defined as the number of bytes to transfer. -*/ -static unsigned int ts_shift[]__maybe_unused = { - [XMIT_SZ_8BIT ] =0 , - [XMIT_SZ_16BIT ] =1 , - [XMIT_SZ_32BIT ] =2 , - [XMIT_SZ_128BIT ] =4 , - [XMIT_SZ_256BIT ] =5 , -}; - -#endif /* __ASM_SH_CPU_SH4_DMA_SH7780_H */
arch/sh/include/cpu-sh4/cpu/dma.h +14 -16
@@ -1,31 +1,29 @@#ifndef __ASM_CPU_SH4_DMA_H#define __ASM_CPU_SH4_DMA_H -#define DMAOR_INIT ( 0x8000 | DMAOR_DME ) -/* SH7751/7760/7780 DMA IRQ sources */ -#define DMTE0_IRQ 34 -#define DMTE1_IRQ 35 -#define DMTE2_IRQ 36 -#define DMTE3_IRQ 37 -#define DMTE4_IRQ 44 -#define DMTE5_IRQ 45 -#define DMTE6_IRQ 46 -#define DMTE7_IRQ 47 -#define DMAE_IRQ 38#ifdef CONFIG_CPU_SH4A -#define SH_DMAC_BASE 0xfc808020 +#define DMAOR_INIT (DMAOR_DME)#define CHCR_TS_MASK 0x18#define CHCR_TS_SHIFT 3 -#include <cpu/dma-sh7780.h> -#else -#define SH_DMAC_BASE 0xffa00000 +#include <cpu/dma-sh4a.h> +#else /* CONFIG_CPU_SH4A */ +/* +* SH7750/SH7751/SH7760 +*/ +#define DMTE0_IRQ 34 +#define DMTE4_IRQ 44 +#define DMTE6_IRQ 46 +#define DMAE0_IRQ 38 +#define DMAOR_INIT (0x8000|DMAOR_DME) +#define SH_DMAC_BASE0 0xffa00000 +#define SH_DMAC_BASE1 0xffa00070/* Definitions for the SuperH DMAC */ -#define TM_BURST 0x0000080 +#define TM_BURST 0x00000080#define TS_8 0x00000010#define TS_16 0x00000020#define TS_32 0x00000030
Signature · 1 line
1.6.1.3
Quoted 7 lines · Nobuhiro Iwamatsu
arch/sh/include/asm/dma.h +0
-0@@ -23,12 +23,8 @@/* But... */ /* XXX: This is not applicable to SuperH, just needed for alloc_bootmem */
arch/sh/include/asm/dma.h line 28
Quoted 10 lines
arch/sh/include/asm/dma.h +2
-6#define MAX_DMA_ADDRESS (PAGE_OFFSET+0x10000000) - -#ifdef CONFIG_NR_DMA_CHANNELS -# define MAX_DMA_CHANNELS (CONFIG_NR_DMA_CHANNELS) -#else -# define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS) -#endif +/* MAX DMA Channel */ +#define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS)
This breaks the Dreamcast, which contains multiple DMACs and needs more than the on-chip channels managed by the DMA API. As the Dreamcast is the primary user of this code, please make sure you do not break its use of the API. It would also be good if someone can verify whether the G2 and PVR2 DMA still work after this patch is applied.
On the other hand, I don't know how much we really want to be doing here in the first place. All new development should be happening on the dmaengine API instead, this code is mostly for keeping the existing users limping along, and not much else. Matt Fleming was doing some work there, it would be preferable to see that code updated and merged rather than work spent on the old DMA API.
Quoted 17 lines · Paul Mundt
Quoted 6 lines · Nobuhiro Iwamatsu
arch/sh/include/asm/dma.h +0
-0@@ -23,12 +23,8 @@/* But... */ arch/sh/include/asm/dma.h line 27
Quoted 10 lines
arch/sh/include/asm/dma.h +2
-6/* XXX: This is not applicable to SuperH, just needed for alloc_bootmem */ #define MAX_DMA_ADDRESS (PAGE_OFFSET+0x10000000) - -#ifdef CONFIG_NR_DMA_CHANNELS -# define MAX_DMA_CHANNELS (CONFIG_NR_DMA_CHANNELS) -#else -# define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS) -#endif +/* MAX DMA Channel */ +#define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS)
Thank you for your comments.
Quoted 6 lines
Quoted 1 line
This breaks the Dreamcast, which contains multiple DMACs and needs more than the on-chip channels managed by the DMA API. As the Dreamcast is the primary user of this code, please make sure you do not break its use of the API. It would also be good if someone can verify whether the G2 and PVR2 DMA still work after this patch is applied.
OK. I will fix this point.
Quoted 8 lines
On the other hand, I don't know how much we really want to be doing here in the first place. All new development should be happening on the dmaengine API instead, this code is mostly for keeping the existing users limping along, and not much else. Matt Fleming was doing some work there, it would be preferable to see that code updated and merged rather than work spent on the old DMA API.
I see.
I have already been writing the driver of DMAengine, and I am testing. To make old DMA-API coexist with dma engine in these patches, I wrote.
Best regards,
Nobuhiro
Quoted 40 lines · Nobuhiro Iwamatsu
Quoted 10 lines · Paul Mundt
Quoted 9 lines · Nobuhiro Iwamatsu
arch/sh/include/asm/dma.h +0
-0@@ -23,12 +23,8 @@/* But... */ /* XXX: This is not applicable to SuperH, just needed for alloc_bootmem */ #define MAX_DMA_ADDRESS (PAGE_OFFSET+0x10000000)Quoted 8 lines
arch/sh/include/asm/dma.h line 27
Quoted 8 lines
arch/sh/include/asm/dma.h +2
-6- -#ifdef CONFIG_NR_DMA_CHANNELS -# define MAX_DMA_CHANNELS (CONFIG_NR_DMA_CHANNELS) -#else -# define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS) -#endif +/* MAX DMA Channel */ +#define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS)Thank you for your comments.
Quoted 6 lines
Quoted 1 line
This breaks the Dreamcast, which contains multiple DMACs and needs more than the on-chip channels managed by the DMA API. As the Dreamcast is the primary user of this code, please make sure you do not break its use of the API. It would also be good if someone can verify whether the G2 and PVR2 DMA still work after this patch is applied.
OK. I will fix this point.
Quoted 8 lines
On the other hand, I don't know how much we really want to be doing here in the first place. All new development should be happening on the dmaengine API instead, this code is mostly for keeping the existing users limping along, and not much else. Matt Fleming was doing some work there, it would be preferable to see that code updated and merged rather than work spent on the old DMA API.
Quoted 4 lines
I see.
I have already been writing the driver of DMAengine, and I am testing. To make old DMA-API coexist with dma engine in these patches, I wrote.
Ah, ok, I wasn't aware that that was what your intention was. In that case, once the Dreamcast fallout is fixed, I'll merge these.
2009/3/10 Paul Mundt <[email protected]>:
Quoted 3 lines · Nobuhiro Iwamatsu
Quoted 2 lines
Quoted 1 line · Paul Mundt
On Tue, Mar 10, 2009 at 01:48:14PM +0900, Nobuhiro Iwamatsu wrote:
...
Quoted 6 lines
Quoted 4 lines
I see.
I have already been writing the driver of DMAengine, and I am testing. To make old DMA-API coexist with dma engine in these patches, I wrote.Ah, ok, I wasn't aware that that was what your intention was. In that case, once the Dreamcast fallout is fixed, I'll merge these.
Just come across this. I am happy to test any new patch on the Dreamcast once it's done. Just let me know and kick me if I don't respond.
Quoted 11 lines · Adrian McMenamin
2009/3/10 Paul Mundt <[email protected]>:
Quoted 3 lines · Nobuhiro Iwamatsu
Quoted 2 lines
Quoted 1 line · Paul Mundt
On Tue, Mar 10, 2009 at 01:48:14PM +0900, Nobuhiro Iwamatsu wrote:
...
Quoted 4 lines
Quoted 4 lines
I see.
I have already been writing the driver of DMAengine, and I am testing. To make old DMA-API coexist with dma engine in these patches, I wrote.
Quoted 7 lines
Quoted 2 lines
Ah, ok, I wasn't aware that that was what your intention was. In that case, once the Dreamcast fallout is fixed, I'll merge these.
Just come across this. I am happy to test any new patch on the Dreamcast once it's done. Just let me know and kick me if I don't respond.
The updated version of this is merged now, so please see if there are any regressions in the current git tree.
Quoted 16 lines · Paul Mundt
Quoted 15 lines · Adrian McMenamin
2009/3/10 Paul Mundt <[email protected]>:
Quoted 3 lines · Nobuhiro Iwamatsu
Quoted 2 lines
Quoted 1 line · Paul Mundt
On Tue, Mar 10, 2009 at 01:48:14PM +0900, Nobuhiro Iwamatsu wrote:
...
Quoted 6 lines
Quoted 4 lines
I see.
I have already been writing the driver of DMAengine, and I am testing. To make old DMA-API coexist with dma engine in these patches, I wrote.Ah, ok, I wasn't aware that that was what your intention was. In that case, once the Dreamcast fallout is fixed, I'll merge these.
Quoted 6 lines
Quoted 3 lines
Just come across this. I am happy to test any new patch on the Dreamcast once it's done. Just let me know and kick me if I don't respond.
The updated version of this is merged now, so please see if there are any regressions in the current git tree.
Doesn't work I'm afraid:
[ 0.000000] Linux version 2.6.29-rc7-00215-g600fa57 (adrian@bossclass) (gcc version 4.2.2) #1 PREEMPT Sat Mar 14 00:53:47 GMT 2009 [ 0.000000] Boot params: [ 0.000000] ... MOUNT_ROOT_RDONLY - 91f0c75f [ 0.000000] ... RAMDISK_FLAGS - e1ff3018 [ 0.000000] ... ORIG_ROOT_DEV - 89093610 [ 0.000000] ... LOADER_TYPE - 3612e108 [ 0.000000] ... INITRD_START - 46088904 [ 0.000000] ... INITRD_SIZE - 6002306c [ 0.000000] console [sercon0] enabled [ 0.000000] Booting machvec: Sega Dreamcast [ 0.000000] Node 0: start_pfn = 0xc000, low = 0xd000 [ 0.000000] Zone PFN ranges: [ 0.000000] Normal 0x0000c000 -> 0x0000d000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[1] active PFN ranges [ 0.000000] 0: 0x0000c000 -> 0x0000d000 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 4064 [ 0.000000] Kernel command line: root=/dev/nfs rw nfsroot2.168.61.50:/home/adrian/debdist ip=dhcp earlyprintk=serial video=pvr2fb:640x480-32@60 console=ttySC1 panic=7 [ 0.000000] PID hash table entries: 64 (order: 6, 256 bytes) [ 0.000000] Using tmu for system timer [ 0.004322] Console: colour dummy device 80x25 [ 0.009399] Dentry cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.016935] Inode-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.026888] Memory: 12400k/16384k available (2456k kernel code, 623k data, 124k init) [ 0.035501] PVR0205c1 CVR 000000 PRR 000000 [ 0.040841] I-cache : n_ways=1 n_sets%6 way_incr�92 [ 0.046567] I-cache : entry_mask=0x00001fe0 alias_mask=0x00001000 n_aliases=2 [ 0.054406] D-cache : n_ways=1 n_setsQ2 way_incr384 [ 0.060231] D-cache : entry_mask=0x00003fe0 alias_mask=0x00003000 n_aliases=4 [ 0.068538] SLUB: Genslabs, HWalign2, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.077089] Calibrating delay loop (skipped)... 199.50 BogoMIPS PRESET (lpj99012) [ 0.086987] Mount-cache hash table entries: 512 [ 0.097040] CPU: SH7750 [ 0.128986] net_namespace: 296 bytes [ 0.134762] NET: Registered protocol family 16 [ 0.266443] bio: create slab <bio-0> at 0 [ 0.292390] DMA: Registering DMA API. [ 0.297156] DMAC Address Error0 request_irq fail [ 0.302362] Fault in unaligned fixup: 0000 [#1] [ 0.307267] Modules linked in: [ 0.310696] [ 0.312257] Pid : 1, Comm: swapper [ 0.316168] CPU : 0 Not tainted (2.6.29-rc7-00215-g600fa57 #1) [ 0.316197] [ 0.325248] PC is at request_dma+0x2c/0xc0 [ 0.329693] PR is at request_dma+0x1e/0xc0 [ 0.334162] PC : 8c1c40cc SP : 8cc1ff00 SR : 400001f1 TEA : 0000001a [ 0.341421] R0 : 00000000 R1 : 40000101 R2 : 8c2feb94 R3 : 8c2feb94 [ 0.348673] R4 : 00000002 R5 : 8c2bed08 R6 : 8cc47c58 R7 : 00000000 [ 0.355926] R8 : ffffffea R9 : 00000000 R10 : 8c2bed08 R11 : 00000000 [ 0.363165] R12 : 8c315500 R13 : 8c323064 R14 : 8cc1ff00 [ 0.368990] MACH: 00000000 MACL: 00000a80 GBR : 00000000 PR : 8c1c40be [ 0.376220] [ 0.376234] Call trace: [ 0.380641] [<8c315516>] pvr2_dma_init+0x16/0x40 [ 0.385669] [<8c002060>] do_one_initcall+0x0/0x1a0 [ 0.390912] [<8c00208c>] do_one_initcall+0x2c/0x1a0 [ 0.396261] [<8c04d1ee>] register_irq_proc+0x6e/0xc0 [ 0.401696] [<8c04d27a>] init_irq_proc+0x3a/0x80 [ 0.406753] [<8c04d180>] register_irq_proc+0x0/0xc0 [ 0.412094] [<8c04a040>] irq_to_desc+0x0/0x40 [ 0.416863] [<8c304528>] kernel_init+0x68/0x120 [ 0.421908] [<8c002060>] do_one_initcall+0x0/0x1a0 [ 0.427122] [<8c003c88>] kernel_thread_helper+0x8/0x20 [ 0.432760] [<8c3044c0>] kernel_init+0x0/0x120 [ 0.437621] [<8c003c80>] kernel_thread_helper+0x0/0x20 [ 0.443317] [ 0.444873] Code: [ 0.446971] 8c1c40c6: ldc r0, sr [ 0.451456] 8c1c40c8: mov r1, r0 [ 0.455911] 8c1c40ca: and #-16, r0 [ 0.460557] ->8c1c40cc: mov.l @(48,r8), r9 [ 0.465623] 8c1c40ce: mov #1, r1 [ 0.470090] 8c1c40d0: tst r0, r0 [ 0.474580] 8c1c40d2: mov.l r1, @(48,r8) [ 0.479644] 8c1c40d4: bt 8c1c40e0 [ 0.484259] 8c1c40d6: and #-16, r0 [ 0.488887] [ 0.490453] Process: swapper (pid: 1, stack limit = 8cc1e001) [ 0.496744] Stack: (0x8cc1ff00 to 0x8cc20000) [ 0.501503] ff00: 8c315516 8cc1ff18 8c321718 8c32148c 8c002060 8c321530 8c00208c 8cc1ff20 [ 0.510632] ff20: 00000001 00000000 8c32ba48 8cc1fef8 8cc47600 8cc46d20 8c04d1ee 8cc1ff48 [ 0.519864] ff40: 8c2ee0a4 8cc1ff4a 3431ff14 00000032 00000000 8c04d27a 8cc1ff6c 8c04d180 [ 0.529019] ff60: 8c04a040 8c304528 8cc1ff84 00000000 00000000 8c321718 8c32148c 8c002060 [ 0.538237] ff80: 8c321530 8c003c88 8cc1ff9c 00000000 00000000 00000000 00000000 00000000 [ 0.547379] ffa0: 00000000 00000000 00000000 00000000 00000000 00000000 8c3044c0 00000000 [ 0.556470] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 0.565759] ffe0: 8cc1ffa4 8c003c80 00000000 40000000 00000000 00000000 00000000 00000000 [ 0.575044] ---[ end trace 4eaa2a86a8e2da22 ]--- [ 0.580220] Kernel panic - not syncing: Attempted to kill init! [ 0.586833] Rebooting in 7 seconds..
0x8c1c40cc corresponds to arch/sh/include/asm/cmpxchg-irq.h:9
0x8c1c40be is arch/sh/drivers/dma/dma-api.c:198
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi, Adrian.
Thank you for your test!.
2009/3/14 Adrian McMenamin <[email protected]>:
Quoted 120 lines · Paul Mundt
Quoted 16 lines · Adrian McMenamin
Quoted 15 lines
2009/3/10 Paul Mundt <[email protected]>:
Quoted 3 lines · Nobuhiro Iwamatsu
Quoted 2 lines
Quoted 1 line · Paul Mundt
On Tue, Mar 10, 2009 at 01:48:14PM +0900, Nobuhiro Iwamatsu wrote:
...
Quoted 6 lines
Quoted 4 lines
I see.
I have already been writing the driver of DMAengine, and I am testing. To make old DMA-API coexist with dma engine in these patches, I wrote.Ah, ok, I wasn't aware that that was what your intention was. In that case, once the Dreamcast fallout is fixed, I'll merge these.
Quoted 6 lines
Quoted 3 lines
Just come across this. I am happy to test any new patch on the Dreamcast once it's done. Just let me know and kick me if I don't respond.
The updated version of this is merged now, so please see if there are any regressions in the current git tree.
Doesn't work I'm afraid:
[ 0.000000] Linux version 2.6.29-rc7-00215-g600fa57 (adrian@bossclass) (gcc version 4.2.2) #1 PREEMPT Sat Mar 14 00:53:47 GMT 2009
[ 0.000000] Boot params:
[ 0.000000] ...MOUNT_ROOT_RDONLY-91f0c75f
[ 0.000000] ...RAMDISK_FLAGS-e1ff3018
[ 0.000000] ...ORIG_ROOT_DEV- 89093610
[ 0.000000] ...LOADER_TYPE-3612e108
[ 0.000000] ...INITRD_START- 46088904
[ 0.000000] ...INITRD_SIZE-6002306c
[ 0.000000] console [sercon0] enabled
[ 0.000000] Booting machvec: Sega Dreamcast
[ 0.000000] Node 0:start_pfn=0xc000, low =0xd000
[ 0.000000] Zone PFN ranges:
[ 0.000000] Normal0x0000c000->0x0000d000
[ 0.000000] Movable zone start PFN for each node
[ 0.000000] early_node_map[1] active PFN ranges
[ 0.000000] 0:0x0000c000->0x0000d000
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 4064
[ 0.000000] Kernel command line: root=/dev/nfs rw nfsroot2.168.61.50:/home/adrian/debdist ip=dhcp earlyprintk=serial video=pvr2fb:640x480-32@60 console=ttySC1 panic=7 [ 0.000000] PID hash table entries: 64 (order: 6, 256 bytes)
[ 0.000000] Using tmu for system timer
[ 0.004322] Console: colour dummy device 80x25
[ 0.009399] Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.016935] Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.026888] Memory: 12400k/16384k available (2456k kernel code, 623k data, 124k init)
[ 0.035501] PVR0205c1 CVR 000000 PRR 000000
[ 0.040841] I-cache : n_ways=1 n_sets%6 way_incr�92
[ 0.046567] I-cache : entry_mask=0x00001fe0 alias_mask=0x00001000 n_aliases=2
[ 0.054406] D-cache : n_ways=1n_setsQ2way_incr384
[ 0.060231] D-cache : entry_mask=0x00003fe0 alias_mask=0x00003000 n_aliases=4
[ 0.068538] SLUB: Genslabs, HWalign2, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.077089] Calibrating delay loop (skipped)... 199.50 BogoMIPS PRESET (lpj99012)
[ 0.086987] Mount-cache hash table entries: 512
[ 0.097040] CPU: SH7750
[ 0.128986]net_namespace: 296 bytes
[ 0.134762] NET: Registered protocol family 16
[ 0.266443] bio: create slab <bio-0> at 0
[ 0.292390] DMA: Registering DMA API.
[ 0.297156] DMAC Address Error0request_irqfail
[ 0.302362] Fault in unaligned fixup: 0000 [#1]
[ 0.307267] Modules linked in:
[ 0.310696]
[ 0.312257] Pid : 1, Comm: swapper
[ 0.316168] CPU : 0 Not tainted (2.6.29-rc7-00215-g600fa57 #1)
[ 0.316197]
[ 0.325248] PC is atrequest_dma+0x2c/0xc0
[ 0.329693] PR is atrequest_dma+0x1e/0xc0
[ 0.334162] PC :8c1c40ccSP :8cc1ff00SR :400001f1TEA :0000001a
[ 0.341421] R0 : 00000000 R1 : 40000101 R2 :8c2feb94R3 :8c2feb94
[ 0.348673] R4 : 00000002 R5 :8c2bed08R6 :8cc47c58R7 : 00000000
[ 0.355926] R8 : ffffffea R9 : 00000000 R10 :8c2bed08R11 : 00000000
[ 0.363165] R12 :8c315500R13 :8c323064R14 :8cc1ff00
[ 0.368990] MACH: 00000000 MACL:00000a80GBR : 00000000 PR :8c1c40be
[ 0.376220]
[ 0.376234] Call trace:
[ 0.380641] [<8c315516>]pvr2_dma_init+0x16/0x40
[ 0.385669] [<8c002060>]do_one_initcall+0x0/0x1a0
[ 0.390912] [<8c00208c>]do_one_initcall+0x2c/0x1a0
[ 0.396261] [<8c04d1ee>]register_irq_proc+0x6e/0xc0
[ 0.401696] [<8c04d27a>]init_irq_proc+0x3a/0x80
[ 0.406753] [<8c04d180>]register_irq_proc+0x0/0xc0
[ 0.412094] [<8c04a040>]irq_to_desc+0x0/0x40
[ 0.416863] [<8c304528>]kernel_init+0x68/0x120
[ 0.421908] [<8c002060>]do_one_initcall+0x0/0x1a0
[ 0.427122] [<8c003c88>]kernel_thread_helper+0x8/0x20
[ 0.432760] [<8c3044c0>]kernel_init+0x0/0x120
[ 0.437621] [<8c003c80>]kernel_thread_helper+0x0/0x20
[ 0.443317]
[ 0.444873] Code:
[ 0.446971]8c1c40c6: ldc r0, sr
[ 0.451456]8c1c40c8: mov r1, r0
[ 0.455911]8c1c40ca: and #-16, r0
[ 0.460557] ->8c1c40cc: mov.l @(48,r8), r9
[ 0.465623]8c1c40ce: mov #1, r1
[ 0.470090]8c1c40d0: tst r0, r0
[ 0.474580]8c1c40d2: mov.l r1, @(48,r8)
[ 0.479644]8c1c40d4: bt 8c1c40e0
[ 0.484259]8c1c40d6: and #-16, r0
[ 0.488887]
[ 0.490453] Process: swapper (pid: 1, stack limit =8cc1e001)
[ 0.496744] Stack: (0x8cc1ff00to0x8cc20000)
[ 0.501503] ff00:8c3155168cc1ff188c3217188c32148c8c0020608c3215308c00208c8cc1ff20
[ 0.510632] ff20: 00000001 000000008c32ba488cc1fef88cc476008cc46d208c04d1ee8cc1ff48
[ 0.519864] ff40:8c2ee0a48cc1ff4a3431ff1400000032 000000008c04d27a8cc1ff6c8c04d180
[ 0.529019] ff60:8c04a0408c3045288cc1ff8400000000 000000008c3217188c32148c8c002060
[ 0.538237] ff80:8c3215308c003c888cc1ff9c00000000 00000000 00000000 00000000 00000000
[ 0.547379] ffa0: 00000000 00000000 00000000 00000000 00000000 000000008c3044c000000000
[ 0.556470] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 0.565759] ffe0:8cc1ffa48c003c8000000000 40000000 00000000 00000000 00000000 00000000
[ 0.575044] ---[ end trace4eaa2a86a8e2da22]---
[ 0.580220] Kernel panic - not syncing: Attempted to kill init!
[ 0.586833] Rebooting in 7 seconds..
Quoted 3 lines
0x8c1c40cccorresponds toarch/sh/include/asm/cmpxchg-irq.h:9
0x8c1c40beisarch/sh/drivers/dma/dma-api.c:198
This is because DMA-api of sh775x does not support multi-irq. I will send a patch to revise.
Best regards,
Nobuhiro
Signature · 5 lines
Nobuhiro Iwamatsu -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html