aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-01-09 17:38:51 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2012-01-09 17:38:51 -0500
commit5ede3ceb7b2c2843e153a1803edbdc8c56655950 (patch)
tree4cfa82b619f7d39b671e4a2a213f4d040b09c486 /drivers
parent6d889d03ab1417645e76e129834f76204bae37c0 (diff)
parent3e2762c8f1141ae8dc708034ea41d6827818c328 (diff)
Merge tag 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
New feature development This adds support for new features, and contains stuff from most platforms. A number of these patches could have fit into other branches, too, but were small enough not to cause too much confusion here. * tag 'devel' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (28 commits) mfd/db8500-prcmu: remove support for early silicon revisions ARM: ux500: fix the smp_twd clock calculation ARM: ux500: remove support for early silicon revisions ARM: ux500: update register files ARM: ux500: register DB5500 PMU dynamically ARM: ux500: update ASIC detection for U5500 ARM: ux500: support DB8520 ARM: picoxcell: implement watchdog restart ARM: OMAP3+: hwmod data: Add the default clockactivity for I2C ARM: OMAP3: hwmod data: disable multiblock reads on MMC1/2 on OMAP34xx/35xx <= ES2.1 ARM: OMAP: USB: EHCI and OHCI hwmod structures for OMAP4 ARM: OMAP: USB: EHCI and OHCI hwmod structures for OMAP3 ARM: OMAP: hwmod data: Add support for AM35xx UART4/ttyO3 ARM: Orion: Remove address map info from all platform data structures ARM: Orion: Get address map from plat-orion instead of via platform_data ARM: Orion: mbus_dram_info consolidation ARM: Orion: Consolidate the address map setup ARM: Kirkwood: Add configuration for MPP12 as GPIO ARM: Kirkwood: Recognize A1 revision of 6282 chip ARM: ux500: update the MOP500 GPIO assignments ...
Diffstat (limited to 'drivers')
-rw-r--r--drivers/ata/sata_mv.c19
-rw-r--r--drivers/dma/mv_xor.c11
-rw-r--r--drivers/mfd/db8500-prcmu.c7
-rw-r--r--drivers/mmc/host/mvsdio.c13
-rw-r--r--drivers/net/ethernet/marvell/mv643xx_eth.c10
-rw-r--r--drivers/usb/host/ehci-orion.c10
6 files changed, 39 insertions, 31 deletions
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 0b8b8b488ee8..38950ea8398a 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -3988,7 +3988,7 @@ static int mv_create_dma_pools(struct mv_host_priv *hpriv, struct device *dev)
3988} 3988}
3989 3989
3990static void mv_conf_mbus_windows(struct mv_host_priv *hpriv, 3990static void mv_conf_mbus_windows(struct mv_host_priv *hpriv,
3991 struct mbus_dram_target_info *dram) 3991 const struct mbus_dram_target_info *dram)
3992{ 3992{
3993 int i; 3993 int i;
3994 3994
@@ -3998,7 +3998,7 @@ static void mv_conf_mbus_windows(struct mv_host_priv *hpriv,
3998 } 3998 }
3999 3999
4000 for (i = 0; i < dram->num_cs; i++) { 4000 for (i = 0; i < dram->num_cs; i++) {
4001 struct mbus_dram_window *cs = dram->cs + i; 4001 const struct mbus_dram_window *cs = dram->cs + i;
4002 4002
4003 writel(((cs->size - 1) & 0xffff0000) | 4003 writel(((cs->size - 1) & 0xffff0000) |
4004 (cs->mbus_attr << 8) | 4004 (cs->mbus_attr << 8) |
@@ -4019,6 +4019,7 @@ static void mv_conf_mbus_windows(struct mv_host_priv *hpriv,
4019static int mv_platform_probe(struct platform_device *pdev) 4019static int mv_platform_probe(struct platform_device *pdev)
4020{ 4020{
4021 const struct mv_sata_platform_data *mv_platform_data; 4021 const struct mv_sata_platform_data *mv_platform_data;
4022 const struct mbus_dram_target_info *dram;
4022 const struct ata_port_info *ppi[] = 4023 const struct ata_port_info *ppi[] =
4023 { &mv_port_info[chip_soc], NULL }; 4024 { &mv_port_info[chip_soc], NULL };
4024 struct ata_host *host; 4025 struct ata_host *host;
@@ -4072,8 +4073,9 @@ static int mv_platform_probe(struct platform_device *pdev)
4072 /* 4073 /*
4073 * (Re-)program MBUS remapping windows if we are asked to. 4074 * (Re-)program MBUS remapping windows if we are asked to.
4074 */ 4075 */
4075 if (mv_platform_data->dram != NULL) 4076 dram = mv_mbus_dram_info();
4076 mv_conf_mbus_windows(hpriv, mv_platform_data->dram); 4077 if (dram)
4078 mv_conf_mbus_windows(hpriv, dram);
4077 4079
4078 rc = mv_create_dma_pools(hpriv, &pdev->dev); 4080 rc = mv_create_dma_pools(hpriv, &pdev->dev);
4079 if (rc) 4081 if (rc)
@@ -4141,17 +4143,18 @@ static int mv_platform_suspend(struct platform_device *pdev, pm_message_t state)
4141static int mv_platform_resume(struct platform_device *pdev) 4143static int mv_platform_resume(struct platform_device *pdev)
4142{ 4144{
4143 struct ata_host *host = platform_get_drvdata(pdev); 4145 struct ata_host *host = platform_get_drvdata(pdev);
4146 const struct mbus_dram_target_info *dram;
4144 int ret; 4147 int ret;
4145 4148
4146 if (host) { 4149 if (host) {
4147 struct mv_host_priv *hpriv = host->private_data; 4150 struct mv_host_priv *hpriv = host->private_data;
4148 const struct mv_sata_platform_data *mv_platform_data = \ 4151
4149 pdev->dev.platform_data;
4150 /* 4152 /*
4151 * (Re-)program MBUS remapping windows if we are asked to. 4153 * (Re-)program MBUS remapping windows if we are asked to.
4152 */ 4154 */
4153 if (mv_platform_data->dram != NULL) 4155 dram = mv_mbus_dram_info();
4154 mv_conf_mbus_windows(hpriv, mv_platform_data->dram); 4156 if (dram)
4157 mv_conf_mbus_windows(hpriv, dram);
4155 4158
4156 /* initialize adapter */ 4159 /* initialize adapter */
4157 ret = mv_init_host(host); 4160 ret = mv_init_host(host);
diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c
index 9a353c2216d0..e779b434af45 100644
--- a/drivers/dma/mv_xor.c
+++ b/drivers/dma/mv_xor.c
@@ -1250,7 +1250,7 @@ static int __devinit mv_xor_probe(struct platform_device *pdev)
1250 1250
1251static void 1251static void
1252mv_xor_conf_mbus_windows(struct mv_xor_shared_private *msp, 1252mv_xor_conf_mbus_windows(struct mv_xor_shared_private *msp,
1253 struct mbus_dram_target_info *dram) 1253 const struct mbus_dram_target_info *dram)
1254{ 1254{
1255 void __iomem *base = msp->xor_base; 1255 void __iomem *base = msp->xor_base;
1256 u32 win_enable = 0; 1256 u32 win_enable = 0;
@@ -1264,7 +1264,7 @@ mv_xor_conf_mbus_windows(struct mv_xor_shared_private *msp,
1264 } 1264 }
1265 1265
1266 for (i = 0; i < dram->num_cs; i++) { 1266 for (i = 0; i < dram->num_cs; i++) {
1267 struct mbus_dram_window *cs = dram->cs + i; 1267 const struct mbus_dram_window *cs = dram->cs + i;
1268 1268
1269 writel((cs->base & 0xffff0000) | 1269 writel((cs->base & 0xffff0000) |
1270 (cs->mbus_attr << 8) | 1270 (cs->mbus_attr << 8) |
@@ -1290,7 +1290,7 @@ static struct platform_driver mv_xor_driver = {
1290 1290
1291static int mv_xor_shared_probe(struct platform_device *pdev) 1291static int mv_xor_shared_probe(struct platform_device *pdev)
1292{ 1292{
1293 struct mv_xor_platform_shared_data *msd = pdev->dev.platform_data; 1293 const struct mbus_dram_target_info *dram;
1294 struct mv_xor_shared_private *msp; 1294 struct mv_xor_shared_private *msp;
1295 struct resource *res; 1295 struct resource *res;
1296 1296
@@ -1323,8 +1323,9 @@ static int mv_xor_shared_probe(struct platform_device *pdev)
1323 /* 1323 /*
1324 * (Re-)program MBUS remapping windows if we are asked to. 1324 * (Re-)program MBUS remapping windows if we are asked to.
1325 */ 1325 */
1326 if (msd != NULL && msd->dram != NULL) 1326 dram = mv_mbus_dram_info();
1327 mv_xor_conf_mbus_windows(msp, msd->dram); 1327 if (dram)
1328 mv_xor_conf_mbus_windows(msp, dram);
1328 1329
1329 return 0; 1330 return 0;
1330} 1331}
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c
index a25ab9c6b5af..af8e0efedbe4 100644
--- a/drivers/mfd/db8500-prcmu.c
+++ b/drivers/mfd/db8500-prcmu.c
@@ -2102,14 +2102,11 @@ static struct irq_chip prcmu_irq_chip = {
2102void __init db8500_prcmu_early_init(void) 2102void __init db8500_prcmu_early_init(void)
2103{ 2103{
2104 unsigned int i; 2104 unsigned int i;
2105 2105 if (cpu_is_u8500v2()) {
2106 if (cpu_is_u8500v1()) {
2107 tcdm_base = __io_address(U8500_PRCMU_TCDM_BASE_V1);
2108 } else if (cpu_is_u8500v2()) {
2109 void *tcpm_base = ioremap_nocache(U8500_PRCMU_TCPM_BASE, SZ_4K); 2106 void *tcpm_base = ioremap_nocache(U8500_PRCMU_TCPM_BASE, SZ_4K);
2110 2107
2111 if (tcpm_base != NULL) { 2108 if (tcpm_base != NULL) {
2112 int version; 2109 u32 version;
2113 version = readl(tcpm_base + PRCMU_FW_VERSION_OFFSET); 2110 version = readl(tcpm_base + PRCMU_FW_VERSION_OFFSET);
2114 prcmu_version.project_number = version & 0xFF; 2111 prcmu_version.project_number = version & 0xFF;
2115 prcmu_version.api_version = (version >> 8) & 0xFF; 2112 prcmu_version.api_version = (version >> 8) & 0xFF;
diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
index 211a4959c293..eeb8cd125b0c 100644
--- a/drivers/mmc/host/mvsdio.c
+++ b/drivers/mmc/host/mvsdio.c
@@ -679,8 +679,9 @@ static const struct mmc_host_ops mvsd_ops = {
679 .enable_sdio_irq = mvsd_enable_sdio_irq, 679 .enable_sdio_irq = mvsd_enable_sdio_irq,
680}; 680};
681 681
682static void __init mv_conf_mbus_windows(struct mvsd_host *host, 682static void __init
683 struct mbus_dram_target_info *dram) 683mv_conf_mbus_windows(struct mvsd_host *host,
684 const struct mbus_dram_target_info *dram)
684{ 685{
685 void __iomem *iobase = host->base; 686 void __iomem *iobase = host->base;
686 int i; 687 int i;
@@ -691,7 +692,7 @@ static void __init mv_conf_mbus_windows(struct mvsd_host *host,
691 } 692 }
692 693
693 for (i = 0; i < dram->num_cs; i++) { 694 for (i = 0; i < dram->num_cs; i++) {
694 struct mbus_dram_window *cs = dram->cs + i; 695 const struct mbus_dram_window *cs = dram->cs + i;
695 writel(((cs->size - 1) & 0xffff0000) | 696 writel(((cs->size - 1) & 0xffff0000) |
696 (cs->mbus_attr << 8) | 697 (cs->mbus_attr << 8) |
697 (dram->mbus_dram_target_id << 4) | 1, 698 (dram->mbus_dram_target_id << 4) | 1,
@@ -705,6 +706,7 @@ static int __init mvsd_probe(struct platform_device *pdev)
705 struct mmc_host *mmc = NULL; 706 struct mmc_host *mmc = NULL;
706 struct mvsd_host *host = NULL; 707 struct mvsd_host *host = NULL;
707 const struct mvsdio_platform_data *mvsd_data; 708 const struct mvsdio_platform_data *mvsd_data;
709 const struct mbus_dram_target_info *dram;
708 struct resource *r; 710 struct resource *r;
709 int ret, irq; 711 int ret, irq;
710 712
@@ -755,8 +757,9 @@ static int __init mvsd_probe(struct platform_device *pdev)
755 } 757 }
756 758
757 /* (Re-)program MBUS remapping windows if we are asked to. */ 759 /* (Re-)program MBUS remapping windows if we are asked to. */
758 if (mvsd_data->dram != NULL) 760 dram = mv_mbus_dram_info();
759 mv_conf_mbus_windows(host, mvsd_data->dram); 761 if (dram)
762 mv_conf_mbus_windows(host, dram);
760 763
761 mvsd_power_down(host); 764 mvsd_power_down(host);
762 765
diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c
index e87847e32ddb..80aab4e5d695 100644
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
@@ -2511,7 +2511,7 @@ static void mv643xx_eth_netpoll(struct net_device *dev)
2511/* platform glue ************************************************************/ 2511/* platform glue ************************************************************/
2512static void 2512static void
2513mv643xx_eth_conf_mbus_windows(struct mv643xx_eth_shared_private *msp, 2513mv643xx_eth_conf_mbus_windows(struct mv643xx_eth_shared_private *msp,
2514 struct mbus_dram_target_info *dram) 2514 const struct mbus_dram_target_info *dram)
2515{ 2515{
2516 void __iomem *base = msp->base; 2516 void __iomem *base = msp->base;
2517 u32 win_enable; 2517 u32 win_enable;
@@ -2529,7 +2529,7 @@ mv643xx_eth_conf_mbus_windows(struct mv643xx_eth_shared_private *msp,
2529 win_protect = 0; 2529 win_protect = 0;
2530 2530
2531 for (i = 0; i < dram->num_cs; i++) { 2531 for (i = 0; i < dram->num_cs; i++) {
2532 struct mbus_dram_window *cs = dram->cs + i; 2532 const struct mbus_dram_window *cs = dram->cs + i;
2533 2533
2534 writel((cs->base & 0xffff0000) | 2534 writel((cs->base & 0xffff0000) |
2535 (cs->mbus_attr << 8) | 2535 (cs->mbus_attr << 8) |
@@ -2579,6 +2579,7 @@ static int mv643xx_eth_shared_probe(struct platform_device *pdev)
2579 static int mv643xx_eth_version_printed; 2579 static int mv643xx_eth_version_printed;
2580 struct mv643xx_eth_shared_platform_data *pd = pdev->dev.platform_data; 2580 struct mv643xx_eth_shared_platform_data *pd = pdev->dev.platform_data;
2581 struct mv643xx_eth_shared_private *msp; 2581 struct mv643xx_eth_shared_private *msp;
2582 const struct mbus_dram_target_info *dram;
2582 struct resource *res; 2583 struct resource *res;
2583 int ret; 2584 int ret;
2584 2585
@@ -2643,8 +2644,9 @@ static int mv643xx_eth_shared_probe(struct platform_device *pdev)
2643 /* 2644 /*
2644 * (Re-)program MBUS remapping windows if we are asked to. 2645 * (Re-)program MBUS remapping windows if we are asked to.
2645 */ 2646 */
2646 if (pd != NULL && pd->dram != NULL) 2647 dram = mv_mbus_dram_info();
2647 mv643xx_eth_conf_mbus_windows(msp, pd->dram); 2648 if (dram)
2649 mv643xx_eth_conf_mbus_windows(msp, dram);
2648 2650
2649 /* 2651 /*
2650 * Detect hardware parameters. 2652 * Detect hardware parameters.
diff --git a/drivers/usb/host/ehci-orion.c b/drivers/usb/host/ehci-orion.c
index a68a2a5c4b83..6c6a5a3b4ea7 100644
--- a/drivers/usb/host/ehci-orion.c
+++ b/drivers/usb/host/ehci-orion.c
@@ -172,7 +172,7 @@ static const struct hc_driver ehci_orion_hc_driver = {
172 172
173static void __init 173static void __init
174ehci_orion_conf_mbus_windows(struct usb_hcd *hcd, 174ehci_orion_conf_mbus_windows(struct usb_hcd *hcd,
175 struct mbus_dram_target_info *dram) 175 const struct mbus_dram_target_info *dram)
176{ 176{
177 int i; 177 int i;
178 178
@@ -182,7 +182,7 @@ ehci_orion_conf_mbus_windows(struct usb_hcd *hcd,
182 } 182 }
183 183
184 for (i = 0; i < dram->num_cs; i++) { 184 for (i = 0; i < dram->num_cs; i++) {
185 struct mbus_dram_window *cs = dram->cs + i; 185 const struct mbus_dram_window *cs = dram->cs + i;
186 186
187 wrl(USB_WINDOW_CTRL(i), ((cs->size - 1) & 0xffff0000) | 187 wrl(USB_WINDOW_CTRL(i), ((cs->size - 1) & 0xffff0000) |
188 (cs->mbus_attr << 8) | 188 (cs->mbus_attr << 8) |
@@ -194,6 +194,7 @@ ehci_orion_conf_mbus_windows(struct usb_hcd *hcd,
194static int __devinit ehci_orion_drv_probe(struct platform_device *pdev) 194static int __devinit ehci_orion_drv_probe(struct platform_device *pdev)
195{ 195{
196 struct orion_ehci_data *pd = pdev->dev.platform_data; 196 struct orion_ehci_data *pd = pdev->dev.platform_data;
197 const struct mbus_dram_target_info *dram;
197 struct resource *res; 198 struct resource *res;
198 struct usb_hcd *hcd; 199 struct usb_hcd *hcd;
199 struct ehci_hcd *ehci; 200 struct ehci_hcd *ehci;
@@ -259,8 +260,9 @@ static int __devinit ehci_orion_drv_probe(struct platform_device *pdev)
259 /* 260 /*
260 * (Re-)program MBUS remapping windows if we are asked to. 261 * (Re-)program MBUS remapping windows if we are asked to.
261 */ 262 */
262 if (pd != NULL && pd->dram != NULL) 263 dram = mv_mbus_dram_info();
263 ehci_orion_conf_mbus_windows(hcd, pd->dram); 264 if (dram)
265 ehci_orion_conf_mbus_windows(hcd, dram);
264 266
265 /* 267 /*
266 * setup Orion USB controller. 268 * setup Orion USB controller.