diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-08 00:23:40 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-08 00:23:40 -0400 |
| commit | 6afd563d4bbc1924b7de9e053324c007e0d36476 (patch) | |
| tree | 619c2270f6f09ce8c9eb7f6aa448f07f67ffa8e8 | |
| parent | b4f33f6ddd0c218e12454e1379de3aaa73f2e8dc (diff) | |
| parent | d6db68b2deaa0158d25b236edffcf6dd2117208f (diff) | |
Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC driver updates from Arnd Bergmann:
"Driver updates for ARM SoCs, including a couple of newly added
drivers:
- The Qualcomm external bus interface 2 (EBI2), used in some of their
mobile phone chips for connecting flash memory, LCD displays or
other peripherals
- Secure monitor firmware for Amlogic SoCs, and an NVMEM driver for
the EFUSE based on that firmware interface.
- Perf support for the AppliedMicro X-Gene performance monitor unit
- Reset driver for STMicroelectronics STM32
- Reset driver for SocioNext UniPhier SoCs
Aside from these, there are minor updates to SoC-specific bus,
clocksource, firmware, pinctrl, reset, rtc and pmic drivers"
* tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (50 commits)
bus: qcom-ebi2: depend on HAS_IOMEM
pinctrl: mvebu: orion5x: Generalise mv88f5181l support for 88f5181
clk: mvebu: Add clk support for the orion5x SoC mv88f5181
dt-bindings: EXYNOS: Add Exynos5433 PMU compatible
clocksource: exynos_mct: Add the support for ARM64
perf: xgene: Add APM X-Gene SoC Performance Monitoring Unit driver
Documentation: Add documentation for APM X-Gene SoC PMU DTS binding
MAINTAINERS: Add entry for APM X-Gene SoC PMU driver
bus: qcom: add EBI2 driver
bus: qcom: add EBI2 device tree bindings
rtc: rtc-pm8xxx: Add support for pm8018 rtc
nvmem: amlogic: Add Amlogic Meson EFUSE driver
firmware: Amlogic: Add secure monitor driver
soc: qcom: smd: Reset rx tail rather than tx
memory: atmel-sdramc: fix a possible NULL dereference
reset: hi6220: allow to compile test driver on other architectures
reset: zynq: add driver Kconfig option
reset: sunxi: add driver Kconfig option
reset: stm32: add driver Kconfig option
reset: socfpga: add driver Kconfig option
...
52 files changed, 3789 insertions, 290 deletions
diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.txt b/Documentation/devicetree/bindings/arm/samsung/pmu.txt index 2d6356d8daf4..bf5fc59a6938 100644 --- a/Documentation/devicetree/bindings/arm/samsung/pmu.txt +++ b/Documentation/devicetree/bindings/arm/samsung/pmu.txt | |||
| @@ -10,6 +10,7 @@ Properties: | |||
| 10 | - "samsung,exynos5260-pmu" - for Exynos5260 SoC. | 10 | - "samsung,exynos5260-pmu" - for Exynos5260 SoC. |
| 11 | - "samsung,exynos5410-pmu" - for Exynos5410 SoC, | 11 | - "samsung,exynos5410-pmu" - for Exynos5410 SoC, |
| 12 | - "samsung,exynos5420-pmu" - for Exynos5420 SoC. | 12 | - "samsung,exynos5420-pmu" - for Exynos5420 SoC. |
| 13 | - "samsung,exynos5433-pmu" - for Exynos5433 SoC. | ||
| 13 | - "samsung,exynos7-pmu" - for Exynos7 SoC. | 14 | - "samsung,exynos7-pmu" - for Exynos7 SoC. |
| 14 | second value must be always "syscon". | 15 | second value must be always "syscon". |
| 15 | 16 | ||
diff --git a/Documentation/devicetree/bindings/bus/qcom,ebi2.txt b/Documentation/devicetree/bindings/bus/qcom,ebi2.txt new file mode 100644 index 000000000000..920681f552db --- /dev/null +++ b/Documentation/devicetree/bindings/bus/qcom,ebi2.txt | |||
| @@ -0,0 +1,138 @@ | |||
| 1 | Qualcomm External Bus Interface 2 (EBI2) | ||
| 2 | |||
| 3 | The EBI2 contains two peripheral blocks: XMEM and LCDC. The XMEM handles any | ||
| 4 | external memory (such as NAND or other memory-mapped peripherals) whereas | ||
| 5 | LCDC handles LCD displays. | ||
| 6 | |||
| 7 | As it says it connects devices to an external bus interface, meaning address | ||
| 8 | lines (up to 9 address lines so can only address 1KiB external memory space), | ||
| 9 | data lines (16 bits), OE (output enable), ADV (address valid, used on some | ||
| 10 | NOR flash memories), WE (write enable). This on top of 6 different chip selects | ||
| 11 | (CS0 thru CS5) so that in theory 6 different devices can be connected. | ||
| 12 | |||
| 13 | Apparently this bus is clocked at 64MHz. It has dedicated pins on the package | ||
| 14 | and the bus can only come out on these pins, however if some of the pins are | ||
| 15 | unused they can be left unconnected or remuxed to be used as GPIO or in some | ||
| 16 | cases other orthogonal functions as well. | ||
| 17 | |||
| 18 | Also CS1 and CS2 has -A and -B signals. Why they have that is unclear to me. | ||
| 19 | |||
| 20 | The chip selects have the following memory range assignments. This region of | ||
| 21 | memory is referred to as "Chip Peripheral SS FPB0" and is 168MB big. | ||
| 22 | |||
| 23 | Chip Select Physical address base | ||
| 24 | CS0 GPIO134 0x1a800000-0x1b000000 (8MB) | ||
| 25 | CS1 GPIO39 (A) / GPIO123 (B) 0x1b000000-0x1b800000 (8MB) | ||
| 26 | CS2 GPIO40 (A) / GPIO124 (B) 0x1b800000-0x1c000000 (8MB) | ||
| 27 | CS3 GPIO133 0x1d000000-0x25000000 (128 MB) | ||
| 28 | CS4 GPIO132 0x1c800000-0x1d000000 (8MB) | ||
| 29 | CS5 GPIO131 0x1c000000-0x1c800000 (8MB) | ||
| 30 | |||
| 31 | The APQ8060 Qualcomm Application Processor User Guide, 80-N7150-14 Rev. A, | ||
| 32 | August 6, 2012 contains some incomplete documentation of the EBI2. | ||
| 33 | |||
| 34 | FIXME: the manual mentions "write precharge cycles" and "precharge cycles". | ||
| 35 | We have not been able to figure out which bit fields these correspond to | ||
| 36 | in the hardware, or what valid values exist. The current hypothesis is that | ||
| 37 | this is something just used on the FAST chip selects and that the SLOW | ||
| 38 | chip selects are understood fully. There is also a "byte device enable" | ||
| 39 | flag somewhere for 8bit memories. | ||
| 40 | |||
| 41 | FIXME: The chipselects have SLOW and FAST configuration registers. It's a bit | ||
| 42 | unclear what this means, if they are mutually exclusive or can be used | ||
| 43 | together, or if some chip selects are hardwired to be FAST and others are SLOW | ||
| 44 | by design. | ||
| 45 | |||
| 46 | The XMEM registers are totally undocumented but could be partially decoded | ||
| 47 | because the Cypress AN49576 Antioch Westbridge apparently has suspiciously | ||
| 48 | similar register layout, see: http://www.cypress.com/file/105771/download | ||
| 49 | |||
| 50 | Required properties: | ||
| 51 | - compatible: should be one of: | ||
| 52 | "qcom,msm8660-ebi2" | ||
| 53 | "qcom,apq8060-ebi2" | ||
| 54 | - #address-cells: shoule be <2>: the first cell is the chipselect, | ||
| 55 | the second cell is the offset inside the memory range | ||
| 56 | - #size-cells: should be <1> | ||
| 57 | - ranges: should be set to: | ||
| 58 | ranges = <0 0x0 0x1a800000 0x00800000>, | ||
| 59 | <1 0x0 0x1b000000 0x00800000>, | ||
| 60 | <2 0x0 0x1b800000 0x00800000>, | ||
| 61 | <3 0x0 0x1d000000 0x08000000>, | ||
| 62 | <4 0x0 0x1c800000 0x00800000>, | ||
| 63 | <5 0x0 0x1c000000 0x00800000>; | ||
| 64 | - reg: two ranges of registers: EBI2 config and XMEM config areas | ||
| 65 | - reg-names: should be "ebi2", "xmem" | ||
| 66 | - clocks: two clocks, EBI_2X and EBI | ||
| 67 | - clock-names: shoule be "ebi2x", "ebi2" | ||
| 68 | |||
| 69 | Optional subnodes: | ||
| 70 | - Nodes inside the EBI2 will be considered device nodes. | ||
| 71 | |||
| 72 | The following optional properties are properties that can be tagged onto | ||
| 73 | any device subnode. We are assuming that there can be only ONE device per | ||
| 74 | chipselect subnode, else the properties will become ambigous. | ||
| 75 | |||
| 76 | Optional properties arrays for SLOW chip selects: | ||
| 77 | - qcom,xmem-recovery-cycles: recovery cycles is the time the memory continues to | ||
| 78 | drive the data bus after OE is de-asserted, in order to avoid contention on | ||
| 79 | the data bus. They are inserted when reading one CS and switching to another | ||
| 80 | CS or read followed by write on the same CS. Valid values 0 thru 15. Minimum | ||
| 81 | value is actually 1, so a value of 0 will still yield 1 recovery cycle. | ||
| 82 | - qcom,xmem-write-hold-cycles: write hold cycles, these are extra cycles | ||
| 83 | inserted after every write minimum 1. The data out is driven from the time | ||
| 84 | WE is asserted until CS is asserted. With a hold of 1 (value = 0), the CS | ||
| 85 | stays active for 1 extra cycle etc. Valid values 0 thru 15. | ||
| 86 | - qcom,xmem-write-delta-cycles: initial latency for write cycles inserted for | ||
| 87 | the first write to a page or burst memory. Valid values 0 thru 255. | ||
| 88 | - qcom,xmem-read-delta-cycles: initial latency for read cycles inserted for the | ||
| 89 | first read to a page or burst memory. Valid values 0 thru 255. | ||
| 90 | - qcom,xmem-write-wait-cycles: number of wait cycles for every write access, 0=1 | ||
| 91 | cycle | ||
