diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-08-16 13:42:58 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-08-16 13:42:58 -0400 |
commit | e4862f2f6f5653dfb67f3ba2b6f0bc74516ed51a (patch) | |
tree | 1db5a0540a4eecfad9b7daee476b985e82ddc810 /arch/arm/mach-kirkwood/common.c | |
parent | ec62dbd7eb8e3dddb221da89ecbcea0fc3dee8c1 (diff) | |
parent | b2c1e07b81a126e5846dfc3d36f559d861df59f4 (diff) |
Merge branch 'for-2.6.36' into for-2.6.37
Fairly simple conflicts, the most serious ones are the i.MX ones which I
suspect now need another rename.
Conflicts:
arch/arm/mach-mx2/clock_imx27.c
arch/arm/mach-mx2/devices.c
arch/arm/mach-omap2/board-rx51-peripherals.c
arch/arm/mach-omap2/board-zoom2.c
sound/soc/fsl/mpc5200_dma.c
sound/soc/fsl/mpc5200_dma.h
sound/soc/fsl/mpc8610_hpcd.c
sound/soc/pxa/spitz.c
Diffstat (limited to 'arch/arm/mach-kirkwood/common.c')
-rw-r--r-- | arch/arm/mach-kirkwood/common.c | 38 |
1 files changed, 34 insertions, 4 deletions
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c index 07690132cdbf..0f6ee32678ef 100644 --- a/arch/arm/mach-kirkwood/common.c +++ b/arch/arm/mach-kirkwood/common.c | |||
@@ -45,6 +45,11 @@ static struct map_desc kirkwood_io_desc[] __initdata = { | |||
45 | .length = KIRKWOOD_PCIE_IO_SIZE, | 45 | .length = KIRKWOOD_PCIE_IO_SIZE, |
46 | .type = MT_DEVICE, | 46 | .type = MT_DEVICE, |
47 | }, { | 47 | }, { |
48 | .virtual = KIRKWOOD_PCIE1_IO_VIRT_BASE, | ||
49 | .pfn = __phys_to_pfn(KIRKWOOD_PCIE1_IO_PHYS_BASE), | ||
50 | .length = KIRKWOOD_PCIE1_IO_SIZE, | ||
51 | .type = MT_DEVICE, | ||
52 | }, { | ||
48 | .virtual = KIRKWOOD_REGS_VIRT_BASE, | 53 | .virtual = KIRKWOOD_REGS_VIRT_BASE, |
49 | .pfn = __phys_to_pfn(KIRKWOOD_REGS_PHYS_BASE), | 54 | .pfn = __phys_to_pfn(KIRKWOOD_REGS_PHYS_BASE), |
50 | .length = KIRKWOOD_REGS_SIZE, | 55 | .length = KIRKWOOD_REGS_SIZE, |
@@ -403,7 +408,7 @@ void __init kirkwood_sdio_init(struct mvsdio_platform_data *mvsdio_data) | |||
403 | u32 dev, rev; | 408 | u32 dev, rev; |
404 | 409 | ||
405 | kirkwood_pcie_id(&dev, &rev); | 410 | kirkwood_pcie_id(&dev, &rev); |
406 | if (rev == 0) /* catch all Kirkwood Z0's */ | 411 | if (rev == 0 && dev != MV88F6282_DEV_ID) /* catch all Kirkwood Z0's */ |
407 | mvsdio_data->clock = 100000000; | 412 | mvsdio_data->clock = 100000000; |
408 | else | 413 | else |
409 | mvsdio_data->clock = 200000000; | 414 | mvsdio_data->clock = 200000000; |
@@ -848,8 +853,10 @@ int __init kirkwood_find_tclk(void) | |||
848 | u32 dev, rev; | 853 | u32 dev, rev; |
849 | 854 | ||
850 | kirkwood_pcie_id(&dev, &rev); | 855 | kirkwood_pcie_id(&dev, &rev); |
851 | if (dev == MV88F6281_DEV_ID && (rev == MV88F6281_REV_A0 || | 856 | |
852 | rev == MV88F6281_REV_A1)) | 857 | if ((dev == MV88F6281_DEV_ID && (rev == MV88F6281_REV_A0 || |
858 | rev == MV88F6281_REV_A1)) || | ||
859 | (dev == MV88F6282_DEV_ID)) | ||
853 | return 200000000; | 860 | return 200000000; |
854 | 861 | ||
855 | return 166666667; | 862 | return 166666667; |
@@ -934,13 +941,22 @@ static char * __init kirkwood_id(void) | |||
934 | return "MV88F6192-Z0"; | 941 | return "MV88F6192-Z0"; |
935 | else if (rev == MV88F6192_REV_A0) | 942 | else if (rev == MV88F6192_REV_A0) |
936 | return "MV88F6192-A0"; | 943 | return "MV88F6192-A0"; |
944 | else if (rev == MV88F6192_REV_A1) | ||
945 | return "MV88F6192-A1"; | ||
937 | else | 946 | else |
938 | return "MV88F6192-Rev-Unsupported"; | 947 | return "MV88F6192-Rev-Unsupported"; |
939 | } else if (dev == MV88F6180_DEV_ID) { | 948 | } else if (dev == MV88F6180_DEV_ID) { |
940 | if (rev == MV88F6180_REV_A0) | 949 | if (rev == MV88F6180_REV_A0) |
941 | return "MV88F6180-Rev-A0"; | 950 | return "MV88F6180-Rev-A0"; |
951 | else if (rev == MV88F6180_REV_A1) | ||
952 | return "MV88F6180-Rev-A1"; | ||
942 | else | 953 | else |
943 | return "MV88F6180-Rev-Unsupported"; | 954 | return "MV88F6180-Rev-Unsupported"; |
955 | } else if (dev == MV88F6282_DEV_ID) { | ||
956 | if (rev == MV88F6282_REV_A0) | ||
957 | return "MV88F6282-Rev-A0"; | ||
958 | else | ||
959 | return "MV88F6282-Rev-Unsupported"; | ||
944 | } else { | 960 | } else { |
945 | return "Device-Unknown"; | 961 | return "Device-Unknown"; |
946 | } | 962 | } |
@@ -993,12 +1009,14 @@ void __init kirkwood_init(void) | |||
993 | static int __init kirkwood_clock_gate(void) | 1009 | static int __init kirkwood_clock_gate(void) |
994 | { | 1010 | { |
995 | unsigned int curr = readl(CLOCK_GATING_CTRL); | 1011 | unsigned int curr = readl(CLOCK_GATING_CTRL); |
1012 | u32 dev, rev; | ||
996 | 1013 | ||
1014 | kirkwood_pcie_id(&dev, &rev); | ||
997 | printk(KERN_DEBUG "Gating clock of unused units\n"); | 1015 | printk(KERN_DEBUG "Gating clock of unused units\n"); |
998 | printk(KERN_DEBUG "before: 0x%08x\n", curr); | 1016 | printk(KERN_DEBUG "before: 0x%08x\n", curr); |
999 | 1017 | ||
1000 | /* Make sure those units are accessible */ | 1018 | /* Make sure those units are accessible */ |
1001 | writel(curr | CGC_SATA0 | CGC_SATA1 | CGC_PEX0, CLOCK_GATING_CTRL); | 1019 | writel(curr | CGC_SATA0 | CGC_SATA1 | CGC_PEX0 | CGC_PEX1, CLOCK_GATING_CTRL); |
1002 | 1020 | ||
1003 | /* For SATA: first shutdown the phy */ | 1021 | /* For SATA: first shutdown the phy */ |
1004 | if (!(kirkwood_clk_ctrl & CGC_SATA0)) { | 1022 | if (!(kirkwood_clk_ctrl & CGC_SATA0)) { |
@@ -1023,6 +1041,18 @@ static int __init kirkwood_clock_gate(void) | |||
1023 | writel(readl(PCIE_LINK_CTRL) & ~0x10, PCIE_LINK_CTRL); | 1041 | writel(readl(PCIE_LINK_CTRL) & ~0x10, PCIE_LINK_CTRL); |
1024 | } | 1042 | } |
1025 | 1043 | ||
1044 | /* For PCIe 1: first shutdown the phy */ | ||
1045 | if (dev == MV88F6282_DEV_ID) { | ||
1046 | if (!(kirkwood_clk_ctrl & CGC_PEX1)) { | ||
1047 | writel(readl(PCIE1_LINK_CTRL) | 0x10, PCIE1_LINK_CTRL); | ||
1048 | while (1) | ||
1049 | if (readl(PCIE1_STATUS) & 0x1) | ||
1050 | break; | ||
1051 | writel(readl(PCIE1_LINK_CTRL) & ~0x10, PCIE1_LINK_CTRL); | ||
1052 | } | ||
1053 | } else /* keep this bit set for devices that don't have PCIe1 */ | ||
1054 | kirkwood_clk_ctrl |= CGC_PEX1; | ||
1055 | |||
1026 | /* Now gate clock the required units */ | 1056 | /* Now gate clock the required units */ |
1027 | writel(kirkwood_clk_ctrl, CLOCK_GATING_CTRL); | 1057 | writel(kirkwood_clk_ctrl, CLOCK_GATING_CTRL); |
1028 | printk(KERN_DEBUG " after: 0x%08x\n", readl(CLOCK_GATING_CTRL)); | 1058 | printk(KERN_DEBUG " after: 0x%08x\n", readl(CLOCK_GATING_CTRL)); |