diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2014-01-29 00:55:25 -0500 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2014-01-29 00:55:25 -0500 |
commit | 6e677ef6fbe9513051bd753ae670b586e8ea7df1 (patch) | |
tree | 168b8cfad77da34a01d60d00ac5963dd5eafe8ca | |
parent | e9a371100dfdfa4c9f994059d19d98c9b4fd80af (diff) | |
parent | 4b3cbc82a04485f6400cb5b227798daaa8512a23 (diff) |
Merge remote-tracking branch 'scott/next' into next
<<
This contains a fix for a chroma_defconfig build break that was
introduced by e6500 tablewalk support, and a device tree binding patch
that missed the previous pull request due to some last-minute polishing.
>>
-rw-r--r-- | Documentation/devicetree/bindings/clock/corenet-clock.txt | 134 | ||||
-rw-r--r-- | arch/powerpc/Kconfig | 1 | ||||
-rw-r--r-- | arch/powerpc/mm/tlb_low_64e.S | 3 | ||||
-rw-r--r-- | arch/powerpc/mm/tlb_nohash.c | 2 |
4 files changed, 139 insertions, 1 deletions
diff --git a/Documentation/devicetree/bindings/clock/corenet-clock.txt b/Documentation/devicetree/bindings/clock/corenet-clock.txt new file mode 100644 index 000000000000..24711af48e30 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/corenet-clock.txt | |||
@@ -0,0 +1,134 @@ | |||
1 | * Clock Block on Freescale CoreNet Platforms | ||
2 | |||
3 | Freescale CoreNet chips take primary clocking input from the external | ||
4 | SYSCLK signal. The SYSCLK input (frequency) is multiplied using | ||
5 | multiple phase locked loops (PLL) to create a variety of frequencies | ||
6 | which can then be passed to a variety of internal logic, including | ||
7 | cores and peripheral IP blocks. | ||
8 | Please refer to the Reference Manual for details. | ||
9 | |||
10 | 1. Clock Block Binding | ||
11 | |||
12 | Required properties: | ||
13 | - compatible: Should contain a specific clock block compatible string | ||
14 | and a single chassis clock compatible string. | ||
15 | Clock block strings include, but not limited to, one of the: | ||
16 | * "fsl,p2041-clockgen" | ||
17 | * "fsl,p3041-clockgen" | ||
18 | * "fsl,p4080-clockgen" | ||
19 | * "fsl,p5020-clockgen" | ||
20 | * "fsl,p5040-clockgen" | ||
21 | * "fsl,t4240-clockgen" | ||
22 | * "fsl,b4420-clockgen" | ||
23 | * "fsl,b4860-clockgen" | ||
24 | Chassis clock strings include: | ||
25 | * "fsl,qoriq-clockgen-1.0": for chassis 1.0 clocks | ||
26 | * "fsl,qoriq-clockgen-2.0": for chassis 2.0 clocks | ||
27 | - reg: Describes the address of the device's resources within the | ||
28 | address space defined by its parent bus, and resource zero | ||
29 | represents the clock register set | ||
30 | - clock-frequency: Input system clock frequency | ||
31 | |||
32 | Recommended properties: | ||
33 | - ranges: Allows valid translation between child's address space and | ||
34 | parent's. Must be present if the device has sub-nodes. | ||
35 | - #address-cells: Specifies the number of cells used to represent | ||
36 | physical base addresses. Must be present if the device has | ||
37 | sub-nodes and set to 1 if present | ||
38 | - #size-cells: Specifies the number of cells used to represent | ||
39 | the size of an address. Must be present if the device has | ||
40 | sub-nodes and set to 1 if present | ||
41 | |||
42 | 2. Clock Provider/Consumer Binding | ||
43 | |||
44 | Most of the bindings are from the common clock binding[1]. | ||
45 | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||
46 | |||
47 | Required properties: | ||
48 | - compatible : Should include one of the following: | ||
49 | * "fsl,qoriq-core-pll-1.0" for core PLL clocks (v1.0) | ||
50 | * "fsl,qoriq-core-pll-2.0" for core PLL clocks (v2.0) | ||
51 | * "fsl,qoriq-core-mux-1.0" for core mux clocks (v1.0) | ||
52 | * "fsl,qoriq-core-mux-2.0" for core mux clocks (v2.0) | ||
53 | * "fsl,qoriq-sysclk-1.0": for input system clock (v1.0). | ||
54 | It takes parent's clock-frequency as its clock. | ||
55 | * "fsl,qoriq-sysclk-2.0": for input system clock (v2.0). | ||
56 | It takes parent's clock-frequency as its clock. | ||
57 | - #clock-cells: From common clock binding. The number of cells in a | ||
58 | clock-specifier. Should be <0> for "fsl,qoriq-sysclk-[1,2].0" | ||
59 | clocks, or <1> for "fsl,qoriq-core-pll-[1,2].0" clocks. | ||
60 | For "fsl,qoriq-core-pll-[1,2].0" clocks, the single | ||
61 | clock-specifier cell may take the following values: | ||
62 | * 0 - equal to the PLL frequency | ||
63 | * 1 - equal to the PLL frequency divided by 2 | ||
64 | * 2 - equal to the PLL frequency divided by 4 | ||
65 | |||
66 | Recommended properties: | ||
67 | - clocks: Should be the phandle of input parent clock | ||
68 | - clock-names: From common clock binding, indicates the clock name | ||
69 | - clock-output-names: From common clock binding, indicates the names of | ||
70 | output clocks | ||
71 | - reg: Should be the offset and length of clock block base address. | ||
72 | The length should be 4. | ||
73 | |||
74 | Example for clock block and clock provider: | ||
75 | / { | ||
76 | clockgen: global-utilities@e1000 { | ||
77 | compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0"; | ||
78 | ranges = <0x0 0xe1000 0x1000>; | ||
79 | clock-frequency = <133333333>; | ||
80 | reg = <0xe1000 0x1000>; | ||
81 | #address-cells = <1>; | ||
82 | #size-cells = <1>; | ||
83 | |||
84 | sysclk: sysclk { | ||
85 | #clock-cells = <0>; | ||
86 | compatible = "fsl,qoriq-sysclk-1.0"; | ||
87 | clock-output-names = "sysclk"; | ||
88 | } | ||
89 | |||
90 | pll0: pll0@800 { | ||
91 | #clock-cells = <1>; | ||
92 | reg = <0x800 0x4>; | ||
93 | compatible = "fsl,qoriq-core-pll-1.0"; | ||
94 | clocks = <&sysclk>; | ||
95 | clock-output-names = "pll0", "pll0-div2"; | ||
96 | }; | ||
97 | |||
98 | pll1: pll1@820 { | ||
99 | #clock-cells = <1>; | ||
100 | reg = <0x820 0x4>; | ||
101 | compatible = "fsl,qoriq-core-pll-1.0"; | ||
102 | clocks = <&sysclk>; | ||
103 | clock-output-names = "pll1", "pll1-div2"; | ||
104 | }; | ||
105 | |||
106 | mux0: mux0@0 { | ||
107 | #clock-cells = <0>; | ||
108 | reg = <0x0 0x4>; | ||
109 | compatible = "fsl,qoriq-core-mux-1.0"; | ||
110 | clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; | ||
111 | clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; | ||
112 | clock-output-names = "cmux0"; | ||
113 | }; | ||
114 | |||
115 | mux1: mux1@20 { | ||
116 | #clock-cells = <0>; | ||
117 | reg = <0x20 0x4>; | ||
118 | compatible = "fsl,qoriq-core-mux-1.0"; | ||
119 | clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; | ||
120 | clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; | ||
121 | clock-output-names = "cmux1"; | ||
122 | }; | ||
123 | }; | ||
124 | } | ||
125 | |||
126 | Example for clock consumer: | ||
127 | |||
128 | / { | ||
129 | cpu0: PowerPC,e5500@0 { | ||
130 | ... | ||
131 | clocks = <&mux0>; | ||
132 | ... | ||
133 | }; | ||
134 | } | ||
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index d15594ec213d..a5e5d2ec380b 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -532,6 +532,7 @@ config PPC_16K_PAGES | |||
532 | 532 | ||
533 | config PPC_64K_PAGES | 533 | config PPC_64K_PAGES |
534 | bool "64k page size" if 44x || PPC_STD_MMU_64 || PPC_BOOK3E_64 | 534 | bool "64k page size" if 44x || PPC_STD_MMU_64 || PPC_BOOK3E_64 |
535 | depends on !PPC_FSL_BOOK3E | ||
535 | select PPC_HAS_HASH_64K if PPC_STD_MMU_64 | 536 | select PPC_HAS_HASH_64K if PPC_STD_MMU_64 |
536 | 537 | ||
537 | config PPC_256K_PAGES | 538 | config PPC_256K_PAGES |
diff --git a/arch/powerpc/mm/tlb_low_64e.S b/arch/powerpc/mm/tlb_low_64e.S index 16250b162375..c95eb323e9ae 100644 --- a/arch/powerpc/mm/tlb_low_64e.S +++ b/arch/powerpc/mm/tlb_low_64e.S | |||
@@ -240,6 +240,7 @@ itlb_miss_fault_bolted: | |||
240 | beq tlb_miss_common_bolted | 240 | beq tlb_miss_common_bolted |
241 | b itlb_miss_kernel_bolted | 241 | b itlb_miss_kernel_bolted |
242 | 242 | ||
243 | #ifdef CONFIG_PPC_FSL_BOOK3E | ||
243 | /* | 244 | /* |
244 | * TLB miss handling for e6500 and derivatives, using hardware tablewalk. | 245 | * TLB miss handling for e6500 and derivatives, using hardware tablewalk. |
245 | * | 246 | * |
@@ -409,7 +410,7 @@ itlb_miss_fault_e6500: | |||
409 | TLB_MISS_STATS_I(MMSTAT_TLB_MISS_NORM_FAULT) | 410 | TLB_MISS_STATS_I(MMSTAT_TLB_MISS_NORM_FAULT) |
410 | tlb_epilog_bolted | 411 | tlb_epilog_bolted |
411 | b exc_instruction_storage_book3e | 412 | b exc_instruction_storage_book3e |
412 | 413 | #endif /* CONFIG_PPC_FSL_BOOK3E */ | |
413 | 414 | ||
414 | /********************************************************************** | 415 | /********************************************************************** |
415 | * * | 416 | * * |
diff --git a/arch/powerpc/mm/tlb_nohash.c b/arch/powerpc/mm/tlb_nohash.c index 735839b74dc5..b37a58e1c92d 100644 --- a/arch/powerpc/mm/tlb_nohash.c +++ b/arch/powerpc/mm/tlb_nohash.c | |||
@@ -557,10 +557,12 @@ static void setup_mmu_htw(void) | |||
557 | patch_exception(0x1c0, exc_data_tlb_miss_htw_book3e); | 557 | patch_exception(0x1c0, exc_data_tlb_miss_htw_book3e); |
558 | patch_exception(0x1e0, exc_instruction_tlb_miss_htw_book3e); | 558 | patch_exception(0x1e0, exc_instruction_tlb_miss_htw_book3e); |
559 | break; | 559 | break; |
560 | #ifdef CONFIG_PPC_FSL_BOOK3E | ||
560 | case PPC_HTW_E6500: | 561 | case PPC_HTW_E6500: |
561 | patch_exception(0x1c0, exc_data_tlb_miss_e6500_book3e); | 562 | patch_exception(0x1c0, exc_data_tlb_miss_e6500_book3e); |
562 | patch_exception(0x1e0, exc_instruction_tlb_miss_e6500_book3e); | 563 | patch_exception(0x1e0, exc_instruction_tlb_miss_e6500_book3e); |
563 | break; | 564 | break; |
565 | #endif | ||
564 | } | 566 | } |
565 | pr_info("MMU: Book3E HW tablewalk %s\n", | 567 | pr_info("MMU: Book3E HW tablewalk %s\n", |
566 | book3e_htw_mode != PPC_HTW_NONE ? "enabled" : "not supported"); | 568 | book3e_htw_mode != PPC_HTW_NONE ? "enabled" : "not supported"); |