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: 27+ 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:37 ` [PATCH RESEND 1/4] ARM: S3C2416: Add USB Phy register definitions 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:39 ` [PATCH RESEND v3 3/4] USB: Gadget: Add Samsung S3C24XX USB High-Speed controller driver Heiko Stübner
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:08 ` [PATCH 1/4] ARM: S3C2416: Add USB Phy register definitions Heiko Stübner
2011-04-14 9:10 ` Heiko Stübner [this message]
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 15:35 ` Alan Stern
2011-04-14 15:47 ` Greg KH
2011-04-14 17:06 ` Heiko Stübner
2011-04-14 17:15 ` Alan Stern
2011-04-16 10:00 ` Heiko Stübner
2011-04-16 14:58 ` Greg KH
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:24 ` [PATCH 1/4] ARM: S3C2416: Add USB Phy register definitions Heiko Stübner
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-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:29 ` [PATCH 4/4] ARM: S3C2416: Add support for USB 2.0 High-Speed gadget controller Heiko Stübner
2011-04-14 9:12 ` Heiko Stübner
2011-03-23 21:40 ` [PATCH RESEND " 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 20:52 ` Greg KH
-- strict thread matches above, loose matches on Subject: below --
2010-10-13 0:10 [PATCH " Sangbeom Kim
2010-10-13 0:10 ` [PATCH 2/4] ARM: S3C24XX: Add plaform device definition for USB High-Speed gadget controller 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=linux-arm-kernel@lists.infradead.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).