diff options
| -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) |
