Extend LPC32xx functionality and add LPC32xx-based work_92015 board
Subsystems (11)
cover Extend LPC32xx functionality and add LPC32xx-based work_92015 board
This series extends functionality for the LPC32xx platform and introduces the WORK Microwave work_92105 board which makes use of the extended functionality.
NOTES:
The series is not entirely checkpatch-clean. The following warnings and checks were not fixed:
1. "warning: tools/mklpc32xxboot.c,81: quoted string split across lines" There seems to be no way to remove this error without making the line longer than 80 characters, which causes checkpatch to complain.
2. "warning: arch/arm/Kconfig,241: please write a paragraph that describes the config symbol fully"
Other symbols in the same file have no description either. For consistency, I did not add the requested description.
3. "check: include/configs/work_92105.h,177: spaces required around that ':' (ctx:VxV)
(5 occurrences on the same line)
This is due to the value of CONFIG_ETHADDR not being in quotes. As it never is in any other definition of CONFIG_ETHADDR, I left it unchanged.
Albert ARIBAUD (3ADEV) (8):
lpc32xx: add Ethernet support
lpc32xx: mtd: nand: add MLC NAND controller
lpc32xx: i2c: add LPC32xx I2C interface support
lpc32xx: add GPIO support
lpc32xx: add LPC32xx SSP support (SPI mode)
dtt: add ds620 support
lpc32xx: add lpc32xx-spl.bin boot image target
lpc32xx: add support for board work_92105
Makefile | 3 + arch/arm/Kconfig | 6 + arch/arm/cpu/arm926ejs/lpc32xx/Makefile | 2 + arch/arm/cpu/arm926ejs/lpc32xx/clk.c | 34 ++ arch/arm/cpu/arm926ejs/lpc32xx/cpu.c | 13 + arch/arm/cpu/arm926ejs/lpc32xx/devices.c | 30 + arch/arm/cpu/arm926ejs/lpc32xx/dram.c | 80 +++ arch/arm/cpu/arm926ejs/lpc32xx/lowlevel_init.S | 45 ++ arch/arm/include/asm/arch-lpc32xx/clk.h | 16 + arch/arm/include/asm/arch-lpc32xx/config.h | 3 + arch/arm/include/asm/arch-lpc32xx/cpu.h | 2 + arch/arm/include/asm/arch-lpc32xx/gpio.h | 43 ++ arch/arm/include/asm/arch-lpc32xx/sys_proto.h | 8 +- board/work-microwave/work_92105/Kconfig | 15 + board/work-microwave/work_92105/MAINTAINERS | 6 + board/work-microwave/work_92105/Makefile | 8 + board/work-microwave/work_92105/README | 23 + board/work-microwave/work_92105/work_92105.c | 85 +++ .../work-microwave/work_92105/work_92105_display.c | 345 +++++++++++ .../work-microwave/work_92105/work_92105_display.h | 14 + configs/work_92105_defconfig | 3 + drivers/gpio/Makefile | 1 + drivers/gpio/lpc32xx_gpio.c | 223 ++++++++ drivers/hwmon/Makefile | 1 + drivers/hwmon/ds620.c | 65 +++ drivers/i2c/Makefile | 1 + drivers/i2c/lpc32xx_i2c.c | 249 ++++++++ drivers/mtd/nand/Makefile | 1 + drivers/mtd/nand/lpc32xx_nand_mlc.c | 589 +++++++++++++++++++ drivers/net/Makefile | 1 + drivers/net/lpc32xx_eth.c | 636 +++++++++++++++++++++ drivers/spi/Makefile | 1 + drivers/spi/lpc32xx_ssp.c | 132 +++++ include/configs/work_92105.h | 257 +++++++++ include/dtt.h | 15 +- include/netdev.h | 1 + scripts/Makefile.spl | 11 + tools/.gitignore | 1 + tools/Makefile | 2 + tools/mklpc32xxboot.c | 169 ++++++ 40 files changed, 3132 insertions(+), 8 deletions(-) create mode 100644 arch/arm/cpu/arm926ejs/lpc32xx/dram.c create mode 100644 arch/arm/cpu/arm926ejs/lpc32xx/lowlevel_init.S create mode 100644 arch/arm/include/asm/arch-lpc32xx/gpio.h create mode 100644 board/work-microwave/work_92105/Kconfig create mode 100644 board/work-microwave/work_92105/MAINTAINERS create mode 100644 board/work-microwave/work_92105/Makefile create mode 100644 board/work-microwave/work_92105/README create mode 100644 board/work-microwave/work_92105/work_92105.c create mode 100644 board/work-microwave/work_92105/work_92105_display.c create mode 100644 board/work-microwave/work_92105/work_92105_display.h create mode 100644 configs/work_92105_defconfig create mode 100644 drivers/gpio/lpc32xx_gpio.c create mode 100644 drivers/hwmon/ds620.c create mode 100644 drivers/i2c/lpc32xx_i2c.c create mode 100644 drivers/mtd/nand/lpc32xx_nand_mlc.c create mode 100644 drivers/net/lpc32xx_eth.c create mode 100644 drivers/spi/lpc32xx_ssp.c create mode 100644 include/configs/work_92105.h create mode 100644 tools/mklpc32xxboot.c
Signature · 1 line
2.1.0
PATCH 1/8 lpc32xx: add Ethernet support
---
arch/arm/cpu/arm926ejs/lpc32xx/cpu.c | 9 + arch/arm/cpu/arm926ejs/lpc32xx/devices.c | 7 + arch/arm/include/asm/arch-lpc32xx/config.h | 3 + arch/arm/include/asm/arch-lpc32xx/sys_proto.h | 1 + drivers/net/Makefile | 1 + drivers/net/lpc32xx_eth.c | 636 ++++++++++++++++++++++++++ include/netdev.h | 1 + 7 files changed, 658 insertions(+) create mode 100644 drivers/net/lpc32xx_eth.c
arch/arm/cpu/arm926ejs/lpc32xx/cpu.c +9 -0
@@ -5,6 +5,7 @@*/ #include <common.h> +#include <netdev.h> #include <asm/arch/cpu.h> #include <asm/arch/clk.h> #include <asm/arch/wdt.h>
@@ -55,3 +56,11 @@ int print_cpuinfo(void) return 0; }#endif + +#ifdef CONFIG_LPC32XX_ETH +int cpu_eth_init (bd_t *bis) +{ +lpc32xx_eth_initialize (bis); +return 0 ; +} +#endif
arch/arm/cpu/arm926ejs/lpc32xx/devices.c +7 -0
@@ -37,3 +37,10 @@ void lpc32xx_uart_init(unsigned int uart_id)writel (CLK_UART_X_DIV (1 ) |CLK_UART_Y_DIV (1 ), &clk->u3clk + (uart_id -3 )); } + +void lpc32xx_mac_init (void ) +{ +/* Enable MAC interface */ +writel (CLK_MAC_REG |CLK_MAC_SLAVE |CLK_MAC_MASTER + |CLK_MAC_MII , &clk->macclk_ctrl); +}
arch/arm/include/asm/arch-lpc32xx/config.h +3 -0
@@ -50,6 +50,9 @@#define CONFIG_SYS_BAUDRATE_TABLE \ { 9600, 19200, 38400, 57600, 115200, 230400, 460800 } +/* Ethernet */ +#define LPC32XX_ETH_BASE ETHERNET_BASE +/* NOR Flash */ #if defined(CONFIG_SYS_FLASH_CFI )#define CONFIG_FLASH_CFI_DRIVER
arch/arm/include/asm/arch-lpc32xx/sys_proto.h +1 -0
@@ -8,5 +8,6 @@#define _LPC32XX_SYS_PROTO_Hvoid lpc32xx_uart_init (unsigned int uart_id); +void lpc32xx_mac_init (void );#endif /* _LPC32XX_SYS_PROTO_H */
drivers/net/Makefile +1 -0
@@ -36,6 +36,7 @@ obj-$(CONFIG_DRIVER_TI_KEYSTONE_NET) += keystone_net.o obj-$(CONFIG_DRIVER_KS8695ETH) += ks8695eth.o obj-$(CONFIG_KS8851_MLL) += ks8851_mll.o obj-$(CONFIG_LAN91C96) += lan91c96.o +obj-$(CONFIG_LPC32XX_ETH) += lpc32xx_eth.o obj-$(CONFIG_MACB) += macb.o obj-$(CONFIG_MCFFEC) += mcffec.o mcfmii.o obj-$(CONFIG_MPC5xxx_FEC) += mpc5xxx_fec.o
drivers/net/lpc32xx_eth.c new file +636 -0
636 lines not on this page · raw message
include/netdev.h +1 -0
@@ -58,6 +58,7 @@ void gt6426x_eth_initialize(bd_t *bis);int ks8695_eth_initialize (void );int ks8851_mll_initialize (u8 dev_num,int base_addr);int lan91c96_initialize (u8 dev_num,int base_addr); +int lpc32xx_eth_initialize (bd_t *bis);int macb_eth_initialize (int id,void *regs,unsigned int phy_addr);int mcdmafec_initialize (bd_t *bis);int mcffec_initialize (bd_t *bis);
Signature · 1 line
2.1.0
PATCH 2/8 lpc32xx: mtd: nand: add MLC NAND controller
The controller's Reed-Solomon ECC hardware is
used except of course for raw reads and writes.
It covers in- and out-of-band data together.
The SPL framework is supported.
---
arch/arm/cpu/arm926ejs/lpc32xx/devices.c | 6 + arch/arm/include/asm/arch-lpc32xx/clk.h | 4 + arch/arm/include/asm/arch-lpc32xx/sys_proto.h | 1 + drivers/mtd/nand/Makefile | 1 + drivers/mtd/nand/lpc32xx_nand_mlc.c | 589 ++++++++++++++++++++++++++ 5 files changed, 601 insertions(+) create mode 100644 drivers/mtd/nand/lpc32xx_nand_mlc.c
arch/arm/cpu/arm926ejs/lpc32xx/devices.c +6 -0
@@ -44,3 +44,9 @@ void lpc32xx_mac_init(void)writel (CLK_MAC_REG |CLK_MAC_SLAVE |CLK_MAC_MASTER |CLK_MAC_MII , &clk->macclk_ctrl); } + +void lpc32xx_mlc_nand_init (void ) +{ +/* Enable NAND interface */ +writel (CLK_NAND_MLC |CLK_NAND_MLC_INT , &clk->flashclk_ctrl); +}
arch/arm/include/asm/arch-lpc32xx/clk.h +4 -0
@@ -147,6 +147,10 @@ struct clk_pm_regs {/* DMA Clock Control Register bits */ #define CLK_DMA_ENABLE (1 << 0) +/* NAND Clock Control Register bits */ +#define CLK_NAND_MLC (1 << 1) +#define CLK_NAND_MLC_INT (1 << 5) +unsigned int get_sys_clk_rate (void );unsigned int get_hclk_pll_rate (void );unsigned int get_hclk_clk_div (void );
arch/arm/include/asm/arch-lpc32xx/sys_proto.h +1 -0
@@ -9,5 +9,6 @@void lpc32xx_uart_init (unsigned int uart_id);void lpc32xx_mac_init (void ); +void lpc32xx_mlc_nand_init (void );#endif /* _LPC32XX_SYS_PROTO_H */
drivers/mtd/nand/Makefile +1 -0
@@ -52,6 +52,7 @@ obj-$(CONFIG_NAND_JZ4740) += jz4740_nand.o obj-$(CONFIG_NAND_KB9202) += kb9202_nand.o obj-$(CONFIG_NAND_KIRKWOOD) += kirkwood_nand.o obj-$(CONFIG_NAND_KMETER1) += kmeter1_nand.o +obj-$(CONFIG_NAND_LPC32XX_MLC) += lpc32xx_nand_mlc.o obj-$(CONFIG_NAND_MPC5121_NFC) += mpc5121_nfc.o obj-$(CONFIG_NAND_VF610_NFC) += vf610_nfc.o obj-$(CONFIG_NAND_MXC) += mxc_nand.o
drivers/mtd/nand/lpc32xx_nand_mlc.c new file +589 -0
589 lines not on this page · raw message
Signature · 1 line
2.1.0
PATCH 3/8 lpc32xx: i2c: add LPC32xx I2C interface support
---
arch/arm/cpu/arm926ejs/lpc32xx/devices.c | 11 ++ arch/arm/include/asm/arch-lpc32xx/clk.h | 4 + arch/arm/include/asm/arch-lpc32xx/cpu.h | 2 + arch/arm/include/asm/arch-lpc32xx/sys_proto.h | 1 + drivers/i2c/Makefile | 1 + drivers/i2c/lpc32xx_i2c.c | 249 ++++++++++++++++++++++++++ 6 files changed, 268 insertions(+) create mode 100644 drivers/i2c/lpc32xx_i2c.c
arch/arm/cpu/arm926ejs/lpc32xx/devices.c +11 -0
@@ -50,3 +50,14 @@ void lpc32xx_mlc_nand_init(void)/* Enable NAND interface */ writel (CLK_NAND_MLC |CLK_NAND_MLC_INT , &clk->flashclk_ctrl); } + +void lpc32xx_i2c_init (unsigned int devnum) +{ +/* Enable I2C interface */ +uint32_t ctrl =readl (&clk->i2cclk_ctrl); +if (devnum ==1 ) + ctrl |=CLK_I2C1_ENABLE ; +if (devnum ==2 ) + ctrl |=CLK_I2C2_ENABLE ; +writel (ctrl, &clk->i2cclk_ctrl); +}
arch/arm/include/asm/arch-lpc32xx/clk.h +4 -0
@@ -123,6 +123,10 @@ struct clk_pm_regs {#define CLK_MAC_SLAVE (1 << 1)#define CLK_MAC_REG (1 << 0) +/* I2C Clock Control Register bits */ +#define CLK_I2C2_ENABLE (1 << 1) +#define CLK_I2C1_ENABLE (1 << 0) +/* Timer Clock Control1 Register bits */ #define CLK_TIMCLK_MOTOR (1 << 6)#define CLK_TIMCLK_TIMER3 (1 << 5)
arch/arm/include/asm/arch-lpc32xx/cpu.h +2 -0
@@ -37,6 +37,8 @@#define UART4_BASE 0x40088000/* UART 4 registers base */ #define UART5_BASE 0x40090000/* UART 5 registers base */ #define UART6_BASE 0x40098000/* UART 6 registers base */ +#define I2C1_BASE 0x400A0000/* I2C 1 registers base */ +#define I2C2_BASE 0x400A8000/* I2C 2 registers base */ /* External SDRAM Memory Bank base addresses */ #define EMC_DYCS0_BASE 0x80000000/* SDRAM DYCS0 base address */
arch/arm/include/asm/arch-lpc32xx/sys_proto.h +1 -0
@@ -10,5 +10,6 @@void lpc32xx_uart_init (unsigned int uart_id);void lpc32xx_mac_init (void );void lpc32xx_mlc_nand_init (void ); +void lpc32xx_i2c_init (unsigned int devnum);#endif /* _LPC32XX_SYS_PROTO_H */
drivers/i2c/Makefile +1 -0
@@ -19,6 +19,7 @@ obj-$(CONFIG_SYS_I2C_FSL) += fsl_i2c.o obj-$(CONFIG_SYS_I2C_FTI2C010) += fti2c010.o obj-$(CONFIG_SYS_I2C_IHS) += ihs_i2c.o obj-$(CONFIG_SYS_I2C_KONA) += kona_i2c.o +obj-$(CONFIG_SYS_I2C_LPC32XX) += lpc32xx_i2c.o obj-$(CONFIG_SYS_I2C_MVTWSI) += mvtwsi.o obj-$(CONFIG_SYS_I2C_MXC) += mxc_i2c.o obj-$(CONFIG_SYS_I2C_MXS) += mxs_i2c.o
drivers/i2c/lpc32xx_i2c.c new file +249 -0
249 lines not on this page · raw message
Signature · 1 line
2.1.0
PATCH 4/8 lpc32xx: add GPIO support
---
arch/arm/include/asm/arch-lpc32xx/gpio.h | 43 ++++++ drivers/gpio/Makefile | 1 + drivers/gpio/lpc32xx_gpio.c | 223 +++++++++++++++++++++++++++++++ 3 files changed, 267 insertions(+) create mode 100644 arch/arm/include/asm/arch-lpc32xx/gpio.h create mode 100644 drivers/gpio/lpc32xx_gpio.c
arch/arm/include/asm/arch-lpc32xx/gpio.h new file +43 -0
@@ -0,0 +1,43 @@ +/* +* LPC32xx GPIO interface +* +* (C) Copyright 2014 DENX Software Engineering GmbH +* Written-by: Albert ARIBAUD <[email protected]> +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +/** +* GPIO Register map for LPC32xx +*/ + +struct gpio_regs { +u32 p3_inp_state; +u32 p3_outp_set; +u32 p3_outp_clr; +u32 p3_outp_state; +/* Watch out! the following are shared between p2 and p3 */ +u32 p2_p3_dir_set; +u32 p2_p3_dir_clr; +u32 p2_p3_dir_state; +/* Now back to 'one register for one port' */ +u32 p2_inp_state; +u32 p2_outp_set; +u32 p2_outp_clr; +u32 reserved1[6 ]; +u32 p0_inp_state; +u32 p0_outp_set; +u32 p0_outp_clr; +u32 p0_outp_state; +u32 p0_dir_set; +u32 p0_dir_clr; +u32 p0_dir_state; +u32 reserved2; +u32 p1_inp_state; +u32 p1_outp_set; +u32 p1_outp_clr; +u32 p1_outp_state; +u32 p1_dir_set; +u32 p1_dir_clr; +u32 p1_dir_state; +};
drivers/gpio/Makefile +1 -0
@@ -37,3 +37,4 @@ obj-$(CONFIG_ADI_GPIO2) += adi_gpio2.o obj-$(CONFIG_TCA642X) += tca642x.o oby-$(CONFIG_SX151X) += sx151x.o obj-$(CONFIG_SUNXI_GPIO) += sunxi_gpio.o +obj-$(CONFIG_LPC32XX_GPIO) += lpc32xx_gpio.o
drivers/gpio/lpc32xx_gpio.c new file +223 -0
223 lines not on this page · raw message
Signature · 1 line
2.1.0
PATCH 5/8 lpc32xx: add LPC32xx SSP support (SPI mode)
---
arch/arm/cpu/arm926ejs/lpc32xx/devices.c | 6 ++ arch/arm/include/asm/arch-lpc32xx/clk.h | 3 + arch/arm/include/asm/arch-lpc32xx/sys_proto.h | 1 + drivers/spi/Makefile | 1 + drivers/spi/lpc32xx_ssp.c | 132 ++++++++++++++++++++++++++ 5 files changed, 143 insertions(+) create mode 100644 drivers/spi/lpc32xx_ssp.c
arch/arm/cpu/arm926ejs/lpc32xx/devices.c +6 -0
@@ -61,3 +61,9 @@ void lpc32xx_i2c_init(unsigned int devnum) ctrl |=CLK_I2C2_ENABLE ;writel (ctrl, &clk->i2cclk_ctrl); } + +void lpc32xx_ssp_init (void ) +{ +/* Enable SSP0 interface */ +writel (CLK_SSP0_ENABLE_CLOCK , &clk->ssp_ctrl); +}
arch/arm/include/asm/arch-lpc32xx/clk.h +3 -0
@@ -155,6 +155,9 @@ struct clk_pm_regs {#define CLK_NAND_MLC (1 << 1)#define CLK_NAND_MLC_INT (1 << 5) +/* SSP Clock Control Register bits */ +#define CLK_SSP0_ENABLE_CLOCK (1 << 0) +unsigned int get_sys_clk_rate (void );unsigned int get_hclk_pll_rate (void );unsigned int get_hclk_clk_div (void );
arch/arm/include/asm/arch-lpc32xx/sys_proto.h +1 -0
@@ -11,5 +11,6 @@ void lpc32xx_uart_init(unsigned int uart_id);void lpc32xx_mac_init (void );void lpc32xx_mlc_nand_init (void );void lpc32xx_i2c_init (unsigned int devnum); +void lpc32xx_ssp_init (void );#endif /* _LPC32XX_SYS_PROTO_H */
drivers/spi/Makefile +1 -0
@@ -32,6 +32,7 @@ obj-$(CONFIG_EXYNOS_SPI) += exynos_spi.o obj-$(CONFIG_FTSSP010_SPI) += ftssp010_spi.o obj-$(CONFIG_ICH_SPI) += ich.o obj-$(CONFIG_KIRKWOOD_SPI) += kirkwood_spi.o +obj-$(CONFIG_LPC32XX_SSP) += lpc32xx_ssp.o obj-$(CONFIG_MPC52XX_SPI) += mpc52xx_spi.o obj-$(CONFIG_MPC8XXX_SPI) += mpc8xxx_spi.o obj-$(CONFIG_MXC_SPI) += mxc_spi.o
drivers/spi/lpc32xx_ssp.c new file +132 -0
132 lines not on this page · raw message
Signature · 1 line
2.1.0
PATCH 6/8 dtt: add ds620 support
---
drivers/hwmon/Makefile | 1 + drivers/hwmon/ds620.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ include/dtt.h | 15 ++++++------ 3 files changed, 73 insertions(+), 7 deletions(-) create mode 100644 drivers/hwmon/ds620.c
drivers/hwmon/Makefile +1 -0
@@ -15,6 +15,7 @@ obj-$(CONFIG_DTT_ADT7460) += adt7460.o obj-$(CONFIG_DTT_DS1621) += ds1621.o obj-$(CONFIG_DTT_DS1722) += ds1722.o obj-$(CONFIG_DTT_DS1775) += ds1775.o +obj-$(CONFIG_DTT_DS620) += ds620.o obj-$(CONFIG_DTT_LM63) += lm63.o obj-$(CONFIG_DTT_LM73) += lm73.o obj-$(CONFIG_DTT_LM75) += lm75.o
drivers/hwmon/ds620.c new file +64 -0
64 lines not on this page · raw message
include/dtt.h +8 -7
@@ -12,13 +12,14 @@#define _DTT_H_#if defined(CONFIG_DTT_ADM1021 ) || \ - defined(CONFIG_DTT_ADT7460 ) || \ - defined(CONFIG_DTT_DS1621 ) || \ - defined(CONFIG_DTT_DS1775 ) || \ - defined(CONFIG_DTT_LM63 ) || \ - defined(CONFIG_DTT_LM73 ) || \ - defined(CONFIG_DTT_LM75 ) || \ - defined(CONFIG_DTT_LM81 ) + defined(CONFIG_DTT_ADT7460 ) || \ + defined(CONFIG_DTT_DS1621 ) || \ + defined(CONFIG_DTT_DS1775 ) || \ + defined(CONFIG_DTT_DS620 ) || \ + defined(CONFIG_DTT_LM63 ) || \ + defined(CONFIG_DTT_LM73 ) || \ + defined(CONFIG_DTT_LM75 ) || \ + defined(CONFIG_DTT_LM81 )#define CONFIG_DTT /* We have a DTT */
Signature · 1 line
2.1.0
PATCH 7/8 lpc32xx: add lpc32xx-spl.bin boot image target
---
Makefile | 3 + scripts/Makefile.spl | 11 ++++ tools/.gitignore | 1 + tools/Makefile | 2 + tools/mklpc32xxboot.c | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 186 insertions(+) create mode 100644 tools/mklpc32xxboot.c
Makefile +3 -0
@@ -1198,6 +1198,9 @@ spl/u-boot-spl: tools prepare spl/sunxi-spl.bin: spl/u-boot-spl @: +spl/lpc32xx-spl.bin: spl/u-boot-spl + @: + tpl/u-boot-tpl.bin: tools prepare $(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all
scripts/Makefile.spl +11 -0
@@ -158,6 +158,10 @@ ALL-y += $(obj)/sunxi-spl.bin endif endif +ifdef CONFIG_LPC32XX_SPL +ALL-y += $(obj)/lpc32xx-spl.bin +endif + ifeq ($(CONFIG_SYS_SOC),"at91") ALL-y += boot.bin endif
@@ -196,6 +200,13 @@ $(obj)/sunxi-spl.bin: $(obj)/$(SPL_BIN).bin $(call if_changed,mksunxiboot) endif +ifdef CONFIG_LPC32XX_SPL +quiet_cmd_mklpc32xxboot = MKLPC32XX $@ +cmd_mklpc32xxboot = $(objtree)/tools/mklpc32xxboot $< $@ +$(obj)/lpc32xx-spl.bin: $(obj)/$(SPL_BIN).bin + $(call if_changed,mklpc32xxboot) +endif + quiet_cmd_u-boot-spl = LD $@ cmd_u-boot-spl = (cd $(obj) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) \ $(patsubst $(obj)/%,%,$(u-boot-spl-init)) --start-group \
tools/.gitignore +1 -0
@@ -11,6 +11,7 @@ /mkenvimage /mkimage /mkexynosspl +/mklpc32xxboot /mpc86x_clk /mxsboot /mksunxiboot
tools/Makefile +2 -0
@@ -135,6 +135,8 @@ HOSTCFLAGS_mxsboot.o := -pedantic hostprogs-$(CONFIG_SUNXI) += mksunxiboot +hostprogs-$(CONFIG_LPC32XX_SPL) += mklpc32xxboot + hostprogs-$(CONFIG_NETCONSOLE) += ncb hostprogs-$(CONFIG_SHA1_CHECK_UB_IMG) += ubsha1
tools/mklpc32xxboot.c new file +169 -0
169 lines not on this page · raw message
Signature · 1 line
2.1.0
PATCH 8/8 lpc32xx: add support for board work_92105
Work_92105 from Work Microwave is an LPC3250-
based board with the following features:
- 64MB SDR DRAM
- 1 GB SLC NAND, managed through MLC controller.
- Ethernet
- Ethernet + PHY SMSC8710
- I2C:
- EEPROM (24M01-compatible)
- RTC (DS1374-compatible)
- Temperature sensor (DS620)
- DACs (2 x MAX518)
- SPI (through SSP interface)
- Port expander MAX6957
- LCD display (HD44780-compatible), controlled
through the port expander and DACs
This board has SPL support, and uses the LPC32XX boot image format.
---
arch/arm/Kconfig | 6 + arch/arm/cpu/arm926ejs/lpc32xx/Makefile | 2 + arch/arm/cpu/arm926ejs/lpc32xx/clk.c | 34 ++ arch/arm/cpu/arm926ejs/lpc32xx/cpu.c | 4 + arch/arm/cpu/arm926ejs/lpc32xx/dram.c | 80 +++++ arch/arm/cpu/arm926ejs/lpc32xx/lowlevel_init.S | 45 +++ arch/arm/include/asm/arch-lpc32xx/clk.h | 5 + arch/arm/include/asm/arch-lpc32xx/sys_proto.h | 4 +- board/work-microwave/work_92105/Kconfig | 15 + board/work-microwave/work_92105/MAINTAINERS | 6 + board/work-microwave/work_92105/Makefile | 8 + board/work-microwave/work_92105/README | 23 ++ board/work-microwave/work_92105/work_92105.c | 85 +++++ .../work-microwave/work_92105/work_92105_display.c | 345 +++++++++++++++++++++ .../work-microwave/work_92105/work_92105_display.h | 14 + configs/work_92105_defconfig | 3 + drivers/hwmon/ds620.c | 1 + include/configs/work_92105.h | 257 +++++++++++++++ 18 files changed, 936 insertions(+), 1 deletion(-) create mode 100644 arch/arm/cpu/arm926ejs/lpc32xx/dram.c create mode 100644 arch/arm/cpu/arm926ejs/lpc32xx/lowlevel_init.S create mode 100644 board/work-microwave/work_92105/Kconfig create mode 100644 board/work-microwave/work_92105/MAINTAINERS create mode 100644 board/work-microwave/work_92105/Makefile create mode 100644 board/work-microwave/work_92105/README create mode 100644 board/work-microwave/work_92105/work_92105.c create mode 100644 board/work-microwave/work_92105/work_92105_display.c create mode 100644 board/work-microwave/work_92105/work_92105_display.h create mode 100644 configs/work_92105_defconfig create mode 100644 include/configs/work_92105.h
arch/arm/Kconfig +6 -0
@@ -238,6 +238,11 @@ config TARGET_DEVKIT3250 bool "Support devkit3250" select CPU_ARM926EJS +config TARGET_WORK_92105 + bool "Support work_92105" + select CPU_ARM926EJS + select SUPPORT_SPL + config TARGET_JADECPU bool "Support jadecpu" select CPU_ARM926EJS
@@ -981,6 +986,7 @@ source "board/udoo/Kconfig" source "board/vpac270/Kconfig" source "board/wandboard/Kconfig" source "board/woodburn/Kconfig" +source "board/work-microwave/work_92105/Kconfig" source "board/xaeniax/Kconfig" source "board/zipitz2/Kconfig"
arch/arm/cpu/arm926ejs/lpc32xx/Makefile +2 -0
@@ -6,3 +6,5 @@ # obj-y = cpu.o clk.o devices.o timer.o + +obj-$(CONFIG_SPL_BUILD) += dram.o lowlevel_init.o
arch/arm/cpu/arm926ejs/lpc32xx/clk.c +34 -0
@@ -98,6 +98,40 @@ unsigned int get_periph_clk_rate(void)return get_hclk_pll_rate () /get_periph_clk_div (); } +unsigned int get_sdram_clk_rate (void ) +{ +unsigned int src_clk; + +if (!(readl (&clk->pwr_ctrl) &CLK_PWR_NORMAL_RUN )) +return get_sys_clk_rate (); + + src_clk =get_hclk_pll_rate (); + +if (readl (&clk->sdramclk_ctrl) &CLK_SDRAM_DDR_SEL ) { +/* using DDR */ +switch (readl (&clk->hclkdiv_ctrl) &CLK_HCLK_DDRAM_MASK ) { +case CLK_HCLK_DDRAM_HALF : +return src_clk/2 ; +case CLK_HCLK_DDRAM_NOMINAL : +return src_clk; +default : +return 0 ; + } + }else { +/* using SDR */ +switch (readl (&clk->hclkdiv_ctrl) &CLK_HCLK_ARM_PLL_DIV_MASK ) { +case CLK_HCLK_ARM_PLL_DIV_4 : +return src_clk/4 ; +case CLK_HCLK_ARM_PLL_DIV_2 : +return src_clk/2 ; +case CLK_HCLK_ARM_PLL_DIV_1 : +return src_clk; +default : +return 0 ; + } + } +} +int get_serial_clock (void ) {return get_periph_clk_rate ();
arch/arm/cpu/arm926ejs/lpc32xx/cpu.c +4 -0
@@ -9,6 +9,7 @@#include <asm/arch/cpu.h> #include <asm/arch/clk.h> #include <asm/arch/wdt.h> +#include <asm/arch/sys_proto.h> #include <asm/io.h> static struct clk_pm_regs *clk = (struct clk_pm_regs *)CLK_PM_BASE ;
@@ -33,6 +34,9 @@ void reset_cpu(ulong addr)#if defined(CONFIG_ARCH_CPU_INIT )int arch_cpu_init (void ) { +#if defined(CONFIG_SPL_BUILD ) +ddr_init (); +#endif /* * It might be necessary to flush data cache, if U-boot is loaded * from kickstart bootloader, e.g. from S1L loader
arch/arm/cpu/arm926ejs/lpc32xx/dram.c new file +80 -0
80 lines not on this page · raw message
arch/arm/cpu/arm926ejs/lpc32xx/lowlevel_init.S new file +45 -0
45 lines not on this page · raw message
arch/arm/include/asm/arch-lpc32xx/clk.h +5 -0
@@ -71,6 +71,7 @@ struct clk_pm_regs { };/* HCLK Divider Control Register bits */ +#define CLK_HCLK_DDRAM_MASK (0x3 << 7)#define CLK_HCLK_DDRAM_HALF (0x2 << 7)#define CLK_HCLK_DDRAM_NOMINAL (0x1 << 7)#define CLK_HCLK_DDRAM_STOPPED (0x0 << 7)
@@ -158,11 +159,15 @@ struct clk_pm_regs {/* SSP Clock Control Register bits */ #define CLK_SSP0_ENABLE_CLOCK (1 << 0) +/* SDRAMCLK register bits */ +#define CLK_SDRAM_DDR_SEL (1 << 1) +unsigned int get_sys_clk_rate (void );unsigned int get_hclk_pll_rate (void );unsigned int get_hclk_clk_div (void );unsigned int get_hclk_clk_rate (void );unsigned int get_periph_clk_div (void );unsigned int get_periph_clk_rate (void ); +unsigned int get_sdram_clk_rate (void );#endif /* _LPC32XX_CLK_H */
arch/arm/include/asm/arch-lpc32xx/sys_proto.h +3 -1
@@ -12,5 +12,7 @@ void lpc32xx_mac_init(void);void lpc32xx_mlc_nand_init (void );void lpc32xx_i2c_init (unsigned int devnum);void lpc32xx_ssp_init (void ); - +#if defined(CONFIG_SPL_BUILD ) +void ddr_init (void ); +#endif #endif /* _LPC32XX_SYS_PROTO_H */
board/work-microwave/work_92105/Kconfig new file +15 -0
@@ -0,0 +1,15 @@ +if TARGET_WORK_92105 + +config SYS_BOARD + default "work_92105" + +config SYS_VENDOR + default "work-microwave" + +config SYS_SOC + default "lpc32xx" + +config SYS_CONFIG_NAME + default "work_92105" + +endif
board/work-microwave/work_92105/MAINTAINERS new file +6 -0
@@ -0,0 +1,6 @@ +WORK_92105 BOARD +M: Albert ARIBAUD <[email protected]> +S: Maintained +F: board/work-microwave/work_92105/ +F: include/configs/work_92105.h +F: configs/work_92105_defconfig
board/work-microwave/work_92105/Makefile new file +8 -0
@@ -0,0 +1,8 @@ +# +# (C) Copyright 2014 DENX Software Engineering GmbH +# Written-by: Albert ARIBAUD <[email protected]> +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y := work_92105.o work_92105_display.o
board/work-microwave/work_92105/README new file +23 -0
@@ -0,0 +1,23 @@ +Work_92105 from Work Microwave is an LPC3250- based board with the +following features: + + - 64MB SDR DRAM + - 1 GB SLC NAND, managed through MLC controller. + - Ethernet + - Ethernet + PHY SMSC8710 + - I2C: + - EEPROM (24M01-compatible) + - RTC (DS1374-compatible) + - Temperature sensor (DS620) + - DACs (2 x MAX518) + - SPI (through SSP interface) + - Port expander MAX6957 + - LCD display (HD44780-compatible), controlled + through the port expander and DACs + +This board has SPL support, and uses the LPC32XX boot image format. +Once the U-Boot target "work_92105" is built, the following two files +can be flashed: + + spl/lpc32xx-spl.bin at offset 0x0 + u-boot.bin at offset 0x40000
board/work-microwave/work_92105/work_92105.c new file +85 -0
85 lines not on this page · raw message
board/work-microwave/work_92105/work_92105_display.c new file +345 -0
345 lines not on this page · raw message
board/work-microwave/work_92105/work_92105_display.h new file +14 -0
@@ -0,0 +1,14 @@ +/* +* work_92105 display support interface +* +* (C) Copyright 2014 DENX Software Engineering GmbH +* Written-by: Albert ARIBAUD <[email protected]> +* +* The work_92105 display is a HD44780-compatible module +* controlled through a MAX6957AAX SPI port expander, two +* MAX518 I2C DACs and native LPC32xx GPO 15. +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +void work_92105_display_init (void );
configs/work_92105_defconfig new file +3 -0
@@ -0,0 +1,3 @@ +CONFIG_SPL=y ++S:CONFIG_ARM=y ++S:CONFIG_TARGET_WORK_92105=y
drivers/hwmon/ds620.c +1 -0
@@ -1,5 +1,6 @@/* * DS620 DTT support +* * (C) Copyright 2014 3ADEV <http://www.3adev.com> * Written-by: Albert ARIBAUD <[email protected]> *
include/configs/work_92105.h new file +257 -0
257 lines not on this page · raw message
Signature · 1 line
2.1.0
PATCH 7/8 lpc32xx: add lpc32xx-spl.bin boot image target
In reply to Albert ARIBAUD (3ADEV)Quoted 11 lines · On Friday, January 16, 2015 at 08:19:19 AM, Albert ARIBAUD (3ADEV) wrote:
Signed-off-by Albert ARIBAUD (3ADEV) <[email protected]>---
Makefile | 3 + scripts/Makefile.spl | 11 ++++ tools/.gitignore | 1 + tools/Makefile | 2 + tools/mklpc32xxboot.c | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 186 insertions(+) create mode 100644 tools/mklpc32xxboot.c
Hi!
Are you positive this shouldn't be part of mkimage please ?
Best regards,
Marek Vasut
PATCH 7/8 lpc32xx: add lpc32xx-spl.bin boot image target
Hello Marek,
Quoted 13 lines · Marek Vasut
Quoted 11 lines · On Friday, January 16, 2015 at 08:19:19 AM, Albert ARIBAUD (3ADEV) wrote:
Signed-off-by Albert ARIBAUD (3ADEV) <[email protected]>---
Makefile | 3 + scripts/Makefile.spl | 11 ++++ tools/.gitignore | 1 + tools/Makefile | 2 + tools/mklpc32xxboot.c | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 186 insertions(+) create mode 100644 tools/mklpc32xxboot.c
Quoted 3 lines
Hi!
Are you positive this shouldn't be part of mkimage please ?
No, I'm not positive. :)
I'll move this to mkimage in v2.
Quoted 2 lines
Best regards,
Marek Vasut
Amicalement,
Signature · 1 line
Albert.
PATCH 4/8 lpc32xx: add GPIO support
In reply to Albert ARIBAUD (3ADEV)Hi Albert,
Quoted 9 lines · On 16 January 2015 at 00:19, Albert ARIBAUD (3ADEV) <[email protected]>…
Signed-off-by Albert ARIBAUD (3ADEV) <[email protected]>---
arch/arm/include/asm/arch-lpc32xx/gpio.h | 43 ++++++ drivers/gpio/Makefile | 1 + drivers/gpio/lpc32xx_gpio.c | 223 +++++++++++++++++++++++++++++++ 3 files changed, 267 insertions(+) create mode 100644 arch/arm/include/asm/arch-lpc32xx/gpio.h create mode 100644 drivers/gpio/lpc32xx_gpio.c
This should be done with driver model these days.
Regards,
Simon
PATCH 4/8 lpc32xx: add GPIO support
Hello Simon,
Quoted 7 lines · Simon Glass
Hi Albert,
Quoted 3 lines · On 16 January 2015 at 00:19, Albert ARIBAUD (3ADEV) <[email protected]>…
Signed-off-by Albert ARIBAUD (3ADEV) <[email protected]>---
Quoted 8 lines
Quoted 6 lines
arch/arm/include/asm/arch-lpc32xx/gpio.h | 43 ++++++ drivers/gpio/Makefile | 1 + drivers/gpio/lpc32xx_gpio.c | 223 +++++++++++++++++++++++++++++++ 3 files changed, 267 insertions(+) create mode 100644 arch/arm/include/asm/arch-lpc32xx/gpio.h create mode 100644 drivers/gpio/lpc32xx_gpio.cThis should be done with driver model these days.
I'll move it to DM in v2.
Quoted 2 lines
Regards,
Simon
Amicalement,
Signature · 1 line
Albert.
PATCH 1/8 lpc32xx: add Ethernet support
In reply to Albert ARIBAUD (3ADEV)Quoted 2 lines · On Fri, Jan 16, 2015 at 1:19 AM, Albert ARIBAUD (3ADEV) <…
Signed-off-by Albert ARIBAUD (3ADEV) <[email protected]>
Looks reasonable.