[PATCH] DM365: fixed second serial port

2010-06-22 Thread thomas . koeller
From: Thomas Koeller 

The register base address for the second serial port (UART1) was
wrong.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c |4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index a146849..652f4b6 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -1020,6 +1020,8 @@ static struct davinci_timer_info dm365_timer_info = {
.clocksource_id = T0_TOP,
 };
 
+#define DM365_UART1_BASE   (IO_PHYS + 0x106000)
+
 static struct plat_serial8250_port dm365_serial_platform_data[] = {
{
.mapbase= DAVINCI_UART0_BASE,
@@ -1030,7 +1032,7 @@ static struct plat_serial8250_port 
dm365_serial_platform_data[] = {
.regshift   = 2,
},
{
-   .mapbase= DAVINCI_UART1_BASE,
+   .mapbase= DM365_UART1_BASE,
.irq= IRQ_UARTINT1,
.flags  = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
  UPF_IOREMAP,
-- 
1.7.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


Re: Shouldn't PINMUX configuration be board specific ?

2010-06-17 Thread Thomas Koeller
On Thursday 17 June 2010 11:22:29 Christophe Aeschlimann wrote:
> > Actually it is not SoC specific. Possible pinmux configurations are
> > defined in SoC specific files, then they are adjusted in board specific
> > files using 'davinci_cfg_reg' which is defined in mach/mux.h.
>
> Indeed. Thanks for the help.

Well, not quite. Your board design may very well require a configuration
not already included in the 'possible pinmux configurations', which
means you will have to extend these. After doing that several times I
decided to no longer use that mechanism in my board code and
instead set up pin multplexing by directly writing the pinmux
registers.

Thomas

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH] DM365: fixed second serial port

2010-06-07 Thread thomas . koeller
From: Thomas Koeller 

The register base address for the second serial port (UART1) was
wrong.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index a146849..2a4e614 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -1020,6 +1020,9 @@ static struct davinci_timer_info dm365_timer_info = {
.clocksource_id = T0_TOP,
 };
 
+#undef DAVINCI_UART1_BASE  /* Value in serial.h is wrong for DM365 */
+#define DAVINCI_UART1_BASE (IO_PHYS + 0x106000)
+
 static struct plat_serial8250_port dm365_serial_platform_data[] = {
{
.mapbase= DAVINCI_UART0_BASE,
-- 
1.7.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


Re: [PATCH] DM365: fixed second serial port

2010-06-07 Thread Thomas Koeller
On Monday 07 June 2010 16:27:38 thomas.koel...@baslerweb.com wrote:
> From: Thomas Koeller 
>
> The register base address for the second serial port (UART1) was
> wrong.
>
> Signed-off-by: Thomas Koeller 
> ---
Still struggling with git - please ignore

Thomas
___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


Re: [PATCH] DM365: fixed second serial port

2010-06-07 Thread Thomas Koeller
On Monday 07 June 2010 16:22:37 thomas.koel...@baslerweb.com wrote:
> From: Thomas Koeller 
>
> The register base address for the second serial port (UART1) was
> wrong.
>
> Signed-off-by: Thomas Koeller 
Sorry, was too quick to send. This patch is broken - please ignore.

Thomas
___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH] DM365: fixed second serial port

2010-06-07 Thread thomas . koeller
From: Thomas Koeller 

The register base address for the second serial port (UART1) was
wrong.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c |6 ++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index a146849..cf08950 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -41,6 +41,9 @@
 
 #define DM365_REF_FREQ 2400/* 24 MHz on the DM365 EVM */
 
+#undef DAVINCI_UART1_BASE  /* Value in serial.h is wrong for DM365 */
+#define DAVINCI_UART1_BASE (IO_PHYS + 0x106000)
+
 static struct pll_data pll1_data = {
.num= 1,
.phys_base  = DAVINCI_PLL1_BASE,
@@ -1020,6 +1023,9 @@ static struct davinci_timer_info dm365_timer_info = {
.clocksource_id = T0_TOP,
 };
 
+#undef DAVINCI_UART1_BASE  /* Value in serial.h is wrong for DM365 */
+#define DAVINCI_UART1_BASE (IO_PHYS + 0x106000)
+
 static struct plat_serial8250_port dm365_serial_platform_data[] = {
{
.mapbase= DAVINCI_UART0_BASE,
-- 
1.7.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH] DM365: fixed second serial port

2010-06-07 Thread thomas . koeller
From: Thomas Koeller 

The register base address for the second serial port (UART1) was
wrong.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c |6 ++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index a146849..cf08950 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -41,6 +41,9 @@
 
 #define DM365_REF_FREQ 2400/* 24 MHz on the DM365 EVM */
 
+#undef DAVINCI_UART1_BASE  /* Value in serial.h is wrong for DM365 */
+#define DAVINCI_UART1_BASE (IO_PHYS + 0x106000)
+
 static struct pll_data pll1_data = {
.num= 1,
.phys_base  = DAVINCI_PLL1_BASE,
@@ -1020,6 +1023,9 @@ static struct davinci_timer_info dm365_timer_info = {
.clocksource_id = T0_TOP,
 };
 
+#undef DAVINCI_UART1_BASE  /* Value in serial.h is wrong for DM365 */
+#define DAVINCI_UART1_BASE (IO_PHYS + 0x106000)
+
 static struct plat_serial8250_port dm365_serial_platform_data[] = {
{
.mapbase= DAVINCI_UART0_BASE,
-- 
1.7.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


Re: [PATCH] DM365: fixed second serial port

2010-06-04 Thread Thomas Koeller
On Wednesday 02 June 2010 08:22:46 Nori, Sekhar wrote:
> > Patch is against Kevin's tree.
>
> Such information (which is not relevant to the fix as such)
> should go below the --- in the patch. That way, it does not
> get included in the git logs once the patch is committed.
O.K., I will address that

> May be it is personal taste, but I like this way of fixing
> it better:
>
> diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
> index a146849..5dded5e 100644
> --- a/arch/arm/mach-davinci/dm365.c
> +++ b/arch/arm/mach-davinci/dm365.c
> @@ -1020,6 +1020,8 @@ static struct davinci_timer_info dm365_timer_info = {
> .clocksource_id = T0_TOP,
>  };
>
> +#define DAVINCI_DM365_UART1_BASE   0x01D06000
> +
>  static struct plat_serial8250_port dm365_serial_platform_data[] = {
> {
> .mapbase= DAVINCI_UART0_BASE,
> @@ -1030,7 +1032,7 @@ static struct plat_serial8250_port
> dm365_serial_platform_data[] = { .regshift   = 2,
> },
> {
> -   .mapbase= DAVINCI_UART1_BASE,
> +   .mapbase= DAVINCI_DM365_UART1_BASE,
> .irq= IRQ_UARTINT1,
> .flags  = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
>   UPF_IOREMAP,
Unless you insist, I would prefer to leave the define at its current place.
First of all, many people (including me) expect to find defines somewhere
near the beginning of a source file. More importantly, if a definition is
valid throughout the entire file, it is easier to later add code that also
depends on that definition, without having to move it again.

Thomas
___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH] DM365: fixed second serial port

2010-06-01 Thread thomas . koeller
From: Thomas Koeller 

The register base address for the second serial port (UART1) was
wrong.

Patch is against Kevin's tree.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index a146849..5b66441 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -41,6 +41,9 @@
 
 #define DM365_REF_FREQ 2400/* 24 MHz on the DM365 EVM */
 
+#undef DAVINCI_UART1_BASE  /* Value in serial.h is wrong for DM365 */
+#define DAVINCI_UART1_BASE (IO_PHYS + 0x106000)
+
 static struct pll_data pll1_data = {
.num= 1,
.phys_base  = DAVINCI_PLL1_BASE,
-- 
1.7.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH] DM365: fixed second serial port

2010-06-01 Thread thomas . koeller
From: Thomas Koeller 

The register base address for the second serial port (UART1) was
wrong.

Patch is against 'arago' tree.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 5645b4a..ffcf0c8 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -44,6 +44,9 @@
 
 #define DM365_REF_FREQ 2400/* 24 MHz on the DM365 EVM */
 
+#undef DAVINCI_UART1_BASE  /* Value in serial.h is wrong for DM365 */
+#define DAVINCI_UART1_BASE (IO_PHYS + 0x106000)
+
 static struct pll_data pll1_data = {
.num= 1,
.phys_base  = DAVINCI_PLL1_BASE,
-- 
1.7.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH] DM365: fixed second serial port

2010-05-31 Thread thomas . koeller
From: Thomas Koeller 

The register base address for the second serial pot (UART1) was
wrong.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/include/mach/serial.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-davinci/include/mach/serial.h 
b/arch/arm/mach-davinci/include/mach/serial.h
index a584697..9f5ea76 100644
--- a/arch/arm/mach-davinci/include/mach/serial.h
+++ b/arch/arm/mach-davinci/include/mach/serial.h
@@ -15,7 +15,7 @@
 
 #define DAVINCI_MAX_NR_UARTS   3
 #define DAVINCI_UART0_BASE (IO_PHYS + 0x2)
-#define DAVINCI_UART1_BASE (IO_PHYS + 0x20400)
+#define DAVINCI_UART1_BASE (IO_PHYS + 0x106000)
 #define DAVINCI_UART2_BASE (IO_PHYS + 0x20800)
 
 #define DA8XX_UART0_BASE   (IO_PHYS + 0x042000)
-- 
1.7.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH] Make UART1 work

2010-05-31 Thread thomas . koeller
From: Thomas Koeller 

Due to a wrong address definition, the second serial port on DaVinci DM365
was unusable. Not knowing whether the original definition was actually
correct for some other SoC I changed it unconditionally.

Patch is agains 'arago' tree.

Thomas Koeller (1):
  DM365: fixed second serial port

 arch/arm/mach-davinci/include/mach/serial.h |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 3/3] DM365: Added more PINMUX configurations for AEMIF

2010-05-11 Thread thomas . koeller
From: Thomas Koeller 

More complete AEMIF support for boards.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c|5 -
 arch/arm/mach-davinci/include/mach/mux.h |5 -
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 51ac8e1..01bc7b8 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -485,11 +485,14 @@ MUX_CFG(DM365,SD1_DATA0,  4,   22,3,1,
 false)
 MUX_CFG(DM365, I2C_SDA,3,   23,3,2, false)
 MUX_CFG(DM365, I2C_SCL,3,   21,3,2, false)
 
-MUX_CFG(DM365, AEMIF_AR,   2,   0, 3,1, false)
+MUX_CFG(DM365, AEMIF_AR_A14,   2,   0, 3,1, false)
+MUX_CFG(DM365, AEMIF_AR_BA0,   2,   0, 3,2, false)
 MUX_CFG(DM365, AEMIF_A3,   2,   2, 3,1, false)
 MUX_CFG(DM365, AEMIF_A7,   2,   4, 3,1, false)
 MUX_CFG(DM365, AEMIF_D15_8,2,   6, 1,1, false)
 MUX_CFG(DM365, AEMIF_CE0,  2,   7, 1,0, false)
+MUX_CFG(DM365, AEMIF_CE1,  2,   8, 1,0, false)
+MUX_CFG(DM365, AEMIF_WE_OE,2,   9, 1,0, false)
 
 MUX_CFG(DM365, MCBSP0_BDX, 0,   23,1,1, false)
 MUX_CFG(DM365, MCBSP0_X,   0,   22,1,1, false)
diff --git a/arch/arm/mach-davinci/include/mach/mux.h 
b/arch/arm/mach-davinci/include/mach/mux.h
index 07ef83b..de11aac 100644
--- a/arch/arm/mach-davinci/include/mach/mux.h
+++ b/arch/arm/mach-davinci/include/mach/mux.h
@@ -194,11 +194,14 @@ enum davinci_dm365_index {
DM365_I2C_SCL,
 
/* AEMIF */
-   DM365_AEMIF_AR,
+   DM365_AEMIF_AR_A14,
+   DM365_AEMIF_AR_BA0,
DM365_AEMIF_A3,
DM365_AEMIF_A7,
DM365_AEMIF_D15_8,
DM365_AEMIF_CE0,
+   DM365_AEMIF_CE1,
+   DM365_AEMIF_WE_OE,
 
/* ASP0 function */
DM365_MCBSP0_BDX,
-- 
1.7.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 2/3] DM365: Make CLKOUTx available

2010-05-11 Thread thomas . koeller
From: Thomas Koeller 

Added PINMUX configurations for the CLKOUT0 .. CLKOUT2
functions, for boards that want to use these clocks.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c|4 
 arch/arm/mach-davinci/include/mach/mux.h |5 +
 2 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 4c04ae5..51ac8e1 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -568,6 +568,10 @@ MUX_CFG(DM365, SPI4_SDO,   4,   16,3,1,
 false)
 MUX_CFG(DM365, SPI4_SDENA0,4,   20,3,1, false)
 MUX_CFG(DM365, SPI4_SDENA1,4,   16,3,2, false)
 
+MUX_CFG(DM365, CLKOUT0,4,   20,3,3, false)
+MUX_CFG(DM365, CLKOUT1,4,   16,3,3, false)
+MUX_CFG(DM365, CLKOUT2,4,   8, 3,3, false)
+
 MUX_CFG(DM365, GPIO20, 3,   21,3,0, false)
 MUX_CFG(DM365, GPIO30, 4,   6, 3,0, false)
 MUX_CFG(DM365, GPIO31, 4,   8, 3,0, false)
diff --git a/arch/arm/mach-davinci/include/mach/mux.h 
b/arch/arm/mach-davinci/include/mach/mux.h
index 4a1fdd3..07ef83b 100644
--- a/arch/arm/mach-davinci/include/mach/mux.h
+++ b/arch/arm/mach-davinci/include/mach/mux.h
@@ -287,6 +287,11 @@ enum davinci_dm365_index {
DM365_SPI4_SDENA0,
DM365_SPI4_SDENA1,
 
+   /* Clock */
+   DM365_CLKOUT0,
+   DM365_CLKOUT1,
+   DM365_CLKOUT2,
+
/* GPIO */
DM365_GPIO20,
DM365_GPIO30,
-- 
1.7.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 1/3] DM365: Added PINMUX definitions for GPIO30..32

2010-05-11 Thread thomas . koeller
From: Thomas Koeller 

Board code may want to use them.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c|3 +++
 arch/arm/mach-davinci/include/mach/mux.h |3 +++
 2 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index ed76450..4c04ae5 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -569,6 +569,9 @@ MUX_CFG(DM365,  SPI4_SDENA0,4,   20,3,1,
 false)
 MUX_CFG(DM365, SPI4_SDENA1,4,   16,3,2, false)
 
 MUX_CFG(DM365, GPIO20, 3,   21,3,0, false)
+MUX_CFG(DM365, GPIO30, 4,   6, 3,0, false)
+MUX_CFG(DM365, GPIO31, 4,   8, 3,0, false)
+MUX_CFG(DM365, GPIO32, 4,   10,3,0, false)
 MUX_CFG(DM365, GPIO33, 4,   12,3,0, false)
 MUX_CFG(DM365, GPIO40, 4,   26,3,0, false)
 MUX_CFG(DM365, GPIO64_57,  2,   6, 1,0, false)
diff --git a/arch/arm/mach-davinci/include/mach/mux.h 
b/arch/arm/mach-davinci/include/mach/mux.h
index 743dbd2..4a1fdd3 100644
--- a/arch/arm/mach-davinci/include/mach/mux.h
+++ b/arch/arm/mach-davinci/include/mach/mux.h
@@ -289,6 +289,9 @@ enum davinci_dm365_index {
 
/* GPIO */
DM365_GPIO20,
+   DM365_GPIO30,
+   DM365_GPIO31,
+   DM365_GPIO32,
DM365_GPIO33,
DM365_GPIO40,
DM365_GPIO64_57,
-- 
1.7.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 0/3] More PINMUX definitions

2010-05-11 Thread thomas . koeller
From: Thomas Koeller 

Patch series is against Kevin's tree this time. They
introduce new PINMUX settings that are required to support
the board I am working on.

Thomas Koeller (3):
  DM365: Added PINMUX definitions for GPIO30..32
  DM365: Make CLKOUTx available
  DM365: Added more PINMUX configurations for AEMIF

 arch/arm/mach-davinci/dm365.c|   12 +++-
 arch/arm/mach-davinci/include/mach/mux.h |   13 -
 2 files changed, 23 insertions(+), 2 deletions(-)

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 1/2] DM365: Make CLKOUTx available

2010-05-11 Thread thomas . koeller
From: Thomas Koeller 

Added PINMUX configurations for the CLKOUT0 .. CLKOUT2
functions.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c|4 
 arch/arm/mach-davinci/include/mach/mux.h |5 +
 2 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 8fb7578..0441d98 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -578,6 +578,10 @@ MUX_CFG(DM365, SPI4_SDO,   4,   16,3,1,
 false)
 MUX_CFG(DM365, SPI4_SDENA0,4,   20,3,1, false)
 MUX_CFG(DM365, SPI4_SDENA1,4,   16,3,2, false)
 
+MUX_CFG(DM365, CLKOUT0,4,   20,3,3, false)
+MUX_CFG(DM365, CLKOUT1,4,   16,3,3, false)
+MUX_CFG(DM365, CLKOUT2,4,   8, 3,3, false)
+
 MUX_CFG(DM365, GPIO20, 3,   21,3,0, false)
 MUX_CFG(DM365, GPIO30, 4,   6, 3,0, false)
 MUX_CFG(DM365, GPIO31, 4,   8, 3,0, false)
diff --git a/arch/arm/mach-davinci/include/mach/mux.h 
b/arch/arm/mach-davinci/include/mach/mux.h
index 49a2f57..cf383f9 100644
--- a/arch/arm/mach-davinci/include/mach/mux.h
+++ b/arch/arm/mach-davinci/include/mach/mux.h
@@ -291,6 +291,11 @@ enum davinci_dm365_index {
DM365_SPI4_SDENA0,
DM365_SPI4_SDENA1,
 
+   /* Clock */
+   DM365_CLKOUT0,
+   DM365_CLKOUT1,
+   DM365_CLKOUT2,
+
/* GPIO */
DM365_GPIO20,
DM365_GPIO30,
-- 
1.7.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 2/2] DM365: Added more PINMUX configurations for AEMIF

2010-05-11 Thread thomas . koeller
From: Thomas Koeller 

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c|5 -
 arch/arm/mach-davinci/include/mach/mux.h |5 -
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 0441d98..ae71805 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -495,11 +495,14 @@ MUX_CFG(DM365,SD1_DATA0,  4,   22,3,1,
 false)
 MUX_CFG(DM365, I2C_SDA,3,   23,3,2, false)
 MUX_CFG(DM365, I2C_SCL,3,   21,3,2, false)
 
-MUX_CFG(DM365, AEMIF_AR,   2,   0, 3,1, false)
+MUX_CFG(DM365, AEMIF_AR_A14,   2,   0, 3,1, false)
+MUX_CFG(DM365, AEMIF_AR_BA0,   2,   0, 3,2, false)
 MUX_CFG(DM365, AEMIF_A3,   2,   2, 3,1, false)
 MUX_CFG(DM365, AEMIF_A7,   2,   4, 3,1, false)
 MUX_CFG(DM365, AEMIF_D15_8,2,   6, 1,1, false)
 MUX_CFG(DM365, AEMIF_CE0,  2,   7, 1,0, false)
+MUX_CFG(DM365, AEMIF_CE1,  2,   8, 1,0, false)
+MUX_CFG(DM365, AEMIF_WE_OE,2,   9, 1,0, false)
 
 MUX_CFG(DM365, MCBSP0_BDX, 0,   23,1,1, false)
 MUX_CFG(DM365, MCBSP0_X,   0,   22,1,1, false)
diff --git a/arch/arm/mach-davinci/include/mach/mux.h 
b/arch/arm/mach-davinci/include/mach/mux.h
index cf383f9..113f382 100644
--- a/arch/arm/mach-davinci/include/mach/mux.h
+++ b/arch/arm/mach-davinci/include/mach/mux.h
@@ -198,11 +198,14 @@ enum davinci_dm365_index {
DM365_I2C_SCL,
 
/* AEMIF */
-   DM365_AEMIF_AR,
+   DM365_AEMIF_AR_A14,
+   DM365_AEMIF_AR_BA0,
DM365_AEMIF_A3,
DM365_AEMIF_A7,
DM365_AEMIF_D15_8,
DM365_AEMIF_CE0,
+   DM365_AEMIF_CE1,
+   DM365_AEMIF_WE_OE,
 
/* ASP0 function */
DM365_MCBSP0_BDX,
-- 
1.7.1

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 0/2] DM365: More PINMUX configurations

2010-05-11 Thread thomas . koeller
From: Thomas Koeller 

These patches add some more PINMUX configurations.

Thomas Koeller (2):
  DM365: Make CLKOUTx available
  DM365: Added more PINMUX configurations for AEMIF

 arch/arm/mach-davinci/dm365.c|9 -
 arch/arm/mach-davinci/include/mach/mux.h |   10 +-
 2 files changed, 17 insertions(+), 2 deletions(-)

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


Re: [PATCH 1/4] DM365: Make all SPI units SPI0..SPI4 available

2010-05-06 Thread Thomas Koeller
On Wednesday 05 May 2010 11:32:00 Nori, Sekhar wrote:
> Have you based your code on the latest of Kevin's tree?
> I don't see the additional IORESOURCE_DMA_* flags in the
> current tree.

No, all my patches are against the 
'arago-project.org/git/projects/linux-davinci.git'
repository, because that is what I am working with.

Thomas

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 4/4] DM365: Added PINMUX definitions for GPIO30..32

2010-05-04 Thread thomas . koeller
From: Thomas Koeller 

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c|3 +++
 arch/arm/mach-davinci/include/mach/mux.h |3 +++
 2 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 0aea612..8fb7578 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -579,6 +579,9 @@ MUX_CFG(DM365,  SPI4_SDENA0,4,   20,3,1,
 false)
 MUX_CFG(DM365, SPI4_SDENA1,4,   16,3,2, false)
 
 MUX_CFG(DM365, GPIO20, 3,   21,3,0, false)
+MUX_CFG(DM365, GPIO30, 4,   6, 3,0, false)
+MUX_CFG(DM365, GPIO31, 4,   8, 3,0, false)
+MUX_CFG(DM365, GPIO32, 4,   10,3,0, false)
 MUX_CFG(DM365, GPIO33, 4,   12,3,0, false)
 MUX_CFG(DM365, GPIO40, 4,   26,3,0, false)
 
diff --git a/arch/arm/mach-davinci/include/mach/mux.h 
b/arch/arm/mach-davinci/include/mach/mux.h
index 05e35fa..49a2f57 100644
--- a/arch/arm/mach-davinci/include/mach/mux.h
+++ b/arch/arm/mach-davinci/include/mach/mux.h
@@ -293,6 +293,9 @@ enum davinci_dm365_index {
 
/* GPIO */
DM365_GPIO20,
+   DM365_GPIO30,
+   DM365_GPIO31,
+   DM365_GPIO32,
DM365_GPIO33,
DM365_GPIO40,
 
-- 
1.7.0.3

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 2/4] DM365: Add platform resource management

2010-05-04 Thread thomas . koeller
From: Thomas Koeller 

Keeping track of resource assignments greatly simplifies
the task of writing board support code. Many drivers for
DaVinci peripherals were using resources that had never
been allocated, with the notable exception of memory
resources.

Non-conflicting resource assignment is a responsibility
of the bus the devices are on, in this case, the platform bus.

The resource management scheme implemented by this patch is not
perfect. The SoC code really has no business managing resources,
it should only provide them to the platform (board support) code.
The board support is the only place where information about the
intended use of the various hardware resources is available.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/Makefile |8 +-
 arch/arm/mach-davinci/devices.c|  108 +++--
 arch/arm/mach-davinci/dm365.c  |  145 ++--
 arch/arm/mach-davinci/dm365_spi.c  |  126 ++--
 arch/arm/mach-davinci/dma.c|8 --
 arch/arm/mach-davinci/platform-resources.c |   90 +
 arch/arm/mach-davinci/platform-resources.h |   30 ++
 drivers/i2c/busses/i2c-davinci.c   |9 +--
 drivers/mmc/host/davinci_mmc.c |4 +-
 drivers/spi/davinci_spi.c  |   16 +---
 drivers/watchdog/davinci_wdt.c |   15 ---
 11 files changed, 413 insertions(+), 146 deletions(-)
 create mode 100644 arch/arm/mach-davinci/platform-resources.c
 create mode 100644 arch/arm/mach-davinci/platform-resources.h

diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile
index b9c497c..2e3d4ff 100644
--- a/arch/arm/mach-davinci/Makefile
+++ b/arch/arm/mach-davinci/Makefile
@@ -11,10 +11,10 @@ obj-$(CONFIG_DAVINCI_MUX)   += mux.o
 obj-$(CONFIG_PCI)  += pci-generic.o
 
 # Chip specific
-obj-$(CONFIG_ARCH_DAVINCI_DM644x)   += dm644x.o devices.o
-obj-$(CONFIG_ARCH_DAVINCI_DM355)+= dm355.o devices.o
-obj-$(CONFIG_ARCH_DAVINCI_DM646x)   += dm646x.o devices.o
-obj-$(CONFIG_ARCH_DAVINCI_DM365)   += dm365.o devices.o
+obj-$(CONFIG_ARCH_DAVINCI_DM644x)   += dm644x.o devices.o 
platform-resources.o
+obj-$(CONFIG_ARCH_DAVINCI_DM355)+= dm355.o devices.o 
platform-resources.o
+obj-$(CONFIG_ARCH_DAVINCI_DM646x)   += dm646x.o devices.o 
platform-resources.o
+obj-$(CONFIG_ARCH_DAVINCI_DM365)   += dm365.o devices.o 
platform-resources.o
 obj-$(CONFIG_ARCH_DAVINCI_DA830)+= da830.o devices-da8xx.o
 obj-$(CONFIG_ARCH_DAVINCI_DA850)+= da850.o devices-da8xx.o
 
diff --git a/arch/arm/mach-davinci/devices.c b/arch/arm/mach-davinci/devices.c
index 34dc0e9..53aaeb5 100644
--- a/arch/arm/mach-davinci/devices.c
+++ b/arch/arm/mach-davinci/devices.c
@@ -27,6 +27,9 @@
 #include 
 #include 
 
+#include "clock.h"
+#include "platform-resources.h"
+
 #define DAVINCI_I2C_BASE0x01C21000
 #define DAVINCI_MMCSD0_BASE 0x01E1
 #define DM355_MMCSD0_BASE   0x01E11000
@@ -34,20 +37,27 @@
 #define DM365_MMCSD0_BASE   0x01D11000
 #define DM365_MMCSD1_BASE   0x01D0
 
+static const char i2c_name[] = "i2c_davinci";
+
 static struct resource i2c_resources[] = {
{
+   .parent = &resource_cfg_root,
+   .name   = i2c_name,
.start  = DAVINCI_I2C_BASE,
.end= DAVINCI_I2C_BASE + 0x40,
.flags  = IORESOURCE_MEM,
},
{
+   .parent = &resource_irq_root,
+   .name   = i2c_name,
.start  = IRQ_I2C,
+   .end= IRQ_I2C,
.flags  = IORESOURCE_IRQ,
},
 };
 
 static struct platform_device davinci_i2c_device = {
-   .name   = "i2c_davinci",
+   .name   = i2c_name,
.id = 1,
.num_resources  = ARRAY_SIZE(i2c_resources),
.resource   = i2c_resources,
@@ -58,42 +68,59 @@ void __init davinci_init_i2c(struct 
davinci_i2c_platform_data *pdata)
if (cpu_is_davinci_dm644x())
davinci_cfg_reg(DM644X_I2C);
 
-   davinci_i2c_device.dev.platform_data = pdata;
-   (void) platform_device_register(&davinci_i2c_device);
+   if (likely(!alloc_platform_resources(&davinci_i2c_device))) {
+   davinci_i2c_device.dev.platform_data = pdata;
+   (void) platform_device_register(&davinci_i2c_device);
+   }
 }
 
 #ifdefined(CONFIG_MMC_DAVINCI) || defined(CONFIG_MMC_DAVINCI_MODULE)
 
 static u64 mmcsd0_dma_mask = DMA_BIT_MASK(32);
+static const char mmc_name[] = "davinci_mmc";
 
 static struct resource mmcsd0_resources[] = {
{
/* different on dm355 */
-   .start = DAVINCI_MMCSD0_BASE,
- 

[PATCH 3/4] DAVINCI: Added missing includes

2010-05-04 Thread thomas . koeller
From: Thomas Koeller 

linux/compiler.h is required for __iomem
linux/types.h is required u32

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/include/mach/common.h |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/include/mach/common.h 
b/arch/arm/mach-davinci/include/mach/common.h
index 1fd3917..f56fd5a 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -12,6 +12,9 @@
 #ifndef __ARCH_ARM_MACH_DAVINCI_COMMON_H
 #define __ARCH_ARM_MACH_DAVINCI_COMMON_H
 
+#include 
+#include 
+
 struct sys_timer;
 
 extern struct sys_timer davinci_timer;
-- 
1.7.0.3

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 1/4] DM365: Make all SPI units SPI0..SPI4 available

2010-05-04 Thread thomas . koeller
From: Thomas Koeller 

Change the SPI setup code to allow use of all SPI units. Also,
move some resource assignments (DMA channels, interrupts)
to the board code, where they belong. These really should not
be hard-coded in dm365.c.

The spi setup stuff has been moved to a separate file
'arch/arm/mach-davinci/dm365_spi.c' to increase modularity.
I am not currently able to address the DM355, but it should be
easy to write a dm355_spi.c file.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/Makefile |2 +-
 arch/arm/mach-davinci/board-dm365-evm.c|   47 -
 arch/arm/mach-davinci/dm365.c  |   68 ---
 arch/arm/mach-davinci/dm365_spi.c  |  276 
 arch/arm/mach-davinci/include/mach/dm365.h |5 +-
 arch/arm/mach-davinci/spi.h|   35 
 6 files changed, 350 insertions(+), 83 deletions(-)
 create mode 100644 arch/arm/mach-davinci/dm365_spi.c
 create mode 100644 arch/arm/mach-davinci/spi.h

diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile
index f6c7e4c..b9c497c 100644
--- a/arch/arm/mach-davinci/Makefile
+++ b/arch/arm/mach-davinci/Makefile
@@ -32,6 +32,6 @@ obj-$(CONFIG_MACH_SFFSDR) += board-sffsdr.o
 obj-$(CONFIG_MACH_DAVINCI_DM355_EVM)   += board-dm355-evm.o
 obj-$(CONFIG_MACH_DM355_LEOPARD)   += board-dm355-leopard.o
 obj-$(CONFIG_MACH_DAVINCI_DM6467_EVM)  += board-dm646x-evm.o cdce949.o
-obj-$(CONFIG_MACH_DAVINCI_DM365_EVM)   += board-dm365-evm.o
+obj-$(CONFIG_MACH_DAVINCI_DM365_EVM)   += board-dm365-evm.o dm365_spi.o
 obj-$(CONFIG_MACH_DAVINCI_DA830_EVM)   += board-da830-evm.o
 obj-$(CONFIG_MACH_DAVINCI_DA850_EVM)   += board-da850-evm.o
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c 
b/arch/arm/mach-davinci/board-dm365-evm.c
index ab3b0e2..96dd72f 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -49,6 +49,8 @@
 #include 
 #include 
 
+#include "spi.h"
+
 
 
 /* have_imager() - Check if we have support for imager interface */
@@ -337,18 +339,18 @@ static struct i2c_driver pca9543a_driver = {
 static void dm365evm_reset_imager(int rst)
 {
u8 val;
-   
+
/* Reset bit6 of CPLD_IMG_DIR2 */
val = __raw_readb(cpld + CPLD_IMG_DIR2) & ~BIT(6);
-   __raw_writeb(val, (cpld + CPLD_IMG_DIR2));  
+   __raw_writeb(val, (cpld + CPLD_IMG_DIR2));
 
/* Set bit5 of CPLD_IMG_MUX5 */
val = __raw_readb(cpld + CPLD_IMG_MUX5) | BIT(5);
-   __raw_writeb(val, (cpld + CPLD_IMG_MUX5));  
+   __raw_writeb(val, (cpld + CPLD_IMG_MUX5));
 
/* Reset bit 0 of CPLD_IMG_MUX5 */
val = __raw_readb(cpld + CPLD_IMG_MUX5) & ~BIT(0);
-   __raw_writeb(val, (cpld + CPLD_IMG_MUX5));  
+   __raw_writeb(val, (cpld + CPLD_IMG_MUX5));
 
/**
 * Configure GPIO40 to be output and high. This has dependency on MMC1
@@ -375,7 +377,7 @@ static int dm365evm_enable_pca9543a(int en)
.buf = &val,
};
 
-   printk("dm365evm_enable_pca9543a\n");   
+   printk("dm365evm_enable_pca9543a\n");
if (!en)
val = 0;
 
@@ -385,7 +387,7 @@ static int dm365evm_enable_pca9543a(int en)
msg.addr = pca9543a->addr;
/* turn i2c switch, pca9543a, on/off */
status = i2c_transfer(pca9543a->adapter, &msg, 1);
-   printk("dm365evm_enable_pca9543a, status = %d\n", status);  
+   printk("dm365evm_enable_pca9543a, status = %d\n", status);
return status;
return 0;
 }
@@ -832,7 +834,7 @@ static struct spi_eeprom at25640 = {
.flags  = EE_ADDR2,
 };
 
-static struct spi_board_info dm365_evm_spi_info[] __initconst = {
+static const struct spi_board_info dm365_evm_spi_info[] __initconst = {
{
.modalias   = "at25",
.platform_data  = &at25640,
@@ -840,9 +842,32 @@ static struct spi_board_info dm365_evm_spi_info[] 
__initconst = {
.bus_num= 0,
.chip_select= 0,
.mode   = SPI_MODE_0,
-   },
+   }
+};
+
+static struct davinci_spi_unit_desc dm365_evm_spi_udesc_at25 = {
+   .spi_hwunit = 0,
+   .chipsel= BIT(0),
+   .irq= IRQ_DM365_SPIINT0_0,
+   .dma_tx_chan= 16,
+   .dma_rx_chan= 17,
+   .dma_evtq   = EVENTQ_3,
+   .pdata  = {
+   .version= SPI_VERSION_1,
+   .num_chipselect = 2,
+   .clk_internal   = 1,
+   .cs_hold= 1,
+   .intr_level = 0,
+   .poll_mode  = 1,/* 0 -> interrupt mode 1-> polling mode 
*/
+   .use_dma= 1,/* when 1, value in poll_mode is 
ignored */
+   .c2tdelay   = 0,
+   .t2cdelay   = 0
+   }
 };
 

[PATCH 0/4] DM365 patches

2010-05-04 Thread thomas . koeller
From: Thomas Koeller 

This is an updated patch series for DM365. Patches 0 and 1
are reworked versions of patches submitted earlier, 2 and 3
are new.

Thomas Koeller (4):
  DM365: Make all SPI units SPI0..SPI4 available
  DM365: Add platform resource management
  DAVINCI: Added missing includes
  DM365: Added PINMUX definitions for GPIO30..32

 arch/arm/mach-davinci/Makefile  |   10 +-
 arch/arm/mach-davinci/board-dm365-evm.c |   47 +++-
 arch/arm/mach-davinci/devices.c |  108 ++---
 arch/arm/mach-davinci/dm365.c   |  216 +
 arch/arm/mach-davinci/dm365_spi.c   |  338 +++
 arch/arm/mach-davinci/dma.c |8 -
 arch/arm/mach-davinci/include/mach/common.h |3 +
 arch/arm/mach-davinci/include/mach/dm365.h  |5 +-
 arch/arm/mach-davinci/include/mach/mux.h|3 +
 arch/arm/mach-davinci/platform-resources.c  |   90 +++
 arch/arm/mach-davinci/platform-resources.h  |   30 +++
 arch/arm/mach-davinci/spi.h |   35 +++
 drivers/i2c/busses/i2c-davinci.c|9 +-
 drivers/mmc/host/davinci_mmc.c  |4 +-
 drivers/spi/davinci_spi.c   |   16 +-
 drivers/watchdog/davinci_wdt.c  |   15 --
 16 files changed, 740 insertions(+), 197 deletions(-)
 create mode 100644 arch/arm/mach-davinci/dm365_spi.c
 create mode 100644 arch/arm/mach-davinci/platform-resources.c
 create mode 100644 arch/arm/mach-davinci/platform-resources.h
 create mode 100644 arch/arm/mach-davinci/spi.h

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH] DAVINCI: Added missing includes

2010-04-21 Thread thomas . koeller
From: Thomas Koeller 

linux/compiler.h is required for __iomem
linux/types.h is required u32

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/include/mach/common.h |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/include/mach/common.h 
b/arch/arm/mach-davinci/include/mach/common.h
index 1fd3917..f56fd5a 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -12,6 +12,9 @@
 #ifndef __ARCH_ARM_MACH_DAVINCI_COMMON_H
 #define __ARCH_ARM_MACH_DAVINCI_COMMON_H
 
+#include 
+#include 
+
 struct sys_timer;
 
 extern struct sys_timer davinci_timer;
-- 
1.7.0.3

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 4/4] DM365: Add platform resource management

2010-04-08 Thread thomas . koeller
From: Thomas Koeller 

Keeping track of resource assignments greatly simplifies
the task of writing board support code. Many drivers for
DaVinci peripherals were using resources that had never
been allocated, with the notable exception of memory
resources.

Non-conflicting resource assignment is a responsibility
of the bus the devices are on, in this case, the platform bus.

The resource management scheme implemented by this patch is not
perfect. The SoC code really has no business managing resources,
it should only provide them to the platform (board support) code.
The board support is the only place where information about the
intended use of the various hardware resources is available.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c  |  287 
 arch/arm/mach-davinci/dma.c|8 -
 arch/arm/mach-davinci/include/mach/dm365.h |8 +
 drivers/i2c/busses/i2c-davinci.c   |9 +-
 drivers/mmc/host/davinci_mmc.c |4 +-
 drivers/spi/davinci_spi.c  |   16 +--
 6 files changed, 262 insertions(+), 70 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 0813dce..33be53e 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -617,6 +617,74 @@ EVT_CFG(DM365, EVT3_ASP_RX, 1, 1,0,
 false)
 #endif
 };
 
+/* root resource for configuration register space */
+struct resource resource_cfg_root = {
+   .name   = "DM365 peripherals",
+   .start  = 0x01c0,
+   .end= 0x01ff,
+   .flags  = IORESOURCE_MEM
+};
+EXPORT_SYMBOL(resource_cfg_root);
+
+/* root resource for DMA channels */
+struct resource resource_dma_root = {
+   .name   = "DM365 DMA",
+   .start  = 0,
+   .end= 63,
+   .flags  = IORESOURCE_DMA
+};
+EXPORT_SYMBOL(resource_dma_root);
+
+/* root resource for DMA event queues */
+struct resource resource_evq_root = {
+   .name   = "DM365 EVQ",
+   .start  = 0,
+   .end= 3,
+   .flags  = IORESOURCE_DMA
+};
+EXPORT_SYMBOL(resource_evq_root);
+
+/* root resource for IRQ numbers */
+struct resource resource_irq_root = {
+   .name   = "DM365 IRQ",
+   .start  = 0,
+   .end= 63,
+   .flags  = IORESOURCE_IRQ
+};
+EXPORT_SYMBOL(resource_irq_root);
+
+/* Allocate resources for platform device */
+static int alloc_platform_resources(const struct platform_device *dev)
+{
+   int n;
+
+   for (n = 0; n < dev->num_resources; ++n) {
+   int res;
+   struct resource *rsrc = &dev->resource[n];
+
+   res = request_resource(rsrc->parent, rsrc);
+   if (likely(!res))
+   continue;
+
+   /* bail out */
+   pr_warning("Resource allocation failed for '%s'\n", rsrc->name);
+   while (--n >= 0) {
+   struct resource *parent;
+
+   /* preserve the parent pointer */
+   rsrc = &dev->resource[n];
+   parent = rsrc->parent;
+   release_resource(rsrc);
+   rsrc->parent = parent;
+   }
+
+   return res;
+   }
+
+   return 0;
+}
+
+
 static u64 dm365_spi_dma_mask = DMA_BIT_MASK(32);
 
 enum dm365_spi_resource_index {
@@ -627,100 +695,158 @@ enum dm365_spi_resource_index {
spirsrc_evqdma
 };
 
+static const char
+   spi0_name[] = "SPI0",
+   spi1_name[] = "SPI1",
+   spi2_name[] = "SPI2",
+   spi3_name[] = "SPI3",
+   spi4_name[] = "SPI4";
 
-static struct resource dm365_spi_resources[spirsrc_evqdma + 1][5] = {
-   {
+
+static struct resource
+dm365_spi_resources[spirsrc_evqdma + 1][5] = {
+   [0] = {
[spirsrc_iomem] = {
+   .name   = spi0_name,
+   .parent = &resource_cfg_root,
.start  = 0x01c66000,
.end= 0x01c667ff,
.flags  = IORESOURCE_MEM,
},
[spirsrc_irq] = {
+   .name   = spi0_name,
+   .parent = &resource_irq_root,
.flags  = IORESOURCE_IRQ,
},
[spirsrc_rxdma] = {
+   .name   = spi0_name,
+   .parent = &resource_dma_root,
.flags  = IORESOURCE_DMA | IORESOURCE_DMA_RX_CHAN,
},
[spirsrc_txdma] = {
+   .name   = spi0_name,
+   .parent = &resource_dma_root,
.flags  = IORESOURCE_DMA | IORESOURCE_DMA_TX_CHAN,
},
[spirsrc_evqdma] = {
+  

[PATCH 3/4] DaVinci SPI: Fix SPI clock prescale factor computation

2010-04-08 Thread thomas . koeller
From: Thomas Koeller 

Computation of the clock prescaler value returned bogus results if
the requested SPI clock was impossible to set. It now sets either
the maximum or minimum clock frequency, as appropriate.

Signed-off-by: Thomas Koeller 
---
 drivers/spi/davinci_spi.c |   12 +---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/spi/davinci_spi.c b/drivers/spi/davinci_spi.c
index 956f617..02e1a76 100644
--- a/drivers/spi/davinci_spi.c
+++ b/drivers/spi/davinci_spi.c
@@ -153,7 +153,7 @@ static int davinci_spi_setup_transfer(struct spi_device 
*spi,
struct davinci_spi *davinci_spi;
struct davinci_spi_platform_data *pdata;
u8 bits_per_word = 0;
-   u32 hz = 0, prescale;
+   u32 hz = 0, prescale = 0, clkspeed;
 
davinci_spi = spi_master_get_devdata(spi->master);
pdata = davinci_spi->pdata;
@@ -190,10 +190,16 @@ static int davinci_spi_setup_transfer(struct spi_device 
*spi,
set_fmt_bits(davinci_spi->base, bits_per_word & 0x1f,
spi->chip_select);
 
-   prescale = ((clk_get_rate(davinci_spi->clk) / hz) - 1) & 0xff;
+   clkspeed = clk_get_rate(davinci_spi->clk);
+   if (hz > clkspeed / 2)
+   prescale = 1 << 8;
+   if (hz < clkspeed / 256)
+   prescale = 255 << 8;
+   if (!prescale)
+   prescale = ((clkspeed / hz - 1) << 8) & 0xff00;
 
clear_fmt_bits(davinci_spi->base, 0xff00, spi->chip_select);
-   set_fmt_bits(davinci_spi->base, prescale << 8, spi->chip_select);
+   set_fmt_bits(davinci_spi->base, prescale, spi->chip_select);
 
return 0;
 }
-- 
1.7.0.3

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 0/4] Improve modularity

2010-04-08 Thread thomas . koeller
From: Thomas Koeller 

While writing code to suport a new DaVinci-based board design, I
noticed several shortcomings of the existing code, that this patch
series tries to address.


Thomas Koeller (4):
  DM365: Make all SPI units SPI0..SPI4 available
  DM365: Allow use of GPIO64_57
  DaVinci SPI: Fix SPI clock prescale factor computation
  DM365: Add platform resource management

 arch/arm/mach-davinci/board-dm365-evm.c   |   37 ++-
 arch/arm/mach-davinci/board_dm365_evm_resources.h |   17 +
 arch/arm/mach-davinci/dm365.c |  554 ++---
 arch/arm/mach-davinci/dma.c   |8 -
 arch/arm/mach-davinci/include/mach/dm365.h|   24 +-
 arch/arm/mach-davinci/include/mach/mux.h  |1 +
 drivers/i2c/busses/i2c-davinci.c  |9 +-
 drivers/mmc/host/davinci_mmc.c|4 +-
 drivers/spi/davinci_spi.c |   28 +-
 9 files changed, 560 insertions(+), 122 deletions(-)
 create mode 100644 arch/arm/mach-davinci/board_dm365_evm_resources.h

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 1/4] DM365: Make all SPI units SPI0..SPI4 available

2010-04-08 Thread thomas . koeller
From: Thomas Koeller 

Change the SPI setup code to allow use of all SPI units. Also,
move some resource assignments (DMA channels, interrupts)
to the board code, where they belong. These really should not
be hard-coded in dm365.c.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/board-dm365-evm.c   |   37 +++-
 arch/arm/mach-davinci/board_dm365_evm_resources.h |   17 ++
 arch/arm/mach-davinci/dm365.c |  278 +
 arch/arm/mach-davinci/include/mach/dm365.h|   16 +-
 4 files changed, 293 insertions(+), 55 deletions(-)
 create mode 100644 arch/arm/mach-davinci/board_dm365_evm_resources.h

diff --git a/arch/arm/mach-davinci/board-dm365-evm.c 
b/arch/arm/mach-davinci/board-dm365-evm.c
index ab3b0e2..6797d3e 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -49,6 +49,8 @@
 #include 
 #include 
 
+#include "board_dm365_evm_resources.h"
+
 
 
 /* have_imager() - Check if we have support for imager interface */
@@ -832,16 +834,39 @@ static struct spi_eeprom at25640 = {
.flags  = EE_ADDR2,
 };
 
-static struct spi_board_info dm365_evm_spi_info[] __initconst = {
-   {
+static const struct spi_board_info
+   dm365_evm_spi_info_at25 __initconst = {
.modalias   = "at25",
.platform_data  = &at25640,
.max_speed_hz   = 20 * 1000 * 1000, /* at 3v3 */
.bus_num= 0,
.chip_select= 0,
.mode   = SPI_MODE_0,
-   },
-};
+   };
+
+static struct dm365_spi_unit_desc
+   dm365_evm_spi_udesc_at25 = {
+   .spi_hwunit = 0,
+   .chipsel= BIT(0),
+   .irq= IRQ_SPI0,
+   .dma_tx_chan= DMA_CHAN_SPI0_TX,
+   .dma_rx_chan= DMA_CHAN_SPI0_RX,
+   .dma_evtq   = DMA_EVQ_SPI0,
+   .pdata  = {
+   .version= SPI_VERSION_1,
+   .num_chipselect = 2,
+   .clk_internal   = 1,
+   .cs_hold= 1,
+   .intr_level = 0,
+   .poll_mode  = 1,/* 0 -> interrupt mode 1-> 
polling mode */
+   .use_dma= 1,/* when 1, value in poll_mode 
is ignored */
+   .c2tdelay   = 0,
+   .t2cdelay   = 0
+   }
+   };
+
+
+
 
 static __init void dm365_evm_init(void)
 {
@@ -861,8 +886,8 @@ static __init void dm365_evm_init(void)
dm365_init_rtc();
dm365_init_ks(&dm365evm_ks_data);
 
-   dm365_init_spi0(BIT(0), dm365_evm_spi_info,
-   ARRAY_SIZE(dm365_evm_spi_info));
+   dm365_init_spi(&dm365_evm_spi_udesc_at25, 1, &dm365_evm_spi_info_at25);
+   return;
 }
 
 static __init void dm365_evm_irq_init(void)
diff --git a/arch/arm/mach-davinci/board_dm365_evm_resources.h 
b/arch/arm/mach-davinci/board_dm365_evm_resources.h
new file mode 100644
index 000..d9cfc6b
--- /dev/null
+++ b/arch/arm/mach-davinci/board_dm365_evm_resources.h
@@ -0,0 +1,17 @@
+#ifndef _DAVINCI_EVM_RESOURCES_H
+#define _DAVINCI_EVM_RESOURCES_H
+
+#include 
+#include 
+
+/* IRQs */
+#define IRQ_SPI0   IRQ_DM365_SPIINT0_0
+
+/* DMA channels */
+#define DMA_CHAN_SPI0_TX   16
+#define DMA_CHAN_SPI0_RX   17
+
+/* DMA event queues */
+#define DMA_EVQ_SPI0   EVENTQ_3
+
+#endif /* _DAVINCI_EVM_RESOURCES_H */
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index ed6c9c7..023d708 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -616,72 +616,256 @@ EVT_CFG(DM365,   EVT3_ASP_RX, 1, 1,0,
 false)
 #endif
 };
 
-static u64 dm365_spi0_dma_mask = DMA_BIT_MASK(32);
+static u64 dm365_spi_dma_mask = DMA_BIT_MASK(32);
 
-static struct davinci_spi_platform_data dm365_spi0_pdata = {
-   .version= SPI_VERSION_1,
-   .num_chipselect = 2,
-   .clk_internal   = 1,
-   .cs_hold= 1,
-   .intr_level = 0,
-   .poll_mode  = 1,/* 0 -> interrupt mode 1-> polling mode */
-   .use_dma= 1,/* when 1, value in poll_mode is ignored */
-   .c2tdelay   = 0,
-   .t2cdelay   = 0,
+enum dm365_spi_resource_index {
+   spirsrc_iomem,
+   spirsrc_irq,
+   spirsrc_rxdma,
+   spirsrc_txdma,
+   spirsrc_evqdma
 };
 
-static struct resource dm365_spi0_resources[] = {
+
+static struct resource dm365_spi_resources[spirsrc_evqdma + 1][5] = {
{
-   .start = 0x01c66000,
-   .end   = 0x01c667ff,
-   .flags = IORESOURCE_MEM,
+   [spirsrc_iomem] = {
+   .start  = 0x01c66000,
+   .end= 0x01c667ff,

[PATCH 2/4] DM365: Allow use of GPIO64_57

2010-04-08 Thread thomas . koeller
From: Thomas Koeller 

Extended the MUX configuration to allow use of GPIO
terminals 64..57.

Signed-off-by: Thomas Koeller 
---
 arch/arm/mach-davinci/dm365.c|1 +
 arch/arm/mach-davinci/include/mach/mux.h |1 +
 2 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 023d708..0813dce 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -580,6 +580,7 @@ MUX_CFG(DM365,  SPI4_SDENA1,4,   16,3,2,
 false)
 MUX_CFG(DM365, GPIO20, 3,   21,3,0, false)
 MUX_CFG(DM365, GPIO33, 4,   12,3,0, false)
 MUX_CFG(DM365, GPIO40, 4,   26,3,0, false)
+MUX_CFG(DM365, GPIO64_57,  2,   6, 1,0, false)
 
 MUX_CFG(DM365, VOUT_FIELD, 1,   18,3,1, false)
 MUX_CFG(DM365, VOUT_FIELD_G81, 1,   18,3,0, false)
diff --git a/arch/arm/mach-davinci/include/mach/mux.h 
b/arch/arm/mach-davinci/include/mach/mux.h
index 05e35fa..d6c6921 100644
--- a/arch/arm/mach-davinci/include/mach/mux.h
+++ b/arch/arm/mach-davinci/include/mach/mux.h
@@ -295,6 +295,7 @@ enum davinci_dm365_index {
DM365_GPIO20,
DM365_GPIO33,
DM365_GPIO40,
+   DM365_GPIO64_57,
 
/* Video */
DM365_VOUT_FIELD,
-- 
1.7.0.3

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source


[PATCH 0/4] Improve modularity

2010-04-08 Thread thomas . koeller
From: Thomas Koeller 

While writing code to suport a new DaVinci-based board design, I
noticed several shortcomings of the existing code that this patch
series tries to address.


Thomas Koeller (4):
  DM365: Make all SPI units SPI0..SPI4 available
  DM365: Allow use of GPIO64_57
  DaVinci SPI: Fix SPI clock prescale factor computation
  DM365: Add platform resource management

 arch/arm/mach-davinci/board-dm365-evm.c   |   37 ++-
 arch/arm/mach-davinci/board_dm365_evm_resources.h |   17 +
 arch/arm/mach-davinci/dm365.c |  554 ++---
 arch/arm/mach-davinci/dma.c   |8 -
 arch/arm/mach-davinci/include/mach/dm365.h|   24 +-
 arch/arm/mach-davinci/include/mach/mux.h  |1 +
 drivers/i2c/busses/i2c-davinci.c  |9 +-
 drivers/mmc/host/davinci_mmc.c|4 +-
 drivers/spi/davinci_spi.c |   28 +-
 9 files changed, 560 insertions(+), 122 deletions(-)
 create mode 100644 arch/arm/mach-davinci/board_dm365_evm_resources.h

___
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source