* [PATCH] sh: add spi header and r2d platform data V2
2008-01-21 10:24 [PATCH] sh: add spi header and r2d platform data Magnus Damm
@ 2008-01-23 4:53 ` Magnus Damm
2008-01-23 5:25 ` Paul Mundt
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Magnus Damm @ 2008-01-23 4:53 UTC (permalink / raw)
To: linux-sh
sh: add spi header and r2d platform data V2
This patch adds the header file asm/spi.h and board specific code for the
r2d board. The header file contains a structure that should be used to
point out a single spi bus. The board specific code for r2d is updated with
such a structure for the new spi_sh_sci driver. The structure contains a
chip select callback plus information about the R9701 rtc chip which is
attached to the spi bus.
Signed-off-by: Magnus Damm <damm@igel.co.jp>
---
Changes since V1 include:
- Use spi_register_board_info() instead of struct sh_spi_info.
- Set mode for r9701 in struct spi_board_info.
arch/sh/boards/renesas/rts7751r2d/setup.c | 47 +++++++++++++++++++++++++++++
include/asm-sh/spi.h | 13 ++++++++
2 files changed, 60 insertions(+)
--- 0001/arch/sh/boards/renesas/rts7751r2d/setup.c
+++ work/arch/sh/boards/renesas/rts7751r2d/setup.c 2008-01-23 12:38:09.000000000 +0900
@@ -16,9 +16,12 @@
#include <linux/sm501-regs.h>
#include <linux/pm.h>
#include <linux/fb.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/spi_bitbang.h>
#include <asm/machvec.h>
#include <asm/rts7751r2d.h>
#include <asm/io.h>
+#include <asm/spi.h>
static struct resource cf_ide_resources[] = {
[0] = {
@@ -53,6 +56,43 @@ static struct platform_device cf_ide_dev
},
};
+static struct spi_board_info spi_bus[] = {
+ {
+ .modalias = "rtc-r9701",
+ .max_speed_hz = 1000000,
+ .mode = SPI_MODE_3,
+ },
+};
+
+static void r2d_chip_select(struct sh_spi_info *spi, int cs, int state)
+{
+ BUG_ON(cs != 0); /* Single Epson RTC-9701JE attached on CS0 */
+ ctrl_outw(state = BITBANG_CS_ACTIVE ? 1 : 0, PA_RTCCE);
+}
+
+static struct sh_spi_info spi_info = {
+ .num_chipselect = 1,
+ .chip_select = r2d_chip_select,
+};
+
+static struct resource spi_sh_sci_resources[] = {
+ {
+ .start = 0xffe00000,
+ .end = 0xffe0001f,
+ .flags = IORESOURCE_MEM,
+ },
+};
+
+static struct platform_device spi_sh_sci_device = {
+ .name = "spi_sh_sci",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(spi_sh_sci_resources),
+ .resource = spi_sh_sci_resources,
+ .dev = {
+ .platform_data = &spi_info,
+ },
+};
+
static struct resource heartbeat_resources[] = {
[0] = {
.start = PA_OUTPORT,
@@ -176,6 +216,7 @@ static struct platform_device *rts7751r2
#endif
&cf_ide_device,
&heartbeat_device,
+ &spi_sh_sci_device,
};
static int __init rts7751r2d_devices_setup(void)
@@ -260,6 +301,12 @@ static void __init rts7751r2d_setup(char
writel(readl(sm501_reg) | (1 << SM501_GATE_UART0), sm501_reg);
}
+static int __init r2d_register_spi(void)
+{
+ return spi_register_board_info(spi_bus, ARRAY_SIZE(spi_bus));
+}
+__initcall(r2d_register_spi);
+
/*
* The Machine Vector
*/
--- /dev/null
+++ work/include/asm-sh/spi.h 2008-01-23 12:34:33.000000000 +0900
@@ -0,0 +1,13 @@
+#ifndef __ASM_SPI_H__
+#define __ASM_SPI_H__
+
+struct sh_spi_info;
+
+struct sh_spi_info {
+ int bus_num;
+ int num_chipselect;
+
+ void (*chip_select)(struct sh_spi_info *spi, int cs, int state);
+};
+
+#endif /* __ASM_SPI_H__ */
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] sh: add spi header and r2d platform data V2
2008-01-21 10:24 [PATCH] sh: add spi header and r2d platform data Magnus Damm
2008-01-23 4:53 ` [PATCH] sh: add spi header and r2d platform data V2 Magnus Damm
@ 2008-01-23 5:25 ` Paul Mundt
2008-01-23 7:21 ` [PATCH] sh: add spi header and r2d platform data V3 Magnus Damm
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Paul Mundt @ 2008-01-23 5:25 UTC (permalink / raw)
To: linux-sh
On Wed, Jan 23, 2008 at 01:53:56PM +0900, Magnus Damm wrote:
> +static void r2d_chip_select(struct sh_spi_info *spi, int cs, int state)
> +{
> + BUG_ON(cs != 0); /* Single Epson RTC-9701JE attached on CS0 */
> + ctrl_outw(state = BITBANG_CS_ACTIVE ? 1 : 0, PA_RTCCE);
> +}
> +
The ? 1 : 0 thing is pointless here. = will already evaluate to this.
? 1 : 0 is almost always crap anyways. Either the result you want already
exists in terms of evaluation, or you want a !! for the far off bits. If
there's nothing in CodingStyle about this, there ought to be.
> @@ -176,6 +216,7 @@ static struct platform_device *rts7751r2
> #endif
> &cf_ide_device,
> &heartbeat_device,
> + &spi_sh_sci_device,
> };
>
> static int __init rts7751r2d_devices_setup(void)
You've just added the device to the platform device registration.
> @@ -260,6 +301,12 @@ static void __init rts7751r2d_setup(char
> writel(readl(sm501_reg) | (1 << SM501_GATE_UART0), sm501_reg);
> }
>
> +static int __init r2d_register_spi(void)
> +{
> + return spi_register_board_info(spi_bus, ARRAY_SIZE(spi_bus));
> +}
> +__initcall(r2d_register_spi);
> +
And then added your own magical initcall for registering the bus. We
already have rts7751r2d_devices_setup(), which as the name implies, is
intended specifically for this sort of thing. Please use that instead of
spreading around more initcall damage.
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH] sh: add spi header and r2d platform data V3
2008-01-21 10:24 [PATCH] sh: add spi header and r2d platform data Magnus Damm
2008-01-23 4:53 ` [PATCH] sh: add spi header and r2d platform data V2 Magnus Damm
2008-01-23 5:25 ` Paul Mundt
@ 2008-01-23 7:21 ` Magnus Damm
2008-01-23 7:31 ` Paul Mundt
2008-01-23 7:38 ` Magnus Damm
4 siblings, 0 replies; 6+ messages in thread
From: Magnus Damm @ 2008-01-23 7:21 UTC (permalink / raw)
To: linux-sh
sh: add spi header and r2d platform data V3
This patch adds the header file asm/spi.h and board specific code for the
r2d board. The header file contains a structure that should be used to
point out a single spi bus. The board specific code for r2d is updated with
such a structure for the new spi_sh_sci driver. The structure contains a
chip select callback plus information about the R9701 rtc chip which is
attached to the spi bus.
Signed-off-by: Magnus Damm <damm@igel.co.jp>
---
Changes since V2 include:
- Moved spi_register_board_info() to rts7751r2d_devices_setup().
- Removed silly comparison in r2d_chip_select().
arch/sh/boards/renesas/rts7751r2d/setup.c | 42 +++++++++++++++++++++++++++++
include/asm-sh/spi.h | 13 ++++++++
2 files changed, 55 insertions(+)
--- 0001/arch/sh/boards/renesas/rts7751r2d/setup.c
+++ work/arch/sh/boards/renesas/rts7751r2d/setup.c 2008-01-23 16:00:49.000000000 +0900
@@ -16,9 +16,12 @@
#include <linux/sm501-regs.h>
#include <linux/pm.h>
#include <linux/fb.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/spi_bitbang.h>
#include <asm/machvec.h>
#include <asm/rts7751r2d.h>
#include <asm/io.h>
+#include <asm/spi.h>
static struct resource cf_ide_resources[] = {
[0] = {
@@ -53,6 +56,43 @@ static struct platform_device cf_ide_dev
},
};
+static struct spi_board_info spi_bus[] = {
+ {
+ .modalias = "rtc-r9701",
+ .max_speed_hz = 1000000,
+ .mode = SPI_MODE_3,
+ },
+};
+
+static void r2d_chip_select(struct sh_spi_info *spi, int cs, int state)
+{
+ BUG_ON(cs != 0); /* Single Epson RTC-9701JE attached on CS0 */
+ ctrl_outw(state = BITBANG_CS_ACTIVE, PA_RTCCE);
+}
+
+static struct sh_spi_info spi_info = {
+ .num_chipselect = 1,
+ .chip_select = r2d_chip_select,
+};
+
+static struct resource spi_sh_sci_resources[] = {
+ {
+ .start = 0xffe00000,
+ .end = 0xffe0001f,
+ .flags = IORESOURCE_MEM,
+ },
+};
+
+static struct platform_device spi_sh_sci_device = {
+ .name = "spi_sh_sci",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(spi_sh_sci_resources),
+ .resource = spi_sh_sci_resources,
+ .dev = {
+ .platform_data = &spi_info,
+ },
+};
+
static struct resource heartbeat_resources[] = {
[0] = {
.start = PA_OUTPORT,
@@ -176,10 +216,12 @@ static struct platform_device *rts7751r2
#endif
&cf_ide_device,
&heartbeat_device,
+ &spi_sh_sci_device,
};
static int __init rts7751r2d_devices_setup(void)
{
+ spi_register_board_info(spi_bus, ARRAY_SIZE(spi_bus));
return platform_add_devices(rts7751r2d_devices,
ARRAY_SIZE(rts7751r2d_devices));
}
--- /dev/null
+++ work/include/asm-sh/spi.h 2008-01-23 12:38:38.000000000 +0900
@@ -0,0 +1,13 @@
+#ifndef __ASM_SPI_H__
+#define __ASM_SPI_H__
+
+struct sh_spi_info;
+
+struct sh_spi_info {
+ int bus_num;
+ int num_chipselect;
+
+ void (*chip_select)(struct sh_spi_info *spi, int cs, int state);
+};
+
+#endif /* __ASM_SPI_H__ */
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] sh: add spi header and r2d platform data V3
2008-01-21 10:24 [PATCH] sh: add spi header and r2d platform data Magnus Damm
` (2 preceding siblings ...)
2008-01-23 7:21 ` [PATCH] sh: add spi header and r2d platform data V3 Magnus Damm
@ 2008-01-23 7:31 ` Paul Mundt
2008-01-23 7:38 ` Magnus Damm
4 siblings, 0 replies; 6+ messages in thread
From: Paul Mundt @ 2008-01-23 7:31 UTC (permalink / raw)
To: linux-sh
On Wed, Jan 23, 2008 at 04:21:18PM +0900, Magnus Damm wrote:
> sh: add spi header and r2d platform data V3
>
> This patch adds the header file asm/spi.h and board specific code for the
> r2d board. The header file contains a structure that should be used to
> point out a single spi bus. The board specific code for r2d is updated with
> such a structure for the new spi_sh_sci driver. The structure contains a
> chip select callback plus information about the R9701 rtc chip which is
> attached to the spi bus.
>
> Signed-off-by: Magnus Damm <damm@igel.co.jp>
> ---
>
> Changes since V2 include:
> - Moved spi_register_board_info() to rts7751r2d_devices_setup().
> - Removed silly comparison in r2d_chip_select().
>
> arch/sh/boards/renesas/rts7751r2d/setup.c | 42 +++++++++++++++++++++++++++++
> include/asm-sh/spi.h | 13 ++++++++
> 2 files changed, 55 insertions(+)
>
Looks fine. I'll queue it up once the other bits hit -mm.
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] sh: add spi header and r2d platform data V3
2008-01-21 10:24 [PATCH] sh: add spi header and r2d platform data Magnus Damm
` (3 preceding siblings ...)
2008-01-23 7:31 ` Paul Mundt
@ 2008-01-23 7:38 ` Magnus Damm
4 siblings, 0 replies; 6+ messages in thread
From: Magnus Damm @ 2008-01-23 7:38 UTC (permalink / raw)
To: linux-sh
On Jan 23, 2008 4:31 PM, Paul Mundt <lethal@linux-sh.org> wrote:
> On Wed, Jan 23, 2008 at 04:21:18PM +0900, Magnus Damm wrote:
> > sh: add spi header and r2d platform data V3
> >
> > This patch adds the header file asm/spi.h and board specific code for the
> > r2d board. The header file contains a structure that should be used to
> > point out a single spi bus. The board specific code for r2d is updated with
> > such a structure for the new spi_sh_sci driver. The structure contains a
> > chip select callback plus information about the R9701 rtc chip which is
> > attached to the spi bus.
> >
> > Signed-off-by: Magnus Damm <damm@igel.co.jp>
> > ---
> >
> > Changes since V2 include:
> > - Moved spi_register_board_info() to rts7751r2d_devices_setup().
> > - Removed silly comparison in r2d_chip_select().
> >
> > arch/sh/boards/renesas/rts7751r2d/setup.c | 42 +++++++++++++++++++++++++++++
> > include/asm-sh/spi.h | 13 ++++++++
> > 2 files changed, 55 insertions(+)
> >
> Looks fine. I'll queue it up once the other bits hit -mm.
Excellent. Thank you!
/ magnus
^ permalink raw reply [flat|nested] 6+ messages in thread