|
@@ -1083,3 +1083,182 @@ static struct resource s3c64xx_onenand1_resources[] = {
|
|
|
};
|
|
|
|
|
|
struct platform_device s3c64xx_device_onenand1 = {
|
|
|
+ .name = "samsung-onenand",
|
|
|
+ .id = 1,
|
|
|
+ .num_resources = ARRAY_SIZE(s3c64xx_onenand1_resources),
|
|
|
+ .resource = s3c64xx_onenand1_resources,
|
|
|
+};
|
|
|
+
|
|
|
+void __init s3c64xx_onenand1_set_platdata(struct onenand_platform_data *pdata)
|
|
|
+{
|
|
|
+ s3c_set_platdata(pdata, sizeof(struct onenand_platform_data),
|
|
|
+ &s3c64xx_device_onenand1);
|
|
|
+}
|
|
|
+#endif /* CONFIG_S3C64XX_DEV_ONENAND1 */
|
|
|
+
|
|
|
+#ifdef CONFIG_S5P_DEV_ONENAND
|
|
|
+static struct resource s5p_onenand_resources[] = {
|
|
|
+ [0] = DEFINE_RES_MEM(S5P_PA_ONENAND, SZ_128K),
|
|
|
+ [1] = DEFINE_RES_MEM(S5P_PA_ONENAND_DMA, SZ_8K),
|
|
|
+ [2] = DEFINE_RES_IRQ(IRQ_ONENAND_AUDI),
|
|
|
+};
|
|
|
+
|
|
|
+struct platform_device s5p_device_onenand = {
|
|
|
+ .name = "s5pc110-onenand",
|
|
|
+ .id = -1,
|
|
|
+ .num_resources = ARRAY_SIZE(s5p_onenand_resources),
|
|
|
+ .resource = s5p_onenand_resources,
|
|
|
+};
|
|
|
+#endif /* CONFIG_S5P_DEV_ONENAND */
|
|
|
+
|
|
|
+/* PMU */
|
|
|
+
|
|
|
+#ifdef CONFIG_PLAT_S5P
|
|
|
+static struct resource s5p_pmu_resource[] = {
|
|
|
+ DEFINE_RES_IRQ(IRQ_PMU)
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device s5p_device_pmu = {
|
|
|
+ .name = "arm-pmu",
|
|
|
+ .id = -1,
|
|
|
+ .num_resources = ARRAY_SIZE(s5p_pmu_resource),
|
|
|
+ .resource = s5p_pmu_resource,
|
|
|
+};
|
|
|
+
|
|
|
+static int __init s5p_pmu_init(void)
|
|
|
+{
|
|
|
+ platform_device_register(&s5p_device_pmu);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+arch_initcall(s5p_pmu_init);
|
|
|
+#endif /* CONFIG_PLAT_S5P */
|
|
|
+
|
|
|
+/* PWM Timer */
|
|
|
+
|
|
|
+#ifdef CONFIG_SAMSUNG_DEV_PWM
|
|
|
+
|
|
|
+#define TIMER_RESOURCE_SIZE (1)
|
|
|
+
|
|
|
+#define TIMER_RESOURCE(_tmr, _irq) \
|
|
|
+ (struct resource [TIMER_RESOURCE_SIZE]) { \
|
|
|
+ [0] = { \
|
|
|
+ .start = _irq, \
|
|
|
+ .end = _irq, \
|
|
|
+ .flags = IORESOURCE_IRQ \
|
|
|
+ } \
|
|
|
+ }
|
|
|
+
|
|
|
+#define DEFINE_S3C_TIMER(_tmr_no, _irq) \
|
|
|
+ .name = "s3c24xx-pwm", \
|
|
|
+ .id = _tmr_no, \
|
|
|
+ .num_resources = TIMER_RESOURCE_SIZE, \
|
|
|
+ .resource = TIMER_RESOURCE(_tmr_no, _irq), \
|
|
|
+
|
|
|
+/*
|
|
|
+ * since we already have an static mapping for the timer,
|
|
|
+ * we do not bother setting any IO resource for the base.
|
|
|
+ */
|
|
|
+
|
|
|
+struct platform_device s3c_device_timer[] = {
|
|
|
+ [0] = { DEFINE_S3C_TIMER(0, IRQ_TIMER0) },
|
|
|
+ [1] = { DEFINE_S3C_TIMER(1, IRQ_TIMER1) },
|
|
|
+ [2] = { DEFINE_S3C_TIMER(2, IRQ_TIMER2) },
|
|
|
+ [3] = { DEFINE_S3C_TIMER(3, IRQ_TIMER3) },
|
|
|
+ [4] = { DEFINE_S3C_TIMER(4, IRQ_TIMER4) },
|
|
|
+};
|
|
|
+#endif /* CONFIG_SAMSUNG_DEV_PWM */
|
|
|
+
|
|
|
+/* RTC */
|
|
|
+
|
|
|
+#ifdef CONFIG_PLAT_S3C24XX
|
|
|
+static struct resource s3c_rtc_resource[] = {
|
|
|
+ [0] = DEFINE_RES_MEM(S3C24XX_PA_RTC, SZ_256),
|
|
|
+ [1] = DEFINE_RES_IRQ(IRQ_RTC),
|
|
|
+ [2] = DEFINE_RES_IRQ(IRQ_TICK),
|
|
|
+};
|
|
|
+
|
|
|
+struct platform_device s3c_device_rtc = {
|
|
|
+ .name = "s3c2410-rtc",
|
|
|
+ .id = -1,
|
|
|
+ .num_resources = ARRAY_SIZE(s3c_rtc_resource),
|
|
|
+ .resource = s3c_rtc_resource,
|
|
|
+};
|
|
|
+#endif /* CONFIG_PLAT_S3C24XX */
|
|
|
+
|
|
|
+#ifdef CONFIG_S3C_DEV_RTC
|
|
|
+static struct resource s3c_rtc_resource[] = {
|
|
|
+ [0] = DEFINE_RES_MEM(S3C_PA_RTC, SZ_256),
|
|
|
+ [1] = DEFINE_RES_IRQ(IRQ_RTC_ALARM),
|
|
|
+ [2] = DEFINE_RES_IRQ(IRQ_RTC_TIC),
|
|
|
+};
|
|
|
+
|
|
|
+struct platform_device s3c_device_rtc = {
|
|
|
+ .name = "s3c64xx-rtc",
|
|
|
+ .id = -1,
|
|
|
+ .num_resources = ARRAY_SIZE(s3c_rtc_resource),
|
|
|
+ .resource = s3c_rtc_resource,
|
|
|
+};
|
|
|
+#endif /* CONFIG_S3C_DEV_RTC */
|
|
|
+
|
|
|
+/* SDI */
|
|
|
+
|
|
|
+#ifdef CONFIG_PLAT_S3C24XX
|
|
|
+static struct resource s3c_sdi_resource[] = {
|
|
|
+ [0] = DEFINE_RES_MEM(S3C24XX_PA_SDI, S3C24XX_SZ_SDI),
|
|
|
+ [1] = DEFINE_RES_IRQ(IRQ_SDI),
|
|
|
+};
|
|
|
+
|
|
|
+struct platform_device s3c_device_sdi = {
|
|
|
+ .name = "s3c2410-sdi",
|
|
|
+ .id = -1,
|
|
|
+ .num_resources = ARRAY_SIZE(s3c_sdi_resource),
|
|
|
+ .resource = s3c_sdi_resource,
|
|
|
+};
|
|
|
+
|
|
|
+void __init s3c24xx_mci_set_platdata(struct s3c24xx_mci_pdata *pdata)
|
|
|
+{
|
|
|
+ s3c_set_platdata(pdata, sizeof(struct s3c24xx_mci_pdata),
|
|
|
+ &s3c_device_sdi);
|
|
|
+}
|
|
|
+#endif /* CONFIG_PLAT_S3C24XX */
|
|
|
+
|
|
|
+/* SPI */
|
|
|
+
|
|
|
+#ifdef CONFIG_PLAT_S3C24XX
|
|
|
+static struct resource s3c_spi0_resource[] = {
|
|
|
+ [0] = DEFINE_RES_MEM(S3C24XX_PA_SPI, SZ_32),
|
|
|
+ [1] = DEFINE_RES_IRQ(IRQ_SPI0),
|
|
|
+};
|
|
|
+
|
|
|
+struct platform_device s3c_device_spi0 = {
|
|
|
+ .name = "s3c2410-spi",
|
|
|
+ .id = 0,
|
|
|
+ .num_resources = ARRAY_SIZE(s3c_spi0_resource),
|
|
|
+ .resource = s3c_spi0_resource,
|
|
|
+ .dev = {
|
|
|
+ .dma_mask = &samsung_device_dma_mask,
|
|
|
+ .coherent_dma_mask = DMA_BIT_MASK(32),
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+static struct resource s3c_spi1_resource[] = {
|
|
|
+ [0] = DEFINE_RES_MEM(S3C24XX_PA_SPI1, SZ_32),
|
|
|
+ [1] = DEFINE_RES_IRQ(IRQ_SPI1),
|
|
|
+};
|
|
|
+
|
|
|
+struct platform_device s3c_device_spi1 = {
|
|
|
+ .name = "s3c2410-spi",
|
|
|
+ .id = 1,
|
|
|
+ .num_resources = ARRAY_SIZE(s3c_spi1_resource),
|
|
|
+ .resource = s3c_spi1_resource,
|
|
|
+ .dev = {
|
|
|
+ .dma_mask = &samsung_device_dma_mask,
|
|
|
+ .coherent_dma_mask = DMA_BIT_MASK(32),
|
|
|
+ }
|
|
|
+};
|
|
|
+#endif /* CONFIG_PLAT_S3C24XX */
|
|
|
+
|
|
|
+/* Touchscreen */
|
|
|
+
|
|
|
+#ifdef CONFIG_PLAT_S3C24XX
|
|
|
+static struct resource s3c_ts_resource[] = {
|