All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize for
@ 2011-02-15  5:03 Kuninori Morimoto
  2011-02-17  0:41 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory Simon Horman
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Kuninori Morimoto @ 2011-02-15  5:03 UTC (permalink / raw)
  To: linux-sh

Current makerel had issue which couldn't boot sometimes.
This patch fixup it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 .../mach-shmobile/include/mach/head-mackerel.txt   |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arm/mach-shmobile/include/mach/head-mackerel.txt b/arch/arm/mach-shmobile/include/mach/head-mackerel.txt
index efd3687..3029aba 100644
--- a/arch/arm/mach-shmobile/include/mach/head-mackerel.txt
+++ b/arch/arm/mach-shmobile/include/mach/head-mackerel.txt
@@ -6,13 +6,10 @@ LIST "RWT Setting"
 EW 0xE6020004, 0xA500
 EW 0xE6030004, 0xA500
 
-DD 0x01001000, 0x01001000
-
 LIST "GPIO Setting"
 EB 0xE6051013, 0xA2
 
 LIST "CPG"
-ED 0xE6150080, 0x00000180
 ED 0xE61500C0, 0x00000002
 
 WAIT 1, 0xFE40009C
@@ -37,6 +34,9 @@ ED 0xE615002C, 0x93000040
 
 WAIT 1, 0xFE40009C
 
+LIST "SUB/USBClk"
+ED 0xE6150080, 0x00000180
+
 LIST "BSC"
 ED 0xFEC10000, 0x00E0001B
 
@@ -53,7 +53,7 @@ ED 0xFE400048, 0x20C18505
 ED 0xFE40004C, 0x00110209
 ED 0xFE400010, 0x00000087
 
-WAIT 10, 0xFE40009C
+WAIT 30, 0xFE40009C
 
 ED 0xFE400084, 0x0000003F
 EB 0xFE500000, 0x00
@@ -84,7 +84,7 @@ ED 0xE6150004, 0x80331050
 
 WAIT 1, 0xFE40009C
 
-ED 0xE6150354, 0x00000002
+ED 0xFE400354, 0x01AD8002
 
 LIST "SCIF0 - Serial port for earlyprintk"
 EB 0xE6053098, 0x11
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory
  2011-02-15  5:03 [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize for Kuninori Morimoto
@ 2011-02-17  0:41 ` Simon Horman
  2011-02-17  1:11 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize Kuninori Morimoto
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Simon Horman @ 2011-02-17  0:41 UTC (permalink / raw)
  To: linux-sh

On Tue, Feb 15, 2011 at 02:03:53PM +0900, Kuninori Morimoto wrote:
> Current makerel had issue which couldn't boot sometimes.
> This patch fixup it.
> 
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

Hi Morimoto-san,

I have verified that this boots on my Mackerel.
I have also looked over the register changes
and they seem reasonable to me.

Reviewed-by: Simon Horman <horms@verge.net.au>

> ---
>  .../mach-shmobile/include/mach/head-mackerel.txt   |   10 +++++-----
>  1 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/arm/mach-shmobile/include/mach/head-mackerel.txt b/arch/arm/mach-shmobile/include/mach/head-mackerel.txt
> index efd3687..3029aba 100644
> --- a/arch/arm/mach-shmobile/include/mach/head-mackerel.txt
> +++ b/arch/arm/mach-shmobile/include/mach/head-mackerel.txt
> @@ -6,13 +6,10 @@ LIST "RWT Setting"
>  EW 0xE6020004, 0xA500
>  EW 0xE6030004, 0xA500
>  
> -DD 0x01001000, 0x01001000
> -
>  LIST "GPIO Setting"
>  EB 0xE6051013, 0xA2
>  
>  LIST "CPG"
> -ED 0xE6150080, 0x00000180
>  ED 0xE61500C0, 0x00000002
>  
>  WAIT 1, 0xFE40009C
> @@ -37,6 +34,9 @@ ED 0xE615002C, 0x93000040
>  
>  WAIT 1, 0xFE40009C
>  
> +LIST "SUB/USBClk"
> +ED 0xE6150080, 0x00000180
> +
>  LIST "BSC"
>  ED 0xFEC10000, 0x00E0001B
>  
> @@ -53,7 +53,7 @@ ED 0xFE400048, 0x20C18505
>  ED 0xFE40004C, 0x00110209
>  ED 0xFE400010, 0x00000087
>  
> -WAIT 10, 0xFE40009C
> +WAIT 30, 0xFE40009C
>  
>  ED 0xFE400084, 0x0000003F
>  EB 0xFE500000, 0x00
> @@ -84,7 +84,7 @@ ED 0xE6150004, 0x80331050
>  
>  WAIT 1, 0xFE40009C
>  
> -ED 0xE6150354, 0x00000002
> +ED 0xFE400354, 0x01AD8002

I don't see 0xE6150354 in the processor manual. Was it a typo?

>  LIST "SCIF0 - Serial port for earlyprintk"
>  EB 0xE6053098, 0x11
> -- 
> 1.7.1
> 
> --
> 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] 8+ messages in thread

* Re: [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize
  2011-02-15  5:03 [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize for Kuninori Morimoto
  2011-02-17  0:41 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory Simon Horman
@ 2011-02-17  1:11 ` Kuninori Morimoto
  2011-05-25  2:49 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs support Kuninori Morimoto
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Kuninori Morimoto @ 2011-02-17  1:11 UTC (permalink / raw)
  To: linux-sh


Dear Simon

> I have verified that this boots on my Mackerel.
> I have also looked over the register changes
> and they seem reasonable to me.
> 
> Reviewed-by: Simon Horman <horms@verge.net.au>

Thanks

> > -ED 0xE6150354, 0x00000002
> > +ED 0xFE400354, 0x01AD8002
> 
> I don't see 0xE6150354 in the processor manual. Was it a typo?

Yes. the original code that I got had typo.

Best regards
--
Kuninori Morimoto
 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs support
  2011-02-15  5:03 [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize for Kuninori Morimoto
  2011-02-17  0:41 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory Simon Horman
  2011-02-17  1:11 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize Kuninori Morimoto
@ 2011-05-25  2:49 ` Kuninori Morimoto
  2011-05-25  2:57 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs support for USB1 Paul Mundt
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Kuninori Morimoto @ 2011-05-25  2:49 UTC (permalink / raw)
  To: linux-sh

CN31 USB1 can be Host/Function, and it can use IRQ8 as USB-phy.
This mean we can power off it if...
 - while USB1 is disconnected.
 - USB-Function is selected.
 - driver is supporting it.

OTOH, CN22 USB0 which is only USB Function
can not use USB-phy interrupt (IRQ7) on mackerel board.
Because IRQ7 is already used by Touchscreen,
and it is impossible to use cascaded IRQ7.

renesas_usbhs driver which is supporting USB-Function
is supporting USB power off when disconnect.
mackerel board will use renesas_usbhs driver as
USB-Function on CN31 if it have CONFIG_USB_RENESAS_USBHS.
And r8a66597_hcd will be used as USB Host if it have CONFIG_USB_R8A66597_HCD.

But you can not select both CONFIG_USB_R8A66597_HCD and
CONFIG_USB_RENESAS_USBHS in same time for now.
Because IRQ8 will be requested in different driver.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 arch/arm/mach-shmobile/board-mackerel.c |  175 ++++++++++++++++++++++++++++++-
 1 files changed, 174 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c
index efceb1d..512dc4c 100644
--- a/arch/arm/mach-shmobile/board-mackerel.c
+++ b/arch/arm/mach-shmobile/board-mackerel.c
@@ -43,6 +43,7 @@
 #include <linux/sh_intc.h>
 #include <linux/tca6416_keypad.h>
 #include <linux/usb/r8a66597.h>
+#include <linux/usb/renesas_usbhs.h>
 
 #include <video/sh_mobile_hdmi.h>
 #include <video/sh_mobile_lcdc.h>
@@ -143,7 +144,9 @@
  * open      | external VBUS | Function
  *
  * *1
- * CN31 is used as Host in Linux.
+ * CN31 is used as
+ * CONFIG_USB_R8A66597_HCD	Host
+ * CONFIG_USB_RENESAS_USBHS	Function
  */
 
 /*
@@ -185,6 +188,7 @@
  * FIXME !!
  *
  * gpio_no_direction
+ * gpio_pull_down
  * are quick_hack.
  *
  * current gpio frame work doesn't have
@@ -196,6 +200,16 @@ static void __init gpio_no_direction(u32 addr)
 	__raw_writeb(0x00, addr);
 }
 
+static void __init gpio_pull_down(u32 addr)
+{
+	u8 data = __raw_readb(addr);
+
+	data &= 0x0F;
+	data |= 0xA0;
+
+	__raw_writeb(data, addr);
+}
+
 /* MTD */
 static struct mtd_partition nor_flash_partitions[] = {
 	{
@@ -509,6 +523,162 @@ static struct platform_device usb1_host_device = {
 	.resource	= usb1_host_resources,
 };
 
+#if defined(CONFIG_USB_RENESAS_USBHS) && defined(CONFIG_USB_R8A66597_HCD)
+/* same IRQ8 will be requested in different driver */
+#error	dont't select R8A66597_HCD and RENESAS_USBHS in same time
+#endif
+
+/* USB1 (Function) */
+#define USB_PHY_MODE		(1 << 4)
+#define USB_PHY_INT_EN		((1 << 3) | (1 << 2))
+#define USB_PHY_ON		(1 << 1)
+#define USB_PHY_OFF		(1 << 0)
+#define USB_PHY_INT_CLR		(USB_PHY_ON | USB_PHY_OFF)
+
+struct usbhs_private {
+	unsigned int irq;
+	unsigned int usbphyaddr;
+	unsigned int usbcrcaddr;
+	struct renesas_usbhs_platform_info info;
+};
+
+#define usbhs_get_priv(pdev)				\
+	container_of(renesas_usbhs_get_info(pdev),	\
+		     struct usbhs_private, info)
+
+#define usbhs_is_connected(priv)			\
+	(!((1 << 7) & __raw_readw(priv->usbcrcaddr)))
+
+static int usbhs1_get_id(struct platform_device *pdev)
+{
+	return USBHS_GADGET;
+}
+
+static int usbhs1_get_vbus(struct platform_device *pdev)
+{
+	return usbhs_is_connected(usbhs_get_priv(pdev));
+}
+
+static irqreturn_t usbhs1_interrupt(int irq, void *data)
+{
+	struct platform_device *pdev = data;
+	struct usbhs_private *priv = usbhs_get_priv(pdev);
+
+	dev_dbg(&pdev->dev, "%s\n", __func__);
+
+	renesas_usbhs_call_notify_hotplug(pdev);
+
+	/* clear status */
+	__raw_writew(__raw_readw(priv->usbphyaddr) | USB_PHY_INT_CLR,
+		     priv->usbphyaddr);
+
+	return IRQ_HANDLED;
+}
+
+static int usbhs1_hardware_init(struct platform_device *pdev)
+{
+	struct usbhs_private *priv = usbhs_get_priv(pdev);
+	int ret;
+
+	irq_set_irq_type(priv->irq, IRQ_TYPE_LEVEL_HIGH);
+
+	/* clear interrupt status */
+	__raw_writew(USB_PHY_MODE | USB_PHY_INT_CLR, priv->usbphyaddr);
+
+	ret = request_irq(priv->irq, usbhs1_interrupt, 0,
+			  dev_name(&pdev->dev), pdev);
+	if (ret) {
+		dev_err(&pdev->dev, "request_irq err\n");
+		return ret;
+	}
+
+	/* enable USB phy interrupt */
+	__raw_writew(USB_PHY_MODE | USB_PHY_INT_EN, priv->usbphyaddr);
+
+	return 0;
+}
+
+static void usbhs1_hardware_exit(struct platform_device *pdev)
+{
+	struct usbhs_private *priv = usbhs_get_priv(pdev);
+
+	/* clear interrupt status */
+	__raw_writew(USB_PHY_MODE | USB_PHY_INT_CLR, priv->usbphyaddr);
+
+	free_irq(priv->irq, pdev);
+}
+
+static void usbhs1_phy_reset(struct platform_device *pdev)
+{
+	struct usbhs_private *priv = usbhs_get_priv(pdev);
+
+	/* init phy */
+	__raw_writew(0x8a0a, priv->usbcrcaddr);
+}
+
+static u32 usbhs1_pipe_cfg[] = {
+	USB_ENDPOINT_XFER_CONTROL,
+	USB_ENDPOINT_XFER_ISOC,
+	USB_ENDPOINT_XFER_ISOC,
+	USB_ENDPOINT_XFER_BULK,
+	USB_ENDPOINT_XFER_BULK,
+	USB_ENDPOINT_XFER_BULK,
+	USB_ENDPOINT_XFER_INT,
+	USB_ENDPOINT_XFER_INT,
+	USB_ENDPOINT_XFER_INT,
+	USB_ENDPOINT_XFER_BULK,
+	USB_ENDPOINT_XFER_BULK,
+	USB_ENDPOINT_XFER_BULK,
+	USB_ENDPOINT_XFER_BULK,
+	USB_ENDPOINT_XFER_BULK,
+	USB_ENDPOINT_XFER_BULK,
+	USB_ENDPOINT_XFER_BULK,
+};
+
+static struct usbhs_private usbhs1_private = {
+	.irq		= evt2irq(0x0300),	/* IRQ8 */
+	.usbphyaddr	= 0xE60581E2,		/* USBPHY1INTAP */
+	.usbcrcaddr	= 0xE6058130,		/* USBCR4 */
+	.info = {
+		.platform_callback = {
+			.hardware_init	= usbhs1_hardware_init,
+			.hardware_exit	= usbhs1_hardware_exit,
+			.phy_reset	= usbhs1_phy_reset,
+			.get_id		= usbhs1_get_id,
+			.get_vbus	= usbhs1_get_vbus,
+		},
+		.driver_param = {
+			.buswait_bwait	= 4,
+			.pipe_type	= usbhs1_pipe_cfg,
+			.pipe_size	= ARRAY_SIZE(usbhs1_pipe_cfg),
+		},
+	},
+};
+
+static struct resource usbhs1_resources[] = {
+	[0] = {
+		.name	= "USBHS",
+		.start	= 0xE68B0000,
+		.end	= 0xE68B00E6 - 1,
+		.flags	= IORESOURCE_MEM,
+	},
+	[1] = {
+		.start	= evt2irq(0x1ce0) /* USB1_USB1I0 */,
+		.flags	= IORESOURCE_IRQ,
+	},
+};
+
+static struct platform_device usbhs1_device = {
+	.name	= "renesas_usbhs",
+	.id	= 1,
+	.dev = {
+		.platform_data		= &usbhs1_private.info,
+	},
+	.num_resources	= ARRAY_SIZE(usbhs1_resources),
+	.resource	= usbhs1_resources,
+};
+
+
 /* LED */
 static struct gpio_led mackerel_leds[] = {
 	{
@@ -949,6 +1119,7 @@ static struct platform_device *mackerel_devices[] __initdata = {
 	&smc911x_device,
 	&lcdc_device,
 	&usb1_host_device,
+	&usbhs1_device,
 	&leds_device,
 	&fsi_device,
 	&fsi_ak4643_device,
@@ -1044,6 +1215,7 @@ static void __init mackerel_map_io(void)
 
 #define GPIO_PORT9CR	0xE6051009
 #define GPIO_PORT10CR	0xE605100A
+#define GPIO_PORT168CR	0xE60520A8
 #define SRCR4		0xe61580bc
 #define USCCR1		0xE6058144
 static void __init mackerel_init(void)
@@ -1102,6 +1274,7 @@ static void __init mackerel_init(void)
 	gpio_request(GPIO_FN_OVCN_1_114, NULL);
 	gpio_request(GPIO_FN_EXTLP_1,    NULL);
 	gpio_request(GPIO_FN_OVCN2_1,    NULL);
+	gpio_pull_down(GPIO_PORT168CR);
 
 	/* setup USB phy */
 	__raw_writew(0x8a0a, 0xE6058130);	/* USBCR4 */
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs support for USB1
  2011-02-15  5:03 [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize for Kuninori Morimoto
                   ` (2 preceding siblings ...)
  2011-05-25  2:49 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs support Kuninori Morimoto
@ 2011-05-25  2:57 ` Paul Mundt
  2011-05-25  4:24 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs Kuninori Morimoto
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Paul Mundt @ 2011-05-25  2:57 UTC (permalink / raw)
  To: linux-sh

On Wed, May 25, 2011 at 11:49:25AM +0900, Kuninori Morimoto wrote:
> CN31 USB1 can be Host/Function, and it can use IRQ8 as USB-phy.
> This mean we can power off it if...
>  - while USB1 is disconnected.
>  - USB-Function is selected.
>  - driver is supporting it.
> 
> OTOH, CN22 USB0 which is only USB Function
> can not use USB-phy interrupt (IRQ7) on mackerel board.
> Because IRQ7 is already used by Touchscreen,
> and it is impossible to use cascaded IRQ7.
> 
Why is it impossible to have an IRQ7 demux?

> renesas_usbhs driver which is supporting USB-Function
> is supporting USB power off when disconnect.
> mackerel board will use renesas_usbhs driver as
> USB-Function on CN31 if it have CONFIG_USB_RENESAS_USBHS.
> And r8a66597_hcd will be used as USB Host if it have CONFIG_USB_R8A66597_HCD.
> 
> But you can not select both CONFIG_USB_R8A66597_HCD and
> CONFIG_USB_RENESAS_USBHS in same time for now.
> Because IRQ8 will be requested in different driver.
> 
Is there some particular reason why IRQF_SHARED isn't sufficient for
working around this? Since you're leveraging the IORESOURCE PnP IRQ bits
anyways, you could easily just or in IORESOURCE_IRQ_SHAREABLE and
translate that in to an IRQF_SHARED at request_irq() time for the cases
that need it.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs
  2011-02-15  5:03 [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize for Kuninori Morimoto
                   ` (3 preceding siblings ...)
  2011-05-25  2:57 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs support for USB1 Paul Mundt
@ 2011-05-25  4:24 ` Kuninori Morimoto
  2011-05-25  5:40 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs support for USB1 Paul Mundt
  2012-03-01  4:25 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: Add FSI DMAEngine support Kuninori Morimoto
  6 siblings, 0 replies; 8+ messages in thread
From: Kuninori Morimoto @ 2011-05-25  4:24 UTC (permalink / raw)
  To: linux-sh


Dear Paul

Thank you for checking

> > OTOH, CN22 USB0 which is only USB Function
> > can not use USB-phy interrupt (IRQ7) on mackerel board.
> > Because IRQ7 is already used by Touchscreen,
> > and it is impossible to use cascaded IRQ7.
> > 
> Why is it impossible to have an IRQ7 demux?

Sorry for insufficient explanation.

USB-phy needs IRQ7-PORT167, and Touchscreen needs IRQ7-PORT40.
IRQ7 PORT 167/40 are controlled by GPIO.
I think it is impossible to have IRQ7 demux.

> > But you can not select both CONFIG_USB_R8A66597_HCD and
> > CONFIG_USB_RENESAS_USBHS in same time for now.
> > Because IRQ8 will be requested in different driver.
> > 
> Is there some particular reason why IRQF_SHARED isn't sufficient for
> working around this? Since you're leveraging the IORESOURCE PnP IRQ bits
> anyways, you could easily just or in IORESOURCE_IRQ_SHAREABLE and
> translate that in to an IRQF_SHARED at request_irq() time for the cases
> that need it.

renesas_usbhs is new version of r8a66597_xxx driver.
This means both will access to same register.
So, we can not keep correct operation
if these driver are probed in same time.

Does this become reason ?
If yes, shall I send v2 patch ?

Best regards
--
Kuninori Morimoto
 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs support for USB1
  2011-02-15  5:03 [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize for Kuninori Morimoto
                   ` (4 preceding siblings ...)
  2011-05-25  4:24 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs Kuninori Morimoto
@ 2011-05-25  5:40 ` Paul Mundt
  2012-03-01  4:25 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: Add FSI DMAEngine support Kuninori Morimoto
  6 siblings, 0 replies; 8+ messages in thread
From: Paul Mundt @ 2011-05-25  5:40 UTC (permalink / raw)
  To: linux-sh

On Wed, May 25, 2011 at 01:24:10PM +0900, Kuninori Morimoto wrote:
> > > OTOH, CN22 USB0 which is only USB Function
> > > can not use USB-phy interrupt (IRQ7) on mackerel board.
> > > Because IRQ7 is already used by Touchscreen,
> > > and it is impossible to use cascaded IRQ7.
> > > 
> > Why is it impossible to have an IRQ7 demux?
> 
> Sorry for insufficient explanation.
> 
> USB-phy needs IRQ7-PORT167, and Touchscreen needs IRQ7-PORT40.
> IRQ7 PORT 167/40 are controlled by GPIO.
> I think it is impossible to have IRQ7 demux.
> 
Ok, it would be nice to see this documented somewhere (or at least in the
changelog), as it's not immediately obvious to anyone that isn't staring
at the data sheet.

> > > But you can not select both CONFIG_USB_R8A66597_HCD and
> > > CONFIG_USB_RENESAS_USBHS in same time for now.
> > > Because IRQ8 will be requested in different driver.
> > > 
> > Is there some particular reason why IRQF_SHARED isn't sufficient for
> > working around this? Since you're leveraging the IORESOURCE PnP IRQ bits
> > anyways, you could easily just or in IORESOURCE_IRQ_SHAREABLE and
> > translate that in to an IRQF_SHARED at request_irq() time for the cases
> > that need it.
> 
> renesas_usbhs is new version of r8a66597_xxx driver.
> This means both will access to same register.
> So, we can not keep correct operation
> if these driver are probed in same time.
> 
> Does this become reason ?
> If yes, shall I send v2 patch ?
> 
That's ok, there are enough drivers like that in the kernel that it's
quite acceptable to fall back on a runtime error (ie, request_irq()
failing and the device simply never coming up). The situation we want to
avoid is build-time errors for run-time behavioural problems. In this
case you can simply kill off the #ifdef/#error mess and leave it to the
regular error paths if the user has both configured.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 2/2] ARM: mach-shmobile: mackerel: Add FSI DMAEngine support
  2011-02-15  5:03 [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize for Kuninori Morimoto
                   ` (5 preceding siblings ...)
  2011-05-25  5:40 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs support for USB1 Paul Mundt
@ 2012-03-01  4:25 ` Kuninori Morimoto
  6 siblings, 0 replies; 8+ messages in thread
From: Kuninori Morimoto @ 2012-03-01  4:25 UTC (permalink / raw)
  To: linux-sh

We needs un-manualed address to use DMA

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 arch/arm/mach-shmobile/board-mackerel.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c
index 6e21194..4926fdc 100644
--- a/arch/arm/mach-shmobile/board-mackerel.c
+++ b/arch/arm/mach-shmobile/board-mackerel.c
@@ -955,6 +955,8 @@ fsi_set_rate_end:
 static struct sh_fsi_platform_info fsi_info = {
 	.port_a = {
 		.flags = SH_FSI_BRS_INV,
+		.tx_id = SHDMA_SLAVE_FSIA_TX,
+		.rx_id = SHDMA_SLAVE_FSIA_RX,
 	},
 	.port_b = {
 		.flags = SH_FSI_BRS_INV	|
@@ -967,9 +969,11 @@ static struct sh_fsi_platform_info fsi_info = {
 
 static struct resource fsi_resources[] = {
 	[0] = {
+		/* we need 0xFE1F0000 to access DMA
+		 * instead of 0xFE3C0000 */
 		.name	= "FSI",
-		.start	= 0xFE3C0000,
-		.end	= 0xFE3C0400 - 1,
+		.start  = 0xFE1F0000,
+		.end    = 0xFE1F0400 - 1,
 		.flags	= IORESOURCE_MEM,
 	},
 	[1] = {
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2012-03-01  4:25 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-15  5:03 [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize for Kuninori Morimoto
2011-02-17  0:41 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory Simon Horman
2011-02-17  1:11 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: fixup memory initialize Kuninori Morimoto
2011-05-25  2:49 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs support Kuninori Morimoto
2011-05-25  2:57 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs support for USB1 Paul Mundt
2011-05-25  4:24 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs Kuninori Morimoto
2011-05-25  5:40 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: add renesas_usbhs support for USB1 Paul Mundt
2012-03-01  4:25 ` [PATCH 2/2] ARM: mach-shmobile: mackerel: Add FSI DMAEngine support Kuninori Morimoto

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.