diff options
Diffstat (limited to 'arch/arm/mach-davinci')
| -rw-r--r-- | arch/arm/mach-davinci/aemif.c | 8 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/board-da830-evm.c | 10 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/board-da850-evm.c | 10 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/board-dm355-evm.c | 16 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/board-dm355-leopard.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/board-dm365-evm.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/board-dm644x-evm.c | 13 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/board-dm646x-evm.c | 6 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/board-mityomapl138.c | 1 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/board-neuros-osd2.c | 3 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/board-omapl138-hawk.c | 10 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/board-sffsdr.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/davinci.h | 1 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/dm644x.c | 13 | ||||
| -rw-r--r-- | arch/arm/mach-davinci/dm646x.c | 3 | 
15 files changed, 69 insertions, 29 deletions
| diff --git a/arch/arm/mach-davinci/aemif.c b/arch/arm/mach-davinci/aemif.c index ff8b7e76b6e9..e4ab3f3a2a1f 100644 --- a/arch/arm/mach-davinci/aemif.c +++ b/arch/arm/mach-davinci/aemif.c @@ -189,7 +189,7 @@ int davinci_aemif_setup(struct platform_device *pdev)  	 * Setup Async configuration register in case we did not boot  	 * from NAND and so bootloader did not bother to set it up.  	 */ -	val = davinci_aemif_readl(base, A1CR_OFFSET + pdev->id * 4); +	val = davinci_aemif_readl(base, A1CR_OFFSET + pdata->core_chipsel * 4);  	/*  	 * Extended Wait is not valid and Select Strobe mode is not  	 * used @@ -198,13 +198,13 @@ int davinci_aemif_setup(struct platform_device *pdev)  	if (pdata->options & NAND_BUSWIDTH_16)  		val |= 0x1; -	davinci_aemif_writel(base, A1CR_OFFSET + pdev->id * 4, val); +	davinci_aemif_writel(base, A1CR_OFFSET + pdata->core_chipsel * 4, val);  	clkrate = clk_get_rate(clk);  	if (pdata->timing) -		ret = davinci_aemif_setup_timing(pdata->timing, base, pdev->id, -						 clkrate); +		ret = davinci_aemif_setup_timing(pdata->timing, base, +						 pdata->core_chipsel, clkrate);  	if (ret < 0)  		dev_dbg(&pdev->dev, "NAND timing values setup fail\n"); diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c index 004f9c8de032..14a6fc061744 100644 --- a/arch/arm/mach-davinci/board-da830-evm.c +++ b/arch/arm/mach-davinci/board-da830-evm.c @@ -205,12 +205,17 @@ static const short da830_evm_mmc_sd_pins[] = {  	-1  }; +#define DA830_MMCSD_WP_PIN		GPIO_TO_PIN(2, 1) +#define DA830_MMCSD_CD_PIN		GPIO_TO_PIN(2, 2) +  static struct gpiod_lookup_table mmc_gpios_table = {  	.dev_id = "da830-mmc.0",  	.table = {  		/* gpio chip 1 contains gpio range 32-63 */ -		GPIO_LOOKUP("davinci_gpio.1", 2, "cd", GPIO_ACTIVE_LOW), -		GPIO_LOOKUP("davinci_gpio.1", 1, "wp", GPIO_ACTIVE_LOW), +		GPIO_LOOKUP("davinci_gpio.0", DA830_MMCSD_CD_PIN, "cd", +			    GPIO_ACTIVE_LOW), +		GPIO_LOOKUP("davinci_gpio.0", DA830_MMCSD_WP_PIN, "wp", +			    GPIO_ACTIVE_LOW),  	},  }; @@ -310,6 +315,7 @@ static struct davinci_aemif_timing da830_evm_nandflash_timing = {  };  static struct davinci_nand_pdata da830_evm_nand_pdata = { +	.core_chipsel	= 1,  	.parts		= da830_evm_nand_partitions,  	.nr_parts	= ARRAY_SIZE(da830_evm_nand_partitions),  	.ecc_mode	= NAND_ECC_HW, diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index 3063478bcc36..6d5beb11bd96 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c @@ -244,6 +244,7 @@ static struct davinci_aemif_timing da850_evm_nandflash_timing = {  };  static struct davinci_nand_pdata da850_evm_nandflash_data = { +	.core_chipsel	= 1,  	.parts		= da850_evm_nandflash_partition,  	.nr_parts	= ARRAY_SIZE(da850_evm_nandflash_partition),  	.ecc_mode	= NAND_ECC_HW, @@ -763,12 +764,17 @@ static const short da850_evm_mcasp_pins[] __initconst = {  	-1  }; +#define DA850_MMCSD_CD_PIN		GPIO_TO_PIN(4, 0) +#define DA850_MMCSD_WP_PIN		GPIO_TO_PIN(4, 1) +  static struct gpiod_lookup_table mmc_gpios_table = {  	.dev_id = "da830-mmc.0",  	.table = {  		/* gpio chip 2 contains gpio range 64-95 */ -		GPIO_LOOKUP("davinci_gpio.2", 0, "cd", GPIO_ACTIVE_LOW), -		GPIO_LOOKUP("davinci_gpio.2", 1, "wp", GPIO_ACTIVE_LOW), +		GPIO_LOOKUP("davinci_gpio.0", DA850_MMCSD_CD_PIN, "cd", +			    GPIO_ACTIVE_LOW), +		GPIO_LOOKUP("davinci_gpio.0", DA850_MMCSD_WP_PIN, "wp", +			    GPIO_ACTIVE_HIGH),  	},  }; diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c index cb30637d9eaf..a3377f959444 100644 --- a/arch/arm/mach-davinci/board-dm355-evm.c +++ b/arch/arm/mach-davinci/board-dm355-evm.c @@ -19,6 +19,7 @@  #include <linux/gpio.h>  #include <linux/gpio/machine.h>  #include <linux/clk.h> +#include <linux/dm9000.h>  #include <linux/videodev2.h>  #include <media/i2c/tvp514x.h>  #include <linux/spi/spi.h> @@ -77,6 +78,7 @@ static struct mtd_partition davinci_nand_partitions[] = {  };  static struct davinci_nand_pdata davinci_nand_data = { +	.core_chipsel		= 0,  	.mask_chipsel		= BIT(14),  	.parts			= davinci_nand_partitions,  	.nr_parts		= ARRAY_SIZE(davinci_nand_partitions), @@ -109,12 +111,15 @@ static struct platform_device davinci_nand_device = {  	},  }; +#define DM355_I2C_SDA_PIN	GPIO_TO_PIN(0, 15) +#define DM355_I2C_SCL_PIN	GPIO_TO_PIN(0, 14) +  static struct gpiod_lookup_table i2c_recovery_gpiod_table = { -	.dev_id = "i2c_davinci", +	.dev_id = "i2c_davinci.1",  	.table = { -		GPIO_LOOKUP("davinci_gpio", 15, "sda", +		GPIO_LOOKUP("davinci_gpio.0", DM355_I2C_SDA_PIN, "sda",  			    GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), -		GPIO_LOOKUP("davinci_gpio", 14, "scl", +		GPIO_LOOKUP("davinci_gpio.0", DM355_I2C_SCL_PIN, "scl",  			    GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),  	},  }; @@ -179,11 +184,16 @@ static struct resource dm355evm_dm9000_rsrc[] = {  	},  }; +static struct dm9000_plat_data dm335evm_dm9000_platdata; +  static struct platform_device dm355evm_dm9000 = {  	.name		= "dm9000",  	.id		= -1,  	.resource	= dm355evm_dm9000_rsrc,  	.num_resources	= ARRAY_SIZE(dm355evm_dm9000_rsrc), +	.dev		= { +		.platform_data = &dm335evm_dm9000_platdata, +	},  };  static struct tvp514x_platform_data tvp5146_pdata = { diff --git a/arch/arm/mach-davinci/board-dm355-leopard.c b/arch/arm/mach-davinci/board-dm355-leopard.c index 59743bd76793..8249a0bf69f0 100644 --- a/arch/arm/mach-davinci/board-dm355-leopard.c +++ b/arch/arm/mach-davinci/board-dm355-leopard.c @@ -72,6 +72,7 @@ static struct mtd_partition davinci_nand_partitions[] = {  };  static struct davinci_nand_pdata davinci_nand_data = { +	.core_chipsel		= 0,  	.mask_chipsel		= BIT(14),  	.parts			= davinci_nand_partitions,  	.nr_parts		= ARRAY_SIZE(davinci_nand_partitions), diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c index 0ac085b58a2b..435f7ec7d9af 100644 --- a/arch/arm/mach-davinci/board-dm365-evm.c +++ b/arch/arm/mach-davinci/board-dm365-evm.c @@ -138,6 +138,7 @@ static struct mtd_partition davinci_nand_partitions[] = {  };  static struct davinci_nand_pdata davinci_nand_data = { +	.core_chipsel		= 0,  	.mask_chipsel		= BIT(14),  	.parts			= davinci_nand_partitions,  	.nr_parts		= ARRAY_SIZE(davinci_nand_partitions), diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c index 95b55aae1366..48436f74fd71 100644 --- a/arch/arm/mach-davinci/board-dm644x-evm.c +++ b/arch/arm/mach-davinci/board-dm644x-evm.c @@ -17,6 +17,7 @@  #include <linux/i2c.h>  #include <linux/platform_data/pcf857x.h>  #include <linux/platform_data/at24.h> +#include <linux/platform_data/gpio-davinci.h>  #include <linux/mtd/mtd.h>  #include <linux/mtd/rawnand.h>  #include <linux/mtd/partitions.h> @@ -152,6 +153,7 @@ static struct davinci_aemif_timing davinci_evm_nandflash_timing = {  };  static struct davinci_nand_pdata davinci_evm_nandflash_data = { +	.core_chipsel	= 0,  	.parts		= davinci_evm_nandflash_partition,  	.nr_parts	= ARRAY_SIZE(davinci_evm_nandflash_partition),  	.ecc_mode	= NAND_ECC_HW, @@ -596,12 +598,15 @@ static struct i2c_board_info __initdata i2c_info[] =  {  	},  }; +#define DM644X_I2C_SDA_PIN	GPIO_TO_PIN(2, 12) +#define DM644X_I2C_SCL_PIN	GPIO_TO_PIN(2, 11) +  static struct gpiod_lookup_table i2c_recovery_gpiod_table = { -	.dev_id = "i2c_davinci", +	.dev_id = "i2c_davinci.1",  	.table = { -		GPIO_LOOKUP("davinci_gpio", 44, "sda", +		GPIO_LOOKUP("davinci_gpio.0", DM644X_I2C_SDA_PIN, "sda",  			    GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), -		GPIO_LOOKUP("davinci_gpio", 43, "scl", +		GPIO_LOOKUP("davinci_gpio.0", DM644X_I2C_SCL_PIN, "scl",  			    GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),  	},  }; @@ -768,6 +773,8 @@ static __init void davinci_evm_init(void)  	struct clk *aemif_clk;  	struct davinci_soc_info *soc_info = &davinci_soc_info; +	dm644x_init_devices(); +  	ret = dm644x_gpio_register();  	if (ret)  		pr_warn("%s: GPIO init failed: %d\n", __func__, ret); diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c index 2d37f5b0e1f5..584064fdabf5 100644 --- a/arch/arm/mach-davinci/board-dm646x-evm.c +++ b/arch/arm/mach-davinci/board-dm646x-evm.c @@ -84,6 +84,7 @@ static struct davinci_aemif_timing dm6467tevm_nandflash_timing = {  };  static struct davinci_nand_pdata davinci_nand_data = { +	.core_chipsel		= 0,  	.mask_cle 		= 0x80000,  	.mask_ale 		= 0x40000,  	.parts			= davinci_nand_partitions, @@ -532,11 +533,12 @@ static struct vpif_display_config dm646x_vpif_display_config = {  	.set_clock	= set_vpif_clock,  	.subdevinfo	= dm646x_vpif_subdev,  	.subdev_count	= ARRAY_SIZE(dm646x_vpif_subdev), +	.i2c_adapter_id = 1,  	.chan_config[0] = {  		.outputs = dm6467_ch0_outputs,  		.output_count = ARRAY_SIZE(dm6467_ch0_outputs),  	}, -	.card_name	= "DM646x EVM", +	.card_name	= "DM646x EVM Video Display",  };  /** @@ -674,6 +676,7 @@ static struct vpif_capture_config dm646x_vpif_capture_cfg = {  	.setup_input_channel_mode = setup_vpif_input_channel_mode,  	.subdev_info = vpif_capture_sdev_info,  	.subdev_count = ARRAY_SIZE(vpif_capture_sdev_info), +	.i2c_adapter_id = 1,  	.chan_config[0] = {  		.inputs = dm6467_ch0_inputs,  		.input_count = ARRAY_SIZE(dm6467_ch0_inputs), @@ -694,6 +697,7 @@ static struct vpif_capture_config dm646x_vpif_capture_cfg = {  			.fid_pol = 0,  		},  	}, +	.card_name = "DM646x EVM Video Capture",  };  static void __init evm_init_video(void) diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c index d1c85484c2e2..37b3e48a21d1 100644 --- a/arch/arm/mach-davinci/board-mityomapl138.c +++ b/arch/arm/mach-davinci/board-mityomapl138.c @@ -400,6 +400,7 @@ static struct mtd_partition mityomapl138_nandflash_partition[] = {  };  static struct davinci_nand_pdata mityomapl138_nandflash_data = { +	.core_chipsel	= 1,  	.parts		= mityomapl138_nandflash_partition,  	.nr_parts	= ARRAY_SIZE(mityomapl138_nandflash_partition),  	.ecc_mode	= NAND_ECC_HW, diff --git a/arch/arm/mach-davinci/board-neuros-osd2.c b/arch/arm/mach-davinci/board-neuros-osd2.c index f2875770fbff..25ad9b0612be 100644 --- a/arch/arm/mach-davinci/board-neuros-osd2.c +++ b/arch/arm/mach-davinci/board-neuros-osd2.c @@ -87,6 +87,7 @@ static struct mtd_partition davinci_ntosd2_nandflash_partition[] = {  };  static struct davinci_nand_pdata davinci_ntosd2_nandflash_data = { +	.core_chipsel	= 0,  	.parts		= davinci_ntosd2_nandflash_partition,  	.nr_parts	= ARRAY_SIZE(davinci_ntosd2_nandflash_partition),  	.ecc_mode	= NAND_ECC_HW, @@ -174,6 +175,8 @@ static __init void davinci_ntosd2_init(void)  	struct clk *aemif_clk;  	struct davinci_soc_info *soc_info = &davinci_soc_info; +	dm644x_init_devices(); +  	ret = dm644x_gpio_register();  	if (ret)  		pr_warn("%s: GPIO init failed: %d\n", __func__, ret); diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c index 0d32042b728f..be8b892a6ea7 100644 --- a/arch/arm/mach-davinci/board-omapl138-hawk.c +++ b/arch/arm/mach-davinci/board-omapl138-hawk.c @@ -123,12 +123,16 @@ static const short hawk_mmcsd0_pins[] = {  	-1  }; +#define DA850_HAWK_MMCSD_CD_PIN		GPIO_TO_PIN(3, 12) +#define DA850_HAWK_MMCSD_WP_PIN		GPIO_TO_PIN(3, 13) +  static struct gpiod_lookup_table mmc_gpios_table = {  	.dev_id = "da830-mmc.0",  	.table = { -		/* CD: gpio3_12: gpio60: chip 1 contains gpio range 32-63*/ -		GPIO_LOOKUP("davinci_gpio.0", 28, "cd", GPIO_ACTIVE_LOW), -		GPIO_LOOKUP("davinci_gpio.0", 29, "wp", GPIO_ACTIVE_LOW), +		GPIO_LOOKUP("davinci_gpio.0", DA850_HAWK_MMCSD_CD_PIN, "cd", +			    GPIO_ACTIVE_LOW), +		GPIO_LOOKUP("davinci_gpio.0", DA850_HAWK_MMCSD_WP_PIN, "wp", +			    GPIO_ACTIVE_LOW),  	},  }; diff --git a/arch/arm/mach-davinci/board-sffsdr.c b/arch/arm/mach-davinci/board-sffsdr.c index 2922da9d1684..e7c1728b0833 100644 --- a/arch/arm/mach-davinci/board-sffsdr.c +++ b/arch/arm/mach-davinci/board-sffsdr.c @@ -134,6 +134,8 @@ static __init void davinci_sffsdr_init(void)  {  	struct davinci_soc_info *soc_info = &davinci_soc_info; +	dm644x_init_devices(); +  	platform_add_devices(davinci_sffsdr_devices,  			     ARRAY_SIZE(davinci_sffsdr_devices));  	sffsdr_init_i2c(); diff --git a/arch/arm/mach-davinci/davinci.h b/arch/arm/mach-davinci/davinci.h index 270cef85750a..376cdd51ce9d 100644 --- a/arch/arm/mach-davinci/davinci.h +++ b/arch/arm/mach-davinci/davinci.h @@ -104,6 +104,7 @@ int dm365_gpio_register(void);  /* DM644x function declarations */  void dm644x_init(void); +void dm644x_init_devices(void);  void dm644x_init_time(void);  void dm644x_init_asp(void);  int dm644x_init_video(struct vpfe_config *, struct vpbe_config *); diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c index b409801649e1..a2e8586c8a6d 100644 --- a/arch/arm/mach-davinci/dm644x.c +++ b/arch/arm/mach-davinci/dm644x.c @@ -961,19 +961,14 @@ int __init dm644x_init_video(struct vpfe_config *vpfe_cfg,  	return 0;  } -static int __init dm644x_init_devices(void) +void __init dm644x_init_devices(void)  {  	struct platform_device *edma_pdev; -	int ret = 0; - -	if (!cpu_is_davinci_dm644x()) -		return 0; +	int ret;  	edma_pdev = platform_device_register_full(&dm644x_edma_device); -	if (IS_ERR(edma_pdev)) { +	if (IS_ERR(edma_pdev))  		pr_warn("%s: Failed to register eDMA\n", __func__); -		return PTR_ERR(edma_pdev); -	}  	platform_device_register(&dm644x_mdio_device);  	platform_device_register(&dm644x_emac_device); @@ -982,6 +977,4 @@ static int __init dm644x_init_devices(void)  	if (ret)  		pr_warn("%s: watchdog init failed: %d\n", __func__, ret); -	return ret;  } -postcore_initcall(dm644x_init_devices); diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c index 109ab1fa0d2c..c32ca27ab343 100644 --- a/arch/arm/mach-davinci/dm646x.c +++ b/arch/arm/mach-davinci/dm646x.c @@ -488,7 +488,8 @@ static u8 dm646x_default_priorities[DAVINCI_N_AINTC_IRQ] = {  	[IRQ_DM646X_MCASP0TXINT]        = 7,  	[IRQ_DM646X_MCASP0RXINT]        = 7,  	[IRQ_DM646X_RESERVED_3]         = 7, -	[IRQ_DM646X_MCASP1TXINT]        = 7,    /* clockevent */ +	[IRQ_DM646X_MCASP1TXINT]        = 7, +	[IRQ_TINT0_TINT12]              = 7,    /* clockevent */  	[IRQ_TINT0_TINT34]              = 7,    /* clocksource */  	[IRQ_TINT1_TINT12]              = 7,    /* DSP timer */  	[IRQ_TINT1_TINT34]              = 7,    /* system tick */ |