diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-09-26 22:47:17 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-09-26 22:47:17 -0400 |
commit | 9aae341287f55d5fc71f8a884e671f9058ad3388 (patch) | |
tree | 974ce958e70c0afd0a81cdda6f30d9a037470a98 | |
parent | caa1d631fc99940f866480c2bb88a6f5a235e7a2 (diff) | |
parent | 9d9fd8871b4136755160bf95a9abd0d23d738ddc (diff) |
Merge remote-tracking branch 'agust/next' into next
mpc5xxx updates from Anatolij
-rw-r--r-- | Documentation/devicetree/bindings/misc/ifm-csi.txt | 41 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/o2d.dts | 47 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/o2d.dtsi | 139 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/o2d300.dts | 52 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/o2dnt2.dts | 48 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/o2i.dts | 33 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/o2mnt.dts | 33 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/o3dnt.dts | 48 | ||||
-rw-r--r-- | arch/powerpc/include/asm/mpc52xx.h | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/512x/Kconfig | 1 | ||||
-rw-r--r-- | arch/powerpc/platforms/512x/clock.c | 6 | ||||
-rw-r--r-- | arch/powerpc/platforms/512x/mpc512x_shared.c | 6 | ||||
-rw-r--r-- | arch/powerpc/platforms/52xx/mpc5200_simple.c | 1 | ||||
-rw-r--r-- | arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c | 35 |
14 files changed, 483 insertions, 9 deletions
diff --git a/Documentation/devicetree/bindings/misc/ifm-csi.txt b/Documentation/devicetree/bindings/misc/ifm-csi.txt new file mode 100644 index 000000000000..5bdfffb0b9f7 --- /dev/null +++ b/Documentation/devicetree/bindings/misc/ifm-csi.txt | |||
@@ -0,0 +1,41 @@ | |||
1 | IFM camera sensor interface on mpc5200 LocalPlus bus | ||
2 | |||
3 | Required properties: | ||
4 | - compatible: "ifm,o2d-csi" | ||
5 | - reg: specifies sensor chip select number and associated address range | ||
6 | - interrupts: external interrupt line number and interrupt sense mode | ||
7 | of the interrupt line signaling frame valid events | ||
8 | - gpios: three gpio-specifiers for "capture", "reset" and "master enable" | ||
9 | GPIOs (strictly in this order). | ||
10 | - ifm,csi-clk-handle: the phandle to a node in the DT describing the sensor | ||
11 | clock generator. This node is usually a general purpose timer controller. | ||
12 | - ifm,csi-addr-bus-width: address bus width (valid values are 16, 24, 25) | ||
13 | - ifm,csi-data-bus-width: data bus width (valid values are 8 and 16) | ||
14 | - ifm,csi-wait-cycles: sensor bus wait cycles | ||
15 | |||
16 | Optional properties: | ||
17 | - ifm,csi-byte-swap: if this property is present, the byte swapping on | ||
18 | the bus will be enabled. | ||
19 | |||
20 | Example: | ||
21 | |||
22 | csi@3,0 { | ||
23 | compatible = "ifm,o2d-csi"; | ||
24 | reg = <3 0 0x00100000>; /* CS 3, 1 MiB range */ | ||
25 | interrupts = <1 1 2>; /* IRQ1, edge falling */ | ||
26 | |||
27 | ifm,csi-clk-handle = <&timer7>; | ||
28 | gpios = <&gpio_simple 23 0 /* image_capture */ | ||
29 | &gpio_simple 26 0 /* image_reset */ | ||
30 | &gpio_simple 29 0>; /* image_master_en */ | ||
31 | |||
32 | ifm,csi-addr-bus-width = <24>; | ||
33 | ifm,csi-data-bus-width = <8>; | ||
34 | ifm,csi-wait-cycles = <0>; | ||
35 | }; | ||
36 | |||
37 | The base address of the used chip select is specified in the | ||
38 | ranges property of the parent localbus node, for example: | ||
39 | |||
40 | ranges = <0 0 0xff000000 0x01000000 | ||
41 | 3 0 0xe3000000 0x00100000>; | ||
diff --git a/arch/powerpc/boot/dts/o2d.dts b/arch/powerpc/boot/dts/o2d.dts new file mode 100644 index 000000000000..9f6dd4d889b3 --- /dev/null +++ b/arch/powerpc/boot/dts/o2d.dts | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | * O2D Device Tree Source | ||
3 | * | ||
4 | * Copyright (C) 2012 DENX Software Engineering | ||
5 | * Anatolij Gustschin <agust@denx.de> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms of the GNU General Public License as published by the | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | */ | ||
12 | |||
13 | /include/ "o2d.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "ifm,o2d"; | ||
17 | compatible = "ifm,o2d"; | ||
18 | |||
19 | memory { | ||
20 | reg = <0x00000000 0x08000000>; // 128MB | ||
21 | }; | ||
22 | |||
23 | localbus { | ||
24 | ranges = <0 0 0xfc000000 0x02000000 | ||
25 | 3 0 0xe3000000 0x00100000>; | ||
26 | |||
27 | flash@0,0 { | ||
28 | compatible = "cfi-flash"; | ||
29 | reg = <0 0 0x02000000>; | ||
30 | bank-width = <2>; | ||
31 | device-width = <2>; | ||
32 | #size-cells = <1>; | ||
33 | #address-cells = <1>; | ||
34 | |||
35 | partition@60000 { | ||
36 | label = "kernel"; | ||
37 | reg = <0x00060000 0x00260000>; | ||
38 | read-only; | ||
39 | }; | ||
40 | /* o2d specific partitions */ | ||
41 | partition@2c0000 { | ||
42 | label = "o2d user defined"; | ||
43 | reg = <0x002c0000 0x01d40000>; | ||
44 | }; | ||
45 | }; | ||
46 | }; | ||
47 | }; | ||
diff --git a/arch/powerpc/boot/dts/o2d.dtsi b/arch/powerpc/boot/dts/o2d.dtsi new file mode 100644 index 000000000000..3444eb8f0ade --- /dev/null +++ b/arch/powerpc/boot/dts/o2d.dtsi | |||
@@ -0,0 +1,139 @@ | |||
1 | /* | ||
2 | * O2D base Device Tree Source | ||
3 | * | ||
4 | * Copyright (C) 2012 DENX Software Engineering | ||
5 | * Anatolij Gustschin <agust@denx.de> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms of the GNU General Public License as published by the | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | */ | ||
12 | |||
13 | /include/ "mpc5200b.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "ifm,o2d"; | ||
17 | compatible = "ifm,o2d"; | ||
18 | |||
19 | memory { | ||
20 | reg = <0x00000000 0x04000000>; // 64MB | ||
21 | }; | ||
22 | |||
23 | soc5200@f0000000 { | ||
24 | |||
25 | gpio_simple: gpio@b00 { | ||
26 | }; | ||
27 | |||
28 | timer@600 { // General Purpose Timer | ||
29 | #gpio-cells = <2>; | ||
30 | gpio-controller; | ||
31 | fsl,has-wdt; | ||
32 | fsl,wdt-on-boot = <0>; | ||
33 | }; | ||
34 | |||
35 | timer@610 { | ||
36 | #gpio-cells = <2>; | ||
37 | gpio-controller; | ||
38 | }; | ||
39 | |||
40 | timer7: timer@670 { | ||
41 | }; | ||
42 | |||
43 | rtc@800 { | ||
44 | status = "disabled"; | ||
45 | }; | ||
46 | |||
47 | psc@2000 { // PSC1 | ||
48 | compatible = "fsl,mpc5200b-psc-spi","fsl,mpc5200-psc-spi"; | ||
49 | #address-cells = <1>; | ||
50 | #size-cells = <0>; | ||
51 | cell-index = <0>; | ||
52 | |||
53 | spidev@0 { | ||
54 | compatible = "spidev"; | ||
55 | spi-max-frequency = <250000>; | ||
56 | reg = <0>; | ||
57 | }; | ||
58 | }; | ||
59 | |||
60 | psc@2200 { // PSC2 | ||
61 | status = "disabled"; | ||
62 | }; | ||
63 | |||
64 | psc@2400 { // PSC3 | ||
65 | status = "disabled"; | ||
66 | }; | ||
67 | |||
68 | psc@2600 { // PSC4 | ||
69 | compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart"; | ||
70 | }; | ||
71 | |||
72 | psc@2800 { // PSC5 | ||
73 | compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart"; | ||
74 | }; | ||
75 | |||
76 | psc@2c00 { // PSC6 | ||
77 | status = "disabled"; | ||
78 | }; | ||
79 | |||
80 | ethernet@3000 { | ||
81 | phy-handle = <&phy0>; | ||
82 | }; | ||
83 | |||
84 | mdio@3000 { | ||
85 | phy0: ethernet-phy@0 { | ||
86 | reg = <0>; | ||
87 | }; | ||
88 | }; | ||
89 | |||
90 | sclpc@3c00 { | ||
91 | compatible = "fsl,mpc5200-lpbfifo"; | ||
92 | reg = <0x3c00 0x60>; | ||
93 | interrupts = <3 23 0>; | ||
94 | }; | ||
95 | }; | ||
96 | |||
97 | localbus { | ||
98 | ranges = <0 0 0xff000000 0x01000000 | ||
99 | 3 0 0xe3000000 0x00100000>; | ||
100 | |||
101 | // flash device at LocalPlus Bus CS0 | ||
102 | flash@0,0 { | ||
103 | compatible = "cfi-flash"; | ||
104 | reg = <0 0 0x01000000>; | ||
105 | bank-width = <1>; | ||
106 | device-width = <2>; | ||
107 | #size-cells = <1>; | ||
108 | #address-cells = <1>; | ||
109 | no-unaligned-direct-access; | ||
110 | |||
111 | /* common layout for all machines */ | ||
112 | partition@0 { | ||
113 | label = "u-boot"; | ||
114 | reg = <0x00000000 0x00040000>; | ||
115 | read-only; | ||
116 | }; | ||
117 | partition@40000 { | ||
118 | label = "env"; | ||
119 | reg = <0x00040000 0x00020000>; | ||
120 | read-only; | ||
121 | }; | ||
122 | }; | ||
123 | |||
124 | csi@3,0 { | ||
125 | compatible = "ifm,o2d-csi"; | ||
126 | reg = <3 0 0x00100000>; | ||
127 | ifm,csi-clk-handle = <&timer7>; | ||
128 | gpios = <&gpio_simple 23 0 /* imag_capture */ | ||
129 | &gpio_simple 26 0 /* imag_reset */ | ||
130 | &gpio_simple 29 0>; /* imag_master_en */ | ||
131 | |||
132 | interrupts = <1 1 2>; /* IRQ1, edge falling */ | ||
133 | |||
134 | ifm,csi-addr-bus-width = <24>; | ||
135 | ifm,csi-data-bus-width = <8>; | ||
136 | ifm,csi-wait-cycles = <0>; | ||
137 | }; | ||
138 | }; | ||
139 | }; | ||
diff --git a/arch/powerpc/boot/dts/o2d300.dts b/arch/powerpc/boot/dts/o2d300.dts new file mode 100644 index 000000000000..29affe0f0da3 --- /dev/null +++ b/arch/powerpc/boot/dts/o2d300.dts | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | * O2D300 Device Tree Source | ||
3 | * | ||
4 | * Copyright (C) 2012 DENX Software Engineering | ||
5 | * Anatolij Gustschin <agust@denx.de> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms of the GNU General Public License as published by the | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | */ | ||
12 | |||
13 | /include/ "o2d.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "ifm,o2d300"; | ||
17 | compatible = "ifm,o2d"; | ||
18 | |||
19 | localbus { | ||
20 | ranges = <0 0 0xfc000000 0x02000000 | ||
21 | 3 0 0xe3000000 0x00100000>; | ||
22 | flash@0,0 { | ||
23 | compatible = "cfi-flash"; | ||
24 | reg = <0 0 0x02000000>; | ||
25 | bank-width = <2>; | ||
26 | device-width = <2>; | ||
27 | #size-cells = <1>; | ||
28 | #address-cells = <1>; | ||
29 | |||
30 | partition@40000 { | ||
31 | label = "env_1"; | ||
32 | reg = <0x00040000 0x00020000>; | ||
33 | read-only; | ||
34 | }; | ||
35 | partition@60000 { | ||
36 | label = "env_2"; | ||
37 | reg = <0x00060000 0x00020000>; | ||
38 | read-only; | ||
39 | }; | ||
40 | partition@80000 { | ||
41 | label = "kernel"; | ||
42 | reg = <0x00080000 0x00260000>; | ||
43 | read-only; | ||
44 | }; | ||
45 | /* o2d300 specific partitions */ | ||
46 | partition@2e0000 { | ||
47 | label = "o2d300 user defined"; | ||
48 | reg = <0x002e0000 0x01d20000>; | ||
49 | }; | ||
50 | }; | ||
51 | }; | ||
52 | }; | ||
diff --git a/arch/powerpc/boot/dts/o2dnt2.dts b/arch/powerpc/boot/dts/o2dnt2.dts new file mode 100644 index 000000000000..a0f5b97a4f06 --- /dev/null +++ b/arch/powerpc/boot/dts/o2dnt2.dts | |||
@@ -0,0 +1,48 @@ | |||
1 | /* | ||
2 | * O2DNT2 Device Tree Source | ||
3 | * | ||
4 | * Copyright (C) 2012 DENX Software Engineering | ||
5 | * Anatolij Gustschin <agust@denx.de> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms of the GNU General Public License as published by the | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | */ | ||
12 | |||
13 | /include/ "o2d.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "ifm,o2dnt2"; | ||
17 | compatible = "ifm,o2d"; | ||
18 | |||
19 | memory { | ||
20 | reg = <0x00000000 0x08000000>; // 128MB | ||
21 | }; | ||
22 | |||
23 | localbus { | ||
24 | ranges = <0 0 0xfc000000 0x02000000 | ||
25 | 3 0 0xe3000000 0x00100000>; | ||
26 | |||
27 | flash@0,0 { | ||
28 | compatible = "cfi-flash"; | ||
29 | reg = <0 0 0x02000000>; | ||
30 | bank-width = <2>; | ||
31 | device-width = <2>; | ||
32 | #size-cells = <1>; | ||
33 | #address-cells = <1>; | ||
34 | |||
35 | partition@60000 { | ||
36 | label = "kernel"; | ||
37 | reg = <0x00060000 0x00260000>; | ||
38 | read-only; | ||
39 | }; | ||
40 | |||
41 | /* o2dnt2 specific partitions */ | ||
42 | partition@2c0000 { | ||
43 | label = "o2dnt2 user defined"; | ||
44 | reg = <0x002c0000 0x01d40000>; | ||
45 | }; | ||
46 | }; | ||
47 | }; | ||
48 | }; | ||
diff --git a/arch/powerpc/boot/dts/o2i.dts b/arch/powerpc/boot/dts/o2i.dts new file mode 100644 index 000000000000..e3cc99d1360b --- /dev/null +++ b/arch/powerpc/boot/dts/o2i.dts | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | * O2I Device Tree Source | ||
3 | * | ||
4 | * Copyright (C) 2012 DENX Software Engineering | ||
5 | * Anatolij Gustschin <agust@denx.de> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms of the GNU General Public License as published by the | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | */ | ||
12 | |||
13 | /include/ "o2d.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "ifm,o2i"; | ||
17 | compatible = "ifm,o2d"; | ||
18 | |||
19 | localbus { | ||
20 | flash@0,0 { | ||
21 | partition@60000 { | ||
22 | label = "kernel"; | ||
23 | reg = <0x00060000 0x00260000>; | ||
24 | read-only; | ||
25 | }; | ||
26 | /* o2i specific partitions */ | ||
27 | partition@2c0000 { | ||
28 | label = "o2i user defined"; | ||
29 | reg = <0x002c0000 0x00d40000>; | ||
30 | }; | ||
31 | }; | ||
32 | }; | ||
33 | }; | ||
diff --git a/arch/powerpc/boot/dts/o2mnt.dts b/arch/powerpc/boot/dts/o2mnt.dts new file mode 100644 index 000000000000..d91859a9e940 --- /dev/null +++ b/arch/powerpc/boot/dts/o2mnt.dts | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | * O2MNT Device Tree Source | ||
3 | * | ||
4 | * Copyright (C) 2012 DENX Software Engineering | ||
5 | * Anatolij Gustschin <agust@denx.de> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms of the GNU General Public License as published by the | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | */ | ||
12 | |||
13 | /include/ "o2d.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "ifm,o2mnt"; | ||
17 | compatible = "ifm,o2d"; | ||
18 | |||
19 | localbus { | ||
20 | flash@0,0 { | ||
21 | partition@60000 { | ||
22 | label = "kernel"; | ||
23 | reg = <0x00060000 0x00260000>; | ||
24 | read-only; | ||
25 | }; | ||
26 | /* add o2mnt specific partitions */ | ||
27 | partition@2c0000 { | ||
28 | label = "o2mnt user defined"; | ||
29 | reg = <0x002c0000 0x00d40000>; | ||
30 | }; | ||
31 | }; | ||
32 | }; | ||
33 | }; | ||
diff --git a/arch/powerpc/boot/dts/o3dnt.dts b/arch/powerpc/boot/dts/o3dnt.dts new file mode 100644 index 000000000000..acce49326491 --- /dev/null +++ b/arch/powerpc/boot/dts/o3dnt.dts | |||
@@ -0,0 +1,48 @@ | |||
1 | /* | ||
2 | * O3DNT Device Tree Source | ||
3 | * | ||
4 | * Copyright (C) 2012 DENX Software Engineering | ||
5 | * Anatolij Gustschin <agust@denx.de> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms of the GNU General Public License as published by the | ||
9 | * Free Software Foundation; either version 2 of the License, or (at your | ||
10 | * option) any later version. | ||
11 | */ | ||
12 | |||
13 | /include/ "o2d.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "ifm,o3dnt"; | ||
17 | compatible = "ifm,o2d"; | ||
18 | |||
19 | memory { | ||
20 | reg = <0x00000000 0x04000000>; // 64MB | ||
21 | }; | ||
22 | |||
23 | localbus { | ||
24 | ranges = <0 0 0xfc000000 0x01000000 | ||
25 | 3 0 0xe3000000 0x00100000>; | ||
26 | |||
27 | flash@0,0 { | ||
28 | compatible = "cfi-flash"; | ||
29 | reg = <0 0 0x01000000>; | ||
30 | bank-width = <2>; | ||
31 | device-width = <2>; | ||
32 | #size-cells = <1>; | ||
33 | #address-cells = <1>; | ||
34 | |||
35 | partition@60000 { | ||
36 | label = "kernel"; | ||
37 | reg = <0x00060000 0x00260000>; | ||
38 | read-only; | ||
39 | }; | ||
40 | |||
41 | /* o3dnt specific partitions */ | ||
42 | partition@2c0000 { | ||
43 | label = "o3dnt user defined"; | ||
44 | reg = <0x002c0000 0x00d40000>; | ||
45 | }; | ||
46 | }; | ||
47 | }; | ||
48 | }; | ||
diff --git a/arch/powerpc/include/asm/mpc52xx.h b/arch/powerpc/include/asm/mpc52xx.h index 1f41382eda38..0acc7c7c28d1 100644 --- a/arch/powerpc/include/asm/mpc52xx.h +++ b/arch/powerpc/include/asm/mpc52xx.h | |||
@@ -307,6 +307,7 @@ struct mpc52xx_lpbfifo_request { | |||
307 | size_t size; | 307 | size_t size; |
308 | size_t pos; /* current position of transfer */ | 308 | size_t pos; /* current position of transfer */ |
309 | int flags; | 309 | int flags; |
310 | int defer_xfer_start; | ||
310 | 311 | ||
311 | /* What to do when finished */ | 312 | /* What to do when finished */ |
312 | void (*callback)(struct mpc52xx_lpbfifo_request *); | 313 | void (*callback)(struct mpc52xx_lpbfifo_request *); |
@@ -323,6 +324,7 @@ struct mpc52xx_lpbfifo_request { | |||
323 | extern int mpc52xx_lpbfifo_submit(struct mpc52xx_lpbfifo_request *req); | 324 | extern int mpc52xx_lpbfifo_submit(struct mpc52xx_lpbfifo_request *req); |
324 | extern void mpc52xx_lpbfifo_abort(struct mpc52xx_lpbfifo_request *req); | 325 | extern void mpc52xx_lpbfifo_abort(struct mpc52xx_lpbfifo_request *req); |
325 | extern void mpc52xx_lpbfifo_poll(void); | 326 | extern void mpc52xx_lpbfifo_poll(void); |
327 | extern int mpc52xx_lpbfifo_start_xfer(struct mpc52xx_lpbfifo_request *req); | ||
326 | 328 | ||
327 | /* mpc52xx_pic.c */ | 329 | /* mpc52xx_pic.c */ |
328 | extern void mpc52xx_init_irq(void); | 330 | extern void mpc52xx_init_irq(void); |
diff --git a/arch/powerpc/platforms/512x/Kconfig b/arch/powerpc/platforms/512x/Kconfig index c16999802ecf..b62508b113db 100644 --- a/arch/powerpc/platforms/512x/Kconfig +++ b/arch/powerpc/platforms/512x/Kconfig | |||
@@ -2,6 +2,7 @@ config PPC_MPC512x | |||
2 | bool "512x-based boards" | 2 | bool "512x-based boards" |
3 | depends on 6xx | 3 | depends on 6xx |
4 | select FSL_SOC | 4 | select FSL_SOC |
5 | select FB_FSL_DIU | ||
5 | select IPIC | 6 | select IPIC |
6 | select PPC_CLOCK | 7 | select PPC_CLOCK |
7 | select PPC_PCI_CHOICE | 8 | select PPC_PCI_CHOICE |
diff --git a/arch/powerpc/platforms/512x/clock.c b/arch/powerpc/platforms/512x/clock.c index 1d8700ff60b0..9f771e05457c 100644 --- a/arch/powerpc/platforms/512x/clock.c +++ b/arch/powerpc/platforms/512x/clock.c | |||
@@ -54,14 +54,16 @@ static DEFINE_MUTEX(clocks_mutex); | |||
54 | static struct clk *mpc5121_clk_get(struct device *dev, const char *id) | 54 | static struct clk *mpc5121_clk_get(struct device *dev, const char *id) |
55 | { | 55 | { |
56 | struct clk *p, *clk = ERR_PTR(-ENOENT); | 56 | struct clk *p, *clk = ERR_PTR(-ENOENT); |
57 | int dev_match = 0; | 57 | int dev_match; |
58 | int id_match = 0; | 58 | int id_match; |
59 | 59 | ||
60 | if (dev == NULL || id == NULL) | 60 | if (dev == NULL || id == NULL) |
61 | return clk; | 61 | return clk; |
62 | 62 | ||
63 | mutex_lock(&clocks_mutex); | 63 | mutex_lock(&clocks_mutex); |
64 | list_for_each_entry(p, &clocks, node) { | 64 | list_for_each_entry(p, &clocks, node) { |
65 | dev_match = id_match = 0; | ||
66 | |||
65 | if (dev == p->dev) | 67 | if (dev == p->dev) |
66 | dev_match++; | 68 | dev_match++; |
67 | if (strcmp(id, p->name) == 0) | 69 | if (strcmp(id, p->name) == 0) |
diff --git a/arch/powerpc/platforms/512x/mpc512x_shared.c b/arch/powerpc/platforms/512x/mpc512x_shared.c index cfe958e94e1e..1650e090ef3a 100644 --- a/arch/powerpc/platforms/512x/mpc512x_shared.c +++ b/arch/powerpc/platforms/512x/mpc512x_shared.c | |||
@@ -191,8 +191,6 @@ mpc512x_valid_monitor_port(enum fsl_diu_monitor_port port) | |||
191 | 191 | ||
192 | static struct fsl_diu_shared_fb __attribute__ ((__aligned__(8))) diu_shared_fb; | 192 | static struct fsl_diu_shared_fb __attribute__ ((__aligned__(8))) diu_shared_fb; |
193 | 193 | ||
194 | #if defined(CONFIG_FB_FSL_DIU) || \ | ||
195 | defined(CONFIG_FB_FSL_DIU_MODULE) | ||
196 | static inline void mpc512x_free_bootmem(struct page *page) | 194 | static inline void mpc512x_free_bootmem(struct page *page) |
197 | { | 195 | { |
198 | __ClearPageReserved(page); | 196 | __ClearPageReserved(page); |
@@ -220,7 +218,6 @@ void mpc512x_release_bootmem(void) | |||
220 | } | 218 | } |
221 | diu_ops.release_bootmem = NULL; | 219 | diu_ops.release_bootmem = NULL; |
222 | } | 220 | } |
223 | #endif | ||
224 | 221 | ||
225 | /* | 222 | /* |
226 | * Check if DIU was pre-initialized. If so, perform steps | 223 | * Check if DIU was pre-initialized. If so, perform steps |
@@ -323,15 +320,12 @@ void __init mpc512x_setup_diu(void) | |||
323 | } | 320 | } |
324 | } | 321 | } |
325 | 322 | ||
326 | #if defined(CONFIG_FB_FSL_DIU) || \ | ||
327 | defined(CONFIG_FB_FSL_DIU_MODULE) | ||
328 | diu_ops.get_pixel_format = mpc512x_get_pixel_format; | 323 | diu_ops.get_pixel_format = mpc512x_get_pixel_format; |
329 | diu_ops.set_gamma_table = mpc512x_set_gamma_table; | 324 | diu_ops.set_gamma_table = mpc512x_set_gamma_table; |
330 | diu_ops.set_monitor_port = mpc512x_set_monitor_port; | 325 | diu_ops.set_monitor_port = mpc512x_set_monitor_port; |
331 | diu_ops.set_pixel_clock = mpc512x_set_pixel_clock; | 326 | diu_ops.set_pixel_clock = mpc512x_set_pixel_clock; |
332 | diu_ops.valid_monitor_port = mpc512x_valid_monitor_port; | 327 | diu_ops.valid_monitor_port = mpc512x_valid_monitor_port; |
333 | diu_ops.release_bootmem = mpc512x_release_bootmem; | 328 | diu_ops.release_bootmem = mpc512x_release_bootmem; |
334 | #endif | ||
335 | } | 329 | } |
336 | 330 | ||
337 | void __init mpc512x_init_IRQ(void) | 331 | void __init mpc512x_init_IRQ(void) |
diff --git a/arch/powerpc/platforms/52xx/mpc5200_simple.c b/arch/powerpc/platforms/52xx/mpc5200_simple.c index c0aa04068d69..9cf36020cf0d 100644 --- a/arch/powerpc/platforms/52xx/mpc5200_simple.c +++ b/arch/powerpc/platforms/52xx/mpc5200_simple.c | |||
@@ -52,6 +52,7 @@ static void __init mpc5200_simple_setup_arch(void) | |||
52 | static const char *board[] __initdata = { | 52 | static const char *board[] __initdata = { |
53 | "anonymous,a4m072", | 53 | "anonymous,a4m072", |
54 | "anon,charon", | 54 | "anon,charon", |
55 | "ifm,o2d", | ||
55 | "intercontrol,digsy-mtc", | 56 | "intercontrol,digsy-mtc", |
56 | "manroland,mucmc52", | 57 | "manroland,mucmc52", |
57 | "manroland,uc101", | 58 | "manroland,uc101", |
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c b/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c index d61fb1c0c1a0..2351f9e0fb6f 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_lpbfifo.c | |||
@@ -170,7 +170,8 @@ static void mpc52xx_lpbfifo_kick(struct mpc52xx_lpbfifo_request *req) | |||
170 | out_be32(lpbfifo.regs + LPBFIFO_REG_CONTROL, bit_fields); | 170 | out_be32(lpbfifo.regs + LPBFIFO_REG_CONTROL, bit_fields); |
171 | 171 | ||
172 | /* Kick it off */ | 172 | /* Kick it off */ |
173 | out_8(lpbfifo.regs + LPBFIFO_REG_PACKET_SIZE, 0x01); | 173 | if (!lpbfifo.req->defer_xfer_start) |
174 | out_8(lpbfifo.regs + LPBFIFO_REG_PACKET_SIZE, 0x01); | ||
174 | if (dma) | 175 | if (dma) |
175 | bcom_enable(lpbfifo.bcom_cur_task); | 176 | bcom_enable(lpbfifo.bcom_cur_task); |
176 | } | 177 | } |
@@ -421,6 +422,38 @@ int mpc52xx_lpbfifo_submit(struct mpc52xx_lpbfifo_request *req) | |||
421 | } | 422 | } |
422 | EXPORT_SYMBOL(mpc52xx_lpbfifo_submit); | 423 | EXPORT_SYMBOL(mpc52xx_lpbfifo_submit); |
423 | 424 | ||
425 | int mpc52xx_lpbfifo_start_xfer(struct mpc52xx_lpbfifo_request *req) | ||
426 | { | ||
427 | unsigned long flags; | ||
428 | |||
429 | if (!lpbfifo.regs) | ||
430 | return -ENODEV; | ||
431 | |||
432 | spin_lock_irqsave(&lpbfifo.lock, flags); | ||
433 | |||
434 | /* | ||
435 | * If the req pointer is already set and a transfer was | ||
436 | * started on submit, then this transfer is in progress | ||
437 | */ | ||
438 | if (lpbfifo.req && !lpbfifo.req->defer_xfer_start) { | ||
439 | spin_unlock_irqrestore(&lpbfifo.lock, flags); | ||
440 | return -EBUSY; | ||
441 | } | ||
442 | |||
443 | /* | ||
444 | * If the req was previously submitted but not | ||
445 | * started, start it now | ||
446 | */ | ||
447 | if (lpbfifo.req && lpbfifo.req == req && | ||
448 | lpbfifo.req->defer_xfer_start) { | ||
449 | out_8(lpbfifo.regs + LPBFIFO_REG_PACKET_SIZE, 0x01); | ||
450 | } | ||
451 | |||
452 | spin_unlock_irqrestore(&lpbfifo.lock, flags); | ||
453 | return 0; | ||
454 | } | ||
455 | EXPORT_SYMBOL(mpc52xx_lpbfifo_start_xfer); | ||
456 | |||
424 | void mpc52xx_lpbfifo_abort(struct mpc52xx_lpbfifo_request *req) | 457 | void mpc52xx_lpbfifo_abort(struct mpc52xx_lpbfifo_request *req) |
425 | { | 458 | { |
426 | unsigned long flags; | 459 | unsigned long flags; |