
This patch series adds support for Microchip PIC32MZ[DA] MIPS microcontroller platform. All drivers required to boot Linux from MMC uSD card and network (TFTP) are included in it; pinctrl, clock, serial, DDR2, SDHCI, gpio, ethernet. This series is tested on PIC32MZ[DA] Starter Kit.
A tree with these changes are available at [1].
[1] https://github.com/purna-mandal/u-boot/tree/pic32-upstream-v2 [0] https://github.com/purna-mandal/u-boot/tree/pic32-upstream-v1
Changes in v2: - move PIC32 specific headers to arch/mips/mach-pic32/include/mach/ - define register-base as physical address in header file - add trivial ioremap support to convert physical address to MIPS KSEG1 address - drop CONFIG_PIC32_SUPPORTS_FDT_BOOT as not required - add get clock rate for mpll clock. - add routine to configure pin properties in pinctrl driver - serial: fix missing or corrupted chars during baud rate change - serial: remove loop until any new char is available in _getc() - move ddr2 initialization from board/microchip/ to drivers/ddr/microchip - drop unnecessary board_early_init_f() - use LEAF(), END() macros for lowlevel_init - move initialization of board_init_f() argument to common start.S - move initdram() from board/microchip/ to mach-pic32/cpu.c - remove MIPS virtual address in favor physical in dts file - move CONFIG_SYS_TEXT_BASE from board/<>/config.mk to include/configs/<board>.h - drop SDHCI shared bus configuration (for shared interrupt-and-clock pins) - replace unbounded loop with wait_for_bit() - replace register access as readl/writel(base + offset) - translate (dts provided) physical address to MIPS virtual address before use
Andrei Pistirica (1): drivers: mmc: add driver for Microchip PIC32 SDHCI controller.
Paul Thacker (1): drivers: serial: add driver for Microchip PIC32 UART controller.
Purna Chandra Mandal (11): MIPS: initial infrastructure for Microchip PIC32 architecture drivers: clk: Add clock driver for Microchip PIC32 Microcontroller. drivers: pinctrl: Add pinctrl driver for Microchip PIC32. drivers: ddr: Add DDR2 SDRAM controller driver for Microchip PIC32. MIPS: Add support for Microchip PIC32MZ[DA] SoC family. board: Add Microchip PIC32MZ[DA]-Starter-Kit board. board: add SDHCI support for PIC32MZDASK board. drivers: gpio: add driver for Microchip PIC32 GPIO controller. drivers: net: phy: add SMSC LAN8740 Phy support. drivers: net: add Microchip PIC32 ethernet controller driver. board: Add gpio and ethernet support to pic32mzdask board.
arch/mips/Kconfig | 6 + arch/mips/Makefile | 1 + arch/mips/cpu/start.S | 2 + arch/mips/dts/Makefile | 2 +- arch/mips/dts/pic32mzda.dtsi | 170 ++++++ arch/mips/dts/pic32mzda_sk.dts | 50 ++ arch/mips/mach-pic32/Kconfig | 38 ++ arch/mips/mach-pic32/Makefile | 7 + arch/mips/mach-pic32/cpu.c | 159 +++++ arch/mips/mach-pic32/include/mach/ddr.h | 32 + arch/mips/mach-pic32/include/mach/pic32.h | 82 +++ arch/mips/mach-pic32/lowlevel_init.S | 27 + arch/mips/mach-pic32/reset.c | 36 ++ board/microchip/pic32mzda/Kconfig | 13 + board/microchip/pic32mzda/MAINTAINERS | 6 + board/microchip/pic32mzda/Makefile | 7 + board/microchip/pic32mzda/README | 22 + board/microchip/pic32mzda/pic32mzda.c | 31 + configs/pic32mzdask_defconfig | 32 + .../clock/microchip,pic32-clock.txt | 28 + .../serial/microchip,pic32-uart.txt | 5 + drivers/Makefile | 1 + drivers/clk/Makefile | 1 + drivers/clk/clk-pic32.c | 427 ++++++++++++++ drivers/ddr/microchip/Makefile | 6 + drivers/ddr/microchip/ddr2.c | 277 +++++++++ drivers/ddr/microchip/ddr2_regs.h | 151 +++++ drivers/ddr/microchip/ddr2_timing.h | 65 ++ drivers/gpio/Kconfig | 7 + drivers/gpio/Makefile | 2 +- drivers/gpio/pic32_gpio.c | 164 ++++++ drivers/mmc/Kconfig | 6 + drivers/mmc/Makefile | 2 +- drivers/mmc/pic32_sdhci.c | 63 ++ drivers/mmc/sdhci.c | 12 + drivers/net/Kconfig | 7 + drivers/net/Makefile | 1 + drivers/net/phy/smsc.c | 10 + drivers/net/pic32_eth.c | 652 +++++++++++++++++++++ drivers/net/pic32_eth.h | 174 ++++++ drivers/net/pic32_mdio.c | 121 ++++ drivers/pinctrl/Kconfig | 6 + drivers/pinctrl/Makefile | 1 + drivers/pinctrl/pinctrl_pic32.c | 284 +++++++++ drivers/serial/Kconfig | 13 + drivers/serial/Makefile | 1 + drivers/serial/serial_pic32.c | 230 ++++++++ include/configs/pic32mzdask.h | 187 ++++++ include/dt-bindings/clock/microchip,clock.h | 29 + 49 files changed, 3653 insertions(+), 3 deletions(-) create mode 100644 arch/mips/dts/pic32mzda.dtsi create mode 100644 arch/mips/dts/pic32mzda_sk.dts create mode 100644 arch/mips/mach-pic32/Kconfig create mode 100644 arch/mips/mach-pic32/Makefile create mode 100644 arch/mips/mach-pic32/cpu.c create mode 100644 arch/mips/mach-pic32/include/mach/ddr.h create mode 100644 arch/mips/mach-pic32/include/mach/pic32.h create mode 100644 arch/mips/mach-pic32/lowlevel_init.S create mode 100644 arch/mips/mach-pic32/reset.c create mode 100644 board/microchip/pic32mzda/Kconfig create mode 100644 board/microchip/pic32mzda/MAINTAINERS create mode 100644 board/microchip/pic32mzda/Makefile create mode 100644 board/microchip/pic32mzda/README create mode 100644 board/microchip/pic32mzda/pic32mzda.c create mode 100644 configs/pic32mzdask_defconfig create mode 100644 doc/device-tree-bindings/clock/microchip,pic32-clock.txt create mode 100644 doc/device-tree-bindings/serial/microchip,pic32-uart.txt create mode 100644 drivers/clk/clk-pic32.c create mode 100644 drivers/ddr/microchip/Makefile create mode 100644 drivers/ddr/microchip/ddr2.c create mode 100644 drivers/ddr/microchip/ddr2_regs.h create mode 100644 drivers/ddr/microchip/ddr2_timing.h create mode 100644 drivers/gpio/pic32_gpio.c create mode 100644 drivers/mmc/pic32_sdhci.c create mode 100644 drivers/net/pic32_eth.c create mode 100644 drivers/net/pic32_eth.h create mode 100644 drivers/net/pic32_mdio.c create mode 100644 drivers/pinctrl/pinctrl_pic32.c create mode 100644 drivers/serial/serial_pic32.c create mode 100644 include/configs/pic32mzdask.h create mode 100644 include/dt-bindings/clock/microchip,clock.h