[PATCH 00/22] Conversion of ARMv4 Gemini to DT and multiplatform

Linus Walleij linus.walleij at linaro.org
Sun Jan 22 04:15:06 PST 2017


I got a Gemini platform from Florian Fainelli over at OpenWRT
some time back. I finally got around to "future-proofing" the
platform, which was the idea when he paintakingly sent the box
over to me.

This is the result: Gemini is converted to device tree and
multiplatform, all existing drivers are rewritten into their
proper subsystems and the old board-specific and machine-specific
code is deleted.

I would ideally like the irqchip, clocksource, gpio, rtc and MTD
patches (and bindings) to simply be merged into the respective
subsystem and the remaining ARM/ARM SoC patches funnelled to the
ARM SoC tree in a single pull request, lock stock and barrel,
with changes to board files and DTS additions in one go. But I
guess I could also switch the DTS files to a separate branch.

The OpenWRT tree still have a whole bunch of significant out-of
tree drivers:

- Watchdog
- GMAC (ethernet)
- FOT2G USB EHCI host
- PATA
- PCI

But I do not see any big obstacle in porting these over to be
probed from the device tree and upstreamed on top of this patch
series. I might tinker with it if I get time.

The out-of-tree code can be found here:
http://git.openwrt.org/?p=openwrt.git;a=tree;f=target/linux/gemini;h=b74c3d8f0100e2ac8a4d71c4d23c082db2993e63;hb=HEAD

Linus Walleij (22):
  ARM: gemini: convert to MULTI_IRQ_HANDLER
  irqchip: DT bindings for Cortina Gemini irqchip
  irqchip: add a driver for Cortina Gemini
  clocksource: add DT bindings for Cortina Gemini
  clocksource: Add driver for the Cortina Gemini
  gpio: add DT bindings for Cortina Gemini GPIO
  gpio: Add a driver for Cortina Systems Gemini GPIO
  rtc: Add device tree probing to the Gemini driver
  mtd: add DT bindings for the Cortina Systems Gemini Flash
  mtd: physmap_of: add a hook for Gemini flash probing
  ARM: dts: add top-level DT bindings for Cortina Gemini
  ARM: gemini: DT for the Cortina Gemini SoC platforms
  ARM: dts: add device tree for Gemini SoC and SQ201
  ARM: dts: add a devicetree for Raidsonic NAS IB-4220-B
  ARM: dts: add a devicetree for Teltonika RUT1xx
  ARM: dts: add a devicetree for Wiliboard WBD-111
  ARM: dts: add a devicetree for Wiliboard WBD-222
  ARM: gemini: delete all boardfiles
  ARM: gemini: switch to sparse IRQs
  ARM: gemini: select ARM_PATCH_PHYS_VIRT and AUTO_ZRELADDR
  ARM: gemini: convert to ARMv4 multiplatform
  ARM: configs: add a gemini defconfig

 Documentation/devicetree/bindings/arm/gemini.txt   |  58 +++++
 .../bindings/gpio/cortina,gemini-gpio.txt          |  24 ++
 .../cortina,gemini-interrupt-controller.txt        |  22 ++
 .../bindings/mtd/cortina,gemini-flash.txt          |  24 ++
 .../devicetree/bindings/rtc/cortina,gemini.txt     |  14 ++
 .../bindings/timer/cortina,gemini-timer.txt        |  22 ++
 arch/arm/Kconfig                                   |   9 -
 arch/arm/boot/dts/Makefile                         |   6 +
 arch/arm/boot/dts/gemini-nas4220b.dts              |  68 +++++
 arch/arm/boot/dts/gemini-rut1xx.dts                |  63 +++++
 arch/arm/boot/dts/gemini-sq201.dts                 |  94 +++++++
 arch/arm/boot/dts/gemini-wbd111.dts                | 101 ++++++++
 arch/arm/boot/dts/gemini-wbd222.dts                | 101 ++++++++
 arch/arm/boot/dts/gemini.dtsi                      |  96 +++++++
 arch/arm/configs/gemini_defconfig                  |  63 +++++
 arch/arm/mach-gemini/Kconfig                       |  52 +---
 arch/arm/mach-gemini/Makefile                      |  15 +-
 arch/arm/mach-gemini/Makefile.boot                 |   9 -
 arch/arm/mach-gemini/board-dt.c                    |  62 +++++
 arch/arm/mach-gemini/board-nas4220b.c              | 106 --------
 arch/arm/mach-gemini/board-rut1xx.c                |  92 -------
 arch/arm/mach-gemini/board-wbd111.c                | 133 ----------
 arch/arm/mach-gemini/board-wbd222.c                | 133 ----------
 arch/arm/mach-gemini/common.h                      |  33 ---
 arch/arm/mach-gemini/devices.c                     | 118 ---------
 arch/arm/mach-gemini/gpio.c                        | 231 -----------------
 arch/arm/mach-gemini/idle.c                        |  31 ---
 arch/arm/mach-gemini/include/mach/entry-macro.S    |  33 ---
 arch/arm/mach-gemini/include/mach/global_reg.h     | 278 ---------------------
 arch/arm/mach-gemini/include/mach/hardware.h       |  71 ------
 arch/arm/mach-gemini/include/mach/irqs.h           |  53 ----
 arch/arm/mach-gemini/include/mach/uncompress.h     |  42 ----
 arch/arm/mach-gemini/irq.c                         | 105 --------
 arch/arm/mach-gemini/mm.c                          |  82 ------
 arch/arm/mach-gemini/reset.c                       |  25 --
 drivers/clocksource/Kconfig                        |  10 +
 drivers/clocksource/Makefile                       |   1 +
 .../time.c => drivers/clocksource/timer-gemini.c   | 168 ++++++++-----
 drivers/gpio/Kconfig                               |   9 +
 drivers/gpio/Makefile                              |   1 +
 drivers/gpio/gpio-gemini.c                         | 236 +++++++++++++++++
 drivers/irqchip/Makefile                           |   1 +
 drivers/irqchip/irq-gemini.c                       | 190 ++++++++++++++
 drivers/mtd/maps/Kconfig                           |  10 +
 drivers/mtd/maps/Makefile                          |   3 +
 drivers/mtd/maps/physmap_of.c                      |   9 +-
 drivers/mtd/maps/physmap_of_gemini.c               | 120 +++++++++
 drivers/mtd/maps/physmap_of_gemini.h               |  16 ++
 drivers/rtc/rtc-gemini.c                           |   7 +
 49 files changed, 1545 insertions(+), 1705 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/arm/gemini.txt
 create mode 100644 Documentation/devicetree/bindings/gpio/cortina,gemini-gpio.txt
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/cortina,gemini-interrupt-controller.txt
 create mode 100644 Documentation/devicetree/bindings/mtd/cortina,gemini-flash.txt
 create mode 100644 Documentation/devicetree/bindings/rtc/cortina,gemini.txt
 create mode 100644 Documentation/devicetree/bindings/timer/cortina,gemini-timer.txt
 create mode 100644 arch/arm/boot/dts/gemini-nas4220b.dts
 create mode 100644 arch/arm/boot/dts/gemini-rut1xx.dts
 create mode 100644 arch/arm/boot/dts/gemini-sq201.dts
 create mode 100644 arch/arm/boot/dts/gemini-wbd111.dts
 create mode 100644 arch/arm/boot/dts/gemini-wbd222.dts
 create mode 100644 arch/arm/boot/dts/gemini.dtsi
 create mode 100644 arch/arm/configs/gemini_defconfig
 delete mode 100644 arch/arm/mach-gemini/Makefile.boot
 create mode 100644 arch/arm/mach-gemini/board-dt.c
 delete mode 100644 arch/arm/mach-gemini/board-nas4220b.c
 delete mode 100644 arch/arm/mach-gemini/board-rut1xx.c
 delete mode 100644 arch/arm/mach-gemini/board-wbd111.c
 delete mode 100644 arch/arm/mach-gemini/board-wbd222.c
 delete mode 100644 arch/arm/mach-gemini/common.h
 delete mode 100644 arch/arm/mach-gemini/devices.c
 delete mode 100644 arch/arm/mach-gemini/gpio.c
 delete mode 100644 arch/arm/mach-gemini/idle.c
 delete mode 100644 arch/arm/mach-gemini/include/mach/entry-macro.S
 delete mode 100644 arch/arm/mach-gemini/include/mach/global_reg.h
 delete mode 100644 arch/arm/mach-gemini/include/mach/hardware.h
 delete mode 100644 arch/arm/mach-gemini/include/mach/irqs.h
 delete mode 100644 arch/arm/mach-gemini/include/mach/uncompress.h
 delete mode 100644 arch/arm/mach-gemini/irq.c
 delete mode 100644 arch/arm/mach-gemini/mm.c
 delete mode 100644 arch/arm/mach-gemini/reset.c
 rename arch/arm/mach-gemini/time.c => drivers/clocksource/timer-gemini.c (55%)
 create mode 100644 drivers/gpio/gpio-gemini.c
 create mode 100644 drivers/irqchip/irq-gemini.c
 create mode 100644 drivers/mtd/maps/physmap_of_gemini.c
 create mode 100644 drivers/mtd/maps/physmap_of_gemini.h

-- 
2.9.3




More information about the linux-arm-kernel mailing list