-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ARM: SAMSUNG: Add platform support code for OneNAND controller
This patch adds setup code for Samsung OneNAND controller driver. The driver needs to be aware on which SoC it is running, so the actual device id is being changed in cpu init code. S3C64xx SoCs have 2 OneNAND controllers while S5PC100 and S5PC110 has only one. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> [ben-linux@fluff.org: sort map.h entries] Signed-off-by: Ben Dooks <ben-linux@fluff.org>
- Loading branch information
Marek Szyprowski
authored and
Ben Dooks
committed
May 20, 2010
1 parent
504d36e
commit 999304b
Showing
19 changed files
with
320 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
/* | ||
* linux/arch/arm/mach-s3c64xx/dev-onenand1.c | ||
* | ||
* Copyright (c) 2008-2010 Samsung Electronics | ||
* Kyungmin Park <kyungmin.park@samsung.com> | ||
* | ||
* S3C64XX series device definition for OneNAND devices | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/mtd/mtd.h> | ||
#include <linux/mtd/onenand.h> | ||
|
||
#include <mach/irqs.h> | ||
#include <mach/map.h> | ||
|
||
static struct resource s3c64xx_onenand1_resources[] = { | ||
[0] = { | ||
.start = S3C64XX_PA_ONENAND1, | ||
.end = S3C64XX_PA_ONENAND1 + 0x400 - 1, | ||
.flags = IORESOURCE_MEM, | ||
}, | ||
[1] = { | ||
.start = S3C64XX_PA_ONENAND1_BUF, | ||
.end = S3C64XX_PA_ONENAND1_BUF + S3C64XX_SZ_ONENAND1_BUF - 1, | ||
.flags = IORESOURCE_MEM, | ||
}, | ||
[2] = { | ||
.start = IRQ_ONENAND1, | ||
.end = IRQ_ONENAND1, | ||
.flags = IORESOURCE_IRQ, | ||
}, | ||
}; | ||
|
||
struct platform_device s3c64xx_device_onenand1 = { | ||
.name = "samsung-onenand", | ||
.id = 1, | ||
.num_resources = ARRAY_SIZE(s3c64xx_onenand1_resources), | ||
.resource = s3c64xx_onenand1_resources, | ||
}; | ||
|
||
void s3c64xx_onenand1_set_platdata(struct onenand_platform_data *pdata) | ||
{ | ||
struct onenand_platform_data *pd; | ||
|
||
pd = kmemdup(pdata, sizeof(struct onenand_platform_data), GFP_KERNEL); | ||
if (!pd) | ||
printk(KERN_ERR "%s: no memory for platform data\n", __func__); | ||
s3c64xx_device_onenand1.dev.platform_data = pd; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
/* | ||
* linux/arch/arm/mach-s5pv210/dev-onenand.c | ||
* | ||
* Copyright (c) 2008-2010 Samsung Electronics | ||
* Kyungmin Park <kyungmin.park@samsung.com> | ||
* | ||
* S5PC110 series device definition for OneNAND devices | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/mtd/mtd.h> | ||
#include <linux/mtd/onenand.h> | ||
|
||
#include <mach/irqs.h> | ||
#include <mach/map.h> | ||
|
||
static struct resource s5pc110_onenand_resources[] = { | ||
[0] = { | ||
.start = S5PC110_PA_ONENAND, | ||
.end = S5PC110_PA_ONENAND + SZ_128K - 1, | ||
.flags = IORESOURCE_MEM, | ||
}, | ||
[1] = { | ||
.start = S5PC110_PA_ONENAND_DMA, | ||
.end = S5PC110_PA_ONENAND_DMA + SZ_2K - 1, | ||
.flags = IORESOURCE_MEM, | ||
}, | ||
}; | ||
|
||
struct platform_device s5pc110_device_onenand = { | ||
.name = "s5pc110-onenand", | ||
.id = -1, | ||
.num_resources = ARRAY_SIZE(s5pc110_onenand_resources), | ||
.resource = s5pc110_onenand_resources, | ||
}; | ||
|
||
void s5pc110_onenand_set_platdata(struct onenand_platform_data *pdata) | ||
{ | ||
struct onenand_platform_data *pd; | ||
|
||
pd = kmemdup(pdata, sizeof(struct onenand_platform_data), GFP_KERNEL); | ||
if (!pd) | ||
printk(KERN_ERR "%s: no memory for platform data\n", __func__); | ||
s5pc110_device_onenand.dev.platform_data = pd; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
/* | ||
* linux/arch/arm/plat-samsung/dev-onenand.c | ||
* | ||
* Copyright (c) 2008-2010 Samsung Electronics | ||
* Kyungmin Park <kyungmin.park@samsung.com> | ||
* | ||
* S3C64XX/S5PC100 series device definition for OneNAND devices | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/mtd/mtd.h> | ||
#include <linux/mtd/onenand.h> | ||
|
||
#include <mach/irqs.h> | ||
#include <mach/map.h> | ||
|
||
static struct resource s3c_onenand_resources[] = { | ||
[0] = { | ||
.start = S3C_PA_ONENAND, | ||
.end = S3C_PA_ONENAND + 0x400 - 1, | ||
.flags = IORESOURCE_MEM, | ||
}, | ||
[1] = { | ||
.start = S3C_PA_ONENAND_BUF, | ||
.end = S3C_PA_ONENAND_BUF + S3C_SZ_ONENAND_BUF - 1, | ||
.flags = IORESOURCE_MEM, | ||
}, | ||
[2] = { | ||
.start = IRQ_ONENAND, | ||
.end = IRQ_ONENAND, | ||
.flags = IORESOURCE_IRQ, | ||
}, | ||
}; | ||
|
||
struct platform_device s3c_device_onenand = { | ||
.name = "samsung-onenand", | ||
.id = 0, | ||
.num_resources = ARRAY_SIZE(s3c_onenand_resources), | ||
.resource = s3c_onenand_resources, | ||
}; | ||
|
||
void s3c_onenand_set_platdata(struct onenand_platform_data *pdata) | ||
{ | ||
struct onenand_platform_data *pd; | ||
|
||
pd = kmemdup(pdata, sizeof(struct onenand_platform_data), GFP_KERNEL); | ||
if (!pd) | ||
printk(KERN_ERR "%s: no memory for platform data\n", __func__); | ||
s3c_device_onenand.dev.platform_data = pd; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
/* | ||
* linux/arch/arm/plat-samsung/onenand-core.h | ||
* | ||
* Copyright (c) 2010 Samsung Electronics | ||
* Kyungmin Park <kyungmin.park@samsung.com> | ||
* Marek Szyprowski <m.szyprowski@samsung.com> | ||
* | ||
* Samsung OneNAD Controller core functions | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#ifndef __ASM_ARCH_ONENAND_CORE_H | ||
#define __ASM_ARCH_ONENAND_CORE_H __FILE__ | ||
|
||
/* These functions are only for use with the core support code, such as | ||
* the cpu specific initialisation code | ||
*/ | ||
|
||
/* re-define device name depending on support. */ | ||
static inline void s3c_onenand_setname(char *name) | ||
{ | ||
#ifdef CONFIG_S3C_DEV_ONENAND | ||
s3c_device_onenand.name = name; | ||
#endif | ||
} | ||
|
||
static inline void s3c64xx_onenand1_setname(char *name) | ||
{ | ||
#ifdef CONFIG_S3C64XX_DEV_ONENAND1 | ||
s3c64xx_device_onenand1.name = name; | ||
#endif | ||
} | ||
|
||
#endif /* __ASM_ARCH_ONENAND_CORE_H */ |
Oops, something went wrong.