diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-30 17:31:56 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-30 17:31:56 -0700 | 
| commit | 623ff7739e7c00fa3d55dbfd42a492a68298fd7a (patch) | |
| tree | 0b7461753a1b13b27ea2958a7d48c6efb47bba54 /arch | |
| parent | c39e8ede284f469971589f2e04af78216e1a771d (diff) | |
| parent | 7b0e67f604e1829e5292e1ad7743eb18dc42ea7c (diff) | |
Merge tag 'for-linus-3.4' of git://git.infradead.org/mtd-2.6
Pull MTD changes from David Woodhouse:
 - Artem's cleanup of the MTD API continues apace.
 - Fixes and improvements for ST FSMC and SuperH FLCTL NAND, amongst
   others.
 - More work on DiskOnChip G3, new driver for DiskOnChip G4.
 - Clean up debug/warning printks in JFFS2 to use pr_<level>.
Fix up various trivial conflicts, largely due to changes in calling
conventions for things like dmaengine_prep_slave_sg() (new inline
wrapper to hide new parameter, clashing with rewrite of previously last
parameter that used to be an 'append' flag, and is now a bitmap of
'unsigned long flags').
(Also some header file fallout - like so many merges this merge window -
and silly conflicts with sparse fixes)
* tag 'for-linus-3.4' of git://git.infradead.org/mtd-2.6: (120 commits)
  mtd: docg3 add protection against concurrency
  mtd: docg3 refactor cascade floors structure
  mtd: docg3 increase write/erase timeout
  mtd: docg3 fix inbound calculations
  mtd: nand: gpmi: fix function annotations
  mtd: phram: fix section mismatch for phram_setup
  mtd: unify initialization of erase_info->fail_addr
  mtd: support ONFI multi lun NAND
  mtd: sm_ftl: fix typo in major number.
  mtd: add device-tree support to spear_smi
  mtd: spear_smi: Remove default partition information from driver
  mtd: Add device-tree support to fsmc_nand
  mtd: fix section mismatch for doc_probe_device
  mtd: nand/fsmc: Remove sparse warnings and errors
  mtd: nand/fsmc: Add DMA support
  mtd: nand/fsmc: Access the NAND device word by word whenever possible
  mtd: nand/fsmc: Use dev_err to report error scenario
  mtd: nand/fsmc: Use devm routines
  mtd: nand/fsmc: Modify fsmc driver to accept nand timing parameters via platform
  mtd: fsmc_nand: add pm callbacks to support hibernation
  ...
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm/mach-mxs/include/mach/dma.h | 28 | ||||
| -rw-r--r-- | arch/arm/mach-omap1/flash.c | 20 | ||||
| -rw-r--r-- | arch/arm/mach-s3c24xx/simtec-nor.c | 3 | ||||
| -rw-r--r-- | arch/arm/mach-shmobile/board-mackerel.c | 71 | ||||
| -rw-r--r-- | arch/arm/mach-shmobile/clock-sh7372.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-u300/core.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-u300/include/mach/u300-regs.h | 5 | ||||
| -rw-r--r-- | arch/mips/cavium-octeon/flash_setup.c | 2 | 
8 files changed, 88 insertions, 47 deletions
| diff --git a/arch/arm/mach-mxs/include/mach/dma.h b/arch/arm/mach-mxs/include/mach/dma.h deleted file mode 100644 index 203d7c4a3e11..000000000000 --- a/arch/arm/mach-mxs/include/mach/dma.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved. - * - * 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 __MACH_MXS_DMA_H__ -#define __MACH_MXS_DMA_H__ - -#include <linux/dmaengine.h> - -struct mxs_dma_data { -	int chan_irq; -}; - -static inline int mxs_dma_is_apbh(struct dma_chan *chan) -{ -	return !strcmp(dev_name(chan->device->dev), "mxs-dma-apbh"); -} - -static inline int mxs_dma_is_apbx(struct dma_chan *chan) -{ -	return !strcmp(dev_name(chan->device->dev), "mxs-dma-apbx"); -} - -#endif /* __MACH_MXS_DMA_H__ */ diff --git a/arch/arm/mach-omap1/flash.c b/arch/arm/mach-omap1/flash.c index f9bf78d4fdfb..401eb3c080c2 100644 --- a/arch/arm/mach-omap1/flash.c +++ b/arch/arm/mach-omap1/flash.c @@ -17,20 +17,12 @@  void omap1_set_vpp(struct platform_device *pdev, int enable)  { -	static int count;  	u32 l; -	if (enable) { -		if (count++ == 0) { -			l = omap_readl(EMIFS_CONFIG); -			l |= OMAP_EMIFS_CONFIG_WP; -			omap_writel(l, EMIFS_CONFIG); -		} -	} else { -		if (count && (--count == 0)) { -			l = omap_readl(EMIFS_CONFIG); -			l &= ~OMAP_EMIFS_CONFIG_WP; -			omap_writel(l, EMIFS_CONFIG); -		} -	} +	l = omap_readl(EMIFS_CONFIG); +	if (enable) +		l |= OMAP_EMIFS_CONFIG_WP; +	else +		l &= ~OMAP_EMIFS_CONFIG_WP; +	omap_writel(l, EMIFS_CONFIG);  } diff --git a/arch/arm/mach-s3c24xx/simtec-nor.c b/arch/arm/mach-s3c24xx/simtec-nor.c index 2119ca6a73bc..b9d6d4f92c03 100644 --- a/arch/arm/mach-s3c24xx/simtec-nor.c +++ b/arch/arm/mach-s3c24xx/simtec-nor.c @@ -35,9 +35,7 @@  static void simtec_nor_vpp(struct platform_device *pdev, int vpp)  {  	unsigned int val; -	unsigned long flags; -	local_irq_save(flags);  	val = __raw_readb(BAST_VA_CTRL3);  	printk(KERN_DEBUG "%s(%d)\n", __func__, vpp); @@ -48,7 +46,6 @@ static void simtec_nor_vpp(struct platform_device *pdev, int vpp)  		val &= ~BAST_CPLD_CTRL3_ROMWEN;  	__raw_writeb(val, BAST_VA_CTRL3); -	local_irq_restore(flags);  }  static struct physmap_flash_data simtec_nor_pdata = { diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c index a125d4e114ec..f49e28abe0ab 100644 --- a/arch/arm/mach-shmobile/board-mackerel.c +++ b/arch/arm/mach-shmobile/board-mackerel.c @@ -39,6 +39,7 @@  #include <linux/mtd/mtd.h>  #include <linux/mtd/partitions.h>  #include <linux/mtd/physmap.h> +#include <linux/mtd/sh_flctl.h>  #include <linux/pm_clock.h>  #include <linux/smsc911x.h>  #include <linux/sh_intc.h> @@ -956,6 +957,50 @@ static struct platform_device fsi_ak4643_device = {  	},  }; +/* FLCTL */ +static struct mtd_partition nand_partition_info[] = { +	{ +		.name	= "system", +		.offset	= 0, +		.size	= 128 * 1024 * 1024, +	}, +	{ +		.name	= "userdata", +		.offset	= MTDPART_OFS_APPEND, +		.size	= 256 * 1024 * 1024, +	}, +	{ +		.name	= "cache", +		.offset	= MTDPART_OFS_APPEND, +		.size	= 128 * 1024 * 1024, +	}, +}; + +static struct resource nand_flash_resources[] = { +	[0] = { +		.start	= 0xe6a30000, +		.end	= 0xe6a3009b, +		.flags	= IORESOURCE_MEM, +	} +}; + +static struct sh_flctl_platform_data nand_flash_data = { +	.parts		= nand_partition_info, +	.nr_parts	= ARRAY_SIZE(nand_partition_info), +	.flcmncr_val	= CLK_16B_12L_4H | TYPESEL_SET +			| SHBUSSEL | SEL_16BIT | SNAND_E, +	.use_holden	= 1, +}; + +static struct platform_device nand_flash_device = { +	.name		= "sh_flctl", +	.resource	= nand_flash_resources, +	.num_resources	= ARRAY_SIZE(nand_flash_resources), +	.dev		= { +		.platform_data = &nand_flash_data, +	}, +}; +  /*   * The card detect pin of the top SD/MMC slot (CN7) is active low and is   * connected to GPIO A22 of SH7372 (GPIO_PORT41). @@ -1259,6 +1304,7 @@ static struct platform_device *mackerel_devices[] __initdata = {  	&fsi_device,  	&fsi_ak4643_device,  	&fsi_hdmi_device, +	&nand_flash_device,  	&sdhi0_device,  #if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE)  	&sdhi1_device, @@ -1488,6 +1534,30 @@ static void __init mackerel_init(void)  	gpio_request(GPIO_FN_MMCCMD0, NULL);  	gpio_request(GPIO_FN_MMCCLK0, NULL); +	/* FLCTL */ +	gpio_request(GPIO_FN_D0_NAF0, NULL); +	gpio_request(GPIO_FN_D1_NAF1, NULL); +	gpio_request(GPIO_FN_D2_NAF2, NULL); +	gpio_request(GPIO_FN_D3_NAF3, NULL); +	gpio_request(GPIO_FN_D4_NAF4, NULL); +	gpio_request(GPIO_FN_D5_NAF5, NULL); +	gpio_request(GPIO_FN_D6_NAF6, NULL); +	gpio_request(GPIO_FN_D7_NAF7, NULL); +	gpio_request(GPIO_FN_D8_NAF8, NULL); +	gpio_request(GPIO_FN_D9_NAF9, NULL); +	gpio_request(GPIO_FN_D10_NAF10, NULL); +	gpio_request(GPIO_FN_D11_NAF11, NULL); +	gpio_request(GPIO_FN_D12_NAF12, NULL); +	gpio_request(GPIO_FN_D13_NAF13, NULL); +	gpio_request(GPIO_FN_D14_NAF14, NULL); +	gpio_request(GPIO_FN_D15_NAF15, NULL); +	gpio_request(GPIO_FN_FCE0, NULL); +	gpio_request(GPIO_FN_WE0_FWE, NULL); +	gpio_request(GPIO_FN_FRB, NULL); +	gpio_request(GPIO_FN_A4_FOE, NULL); +	gpio_request(GPIO_FN_A5_FCDE, NULL); +	gpio_request(GPIO_FN_RD_FSC, NULL); +  	/* enable GPS module (GT-720F) */  	gpio_request(GPIO_FN_SCIFA2_TXD1, NULL);  	gpio_request(GPIO_FN_SCIFA2_RXD1, NULL); @@ -1532,6 +1602,7 @@ static void __init mackerel_init(void)  	sh7372_add_device_to_domain(&sh7372_a4mp, &fsi_device);  	sh7372_add_device_to_domain(&sh7372_a3sp, &usbhs0_device);  	sh7372_add_device_to_domain(&sh7372_a3sp, &usbhs1_device); +	sh7372_add_device_to_domain(&sh7372_a3sp, &nand_flash_device);  	sh7372_add_device_to_domain(&sh7372_a3sp, &sh_mmcif_device);  	sh7372_add_device_to_domain(&sh7372_a3sp, &sdhi0_device);  #if !defined(CONFIG_MMC_SH_MMCIF) && !defined(CONFIG_MMC_SH_MMCIF_MODULE) diff --git a/arch/arm/mach-shmobile/clock-sh7372.c b/arch/arm/mach-shmobile/clock-sh7372.c index de243e3c8392..94d1f88246d3 100644 --- a/arch/arm/mach-shmobile/clock-sh7372.c +++ b/arch/arm/mach-shmobile/clock-sh7372.c @@ -511,7 +511,7 @@ enum { MSTP001, MSTP000,         MSTP223,         MSTP218, MSTP217, MSTP216, MSTP214, MSTP208, MSTP207,         MSTP206, MSTP205, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200, -       MSTP328, MSTP323, MSTP322, MSTP314, MSTP313, MSTP312, +	MSTP328, MSTP323, MSTP322, MSTP315, MSTP314, MSTP313, MSTP312,         MSTP423, MSTP415, MSTP413, MSTP411, MSTP410, MSTP407, MSTP406,         MSTP405, MSTP404, MSTP403, MSTP400,         MSTP_NR }; @@ -553,6 +553,7 @@ static struct clk mstp_clks[MSTP_NR] = {  	[MSTP328] = MSTP(&div6_clks[DIV6_SPU], SMSTPCR3, 28, 0), /* FSI2 */  	[MSTP323] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 23, 0), /* IIC1 */  	[MSTP322] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR3, 22, 0), /* USB0 */ +	[MSTP315] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 15, 0), /* FLCTL*/  	[MSTP314] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 14, 0), /* SDHI0 */  	[MSTP313] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 13, 0), /* SDHI1 */  	[MSTP312] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 12, 0), /* MMC */ @@ -653,6 +654,7 @@ static struct clk_lookup lookups[] = {  	CLKDEV_DEV_ID("r8a66597_hcd.0", &mstp_clks[MSTP322]), /* USB0 */  	CLKDEV_DEV_ID("r8a66597_udc.0", &mstp_clks[MSTP322]), /* USB0 */  	CLKDEV_DEV_ID("renesas_usbhs.0", &mstp_clks[MSTP322]), /* USB0 */ +	CLKDEV_DEV_ID("sh_flctl.0", &mstp_clks[MSTP315]), /* FLCTL */  	CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]), /* SDHI0 */  	CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP313]), /* SDHI1 */  	CLKDEV_DEV_ID("sh_mmcif.0", &mstp_clks[MSTP312]), /* MMC */ diff --git a/arch/arm/mach-u300/core.c b/arch/arm/mach-u300/core.c index 8b90c44d237f..1621ad07d284 100644 --- a/arch/arm/mach-u300/core.c +++ b/arch/arm/mach-u300/core.c @@ -1544,6 +1544,8 @@ static struct fsmc_nand_platform_data nand_platform_data = {  	.nr_partitions = ARRAY_SIZE(u300_partitions),  	.options = NAND_SKIP_BBTSCAN,  	.width = FSMC_NAND_BW8, +	.ale_off = PLAT_NAND_ALE, +	.cle_off = PLAT_NAND_CLE,  };  static struct platform_device nand_device = { diff --git a/arch/arm/mach-u300/include/mach/u300-regs.h b/arch/arm/mach-u300/include/mach/u300-regs.h index 7b7cba960b69..65f87c523892 100644 --- a/arch/arm/mach-u300/include/mach/u300-regs.h +++ b/arch/arm/mach-u300/include/mach/u300-regs.h @@ -24,6 +24,11 @@  /* NFIF */  #define U300_NAND_IF_PHYS_BASE		0x9f800000 +/* ALE, CLE offset for FSMC NAND */ +#define PLAT_NAND_CLE			(1 << 16) +#define PLAT_NAND_ALE			(1 << 17) + +  /* AHB Peripherals */  #define U300_AHB_PER_PHYS_BASE		0xa0000000  #define U300_AHB_PER_VIRT_BASE		0xff010000 diff --git a/arch/mips/cavium-octeon/flash_setup.c b/arch/mips/cavium-octeon/flash_setup.c index 0a430e06f5e5..e44a55bc7f0d 100644 --- a/arch/mips/cavium-octeon/flash_setup.c +++ b/arch/mips/cavium-octeon/flash_setup.c @@ -60,7 +60,7 @@ static int __init flash_init(void)  		if (mymtd) {  			mymtd->owner = THIS_MODULE;  			mtd_device_parse_register(mymtd, part_probe_types, -						  0, NULL, 0); +						  NULL, NULL, 0);  		} else {  			pr_err("Failed to register MTD device for flash\n");  		} | 
