diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-09-06 15:37:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-09-06 15:37:43 -0400 |
commit | 56c228546ed866d46cf957674f7ecb39eb2b2b56 (patch) | |
tree | 0874cb8d3bab621fc700b16899025fd67bfcf202 | |
parent | 11e9739813a753748dd54c905e779dc277efc495 (diff) | |
parent | 389710837f684b397ecea7e66a3a87f16e1542de (diff) |
Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC fixes from Kevin Hilman:
"Another round of fixes from arm-soc land, which are mostly DT fixes
for:
- OMAP: handful of DT fixes devices on newly supported hardware
- davinci: fix 2nd EDMA channel
- ux500: extend previous pinctrl fix to another board
- at91: clock registration fixes, compatibility string precision
And one more fix for event cleanup in drivers/bus/arm-ccn"
* tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
bus: arm-ccn: Move event cleanup routine
ARM: at91/dt: rm9200: fix usb clock definition
ARM: at91: rm9200: fix clock registration
ARM: at91/dt: sam9g20: set at91sam9g20 pllb driver
ARM: dts: dra7-evm: Add vtt regulator support
ARM: dts: dra7-evm: Fix spi1 mux documentation
ARM: dts: am43x-epos-evm: Disable QSPI to prevent conflict with GPMC-NAND
ARM: OMAP2+: gpmc: Don't complain if wait pin is used without r/w monitoring
ARM: dts: am43xx-epos-evm: Don't use read/write wait monitoring
ARM: dts: am437x-gp-evm: Don't use read/write wait monitoring
ARM: dts: am437x-gp-evm: Use BCH16 ECC scheme instead of BCH8
ARM: dts: am43x-epos-evm: Use BCH16 ECC scheme instead of BCH8
ARM: dts: am4372: fix USB regs size
ARM: dts: am437x-gp: switch i2c0 to 100KHz
ARM: dts: dra7-evm: Fix 8th NAND partition's name
ARM: dts: dra7-evm: Fix i2c3 pinmux and frequency
ARM: ux500: disable msp2 node on Snowball
ARM: edma: Fix configuration parsing for SoCs with multiple eDMA3 CC
ARM: dts: set 'ti,set-rate-parent' for dpll4_m5x2 clock
-rw-r--r-- | arch/arm/boot/dts/am4372.dtsi | 4 | ||||
-rw-r--r-- | arch/arm/boot/dts/am437x-gp-evm.dts | 6 | ||||
-rw-r--r-- | arch/arm/boot/dts/am43x-epos-evm.dts | 9 | ||||
-rw-r--r-- | arch/arm/boot/dts/at91rm9200.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/at91sam9g20.dtsi | 1 | ||||
-rw-r--r-- | arch/arm/boot/dts/dra7-evm.dts | 47 | ||||
-rw-r--r-- | arch/arm/boot/dts/omap3xxx-clocks.dtsi | 1 | ||||
-rw-r--r-- | arch/arm/boot/dts/ste-snowball.dts | 1 | ||||
-rw-r--r-- | arch/arm/common/edma.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-at91/board-dt-rm9200.c | 11 | ||||
-rw-r--r-- | arch/arm/mach-omap2/gpmc.c | 7 | ||||
-rw-r--r-- | drivers/bus/arm-ccn.c | 51 |
12 files changed, 90 insertions, 59 deletions
diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi index 9b3d2ba82f13..8689949bdba3 100644 --- a/arch/arm/boot/dts/am4372.dtsi +++ b/arch/arm/boot/dts/am4372.dtsi | |||
@@ -804,7 +804,7 @@ | |||
804 | 804 | ||
805 | usb1: usb@48390000 { | 805 | usb1: usb@48390000 { |
806 | compatible = "synopsys,dwc3"; | 806 | compatible = "synopsys,dwc3"; |
807 | reg = <0x48390000 0x17000>; | 807 | reg = <0x48390000 0x10000>; |
808 | interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>; | 808 | interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>; |
809 | phys = <&usb2_phy1>; | 809 | phys = <&usb2_phy1>; |
810 | phy-names = "usb2-phy"; | 810 | phy-names = "usb2-phy"; |
@@ -826,7 +826,7 @@ | |||
826 | 826 | ||
827 | usb2: usb@483d0000 { | 827 | usb2: usb@483d0000 { |
828 | compatible = "synopsys,dwc3"; | 828 | compatible = "synopsys,dwc3"; |
829 | reg = <0x483d0000 0x17000>; | 829 | reg = <0x483d0000 0x10000>; |
830 | interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>; | 830 | interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>; |
831 | phys = <&usb2_phy2>; | 831 | phys = <&usb2_phy2>; |
832 | phy-names = "usb2-phy"; | 832 | phy-names = "usb2-phy"; |
diff --git a/arch/arm/boot/dts/am437x-gp-evm.dts b/arch/arm/boot/dts/am437x-gp-evm.dts index 646a6eade788..e7ac47fa6615 100644 --- a/arch/arm/boot/dts/am437x-gp-evm.dts +++ b/arch/arm/boot/dts/am437x-gp-evm.dts | |||
@@ -260,7 +260,7 @@ | |||
260 | status = "okay"; | 260 | status = "okay"; |
261 | pinctrl-names = "default"; | 261 | pinctrl-names = "default"; |
262 | pinctrl-0 = <&i2c0_pins>; | 262 | pinctrl-0 = <&i2c0_pins>; |
263 | clock-frequency = <400000>; | 263 | clock-frequency = <100000>; |
264 | 264 | ||
265 | tps65218: tps65218@24 { | 265 | tps65218: tps65218@24 { |
266 | reg = <0x24>; | 266 | reg = <0x24>; |
@@ -424,7 +424,7 @@ | |||
424 | ranges = <0 0 0 0x01000000>; /* minimum GPMC partition = 16MB */ | 424 | ranges = <0 0 0 0x01000000>; /* minimum GPMC partition = 16MB */ |
425 | nand@0,0 { | 425 | nand@0,0 { |
426 | reg = <0 0 4>; /* device IO registers */ | 426 | reg = <0 0 4>; /* device IO registers */ |
427 | ti,nand-ecc-opt = "bch8"; | 427 | ti,nand-ecc-opt = "bch16"; |
428 | ti,elm-id = <&elm>; | 428 | ti,elm-id = <&elm>; |
429 | nand-bus-width = <8>; | 429 | nand-bus-width = <8>; |
430 | gpmc,device-width = <1>; | 430 | gpmc,device-width = <1>; |
@@ -443,8 +443,6 @@ | |||
443 | gpmc,rd-cycle-ns = <40>; | 443 | gpmc,rd-cycle-ns = <40>; |
444 | gpmc,wr-cycle-ns = <40>; | 444 | gpmc,wr-cycle-ns = <40>; |
445 | gpmc,wait-pin = <0>; | 445 | gpmc,wait-pin = <0>; |
446 | gpmc,wait-on-read; | ||
447 | gpmc,wait-on-write; | ||
448 | gpmc,bus-turnaround-ns = <0>; | 446 | gpmc,bus-turnaround-ns = <0>; |
449 | gpmc,cycle2cycle-delay-ns = <0>; | 447 | gpmc,cycle2cycle-delay-ns = <0>; |
450 | gpmc,clk-activation-ns = <0>; | 448 | gpmc,clk-activation-ns = <0>; |
diff --git a/arch/arm/boot/dts/am43x-epos-evm.dts b/arch/arm/boot/dts/am43x-epos-evm.dts index ed7dd2395915..ac3e4859935f 100644 --- a/arch/arm/boot/dts/am43x-epos-evm.dts +++ b/arch/arm/boot/dts/am43x-epos-evm.dts | |||
@@ -435,13 +435,13 @@ | |||
435 | }; | 435 | }; |
436 | 436 | ||
437 | &gpmc { | 437 | &gpmc { |
438 | status = "okay"; | 438 | status = "okay"; /* Disable QSPI when enabling GPMC (NAND) */ |
439 | pinctrl-names = "default"; | 439 | pinctrl-names = "default"; |
440 | pinctrl-0 = <&nand_flash_x8>; | 440 | pinctrl-0 = <&nand_flash_x8>; |
441 | ranges = <0 0 0x08000000 0x10000000>; /* CS0: NAND */ | 441 | ranges = <0 0 0x08000000 0x10000000>; /* CS0: NAND */ |
442 | nand@0,0 { | 442 | nand@0,0 { |
443 | reg = <0 0 0>; /* CS0, offset 0 */ | 443 | reg = <0 0 0>; /* CS0, offset 0 */ |
444 | ti,nand-ecc-opt = "bch8"; | 444 | ti,nand-ecc-opt = "bch16"; |
445 | ti,elm-id = <&elm>; | 445 | ti,elm-id = <&elm>; |
446 | nand-bus-width = <8>; | 446 | nand-bus-width = <8>; |
447 | gpmc,device-width = <1>; | 447 | gpmc,device-width = <1>; |
@@ -459,8 +459,7 @@ | |||
459 | gpmc,access-ns = <30>; /* tCEA + 4*/ | 459 | gpmc,access-ns = <30>; /* tCEA + 4*/ |
460 | gpmc,rd-cycle-ns = <40>; | 460 | gpmc,rd-cycle-ns = <40>; |
461 | gpmc,wr-cycle-ns = <40>; | 461 | gpmc,wr-cycle-ns = <40>; |
462 | gpmc,wait-on-read = "true"; | 462 | gpmc,wait-pin = <0>; |
463 | gpmc,wait-on-write = "true"; | ||
464 | gpmc,bus-turnaround-ns = <0>; | 463 | gpmc,bus-turnaround-ns = <0>; |
465 | gpmc,cycle2cycle-delay-ns = <0>; | 464 | gpmc,cycle2cycle-delay-ns = <0>; |
466 | gpmc,clk-activation-ns = <0>; | 465 | gpmc,clk-activation-ns = <0>; |
@@ -557,7 +556,7 @@ | |||
557 | }; | 556 | }; |
558 | 557 | ||
559 | &qspi { | 558 | &qspi { |
560 | status = "okay"; | 559 | status = "disabled"; /* Disable GPMC (NAND) when enabling QSPI */ |
561 | pinctrl-names = "default"; | 560 | pinctrl-names = "default"; |
562 | pinctrl-0 = <&qspi1_default>; | 561 | pinctrl-0 = <&qspi1_default>; |
563 | 562 | ||
diff --git a/arch/arm/boot/dts/at91rm9200.dtsi b/arch/arm/boot/dts/at91rm9200.dtsi index 65ccf564b9a5..6c97d4af61ee 100644 --- a/arch/arm/boot/dts/at91rm9200.dtsi +++ b/arch/arm/boot/dts/at91rm9200.dtsi | |||
@@ -149,7 +149,7 @@ | |||
149 | usb: usbck { | 149 | usb: usbck { |
150 | compatible = "atmel,at91rm9200-clk-usb"; | 150 | compatible = "atmel,at91rm9200-clk-usb"; |
151 | #clock-cells = <0>; | 151 | #clock-cells = <0>; |
152 | atmel,clk-divisors = <1 2>; | 152 | atmel,clk-divisors = <1 2 0 0>; |
153 | clocks = <&pllb>; | 153 | clocks = <&pllb>; |
154 | }; | 154 | }; |
155 | 155 | ||
diff --git a/arch/arm/boot/dts/at91sam9g20.dtsi b/arch/arm/boot/dts/at91sam9g20.dtsi index 31f7652612fc..4e0abbd9d655 100644 --- a/arch/arm/boot/dts/at91sam9g20.dtsi +++ b/arch/arm/boot/dts/at91sam9g20.dtsi | |||
@@ -40,6 +40,7 @@ | |||
40 | }; | 40 | }; |
41 | 41 | ||
42 | pllb: pllbck { | 42 | pllb: pllbck { |
43 | compatible = "atmel,at91sam9g20-clk-pllb"; | ||
43 | atmel,clk-input-range = <2000000 32000000>; | 44 | atmel,clk-input-range = <2000000 32000000>; |
44 | atmel,pll-clk-output-ranges = <30000000 100000000 0 0>; | 45 | atmel,pll-clk-output-ranges = <30000000 100000000 0 0>; |
45 | }; | 46 | }; |
diff --git a/arch/arm/boot/dts/dra7-evm.dts b/arch/arm/boot/dts/dra7-evm.dts index 50f8022905a1..e03fbf3c6889 100644 --- a/arch/arm/boot/dts/dra7-evm.dts +++ b/arch/arm/boot/dts/dra7-evm.dts | |||
@@ -8,6 +8,7 @@ | |||
8 | /dts-v1/; | 8 | /dts-v1/; |
9 | 9 | ||
10 | #include "dra74x.dtsi" | 10 | #include "dra74x.dtsi" |
11 | #include <dt-bindings/gpio/gpio.h> | ||
11 | 12 | ||
12 | / { | 13 | / { |
13 | model = "TI DRA742"; | 14 | model = "TI DRA742"; |
@@ -24,9 +25,29 @@ | |||
24 | regulator-min-microvolt = <3300000>; | 25 | regulator-min-microvolt = <3300000>; |
25 | regulator-max-microvolt = <3300000>; | 26 | regulator-max-microvolt = <3300000>; |
26 | }; | 27 | }; |
28 | |||
29 | vtt_fixed: fixedregulator-vtt { | ||
30 | compatible = "regulator-fixed"; | ||
31 | regulator-name = "vtt_fixed"; | ||
32 | regulator-min-microvolt = <1350000>; | ||
33 | regulator-max-microvolt = <1350000>; | ||
34 | regulator-always-on; | ||
35 | regulator-boot-on; | ||
36 | enable-active-high; | ||
37 | gpio = <&gpio7 11 GPIO_ACTIVE_HIGH>; | ||
38 | }; | ||
27 | }; | 39 | }; |
28 | 40 | ||
29 | &dra7_pmx_core { | 41 | &dra7_pmx_core { |
42 | pinctrl-names = "default"; | ||
43 | pinctrl-0 = <&vtt_pin>; | ||
44 | |||
45 | vtt_pin: pinmux_vtt_pin { | ||
46 | pinctrl-single,pins = < | ||
47 | 0x3b4 (PIN_OUTPUT | MUX_MODE14) /* spi1_cs1.gpio7_11 */ | ||
48 | >; | ||
49 | }; | ||
50 | |||
30 | i2c1_pins: pinmux_i2c1_pins { | 51 | i2c1_pins: pinmux_i2c1_pins { |
31 | pinctrl-single,pins = < | 52 | pinctrl-single,pins = < |
32 | 0x400 (PIN_INPUT | MUX_MODE0) /* i2c1_sda */ | 53 | 0x400 (PIN_INPUT | MUX_MODE0) /* i2c1_sda */ |
@@ -43,20 +64,19 @@ | |||
43 | 64 | ||
44 | i2c3_pins: pinmux_i2c3_pins { | 65 | i2c3_pins: pinmux_i2c3_pins { |
45 | pinctrl-single,pins = < | 66 | pinctrl-single,pins = < |
46 | 0x410 (PIN_INPUT | MUX_MODE0) /* i2c3_sda */ | 67 | 0x288 (PIN_INPUT | MUX_MODE9) /* gpio6_14.i2c3_sda */ |
47 | 0x414 (PIN_INPUT | MUX_MODE0) /* i2c3_scl */ | 68 | 0x28c (PIN_INPUT | MUX_MODE9) /* gpio6_15.i2c3_scl */ |
48 | >; | 69 | >; |
49 | }; | 70 | }; |
50 | 71 | ||
51 | mcspi1_pins: pinmux_mcspi1_pins { | 72 | mcspi1_pins: pinmux_mcspi1_pins { |
52 | pinctrl-single,pins = < | 73 | pinctrl-single,pins = < |
53 | 0x3a4 (PIN_INPUT | MUX_MODE0) /* spi2_clk */ | 74 | 0x3a4 (PIN_INPUT | MUX_MODE0) /* spi1_sclk */ |
54 | 0x3a8 (PIN_INPUT | MUX_MODE0) /* spi2_d1 */ | 75 | 0x3a8 (PIN_INPUT | MUX_MODE0) /* spi1_d1 */ |
55 | 0x3ac (PIN_INPUT | MUX_MODE0) /* spi2_d0 */ | 76 | 0x3ac (PIN_INPUT | MUX_MODE0) /* spi1_d0 */ |
56 | 0x3b0 (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_cs0 */ | 77 | 0x3b0 (PIN_INPUT_SLEW | MUX_MODE0) /* spi1_cs0 */ |
57 | 0x3b4 (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_cs1 */ | 78 | 0x3b8 (PIN_INPUT_SLEW | MUX_MODE6) /* spi1_cs2.hdmi1_hpd */ |
58 | 0x3b8 (PIN_INPUT_SLEW | MUX_MODE6) /* spi2_cs2 */ | 79 | 0x3bc (PIN_INPUT_SLEW | MUX_MODE6) /* spi1_cs3.hdmi1_cec */ |
59 | 0x3bc (PIN_INPUT_SLEW | MUX_MODE6) /* spi2_cs3 */ | ||
60 | >; | 80 | >; |
61 | }; | 81 | }; |
62 | 82 | ||
@@ -284,7 +304,7 @@ | |||
284 | status = "okay"; | 304 | status = "okay"; |
285 | pinctrl-names = "default"; | 305 | pinctrl-names = "default"; |
286 | pinctrl-0 = <&i2c3_pins>; | 306 | pinctrl-0 = <&i2c3_pins>; |
287 | clock-frequency = <3400000>; | 307 | clock-frequency = <400000>; |
288 | }; | 308 | }; |
289 | 309 | ||
290 | &mcspi1 { | 310 | &mcspi1 { |
@@ -483,7 +503,7 @@ | |||
483 | reg = <0x001c0000 0x00020000>; | 503 | reg = <0x001c0000 0x00020000>; |
484 | }; | 504 | }; |
485 | partition@7 { | 505 | partition@7 { |
486 | label = "NAND.u-boot-env"; | 506 | label = "NAND.u-boot-env.backup1"; |
487 | reg = <0x001e0000 0x00020000>; | 507 | reg = <0x001e0000 0x00020000>; |
488 | }; | 508 | }; |
489 | partition@8 { | 509 | partition@8 { |
@@ -504,3 +524,8 @@ | |||
504 | &usb2_phy2 { | 524 | &usb2_phy2 { |
505 | phy-supply = <&ldousb_reg>; | 525 | phy-supply = <&ldousb_reg>; |
506 | }; | 526 | }; |
527 | |||
528 | &gpio7 { | ||
529 | ti,no-reset-on-init; | ||
530 | ti,no-idle-on-init; | ||
531 | }; | ||
diff --git a/arch/arm/boot/dts/omap3xxx-clocks.dtsi b/arch/arm/boot/dts/omap3xxx-clocks.dtsi index e47ff69dcf70..5c375003bad1 100644 --- a/arch/arm/boot/dts/omap3xxx-clocks.dtsi +++ b/arch/arm/boot/dts/omap3xxx-clocks.dtsi | |||
@@ -467,6 +467,7 @@ | |||
467 | ti,bit-shift = <0x1e>; | 467 | ti,bit-shift = <0x1e>; |
468 | reg = <0x0d00>; | 468 | reg = <0x0d00>; |
469 | ti,set-bit-to-disable; | 469 | ti,set-bit-to-disable; |
470 | ti,set-rate-parent; | ||
470 | }; | 471 | }; |
471 | 472 | ||
472 | dpll4_m6_ck: dpll4_m6_ck { | 473 | dpll4_m6_ck: dpll4_m6_ck { |
diff --git a/arch/arm/boot/dts/ste-snowball.dts b/arch/arm/boot/dts/ste-snowball.dts index 4a2000c620ad..3e97a669f15e 100644 --- a/arch/arm/boot/dts/ste-snowball.dts +++ b/arch/arm/boot/dts/ste-snowball.dts | |||
@@ -116,7 +116,6 @@ | |||
116 | msp2: msp@80117000 { | 116 | msp2: msp@80117000 { |
117 | pinctrl-names = "default"; | 117 | pinctrl-names = "default"; |
118 | pinctrl-0 = <&msp2_default_mode>; | 118 | pinctrl-0 = <&msp2_default_mode>; |
119 | status = "okay"; | ||
120 | }; | 119 | }; |
121 | 120 | ||
122 | msp3: msp@80125000 { | 121 | msp3: msp@80125000 { |
diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c index 88099175fc56..d86771abbf57 100644 --- a/arch/arm/common/edma.c +++ b/arch/arm/common/edma.c | |||
@@ -1443,14 +1443,14 @@ void edma_assign_channel_eventq(unsigned channel, enum dma_event_q eventq_no) | |||
1443 | EXPORT_SYMBOL(edma_assign_channel_eventq); | 1443 | EXPORT_SYMBOL(edma_assign_channel_eventq); |
1444 | 1444 | ||
1445 | static int edma_setup_from_hw(struct device *dev, struct edma_soc_info *pdata, | 1445 | static int edma_setup_from_hw(struct device *dev, struct edma_soc_info *pdata, |
1446 | struct edma *edma_cc) | 1446 | struct edma *edma_cc, int cc_id) |
1447 | { | 1447 | { |
1448 | int i; | 1448 | int i; |
1449 | u32 value, cccfg; | 1449 | u32 value, cccfg; |
1450 | s8 (*queue_priority_map)[2]; | 1450 | s8 (*queue_priority_map)[2]; |
1451 | 1451 | ||
1452 | /* Decode the eDMA3 configuration from CCCFG register */ | 1452 | /* Decode the eDMA3 configuration from CCCFG register */ |
1453 | cccfg = edma_read(0, EDMA_CCCFG); | 1453 | cccfg = edma_read(cc_id, EDMA_CCCFG); |
1454 | 1454 | ||
1455 | value = GET_NUM_REGN(cccfg); | 1455 | value = GET_NUM_REGN(cccfg); |
1456 | edma_cc->num_region = BIT(value); | 1456 | edma_cc->num_region = BIT(value); |
@@ -1464,7 +1464,8 @@ static int edma_setup_from_hw(struct device *dev, struct edma_soc_info *pdata, | |||
1464 | value = GET_NUM_EVQUE(cccfg); | 1464 | value = GET_NUM_EVQUE(cccfg); |
1465 | edma_cc->num_tc = value + 1; | 1465 | edma_cc->num_tc = value + 1; |
1466 | 1466 | ||
1467 | dev_dbg(dev, "eDMA3 HW configuration (cccfg: 0x%08x):\n", cccfg); | 1467 | dev_dbg(dev, "eDMA3 CC%d HW configuration (cccfg: 0x%08x):\n", cc_id, |
1468 | cccfg); | ||
1468 | dev_dbg(dev, "num_region: %u\n", edma_cc->num_region); | 1469 | dev_dbg(dev, "num_region: %u\n", edma_cc->num_region); |
1469 | dev_dbg(dev, "num_channel: %u\n", edma_cc->num_channels); | 1470 | dev_dbg(dev, "num_channel: %u\n", edma_cc->num_channels); |
1470 | dev_dbg(dev, "num_slot: %u\n", edma_cc->num_slots); | 1471 | dev_dbg(dev, "num_slot: %u\n", edma_cc->num_slots); |
@@ -1684,7 +1685,7 @@ static int edma_probe(struct platform_device *pdev) | |||
1684 | return -ENOMEM; | 1685 | return -ENOMEM; |
1685 | 1686 | ||
1686 | /* Get eDMA3 configuration from IP */ | 1687 | /* Get eDMA3 configuration from IP */ |
1687 | ret = edma_setup_from_hw(dev, info[j], edma_cc[j]); | 1688 | ret = edma_setup_from_hw(dev, info[j], edma_cc[j], j); |
1688 | if (ret) | 1689 | if (ret) |
1689 | return ret; | 1690 | return ret; |
1690 | 1691 | ||
diff --git a/arch/arm/mach-at91/board-dt-rm9200.c b/arch/arm/mach-at91/board-dt-rm9200.c index 3a185faee795..f4b6e91843e4 100644 --- a/arch/arm/mach-at91/board-dt-rm9200.c +++ b/arch/arm/mach-at91/board-dt-rm9200.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/gpio.h> | 14 | #include <linux/gpio.h> |
15 | #include <linux/of.h> | 15 | #include <linux/of.h> |
16 | #include <linux/of_irq.h> | 16 | #include <linux/of_irq.h> |
17 | #include <linux/clk-provider.h> | ||
17 | 18 | ||
18 | #include <asm/setup.h> | 19 | #include <asm/setup.h> |
19 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
@@ -35,13 +36,21 @@ static void __init at91rm9200_dt_init_irq(void) | |||
35 | of_irq_init(irq_of_match); | 36 | of_irq_init(irq_of_match); |
36 | } | 37 | } |
37 | 38 | ||
39 | static void __init at91rm9200_dt_timer_init(void) | ||
40 | { | ||
41 | #if defined(CONFIG_COMMON_CLK) | ||
42 | of_clk_init(NULL); | ||
43 | #endif | ||
44 | at91rm9200_timer_init(); | ||
45 | } | ||
46 | |||
38 | static const char *at91rm9200_dt_board_compat[] __initdata = { | 47 | static const char *at91rm9200_dt_board_compat[] __initdata = { |
39 | "atmel,at91rm9200", | 48 | "atmel,at91rm9200", |
40 | NULL | 49 | NULL |
41 | }; | 50 | }; |
42 | 51 | ||
43 | DT_MACHINE_START(at91rm9200_dt, "Atmel AT91RM9200 (Device Tree)") | 52 | DT_MACHINE_START(at91rm9200_dt, "Atmel AT91RM9200 (Device Tree)") |
44 | .init_time = at91rm9200_timer_init, | 53 | .init_time = at91rm9200_dt_timer_init, |
45 | .map_io = at91_map_io, | 54 | .map_io = at91_map_io, |
46 | .handle_irq = at91_aic_handle_irq, | 55 | .handle_irq = at91_aic_handle_irq, |
47 | .init_early = at91rm9200_dt_initialize, | 56 | .init_early = at91rm9200_dt_initialize, |
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index 9f42d5437fcc..2f97228f188a 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c | |||
@@ -1207,8 +1207,7 @@ int gpmc_cs_program_settings(int cs, struct gpmc_settings *p) | |||
1207 | } | 1207 | } |
1208 | } | 1208 | } |
1209 | 1209 | ||
1210 | if ((p->wait_on_read || p->wait_on_write) && | 1210 | if (p->wait_pin > gpmc_nr_waitpins) { |
1211 | (p->wait_pin > gpmc_nr_waitpins)) { | ||
1212 | pr_err("%s: invalid wait-pin (%d)\n", __func__, p->wait_pin); | 1211 | pr_err("%s: invalid wait-pin (%d)\n", __func__, p->wait_pin); |
1213 | return -EINVAL; | 1212 | return -EINVAL; |
1214 | } | 1213 | } |
@@ -1288,8 +1287,8 @@ void gpmc_read_settings_dt(struct device_node *np, struct gpmc_settings *p) | |||
1288 | p->wait_on_write = of_property_read_bool(np, | 1287 | p->wait_on_write = of_property_read_bool(np, |
1289 | "gpmc,wait-on-write"); | 1288 | "gpmc,wait-on-write"); |
1290 | if (!p->wait_on_read && !p->wait_on_write) | 1289 | if (!p->wait_on_read && !p->wait_on_write) |
1291 | pr_warn("%s: read/write wait monitoring not enabled!\n", | 1290 | pr_debug("%s: rd/wr wait monitoring not enabled!\n", |
1292 | __func__); | 1291 | __func__); |
1293 | } | 1292 | } |
1294 | } | 1293 | } |
1295 | 1294 | ||
diff --git a/drivers/bus/arm-ccn.c b/drivers/bus/arm-ccn.c index 6f550d9e7a2d..a60f26400705 100644 --- a/drivers/bus/arm-ccn.c +++ b/drivers/bus/arm-ccn.c | |||
@@ -586,6 +586,30 @@ static int arm_ccn_pmu_type_eq(u32 a, u32 b) | |||
586 | return 0; | 586 | return 0; |
587 | } | 587 | } |
588 | 588 | ||
589 | static void arm_ccn_pmu_event_destroy(struct perf_event *event) | ||
590 | { | ||
591 | struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); | ||
592 | struct hw_perf_event *hw = &event->hw; | ||
593 | |||
594 | if (hw->idx == CCN_IDX_PMU_CYCLE_COUNTER) { | ||
595 | clear_bit(CCN_IDX_PMU_CYCLE_COUNTER, ccn->dt.pmu_counters_mask); | ||
596 | } else { | ||
597 | struct arm_ccn_component *source = | ||
598 | ccn->dt.pmu_counters[hw->idx].source; | ||
599 | |||
600 | if (CCN_CONFIG_TYPE(event->attr.config) == CCN_TYPE_XP && | ||
601 | CCN_CONFIG_EVENT(event->attr.config) == | ||
602 | CCN_EVENT_WATCHPOINT) | ||
603 | clear_bit(hw->config_base, source->xp.dt_cmp_mask); | ||
604 | else | ||
605 | clear_bit(hw->config_base, source->pmu_events_mask); | ||
606 | clear_bit(hw->idx, ccn->dt.pmu_counters_mask); | ||
607 | } | ||
608 | |||
609 | ccn->dt.pmu_counters[hw->idx].source = NULL; | ||
610 | ccn->dt.pmu_counters[hw->idx].event = NULL; | ||
611 | } | ||
612 | |||
589 | static int arm_ccn_pmu_event_init(struct perf_event *event) | 613 | static int arm_ccn_pmu_event_init(struct perf_event *event) |
590 | { | 614 | { |
591 | struct arm_ccn *ccn; | 615 | struct arm_ccn *ccn; |
@@ -599,6 +623,7 @@ static int arm_ccn_pmu_event_init(struct perf_event *event) | |||
599 | return -ENOENT; | 623 | return -ENOENT; |
600 | 624 | ||
601 | ccn = pmu_to_arm_ccn(event->pmu); | 625 | ccn = pmu_to_arm_ccn(event->pmu); |
626 | event->destroy = arm_ccn_pmu_event_destroy; | ||
602 | 627 | ||
603 | if (hw->sample_period) { | 628 | if (hw->sample_period) { |
604 | dev_warn(ccn->dev, "Sampling not supported!\n"); | 629 | dev_warn(ccn->dev, "Sampling not supported!\n"); |
@@ -731,30 +756,6 @@ static int arm_ccn_pmu_event_init(struct perf_event *event) | |||
731 | return 0; | 756 | return 0; |
732 | } | 757 | } |
733 | 758 | ||
734 | static void arm_ccn_pmu_event_free(struct perf_event *event) | ||
735 | { | ||
736 | struct arm_ccn *ccn = pmu_to_arm_ccn(event->pmu); | ||
737 | struct hw_perf_event *hw = &event->hw; | ||
738 | |||
739 | if (hw->idx == CCN_IDX_PMU_CYCLE_COUNTER) { | ||
740 | clear_bit(CCN_IDX_PMU_CYCLE_COUNTER, ccn->dt.pmu_counters_mask); | ||
741 | } else { | ||
742 | struct arm_ccn_component *source = | ||
743 | ccn->dt.pmu_counters[hw->idx].source; | ||
744 | |||
745 | if (CCN_CONFIG_TYPE(event->attr.config) == CCN_TYPE_XP && | ||
746 | CCN_CONFIG_EVENT(event->attr.config) == | ||
747 | CCN_EVENT_WATCHPOINT) | ||
748 | clear_bit(hw->config_base, source->xp.dt_cmp_mask); | ||
749 | else | ||
750 | clear_bit(hw->config_base, source->pmu_events_mask); | ||
751 | clear_bit(hw->idx, ccn->dt.pmu_counters_mask); | ||
752 | } | ||
753 | |||
754 | ccn->dt.pmu_counters[hw->idx].source = NULL; | ||
755 | ccn->dt.pmu_counters[hw->idx].event = NULL; | ||
756 | } | ||
757 | |||
758 | static u64 arm_ccn_pmu_read_counter(struct arm_ccn *ccn, int idx) | 759 | static u64 arm_ccn_pmu_read_counter(struct arm_ccn *ccn, int idx) |
759 | { | 760 | { |
760 | u64 res; | 761 | u64 res; |
@@ -1027,8 +1028,6 @@ static int arm_ccn_pmu_event_add(struct perf_event *event, int flags) | |||
1027 | static void arm_ccn_pmu_event_del(struct perf_event *event, int flags) | 1028 | static void arm_ccn_pmu_event_del(struct perf_event *event, int flags) |
1028 | { | 1029 | { |
1029 | arm_ccn_pmu_event_stop(event, PERF_EF_UPDATE); | 1030 | arm_ccn_pmu_event_stop(event, PERF_EF_UPDATE); |
1030 | |||
1031 | arm_ccn_pmu_event_free(event); | ||
1032 | } | 1031 | } |
1033 | 1032 | ||
1034 | static void arm_ccn_pmu_event_read(struct perf_event *event) | 1033 | static void arm_ccn_pmu_event_read(struct perf_event *event) |