From: "Heiko Stübner" <heiko@sntech.de>
To: Greg KH <greg@kroah.com>, Kukjin Kim <kgene.kim@samsung.com>
Cc: Ben Dooks <ben-linux@fluff.org>,
Thomas Abraham <thomas.ab@samsung.com>,
Sangbeom Kim <sbkim73@samsung.com>,
linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org, linux-usb@vger.kernel.org,
Alexander Neumann <alexander@debian.org>
Subject: [PATCH 2/4] ARM: S3C24XX: Add plaform device definition for USB High-Speed gadget controller.
Date: Thu, 14 Apr 2011 11:10:05 +0200 [thread overview]
Message-ID: <201104141110.17269.heiko@sntech.de> (raw)
In-Reply-To: <201104141106.59565.heiko@sntech.de>
From: Thomas Abraham <thomas.ab@samsung.com>
S3C2416, S3C2443 and S3C2450 includes a USB High-Speed Gadget controller module.
This patch adds the following for supporting this controller.
1. Definition for USB High-Speed controller base address.
2. Platform device instantiation.
3. Declaration for platform data structure.
4. Functionality to setup platform data for the controller.
Signed-off-by: Thomas Abraham <thomas.ab@samsung.com>
Signed-off-by: Sangbeom Kim <sbkim73@samsung.com>
---
arch/arm/mach-s3c2410/include/mach/map.h | 4 +++
arch/arm/plat-s3c24xx/devs.c | 41 +++++++++++++++++++++++++++++
arch/arm/plat-s3c24xx/include/plat/udc.h | 17 ++++++++++++
arch/arm/plat-samsung/include/plat/devs.h | 1 +
4 files changed, 63 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-s3c2410/include/mach/map.h b/arch/arm/mach-s3c2410/include/mach/map.h
index 25bbf5a..425552d 100644
--- a/arch/arm/mach-s3c2410/include/mach/map.h
+++ b/arch/arm/mach-s3c2410/include/mach/map.h
@@ -21,6 +21,10 @@
/* USB host controller */
#define S3C2410_PA_USBHOST (0x49000000)
+/* S3C2416/S3C2443/S3C2450 High-Speed USB Gadget */
+#define S3C2416_PA_HSUDC (0x49800000)
+#define S3C2416_SZ_HSUDC (SZ_4K)
+
/* DMA controller */
#define S3C2410_PA_DMA (0x4B000000)
#define S3C24XX_SZ_DMA SZ_1M
diff --git a/arch/arm/plat-s3c24xx/devs.c b/arch/arm/plat-s3c24xx/devs.c
index 268f3ed..7366799 100644
--- a/arch/arm/plat-s3c24xx/devs.c
+++ b/arch/arm/plat-s3c24xx/devs.c
@@ -22,6 +22,7 @@
#include <linux/io.h>
#include <linux/slab.h>
#include <linux/string.h>
+#include <linux/dma-mapping.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
@@ -233,6 +234,46 @@ void __init s3c24xx_udc_set_platdata(struct s3c2410_udc_mach_info *pd)
}
}
+/* USB High Speed 2.0 Device (Gadget) */
+static struct resource s3c_hsudc_resource[] = {
+ [0] = {
+ .start = S3C2416_PA_HSUDC,
+ .end = S3C2416_PA_HSUDC + S3C2416_SZ_HSUDC - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = IRQ_USBD,
+ .end = IRQ_USBD,
+ .flags = IORESOURCE_IRQ,
+ }
+};
+
+static u64 s3c_hsudc_dmamask = DMA_BIT_MASK(32);
+
+struct platform_device s3c_device_usb_hsudc = {
+ .name = "s3c-hsudc",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(s3c_hsudc_resource),
+ .resource = s3c_hsudc_resource,
+ .dev = {
+ .dma_mask = &s3c_hsudc_dmamask,
+ .coherent_dma_mask = DMA_BIT_MASK(32),
+ },
+};
+
+void __init s3c24xx_hsudc_set_platdata(struct s3c24xx_hsudc_platdata *pd)
+{
+ struct s3c24xx_hsudc_platdata *npd;
+
+ npd = kmalloc(sizeof(*npd), GFP_KERNEL);
+ if (npd) {
+ memcpy(npd, pd, sizeof(*npd));
+ s3c_device_usb_hsudc.dev.platform_data = npd;
+ } else {
+ printk(KERN_ERR "no memory for udc platform data\n");
+ }
+}
+
/* IIS */
static struct resource s3c_iis_resource[] = {
diff --git a/arch/arm/plat-s3c24xx/include/plat/udc.h b/arch/arm/plat-s3c24xx/include/plat/udc.h
index 80457c6..f638842 100644
--- a/arch/arm/plat-s3c24xx/include/plat/udc.h
+++ b/arch/arm/plat-s3c24xx/include/plat/udc.h
@@ -37,4 +37,21 @@ struct s3c2410_udc_mach_info {
extern void __init s3c24xx_udc_set_platdata(struct s3c2410_udc_mach_info *);
+/**
+ * s3c24xx_hsudc_platdata - Platform data for USB High-Speed gadget controller.
+ * @epnum: Number of endpoints to be instantiated by the controller driver.
+ * @gpio_init: Platform specific USB related GPIO initialization.
+ * @gpio_uninit: Platform specific USB releted GPIO uninitialzation.
+ *
+ * Representation of platform data for the S3C24XX USB 2.0 High Speed gadget
+ * controllers.
+ */
+struct s3c24xx_hsudc_platdata {
+ unsigned int epnum;
+ void (*gpio_init)(void);
+ void (*gpio_uninit)(void);
+};
+
+extern void __init s3c24xx_hsudc_set_platdata(struct s3c24xx_hsudc_platdata *pd);
+
#endif /* __ASM_ARM_ARCH_UDC_H */
diff --git a/arch/arm/plat-samsung/include/plat/devs.h b/arch/arm/plat-samsung/include/plat/devs.h
index 3f38deb..39818d8 100644
--- a/arch/arm/plat-samsung/include/plat/devs.h
+++ b/arch/arm/plat-samsung/include/plat/devs.h
@@ -88,6 +88,7 @@ extern struct platform_device s3c64xx_device_onenand1;
extern struct platform_device s5p_device_onenand;
extern struct platform_device s3c_device_usbgadget;
+extern struct platform_device s3c_device_usb_hsudc;
extern struct platform_device s3c_device_usb_hsotg;
extern struct platform_device s5pv210_device_ac97;
--
1.7.1
WARNING: multiple messages have this Message-ID (diff)
From: heiko@sntech.de (Heiko Stübner)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/4] ARM: S3C24XX: Add plaform device definition for USB High-Speed gadget controller.
Date: Thu, 14 Apr 2011 11:10:05 +0200 [thread overview]
Message-ID: <201104141110.17269.heiko@sntech.de> (raw)
In-Reply-To: <201104141106.59565.heiko@sntech.de>
From: Thomas Abraham <thomas.ab@samsung.com>
S3C2416, S3C2443 and S3C2450 includes a USB High-Speed Gadget controller module.
This patch adds the following for supporting this controller.
1. Definition for USB High-Speed controller base address.
2. Platform device instantiation.
3. Declaration for platform data structure.
4. Functionality to setup platform data for the controller.
Signed-off-by: Thomas Abraham <thomas.ab@samsung.com>
Signed-off-by: Sangbeom Kim <sbkim73@samsung.com>
---
arch/arm/mach-s3c2410/include/mach/map.h | 4 +++
arch/arm/plat-s3c24xx/devs.c | 41 +++++++++++++++++++++++++++++
arch/arm/plat-s3c24xx/include/plat/udc.h | 17 ++++++++++++
arch/arm/plat-samsung/include/plat/devs.h | 1 +
4 files changed, 63 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-s3c2410/include/mach/map.h b/arch/arm/mach-s3c2410/include/mach/map.h
index 25bbf5a..425552d 100644
--- a/arch/arm/mach-s3c2410/include/mach/map.h
+++ b/arch/arm/mach-s3c2410/include/mach/map.h
@@ -21,6 +21,10 @@
/* USB host controller */
#define S3C2410_PA_USBHOST (0x49000000)
+/* S3C2416/S3C2443/S3C2450 High-Speed USB Gadget */
+#define S3C2416_PA_HSUDC (0x49800000)
+#define S3C2416_SZ_HSUDC (SZ_4K)
+
/* DMA controller */
#define S3C2410_PA_DMA (0x4B000000)
#define S3C24XX_SZ_DMA SZ_1M
diff --git a/arch/arm/plat-s3c24xx/devs.c b/arch/arm/plat-s3c24xx/devs.c
index 268f3ed..7366799 100644
--- a/arch/arm/plat-s3c24xx/devs.c
+++ b/arch/arm/plat-s3c24xx/devs.c
@@ -22,6 +22,7 @@
#include <linux/io.h>
#include <linux/slab.h>
#include <linux/string.h>
+#include <linux/dma-mapping.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
@@ -233,6 +234,46 @@ void __init s3c24xx_udc_set_platdata(struct s3c2410_udc_mach_info *pd)
}
}
+/* USB High Speed 2.0 Device (Gadget) */
+static struct resource s3c_hsudc_resource[] = {
+ [0] = {
+ .start = S3C2416_PA_HSUDC,
+ .end = S3C2416_PA_HSUDC + S3C2416_SZ_HSUDC - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = IRQ_USBD,
+ .end = IRQ_USBD,
+ .flags = IORESOURCE_IRQ,
+ }
+};
+
+static u64 s3c_hsudc_dmamask = DMA_BIT_MASK(32);
+
+struct platform_device s3c_device_usb_hsudc = {
+ .name = "s3c-hsudc",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(s3c_hsudc_resource),
+ .resource = s3c_hsudc_resource,
+ .dev = {
+ .dma_mask = &s3c_hsudc_dmamask,
+ .coherent_dma_mask = DMA_BIT_MASK(32),
+ },
+};
+
+void __init s3c24xx_hsudc_set_platdata(struct s3c24xx_hsudc_platdata *pd)
+{
+ struct s3c24xx_hsudc_platdata *npd;
+
+ npd = kmalloc(sizeof(*npd), GFP_KERNEL);
+ if (npd) {
+ memcpy(npd, pd, sizeof(*npd));
+ s3c_device_usb_hsudc.dev.platform_data = npd;
+ } else {
+ printk(KERN_ERR "no memory for udc platform data\n");
+ }
+}
+
/* IIS */
static struct resource s3c_iis_resource[] = {
diff --git a/arch/arm/plat-s3c24xx/include/plat/udc.h b/arch/arm/plat-s3c24xx/include/plat/udc.h
index 80457c6..f638842 100644
--- a/arch/arm/plat-s3c24xx/include/plat/udc.h
+++ b/arch/arm/plat-s3c24xx/include/plat/udc.h
@@ -37,4 +37,21 @@ struct s3c2410_udc_mach_info {
extern void __init s3c24xx_udc_set_platdata(struct s3c2410_udc_mach_info *);
+/**
+ * s3c24xx_hsudc_platdata - Platform data for USB High-Speed gadget controller.
+ * @epnum: Number of endpoints to be instantiated by the controller driver.
+ * @gpio_init: Platform specific USB related GPIO initialization.
+ * @gpio_uninit: Platform specific USB releted GPIO uninitialzation.
+ *
+ * Representation of platform data for the S3C24XX USB 2.0 High Speed gadget
+ * controllers.
+ */
+struct s3c24xx_hsudc_platdata {
+ unsigned int epnum;
+ void (*gpio_init)(void);
+ void (*gpio_uninit)(void);
+};
+
+extern void __init s3c24xx_hsudc_set_platdata(struct s3c24xx_hsudc_platdata *pd);
+
#endif /* __ASM_ARM_ARCH_UDC_H */
diff --git a/arch/arm/plat-samsung/include/plat/devs.h b/arch/arm/plat-samsung/include/plat/devs.h
index 3f38deb..39818d8 100644
--- a/arch/arm/plat-samsung/include/plat/devs.h
+++ b/arch/arm/plat-samsung/include/plat/devs.h
@@ -88,6 +88,7 @@ extern struct platform_device s3c64xx_device_onenand1;
extern struct platform_device s5p_device_onenand;
extern struct platform_device s3c_device_usbgadget;
+extern struct platform_device s3c_device_usb_hsudc;
extern struct platform_device s3c_device_usb_hsotg;
extern struct platform_device s5pv210_device_ac97;
--
1.7.1
next prev parent reply other threads:[~2011-04-14 9:10 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-23 21:35 [PATCH RESEND 0/4] USB: gadget: Add Samsung S3C24xx USB HS controller driver Heiko Stübner
2011-03-23 21:35 ` Heiko Stübner
2011-03-23 21:37 ` [PATCH RESEND 1/4] ARM: S3C2416: Add USB Phy register definitions Heiko Stübner
2011-03-23 21:37 ` Heiko Stübner
2011-03-23 21:38 ` [PATCH RESEND 2/4] ARM: S3C24XX: Add plaform device definition for USB High-Speed gadget controller Heiko Stübner
2011-03-23 21:38 ` Heiko Stübner
2011-03-23 21:39 ` [PATCH RESEND v3 3/4] USB: Gadget: Add Samsung S3C24XX USB High-Speed controller driver Heiko Stübner
2011-03-23 21:39 ` Heiko Stübner
2011-04-13 23:28 ` Greg KH
2011-04-13 23:28 ` Greg KH
2011-04-14 9:06 ` [PATCH RESEND v2 0/4] USB: gadget: Add Samsung S3C24xx USB HS " Heiko Stübner
2011-04-14 9:06 ` Heiko Stübner
2011-04-14 9:08 ` [PATCH 1/4] ARM: S3C2416: Add USB Phy register definitions Heiko Stübner
2011-04-14 9:08 ` Heiko Stübner
2011-04-14 9:10 ` Heiko Stübner [this message]
2011-04-14 9:10 ` [PATCH 2/4] ARM: S3C24XX: Add plaform device definition for USB High-Speed gadget controller Heiko Stübner
2011-04-14 9:11 ` [PATCH v4 3/4] USB: Gadget: Add Samsung S3C24XX USB High-Speed controller driver Heiko Stübner
2011-04-14 9:11 ` Heiko Stübner
2011-04-14 15:35 ` Alan Stern
2011-04-14 15:35 ` Alan Stern
2011-04-14 15:47 ` Greg KH
2011-04-14 15:47 ` Greg KH
2011-04-14 17:06 ` Heiko Stübner
2011-04-14 17:06 ` Heiko Stübner
2011-04-14 17:15 ` Alan Stern
2011-04-14 17:15 ` Alan Stern
2011-04-16 10:00 ` Heiko Stübner
2011-04-16 10:00 ` Heiko Stübner
2011-04-16 14:58 ` Greg KH
2011-04-16 14:58 ` Greg KH
2011-04-16 18:47 ` Heiko Stübner
2011-04-16 18:47 ` Heiko Stübner
2011-05-07 20:23 ` [PATCH v3 0/4] USB: gadget: Add Samsung S3C24xx USB HS " Heiko Stübner
2011-05-07 20:23 ` Heiko Stübner
2011-05-07 20:24 ` [PATCH 1/4] ARM: S3C2416: Add USB Phy register definitions Heiko Stübner
2011-05-07 20:24 ` Heiko Stübner
[not found] ` <201105072223.44163.heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>
2011-05-07 20:26 ` [PATCH 2/4] ARM: S3C24XX: Add plaform device definition for USB High-Speed gadget controller Heiko Stübner
2011-05-07 20:26 ` Heiko Stübner
2011-05-08 11:17 ` Sergei Shtylyov
2011-05-08 11:17 ` Sergei Shtylyov
2011-05-07 20:28 ` [PATCH v5 3/4] USB: Gadget: Add Samsung S3C24XX USB High-Speed controller driver Heiko Stübner
2011-05-07 20:28 ` Heiko Stübner
2011-05-07 20:29 ` [PATCH 4/4] ARM: S3C2416: Add support for USB 2.0 High-Speed gadget controller Heiko Stübner
2011-05-07 20:29 ` Heiko Stübner
2011-04-14 9:12 ` Heiko Stübner
2011-04-14 9:12 ` Heiko Stübner
2011-03-23 21:40 ` [PATCH RESEND " Heiko Stübner
2011-03-23 21:40 ` Heiko Stübner
2011-04-08 10:04 ` [PATCH RESEND 0/4] USB: gadget: Add Samsung S3C24xx USB HS controller driver Heiko Stübner
2011-04-08 10:04 ` Heiko Stübner
2011-04-08 20:52 ` Greg KH
2011-04-08 20:52 ` Greg KH
-- strict thread matches above, loose matches on Subject: below --
2010-10-13 0:10 [PATCH " Sangbeom Kim
[not found] ` <1286928627-22824-1-git-send-email-sbkim73-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2010-10-13 0:10 ` [PATCH 2/4] ARM: S3C24XX: Add plaform device definition for USB High-Speed gadget controller Sangbeom Kim
2010-10-13 0:10 ` Sangbeom Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201104141110.17269.heiko@sntech.de \
--to=heiko@sntech.de \
--cc=alexander@debian.org \
--cc=ben-linux@fluff.org \
--cc=greg@kroah.com \
--cc=kgene.kim@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=sbkim73@samsung.com \
--cc=thomas.ab@samsung.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.