* [U-Boot] [PATCH 0/3] dm: led: add BCM6358 serial leds support
@ 2017-05-03 13:09 Álvaro Fernández Rojas
2017-05-03 13:09 ` [U-Boot] [PATCH 1/3] dm: led: add BCM6358 led driver Álvaro Fernández Rojas
` (4 more replies)
0 siblings, 5 replies; 12+ messages in thread
From: Álvaro Fernández Rojas @ 2017-05-03 13:09 UTC (permalink / raw)
To: u-boot
BCM6358 supports controlling serial LEDs (74x164) both by using spi-gpio or
its LEDs controller.
Álvaro Fernández Rojas (3):
dm: led: add BCM6358 led driver
mips: bmips: add bcm6358-led driver support for BCM6358
mips: bmips: add NeufBox 4 (Sercomm) board
arch/mips/dts/brcm,bcm6358.dtsi | 9 ++
arch/mips/dts/sfr,nb4-ser.dts | 93 ++++++++++++++++
board/sfr/nb4_ser/Kconfig | 12 ++
board/sfr/nb4_ser/MAINTAINERS | 6 +
board/sfr/nb4_ser/Makefile | 5 +
board/sfr/nb4_ser/nb4-ser.c | 7 ++
configs/sfr_nb4-ser_ram_defconfig | 52 +++++++++
drivers/led/Kconfig | 7 ++
drivers/led/Makefile | 1 +
drivers/led/led_bcm6358.c | 227 ++++++++++++++++++++++++++++++++++++++
include/configs/sfr_nb4_ser.h | 20 ++++
11 files changed, 439 insertions(+)
create mode 100644 arch/mips/dts/sfr,nb4-ser.dts
create mode 100644 board/sfr/nb4_ser/Kconfig
create mode 100644 board/sfr/nb4_ser/MAINTAINERS
create mode 100644 board/sfr/nb4_ser/Makefile
create mode 100644 board/sfr/nb4_ser/nb4-ser.c
create mode 100644 configs/sfr_nb4-ser_ram_defconfig
create mode 100644 drivers/led/led_bcm6358.c
create mode 100644 include/configs/sfr_nb4_ser.h
--
2.1.4
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH 1/3] dm: led: add BCM6358 led driver
2017-05-03 13:09 [U-Boot] [PATCH 0/3] dm: led: add BCM6358 serial leds support Álvaro Fernández Rojas
@ 2017-05-03 13:09 ` Álvaro Fernández Rojas
2017-05-04 16:51 ` Simon Glass
2017-05-03 13:09 ` [U-Boot] [PATCH 2/3] mips: bmips: add bcm6358-led driver support for BCM6358 Álvaro Fernández Rojas
` (3 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Álvaro Fernández Rojas @ 2017-05-03 13:09 UTC (permalink / raw)
To: u-boot
This driver is a simplified version of linux/drivers/leds/leds-bcm6358.c
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
drivers/led/Kconfig | 7 ++
drivers/led/Makefile | 1 +
drivers/led/led_bcm6358.c | 227 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 235 insertions(+)
create mode 100644 drivers/led/led_bcm6358.c
diff --git a/drivers/led/Kconfig b/drivers/led/Kconfig
index 50b27bd..e78502b 100644
--- a/drivers/led/Kconfig
+++ b/drivers/led/Kconfig
@@ -16,6 +16,13 @@ config LED_BCM6328
This option enables support for LEDs connected to the BCM6328
LED HW controller accessed via MMIO registers.
+config LED_BCM6358
+ bool "LED Support for BCM6358"
+ depends on LED && ARCH_BMIPS
+ help
+ This option enables support for LEDs connected to the BCM6358
+ LED HW controller accessed via MMIO registers.
+
config LED_BLINK
bool "Support LED blinking"
depends on LED
diff --git a/drivers/led/Makefile b/drivers/led/Makefile
index d371ed5..9d079f8 100644
--- a/drivers/led/Makefile
+++ b/drivers/led/Makefile
@@ -7,4 +7,5 @@
obj-y += led-uclass.o
obj-$(CONFIG_LED_BCM6328) += led_bcm6328.o
+obj-$(CONFIG_LED_BCM6358) += led_bcm6358.o
obj-$(CONFIG_$(SPL_)LED_GPIO) += led_gpio.o
diff --git a/drivers/led/led_bcm6358.c b/drivers/led/led_bcm6358.c
new file mode 100644
index 0000000..f792378
--- /dev/null
+++ b/drivers/led/led_bcm6358.c
@@ -0,0 +1,227 @@
+/*
+ * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <led.h>
+#include <asm/io.h>
+#include <dm/lists.h>
+
+#define LEDS_MAX 32
+#define LEDS_WAIT 100
+
+/* LED Mode register */
+#define LED_MODE_REG 0x0
+#define LED_MODE_OFF 0
+#define LED_MODE_ON 1
+#define LED_MODE_MASK 1
+
+/* LED Control register */
+#define LED_CTRL_REG 0x4
+#define LED_CTRL_CLK_MASK 0x3
+#define LED_CTRL_CLK_1 0
+#define LED_CTRL_CLK_2 1
+#define LED_CTRL_CLK_4 2
+#define LED_CTRL_CLK_8 3
+#define LED_CTRL_POL_SHIFT 2
+#define LED_CTRL_POL_MASK (1 << LED_CTRL_POL_SHIFT)
+#define LED_CTRL_BUSY_SHIFT 3
+#define LED_CTRL_BUSY_MASK (1 << LED_CTRL_BUSY_SHIFT)
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct bcm6358_led_priv {
+ void __iomem *regs;
+ uint8_t pin;
+ bool active_low;
+};
+
+static void bcm6358_led_busy(void __iomem *regs)
+{
+ while (readl_be(regs + LED_CTRL_REG) & LED_CTRL_BUSY_MASK)
+ udelay(LEDS_WAIT);
+}
+
+static unsigned long bcm6358_led_get_mode(struct bcm6358_led_priv *priv)
+{
+ bcm6358_led_busy(priv->regs);
+
+ return (readl_be(priv->regs + LED_MODE_REG) >> priv->pin) &
+ LED_MODE_MASK;
+}
+
+static int bcm6358_led_set_mode(struct bcm6358_led_priv *priv, uint8_t mode)
+{
+ bcm6358_led_busy(priv->regs);
+
+ clrsetbits_be32(priv->regs + LED_MODE_REG,
+ (LED_MODE_MASK << priv->pin),
+ (mode << priv->pin));
+
+ return 0;
+}
+
+static enum led_state_t bcm6358_led_get_state(struct udevice *dev)
+{
+ struct bcm6358_led_priv *priv = dev_get_priv(dev);
+ enum led_state_t state = LEDST_OFF;
+
+ switch (bcm6358_led_get_mode(priv)) {
+ case LED_MODE_OFF:
+ state = (priv->active_low ? LEDST_ON : LEDST_OFF);
+ break;
+ case LED_MODE_ON:
+ state = (priv->active_low ? LEDST_OFF : LEDST_ON);
+ break;
+ }
+
+ return state;
+}
+
+static int bcm6358_led_set_state(struct udevice *dev, enum led_state_t state)
+{
+ struct bcm6358_led_priv *priv = dev_get_priv(dev);
+ unsigned long mode;
+
+ switch (state) {
+ case LEDST_OFF:
+ mode = (priv->active_low ? LED_MODE_ON : LED_MODE_OFF);
+ break;
+ case LEDST_ON:
+ mode = (priv->active_low ? LED_MODE_OFF : LED_MODE_ON);
+ break;
+ case LEDST_TOGGLE:
+ if (bcm6358_led_get_state(dev) == LEDST_OFF)
+ return bcm6358_led_set_state(dev, LEDST_ON);
+ else
+ return bcm6358_led_set_state(dev, LEDST_OFF);
+ break;
+ default:
+ return -ENOSYS;
+ }
+
+ return bcm6358_led_set_mode(priv, mode);
+}
+
+static const struct led_ops bcm6358_led_ops = {
+ .get_state = bcm6358_led_get_state,
+ .set_state = bcm6358_led_set_state,
+};
+
+static int bcm6358_led_probe(struct udevice *dev)
+{
+ struct led_uc_plat *uc_plat = dev_get_uclass_platdata(dev);
+ fdt_addr_t addr;
+ fdt_size_t size;
+
+ /* Top-level LED node */
+ if (!uc_plat->label) {
+ void __iomem *regs;
+ unsigned int clk_div;
+ u32 set_bits = 0;
+
+ addr = dev_get_addr_size_index(dev, 0, &size);
+ if (addr == FDT_ADDR_T_NONE)
+ return -EINVAL;
+
+ regs = ioremap(addr, size);
+
+ if (fdt_getprop(gd->fdt_blob, dev_of_offset(dev),
+ "brcm,clk-dat-low", NULL))
+ set_bits |= LED_CTRL_POL_MASK;
+ clk_div = fdtdec_get_uint(gd->fdt_blob, dev_of_offset(dev),
+ "brcm,clk-div", LED_CTRL_CLK_1);
+ switch (clk_div) {
+ case 8:
+ set_bits |= LED_CTRL_CLK_8;
+ break;
+ case 4:
+ set_bits |= LED_CTRL_CLK_4;
+ break;
+ case 2:
+ set_bits |= LED_CTRL_CLK_2;
+ break;
+ default:
+ set_bits |= LED_CTRL_CLK_1;
+ break;
+ }
+
+ bcm6358_led_busy(regs);
+ clrsetbits_be32(regs + LED_CTRL_REG,
+ LED_CTRL_POL_MASK | LED_CTRL_CLK_MASK,
+ set_bits);
+ } else {
+ struct bcm6358_led_priv *priv = dev_get_priv(dev);
+ unsigned int pin;
+
+ addr = dev_get_addr_size_index(dev_get_parent(dev), 0, &size);
+ if (addr == FDT_ADDR_T_NONE)
+ return -EINVAL;
+
+ pin = fdtdec_get_uint(gd->fdt_blob, dev_of_offset(dev), "reg",
+ LEDS_MAX);
+ if (pin >= LEDS_MAX)
+ return -EINVAL;
+
+ priv->regs = ioremap(addr, size);
+ priv->pin = pin;
+
+ if (fdt_getprop(gd->fdt_blob, dev_of_offset(dev), "active-low",
+ NULL))
+ priv->active_low = true;
+ }
+
+ return 0;
+}
+
+static int bcm6358_led_bind(struct udevice *parent)
+{
+ const void *blob = gd->fdt_blob;
+ int node;
+
+ for (node = fdt_first_subnode(blob, dev_of_offset(parent));
+ node > 0;
+ node = fdt_next_subnode(blob, node)) {
+ struct led_uc_plat *uc_plat;
+ struct udevice *dev;
+ const char *label;
+ int ret;
+
+ label = fdt_getprop(blob, node, "label", NULL);
+ if (!label) {
+ debug("%s: node %s has no label\n", __func__,
+ fdt_get_name(blob, node, NULL));
+ return -EINVAL;
+ }
+
+ ret = device_bind_driver_to_node(parent, "bcm6358-led",
+ fdt_get_name(blob, node, NULL),
+ node, &dev);
+ if (ret)
+ return ret;
+
+ uc_plat = dev_get_uclass_platdata(dev);
+ uc_plat->label = label;
+ }
+
+ return 0;
+}
+
+static const struct udevice_id bcm6358_led_ids[] = {
+ { .compatible = "brcm,bcm6358-leds" },
+ { /* sentinel */ }
+};
+
+U_BOOT_DRIVER(bcm6358_led) = {
+ .name = "bcm6358-led",
+ .id = UCLASS_LED,
+ .of_match = bcm6358_led_ids,
+ .bind = bcm6358_led_bind,
+ .probe = bcm6358_led_probe,
+ .priv_auto_alloc_size = sizeof(struct bcm6358_led_priv),
+ .ops = &bcm6358_led_ops,
+};
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH 2/3] mips: bmips: add bcm6358-led driver support for BCM6358
2017-05-03 13:09 [U-Boot] [PATCH 0/3] dm: led: add BCM6358 serial leds support Álvaro Fernández Rojas
2017-05-03 13:09 ` [U-Boot] [PATCH 1/3] dm: led: add BCM6358 led driver Álvaro Fernández Rojas
@ 2017-05-03 13:09 ` Álvaro Fernández Rojas
2017-05-04 16:51 ` Simon Glass
2017-05-03 13:09 ` [U-Boot] [PATCH 3/3] mips: bmips: add NeufBox 4 (Sercomm) board Álvaro Fernández Rojas
` (2 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Álvaro Fernández Rojas @ 2017-05-03 13:09 UTC (permalink / raw)
To: u-boot
This driver can control up to 32 serial leds.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
arch/mips/dts/brcm,bcm6358.dtsi | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/mips/dts/brcm,bcm6358.dtsi b/arch/mips/dts/brcm,bcm6358.dtsi
index 4c94555..edd0002 100644
--- a/arch/mips/dts/brcm,bcm6358.dtsi
+++ b/arch/mips/dts/brcm,bcm6358.dtsi
@@ -92,6 +92,15 @@
status = "disabled";
};
+ leds: led-controller at fffe00d0 {
+ compatible = "brcm,bcm6358-leds";
+ reg = <0xfffe00d0 0x8>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ status = "disabled";
+ };
+
uart0: serial at fffe0100 {
compatible = "brcm,bcm6345-uart";
reg = <0xfffe0100 0x18>;
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH 3/3] mips: bmips: add NeufBox 4 (Sercomm) board
2017-05-03 13:09 [U-Boot] [PATCH 0/3] dm: led: add BCM6358 serial leds support Álvaro Fernández Rojas
2017-05-03 13:09 ` [U-Boot] [PATCH 1/3] dm: led: add BCM6358 led driver Álvaro Fernández Rojas
2017-05-03 13:09 ` [U-Boot] [PATCH 2/3] mips: bmips: add bcm6358-led driver support for BCM6358 Álvaro Fernández Rojas
@ 2017-05-03 13:09 ` Álvaro Fernández Rojas
2017-05-04 16:51 ` Simon Glass
2017-05-07 18:11 ` [U-Boot] [PATCH v2 0/3] dm: led: add BCM6358 serial leds support Álvaro Fernández Rojas
2017-05-10 14:19 ` [U-Boot] [PATCH 0/3] dm: led: add BCM6358 serial leds support Daniel Schwierzeck
4 siblings, 1 reply; 12+ messages in thread
From: Álvaro Fernández Rojas @ 2017-05-03 13:09 UTC (permalink / raw)
To: u-boot
This serves as an example for bcm6358-leds.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
arch/mips/dts/sfr,nb4-ser.dts | 93 +++++++++++++++++++++++++++++++++++++++
board/sfr/nb4_ser/Kconfig | 12 +++++
board/sfr/nb4_ser/MAINTAINERS | 6 +++
board/sfr/nb4_ser/Makefile | 5 +++
board/sfr/nb4_ser/nb4-ser.c | 7 +++
configs/sfr_nb4-ser_ram_defconfig | 52 ++++++++++++++++++++++
include/configs/sfr_nb4_ser.h | 20 +++++++++
7 files changed, 195 insertions(+)
create mode 100644 arch/mips/dts/sfr,nb4-ser.dts
create mode 100644 board/sfr/nb4_ser/Kconfig
create mode 100644 board/sfr/nb4_ser/MAINTAINERS
create mode 100644 board/sfr/nb4_ser/Makefile
create mode 100644 board/sfr/nb4_ser/nb4-ser.c
create mode 100644 configs/sfr_nb4-ser_ram_defconfig
create mode 100644 include/configs/sfr_nb4_ser.h
diff --git a/arch/mips/dts/sfr,nb4-ser.dts b/arch/mips/dts/sfr,nb4-ser.dts
new file mode 100644
index 0000000..f2092e9
--- /dev/null
+++ b/arch/mips/dts/sfr,nb4-ser.dts
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+/dts-v1/;
+
+#include "brcm,bcm6358.dtsi"
+
+/ {
+ model = "SFR NeufBox 4 (Sercomm) Board";
+ compatible = "sfr,nb4-ser", "brcm,bcm6358";
+
+ aliases {
+ serial0 = &uart0;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+
+ traffic_white {
+ label = "NB4-SER:white:traffic";
+ gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+ };
+
+ service_blue {
+ label = "NB4-SER:blue:service";
+ gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
+ };
+
+ wifi_white {
+ label = "NB4-SER:white:wifi";
+ gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
+ };
+
+ service_red {
+ label = "NB4-SER:red:service";
+ gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
+ };
+
+ service_green {
+ label = "NB4-SER:green:service";
+ gpios = <&gpio0 30 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&gpio0 {
+ status = "okay";
+};
+
+&leds {
+ status = "okay";
+ brcm,clk-div = <1>;
+
+ led at 0 {
+ reg = <0>;
+ active-low;
+ label = "NB4-SER:white:alarm";
+ };
+
+ led at 2 {
+ reg = <2>;
+ active-low;
+ label = "NB4-SER:white:tv";
+ };
+
+ led at 3 {
+ reg = <3>;
+ active-low;
+ label = "NB4-SER:white:tel";
+ };
+
+ led at 4 {
+ reg = <4>;
+ active-low;
+ label = "NB4-SER:white:adsl";
+ };
+};
+
+&pflash {
+ status = "okay";
+};
+
+&uart0 {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
diff --git a/board/sfr/nb4_ser/Kconfig b/board/sfr/nb4_ser/Kconfig
new file mode 100644
index 0000000..78aefb5
--- /dev/null
+++ b/board/sfr/nb4_ser/Kconfig
@@ -0,0 +1,12 @@
+if BOARD_SFR_NB4_SER
+
+config SYS_BOARD
+ default "nb4_ser"
+
+config SYS_VENDOR
+ default "sfr"
+
+config SYS_CONFIG_NAME
+ default "sfr_nb4_ser"
+
+endif
diff --git a/board/sfr/nb4_ser/MAINTAINERS b/board/sfr/nb4_ser/MAINTAINERS
new file mode 100644
index 0000000..bf80267
--- /dev/null
+++ b/board/sfr/nb4_ser/MAINTAINERS
@@ -0,0 +1,6 @@
+SFR NEUFBOX 4 SERCOMM BOARD
+M: Álvaro Fernández Rojas <noltari@gmail.com>
+S: Maintained
+F: board/sfr/nb4_ser/
+F: include/configs/sfr_nb4_ser.h
+F: configs/sfr_nb4-ser_ram_defconfig
diff --git a/board/sfr/nb4_ser/Makefile b/board/sfr/nb4_ser/Makefile
new file mode 100644
index 0000000..f3b1404
--- /dev/null
+++ b/board/sfr/nb4_ser/Makefile
@@ -0,0 +1,5 @@
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+obj-y += nb4-ser.o
diff --git a/board/sfr/nb4_ser/nb4-ser.c b/board/sfr/nb4_ser/nb4-ser.c
new file mode 100644
index 0000000..d181ca6
--- /dev/null
+++ b/board/sfr/nb4_ser/nb4-ser.c
@@ -0,0 +1,7 @@
+/*
+ * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
diff --git a/configs/sfr_nb4-ser_ram_defconfig b/configs/sfr_nb4-ser_ram_defconfig
new file mode 100644
index 0000000..8b885e3
--- /dev/null
+++ b/configs/sfr_nb4-ser_ram_defconfig
@@ -0,0 +1,52 @@
+CONFIG_ARCH_BMIPS=y
+CONFIG_BAUDRATE=115200
+CONFIG_BCM6345_GPIO=y
+CONFIG_BCM6345_SERIAL=y
+CONFIG_BMIPS_BOOT_RAM=y
+CONFIG_BOARD_SFR_NB4_SER=y
+CONFIG_CFI_FLASH=y
+# CONFIG_CMD_BOOTD is not set
+CONFIG_CMD_BOOTM=y
+CONFIG_CMD_CPU=y
+# CONFIG_CMD_CRC32 is not set
+# CONFIG_CMD_EDITENV is not set
+# CONFIG_CMD_ELF is not set
+# CONFIG_CMD_ENV_EXISTS is not set
+# CONFIG_CMD_EXPORTENV is not set
+CONFIG_CMD_FLASH=y
+# CONFIG_CMD_FPGA is not set
+# CONFIG_CMD_GPIO is not set
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_IMPORTENV is not set
+CONFIG_CMD_LED=y
+CONFIG_CMD_LICENSE=y
+CONFIG_CMD_LOADB=y
+# CONFIG_CMD_LOADS is not set
+CONFIG_CMD_MEMINFO=y
+# CONFIG_CMD_MISC is not set
+# CONFIG_CMD_NET is not set
+# CONFIG_CMD_NFS is not set
+# CONFIG_CMD_SAVEENV is not set
+# CONFIG_CMD_XIMG is not set
+CONFIG_DEFAULT_DEVICE_TREE="sfr,nb4-ser"
+CONFIG_DISPLAY_CPUINFO=y
+# CONFIG_DM_DEVICE_REMOVE is not set
+CONFIG_DM_GPIO=y
+CONFIG_DM_SERIAL=y
+CONFIG_HUSH_PARSER=y
+CONFIG_LED=y
+CONFIG_LED_BCM6358=y
+CONFIG_LED_GPIO=y
+CONFIG_MIPS=y
+# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
+# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
+CONFIG_MIPS_BOOT_FDT=y
+CONFIG_MTD=y
+CONFIG_MTD_DEVICE=y
+CONFIG_MTD_NOR_FLASH=y
+CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_SOC_BMIPS_BCM6358=y
+# CONFIG_SPL_SERIAL_PRESENT is not set
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_SYS_PROMPT="NB4-SER # "
+CONFIG_SYS_TEXT_BASE=0x80010000
diff --git a/include/configs/sfr_nb4_ser.h b/include/configs/sfr_nb4_ser.h
new file mode 100644
index 0000000..ab64518
--- /dev/null
+++ b/include/configs/sfr_nb4_ser.h
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <configs/bmips_common.h>
+#include <configs/bmips_bcm6358.h>
+
+#define CONFIG_REMAKE_ELF
+
+#define CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_SIZE (8 * 1024)
+
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_SYS_LONGHELP
+
+#define CONFIG_SYS_FLASH_CFI 1
+#define CONFIG_FLASH_CFI_DRIVER 1
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH 1/3] dm: led: add BCM6358 led driver
2017-05-03 13:09 ` [U-Boot] [PATCH 1/3] dm: led: add BCM6358 led driver Álvaro Fernández Rojas
@ 2017-05-04 16:51 ` Simon Glass
0 siblings, 0 replies; 12+ messages in thread
From: Simon Glass @ 2017-05-04 16:51 UTC (permalink / raw)
To: u-boot
On 3 May 2017 at 07:09, Álvaro Fernández Rojas <noltari@gmail.com> wrote:
> This driver is a simplified version of linux/drivers/leds/leds-bcm6358.c
>
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
> drivers/led/Kconfig | 7 ++
> drivers/led/Makefile | 1 +
> drivers/led/led_bcm6358.c | 227 ++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 235 insertions(+)
> create mode 100644 drivers/led/led_bcm6358.c
Similar comments to the earlier LED driver.
Reviewed-by: Simon Glass <sjg@chromium.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH 2/3] mips: bmips: add bcm6358-led driver support for BCM6358
2017-05-03 13:09 ` [U-Boot] [PATCH 2/3] mips: bmips: add bcm6358-led driver support for BCM6358 Álvaro Fernández Rojas
@ 2017-05-04 16:51 ` Simon Glass
0 siblings, 0 replies; 12+ messages in thread
From: Simon Glass @ 2017-05-04 16:51 UTC (permalink / raw)
To: u-boot
On 3 May 2017 at 07:09, Álvaro Fernández Rojas <noltari@gmail.com> wrote:
> This driver can control up to 32 serial leds.
>
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
> arch/mips/dts/brcm,bcm6358.dtsi | 9 +++++++++
> 1 file changed, 9 insertions(+)
Reviewed-by: Simon Glass <sjg@chromium.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH 3/3] mips: bmips: add NeufBox 4 (Sercomm) board
2017-05-03 13:09 ` [U-Boot] [PATCH 3/3] mips: bmips: add NeufBox 4 (Sercomm) board Álvaro Fernández Rojas
@ 2017-05-04 16:51 ` Simon Glass
0 siblings, 0 replies; 12+ messages in thread
From: Simon Glass @ 2017-05-04 16:51 UTC (permalink / raw)
To: u-boot
On 3 May 2017 at 07:09, Álvaro Fernández Rojas <noltari@gmail.com> wrote:
> This serves as an example for bcm6358-leds.
>
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
> arch/mips/dts/sfr,nb4-ser.dts | 93 +++++++++++++++++++++++++++++++++++++++
> board/sfr/nb4_ser/Kconfig | 12 +++++
> board/sfr/nb4_ser/MAINTAINERS | 6 +++
> board/sfr/nb4_ser/Makefile | 5 +++
> board/sfr/nb4_ser/nb4-ser.c | 7 +++
> configs/sfr_nb4-ser_ram_defconfig | 52 ++++++++++++++++++++++
> include/configs/sfr_nb4_ser.h | 20 +++++++++
> 7 files changed, 195 insertions(+)
> create mode 100644 arch/mips/dts/sfr,nb4-ser.dts
> create mode 100644 board/sfr/nb4_ser/Kconfig
> create mode 100644 board/sfr/nb4_ser/MAINTAINERS
> create mode 100644 board/sfr/nb4_ser/Makefile
> create mode 100644 board/sfr/nb4_ser/nb4-ser.c
> create mode 100644 configs/sfr_nb4-ser_ram_defconfig
> create mode 100644 include/configs/sfr_nb4_ser.h
Reviewed-by: Simon Glass <sjg@chromium.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v2 0/3] dm: led: add BCM6358 serial leds support
2017-05-03 13:09 [U-Boot] [PATCH 0/3] dm: led: add BCM6358 serial leds support Álvaro Fernández Rojas
` (2 preceding siblings ...)
2017-05-03 13:09 ` [U-Boot] [PATCH 3/3] mips: bmips: add NeufBox 4 (Sercomm) board Álvaro Fernández Rojas
@ 2017-05-07 18:11 ` Álvaro Fernández Rojas
2017-05-07 18:11 ` [U-Boot] [PATCH v2 1/3] dm: led: add BCM6358 led driver Álvaro Fernández Rojas
` (2 more replies)
2017-05-10 14:19 ` [U-Boot] [PATCH 0/3] dm: led: add BCM6358 serial leds support Daniel Schwierzeck
4 siblings, 3 replies; 12+ messages in thread
From: Álvaro Fernández Rojas @ 2017-05-07 18:11 UTC (permalink / raw)
To: u-boot
BCM6358 supports controlling serial LEDs (74x164) both by using spi-gpio or
its LEDs controller.
v2: Introduce changes suggested by Simon Glass
Álvaro Fernández Rojas (3):
dm: led: add BCM6358 led driver
mips: bmips: add bcm6358-led driver support for BCM6358
mips: bmips: add NeufBox 4 (Sercomm) board
arch/mips/dts/brcm,bcm6358.dtsi | 9 +
arch/mips/dts/sfr,nb4-ser.dts | 93 ++++++++++
board/sfr/nb4_ser/Kconfig | 12 ++
board/sfr/nb4_ser/MAINTAINERS | 6 +
board/sfr/nb4_ser/Makefile | 5 +
board/sfr/nb4_ser/nb4-ser.c | 7 +
configs/sfr_nb4-ser_ram_defconfig | 52 ++++++
doc/device-tree-bindings/leds/leds-bcm6358.txt | 141 +++++++++++++++
drivers/led/Kconfig | 8 +
drivers/led/Makefile | 1 +
drivers/led/led_bcm6358.c | 227 +++++++++++++++++++++++++
include/configs/sfr_nb4_ser.h | 20 +++
12 files changed, 581 insertions(+)
create mode 100644 arch/mips/dts/sfr,nb4-ser.dts
create mode 100644 board/sfr/nb4_ser/Kconfig
create mode 100644 board/sfr/nb4_ser/MAINTAINERS
create mode 100644 board/sfr/nb4_ser/Makefile
create mode 100644 board/sfr/nb4_ser/nb4-ser.c
create mode 100644 configs/sfr_nb4-ser_ram_defconfig
create mode 100644 doc/device-tree-bindings/leds/leds-bcm6358.txt
create mode 100644 drivers/led/led_bcm6358.c
create mode 100644 include/configs/sfr_nb4_ser.h
--
2.1.4
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v2 1/3] dm: led: add BCM6358 led driver
2017-05-07 18:11 ` [U-Boot] [PATCH v2 0/3] dm: led: add BCM6358 serial leds support Álvaro Fernández Rojas
@ 2017-05-07 18:11 ` Álvaro Fernández Rojas
2017-05-07 18:11 ` [U-Boot] [PATCH v2 2/3] mips: bmips: add bcm6358-led driver support for BCM6358 Álvaro Fernández Rojas
2017-05-07 18:11 ` [U-Boot] [PATCH v2 3/3] mips: bmips: add NeufBox 4 (Sercomm) board Álvaro Fernández Rojas
2 siblings, 0 replies; 12+ messages in thread
From: Álvaro Fernández Rojas @ 2017-05-07 18:11 UTC (permalink / raw)
To: u-boot
This driver is a simplified version of linux/drivers/leds/leds-bcm6358.c
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---
v2: Introduce changes suggested by Simon Glass:
- Add DT binding file.
- Add features description.
- Switch to fdtdec_get_bool().
doc/device-tree-bindings/leds/leds-bcm6358.txt | 141 +++++++++++++++
drivers/led/Kconfig | 8 +
drivers/led/Makefile | 1 +
drivers/led/led_bcm6358.c | 227 +++++++++++++++++++++++++
4 files changed, 377 insertions(+)
create mode 100644 doc/device-tree-bindings/leds/leds-bcm6358.txt
create mode 100644 drivers/led/led_bcm6358.c
diff --git a/doc/device-tree-bindings/leds/leds-bcm6358.txt b/doc/device-tree-bindings/leds/leds-bcm6358.txt
new file mode 100644
index 0000000..e394d9e
--- /dev/null
+++ b/doc/device-tree-bindings/leds/leds-bcm6358.txt
@@ -0,0 +1,141 @@
+LEDs connected to Broadcom BCM6358 controller
+
+This controller is present on BCM6358 and BCM6368.
+In these SoCs there are Serial LEDs (LEDs connected to a 74x164 controller),
+which can either be controlled by software (exporting the 74x164 as spi-gpio.
+See Documentation/devicetree/bindings/gpio/gpio-74x164.txt), or
+by hardware using this driver.
+
+Required properties:
+ - compatible : should be "brcm,bcm6358-leds".
+ - #address-cells : must be 1.
+ - #size-cells : must be 0.
+ - reg : BCM6358 LED controller address and size.
+
+Optional properties:
+ - brcm,clk-div : SCK signal divider. Possible values are 1, 2, 4 and 8.
+ Default : 1
+ - brcm,clk-dat-low : Boolean, makes clock and data signals active low.
+ Default : false
+
+Each LED is represented as a sub-node of the brcm,bcm6358-leds device.
+
+LED sub-node required properties:
+ - reg : LED pin number (only LEDs 0 to 31 are valid).
+
+LED sub-node optional properties:
+ - label : see Documentation/devicetree/bindings/leds/common.txt
+ - active-low : Boolean, makes LED active low.
+ Default : false
+
+Examples:
+Scenario 1 : BCM6358
+ leds0: led-controller at fffe00d0 {
+ compatible = "brcm,bcm6358-leds";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0xfffe00d0 0x8>;
+
+ alarm_white {
+ reg = <0>;
+ active-low;
+ label = "white:alarm";
+ };
+ tv_white {
+ reg = <2>;
+ active-low;
+ label = "white:tv";
+ };
+ tel_white {
+ reg = <3>;
+ active-low;
+ label = "white:tel";
+ };
+ adsl_white {
+ reg = <4>;
+ active-low;
+ label = "white:adsl";
+ };
+ };
+
+Scenario 2 : BCM6368
+ leds0: led-controller at 100000d0 {
+ compatible = "brcm,bcm6358-leds";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0x100000d0 0x8>;
+ brcm,pol-low;
+ brcm,clk-div = <4>;
+
+ power_red {
+ reg = <0>;
+ active-low;
+ label = "red:power";
+ };
+ power_green {
+ reg = <1>;
+ active-low;
+ label = "green:power";
+ default-state = "on";
+ };
+ power_blue {
+ reg = <2>;
+ label = "blue:power";
+ };
+ broadband_red {
+ reg = <3>;
+ active-low;
+ label = "red:broadband";
+ };
+ broadband_green {
+ reg = <4>;
+ label = "green:broadband";
+ };
+ broadband_blue {
+ reg = <5>;
+ active-low;
+ label = "blue:broadband";
+ };
+ wireless_red {
+ reg = <6>;
+ active-low;
+ label = "red:wireless";
+ };
+ wireless_green {
+ reg = <7>;
+ active-low;
+ label = "green:wireless";
+ };
+ wireless_blue {
+ reg = <8>;
+ label = "blue:wireless";
+ };
+ phone_red {
+ reg = <9>;
+ active-low;
+ label = "red:phone";
+ };
+ phone_green {
+ reg = <10>;
+ active-low;
+ label = "green:phone";
+ };
+ phone_blue {
+ reg = <11>;
+ label = "blue:phone";
+ };
+ upgrading_red {
+ reg = <12>;
+ active-low;
+ label = "red:upgrading";
+ };
+ upgrading_green {
+ reg = <13>;
+ active-low;
+ label = "green:upgrading";
+ };
+ upgrading_blue {
+ reg = <14>;
+ label = "blue:upgrading";
+ };
+ };
diff --git a/drivers/led/Kconfig b/drivers/led/Kconfig
index dc19f4f..5da5c4a 100644
--- a/drivers/led/Kconfig
+++ b/drivers/led/Kconfig
@@ -20,6 +20,14 @@ config LED_BCM6328
means that if one LED is set to blink at 100ms and then a different
LED is set to blink at 200ms, both will blink at 200ms.
+config LED_BCM6358
+ bool "LED Support for BCM6358"
+ depends on LED && ARCH_BMIPS
+ help
+ This option enables support for LEDs connected to the BCM6358
+ LED HW controller accessed via MMIO registers.
+ HW has no blinking capabilities and up to 32 LEDs can be controlled.
+
config LED_BLINK
bool "Support LED blinking"
depends on LED
diff --git a/drivers/led/Makefile b/drivers/led/Makefile
index d371ed5..9d079f8 100644
--- a/drivers/led/Makefile
+++ b/drivers/led/Makefile
@@ -7,4 +7,5 @@
obj-y += led-uclass.o
obj-$(CONFIG_LED_BCM6328) += led_bcm6328.o
+obj-$(CONFIG_LED_BCM6358) += led_bcm6358.o
obj-$(CONFIG_$(SPL_)LED_GPIO) += led_gpio.o
diff --git a/drivers/led/led_bcm6358.c b/drivers/led/led_bcm6358.c
new file mode 100644
index 0000000..11caecd
--- /dev/null
+++ b/drivers/led/led_bcm6358.c
@@ -0,0 +1,227 @@
+/*
+ * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <led.h>
+#include <asm/io.h>
+#include <dm/lists.h>
+
+#define LEDS_MAX 32
+#define LEDS_WAIT 100
+
+/* LED Mode register */
+#define LED_MODE_REG 0x0
+#define LED_MODE_OFF 0
+#define LED_MODE_ON 1
+#define LED_MODE_MASK 1
+
+/* LED Control register */
+#define LED_CTRL_REG 0x4
+#define LED_CTRL_CLK_MASK 0x3
+#define LED_CTRL_CLK_1 0
+#define LED_CTRL_CLK_2 1
+#define LED_CTRL_CLK_4 2
+#define LED_CTRL_CLK_8 3
+#define LED_CTRL_POL_SHIFT 2
+#define LED_CTRL_POL_MASK (1 << LED_CTRL_POL_SHIFT)
+#define LED_CTRL_BUSY_SHIFT 3
+#define LED_CTRL_BUSY_MASK (1 << LED_CTRL_BUSY_SHIFT)
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct bcm6358_led_priv {
+ void __iomem *regs;
+ uint8_t pin;
+ bool active_low;
+};
+
+static void bcm6358_led_busy(void __iomem *regs)
+{
+ while (readl_be(regs + LED_CTRL_REG) & LED_CTRL_BUSY_MASK)
+ udelay(LEDS_WAIT);
+}
+
+static unsigned long bcm6358_led_get_mode(struct bcm6358_led_priv *priv)
+{
+ bcm6358_led_busy(priv->regs);
+
+ return (readl_be(priv->regs + LED_MODE_REG) >> priv->pin) &
+ LED_MODE_MASK;
+}
+
+static int bcm6358_led_set_mode(struct bcm6358_led_priv *priv, uint8_t mode)
+{
+ bcm6358_led_busy(priv->regs);
+
+ clrsetbits_be32(priv->regs + LED_MODE_REG,
+ (LED_MODE_MASK << priv->pin),
+ (mode << priv->pin));
+
+ return 0;
+}
+
+static enum led_state_t bcm6358_led_get_state(struct udevice *dev)
+{
+ struct bcm6358_led_priv *priv = dev_get_priv(dev);
+ enum led_state_t state = LEDST_OFF;
+
+ switch (bcm6358_led_get_mode(priv)) {
+ case LED_MODE_OFF:
+ state = (priv->active_low ? LEDST_ON : LEDST_OFF);
+ break;
+ case LED_MODE_ON:
+ state = (priv->active_low ? LEDST_OFF : LEDST_ON);
+ break;
+ }
+
+ return state;
+}
+
+static int bcm6358_led_set_state(struct udevice *dev, enum led_state_t state)
+{
+ struct bcm6358_led_priv *priv = dev_get_priv(dev);
+ unsigned long mode;
+
+ switch (state) {
+ case LEDST_OFF:
+ mode = (priv->active_low ? LED_MODE_ON : LED_MODE_OFF);
+ break;
+ case LEDST_ON:
+ mode = (priv->active_low ? LED_MODE_OFF : LED_MODE_ON);
+ break;
+ case LEDST_TOGGLE:
+ if (bcm6358_led_get_state(dev) == LEDST_OFF)
+ return bcm6358_led_set_state(dev, LEDST_ON);
+ else
+ return bcm6358_led_set_state(dev, LEDST_OFF);
+ break;
+ default:
+ return -ENOSYS;
+ }
+
+ return bcm6358_led_set_mode(priv, mode);
+}
+
+static const struct led_ops bcm6358_led_ops = {
+ .get_state = bcm6358_led_get_state,
+ .set_state = bcm6358_led_set_state,
+};
+
+static int bcm6358_led_probe(struct udevice *dev)
+{
+ struct led_uc_plat *uc_plat = dev_get_uclass_platdata(dev);
+ fdt_addr_t addr;
+ fdt_size_t size;
+
+ /* Top-level LED node */
+ if (!uc_plat->label) {
+ void __iomem *regs;
+ unsigned int clk_div;
+ u32 set_bits = 0;
+
+ addr = dev_get_addr_size_index(dev, 0, &size);
+ if (addr == FDT_ADDR_T_NONE)
+ return -EINVAL;
+
+ regs = ioremap(addr, size);
+
+ if (fdtdec_get_bool(gd->fdt_blob, dev_of_offset(dev),
+ "brcm,clk-dat-low"))
+ set_bits |= LED_CTRL_POL_MASK;
+ clk_div = fdtdec_get_uint(gd->fdt_blob, dev_of_offset(dev),
+ "brcm,clk-div", LED_CTRL_CLK_1);
+ switch (clk_div) {
+ case 8:
+ set_bits |= LED_CTRL_CLK_8;
+ break;
+ case 4:
+ set_bits |= LED_CTRL_CLK_4;
+ break;
+ case 2:
+ set_bits |= LED_CTRL_CLK_2;
+ break;
+ default:
+ set_bits |= LED_CTRL_CLK_1;
+ break;
+ }
+
+ bcm6358_led_busy(regs);
+ clrsetbits_be32(regs + LED_CTRL_REG,
+ LED_CTRL_POL_MASK | LED_CTRL_CLK_MASK,
+ set_bits);
+ } else {
+ struct bcm6358_led_priv *priv = dev_get_priv(dev);
+ unsigned int pin;
+
+ addr = dev_get_addr_size_index(dev_get_parent(dev), 0, &size);
+ if (addr == FDT_ADDR_T_NONE)
+ return -EINVAL;
+
+ pin = fdtdec_get_uint(gd->fdt_blob, dev_of_offset(dev), "reg",
+ LEDS_MAX);
+ if (pin >= LEDS_MAX)
+ return -EINVAL;
+
+ priv->regs = ioremap(addr, size);
+ priv->pin = pin;
+
+ if (fdtdec_get_bool(gd->fdt_blob, dev_of_offset(dev),
+ "active-low"))
+ priv->active_low = true;
+ }
+
+ return 0;
+}
+
+static int bcm6358_led_bind(struct udevice *parent)
+{
+ const void *blob = gd->fdt_blob;
+ int node;
+
+ for (node = fdt_first_subnode(blob, dev_of_offset(parent));
+ node > 0;
+ node = fdt_next_subnode(blob, node)) {
+ struct led_uc_plat *uc_plat;
+ struct udevice *dev;
+ const char *label;
+ int ret;
+
+ label = fdt_getprop(blob, node, "label", NULL);
+ if (!label) {
+ debug("%s: node %s has no label\n", __func__,
+ fdt_get_name(blob, node, NULL));
+ return -EINVAL;
+ }
+
+ ret = device_bind_driver_to_node(parent, "bcm6358-led",
+ fdt_get_name(blob, node, NULL),
+ node, &dev);
+ if (ret)
+ return ret;
+
+ uc_plat = dev_get_uclass_platdata(dev);
+ uc_plat->label = label;
+ }
+
+ return 0;
+}
+
+static const struct udevice_id bcm6358_led_ids[] = {
+ { .compatible = "brcm,bcm6358-leds" },
+ { /* sentinel */ }
+};
+
+U_BOOT_DRIVER(bcm6358_led) = {
+ .name = "bcm6358-led",
+ .id = UCLASS_LED,
+ .of_match = bcm6358_led_ids,
+ .bind = bcm6358_led_bind,
+ .probe = bcm6358_led_probe,
+ .priv_auto_alloc_size = sizeof(struct bcm6358_led_priv),
+ .ops = &bcm6358_led_ops,
+};
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v2 2/3] mips: bmips: add bcm6358-led driver support for BCM6358
2017-05-07 18:11 ` [U-Boot] [PATCH v2 0/3] dm: led: add BCM6358 serial leds support Álvaro Fernández Rojas
2017-05-07 18:11 ` [U-Boot] [PATCH v2 1/3] dm: led: add BCM6358 led driver Álvaro Fernández Rojas
@ 2017-05-07 18:11 ` Álvaro Fernández Rojas
2017-05-07 18:11 ` [U-Boot] [PATCH v2 3/3] mips: bmips: add NeufBox 4 (Sercomm) board Álvaro Fernández Rojas
2 siblings, 0 replies; 12+ messages in thread
From: Álvaro Fernández Rojas @ 2017-05-07 18:11 UTC (permalink / raw)
To: u-boot
This driver can control up to 32 serial leds.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---
v2: no changes.
arch/mips/dts/brcm,bcm6358.dtsi | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/mips/dts/brcm,bcm6358.dtsi b/arch/mips/dts/brcm,bcm6358.dtsi
index 4c94555..edd0002 100644
--- a/arch/mips/dts/brcm,bcm6358.dtsi
+++ b/arch/mips/dts/brcm,bcm6358.dtsi
@@ -92,6 +92,15 @@
status = "disabled";
};
+ leds: led-controller at fffe00d0 {
+ compatible = "brcm,bcm6358-leds";
+ reg = <0xfffe00d0 0x8>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ status = "disabled";
+ };
+
uart0: serial at fffe0100 {
compatible = "brcm,bcm6345-uart";
reg = <0xfffe0100 0x18>;
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH v2 3/3] mips: bmips: add NeufBox 4 (Sercomm) board
2017-05-07 18:11 ` [U-Boot] [PATCH v2 0/3] dm: led: add BCM6358 serial leds support Álvaro Fernández Rojas
2017-05-07 18:11 ` [U-Boot] [PATCH v2 1/3] dm: led: add BCM6358 led driver Álvaro Fernández Rojas
2017-05-07 18:11 ` [U-Boot] [PATCH v2 2/3] mips: bmips: add bcm6358-led driver support for BCM6358 Álvaro Fernández Rojas
@ 2017-05-07 18:11 ` Álvaro Fernández Rojas
2 siblings, 0 replies; 12+ messages in thread
From: Álvaro Fernández Rojas @ 2017-05-07 18:11 UTC (permalink / raw)
To: u-boot
This serves as an example for bcm6358-leds.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
---
v2: no changes.
arch/mips/dts/sfr,nb4-ser.dts | 93 +++++++++++++++++++++++++++++++++++++++
board/sfr/nb4_ser/Kconfig | 12 +++++
board/sfr/nb4_ser/MAINTAINERS | 6 +++
board/sfr/nb4_ser/Makefile | 5 +++
board/sfr/nb4_ser/nb4-ser.c | 7 +++
configs/sfr_nb4-ser_ram_defconfig | 52 ++++++++++++++++++++++
include/configs/sfr_nb4_ser.h | 20 +++++++++
7 files changed, 195 insertions(+)
create mode 100644 arch/mips/dts/sfr,nb4-ser.dts
create mode 100644 board/sfr/nb4_ser/Kconfig
create mode 100644 board/sfr/nb4_ser/MAINTAINERS
create mode 100644 board/sfr/nb4_ser/Makefile
create mode 100644 board/sfr/nb4_ser/nb4-ser.c
create mode 100644 configs/sfr_nb4-ser_ram_defconfig
create mode 100644 include/configs/sfr_nb4_ser.h
diff --git a/arch/mips/dts/sfr,nb4-ser.dts b/arch/mips/dts/sfr,nb4-ser.dts
new file mode 100644
index 0000000..f2092e9
--- /dev/null
+++ b/arch/mips/dts/sfr,nb4-ser.dts
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+/dts-v1/;
+
+#include "brcm,bcm6358.dtsi"
+
+/ {
+ model = "SFR NeufBox 4 (Sercomm) Board";
+ compatible = "sfr,nb4-ser", "brcm,bcm6358";
+
+ aliases {
+ serial0 = &uart0;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+
+ traffic_white {
+ label = "NB4-SER:white:traffic";
+ gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+ };
+
+ service_blue {
+ label = "NB4-SER:blue:service";
+ gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
+ };
+
+ wifi_white {
+ label = "NB4-SER:white:wifi";
+ gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
+ };
+
+ service_red {
+ label = "NB4-SER:red:service";
+ gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
+ };
+
+ service_green {
+ label = "NB4-SER:green:service";
+ gpios = <&gpio0 30 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&gpio0 {
+ status = "okay";
+};
+
+&leds {
+ status = "okay";
+ brcm,clk-div = <1>;
+
+ led at 0 {
+ reg = <0>;
+ active-low;
+ label = "NB4-SER:white:alarm";
+ };
+
+ led at 2 {
+ reg = <2>;
+ active-low;
+ label = "NB4-SER:white:tv";
+ };
+
+ led at 3 {
+ reg = <3>;
+ active-low;
+ label = "NB4-SER:white:tel";
+ };
+
+ led at 4 {
+ reg = <4>;
+ active-low;
+ label = "NB4-SER:white:adsl";
+ };
+};
+
+&pflash {
+ status = "okay";
+};
+
+&uart0 {
+ u-boot,dm-pre-reloc;
+ status = "okay";
+};
diff --git a/board/sfr/nb4_ser/Kconfig b/board/sfr/nb4_ser/Kconfig
new file mode 100644
index 0000000..78aefb5
--- /dev/null
+++ b/board/sfr/nb4_ser/Kconfig
@@ -0,0 +1,12 @@
+if BOARD_SFR_NB4_SER
+
+config SYS_BOARD
+ default "nb4_ser"
+
+config SYS_VENDOR
+ default "sfr"
+
+config SYS_CONFIG_NAME
+ default "sfr_nb4_ser"
+
+endif
diff --git a/board/sfr/nb4_ser/MAINTAINERS b/board/sfr/nb4_ser/MAINTAINERS
new file mode 100644
index 0000000..bf80267
--- /dev/null
+++ b/board/sfr/nb4_ser/MAINTAINERS
@@ -0,0 +1,6 @@
+SFR NEUFBOX 4 SERCOMM BOARD
+M: Álvaro Fernández Rojas <noltari@gmail.com>
+S: Maintained
+F: board/sfr/nb4_ser/
+F: include/configs/sfr_nb4_ser.h
+F: configs/sfr_nb4-ser_ram_defconfig
diff --git a/board/sfr/nb4_ser/Makefile b/board/sfr/nb4_ser/Makefile
new file mode 100644
index 0000000..f3b1404
--- /dev/null
+++ b/board/sfr/nb4_ser/Makefile
@@ -0,0 +1,5 @@
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+obj-y += nb4-ser.o
diff --git a/board/sfr/nb4_ser/nb4-ser.c b/board/sfr/nb4_ser/nb4-ser.c
new file mode 100644
index 0000000..d181ca6
--- /dev/null
+++ b/board/sfr/nb4_ser/nb4-ser.c
@@ -0,0 +1,7 @@
+/*
+ * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
diff --git a/configs/sfr_nb4-ser_ram_defconfig b/configs/sfr_nb4-ser_ram_defconfig
new file mode 100644
index 0000000..8b885e3
--- /dev/null
+++ b/configs/sfr_nb4-ser_ram_defconfig
@@ -0,0 +1,52 @@
+CONFIG_ARCH_BMIPS=y
+CONFIG_BAUDRATE=115200
+CONFIG_BCM6345_GPIO=y
+CONFIG_BCM6345_SERIAL=y
+CONFIG_BMIPS_BOOT_RAM=y
+CONFIG_BOARD_SFR_NB4_SER=y
+CONFIG_CFI_FLASH=y
+# CONFIG_CMD_BOOTD is not set
+CONFIG_CMD_BOOTM=y
+CONFIG_CMD_CPU=y
+# CONFIG_CMD_CRC32 is not set
+# CONFIG_CMD_EDITENV is not set
+# CONFIG_CMD_ELF is not set
+# CONFIG_CMD_ENV_EXISTS is not set
+# CONFIG_CMD_EXPORTENV is not set
+CONFIG_CMD_FLASH=y
+# CONFIG_CMD_FPGA is not set
+# CONFIG_CMD_GPIO is not set
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_IMPORTENV is not set
+CONFIG_CMD_LED=y
+CONFIG_CMD_LICENSE=y
+CONFIG_CMD_LOADB=y
+# CONFIG_CMD_LOADS is not set
+CONFIG_CMD_MEMINFO=y
+# CONFIG_CMD_MISC is not set
+# CONFIG_CMD_NET is not set
+# CONFIG_CMD_NFS is not set
+# CONFIG_CMD_SAVEENV is not set
+# CONFIG_CMD_XIMG is not set
+CONFIG_DEFAULT_DEVICE_TREE="sfr,nb4-ser"
+CONFIG_DISPLAY_CPUINFO=y
+# CONFIG_DM_DEVICE_REMOVE is not set
+CONFIG_DM_GPIO=y
+CONFIG_DM_SERIAL=y
+CONFIG_HUSH_PARSER=y
+CONFIG_LED=y
+CONFIG_LED_BCM6358=y
+CONFIG_LED_GPIO=y
+CONFIG_MIPS=y
+# CONFIG_MIPS_BOOT_CMDLINE_LEGACY is not set
+# CONFIG_MIPS_BOOT_ENV_LEGACY is not set
+CONFIG_MIPS_BOOT_FDT=y
+CONFIG_MTD=y
+CONFIG_MTD_DEVICE=y
+CONFIG_MTD_NOR_FLASH=y
+CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_SOC_BMIPS_BCM6358=y
+# CONFIG_SPL_SERIAL_PRESENT is not set
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_SYS_PROMPT="NB4-SER # "
+CONFIG_SYS_TEXT_BASE=0x80010000
diff --git a/include/configs/sfr_nb4_ser.h b/include/configs/sfr_nb4_ser.h
new file mode 100644
index 0000000..ab64518
--- /dev/null
+++ b/include/configs/sfr_nb4_ser.h
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2017 Álvaro Fernández Rojas <noltari@gmail.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <configs/bmips_common.h>
+#include <configs/bmips_bcm6358.h>
+
+#define CONFIG_REMAKE_ELF
+
+#define CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_SIZE (8 * 1024)
+
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_SYS_LONGHELP
+
+#define CONFIG_SYS_FLASH_CFI 1
+#define CONFIG_FLASH_CFI_DRIVER 1
--
2.1.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH 0/3] dm: led: add BCM6358 serial leds support
2017-05-03 13:09 [U-Boot] [PATCH 0/3] dm: led: add BCM6358 serial leds support Álvaro Fernández Rojas
` (3 preceding siblings ...)
2017-05-07 18:11 ` [U-Boot] [PATCH v2 0/3] dm: led: add BCM6358 serial leds support Álvaro Fernández Rojas
@ 2017-05-10 14:19 ` Daniel Schwierzeck
4 siblings, 0 replies; 12+ messages in thread
From: Daniel Schwierzeck @ 2017-05-10 14:19 UTC (permalink / raw)
To: u-boot
Am 03.05.2017 um 15:09 schrieb Álvaro Fernández Rojas:
> BCM6358 supports controlling serial LEDs (74x164) both by using spi-gpio or
> its LEDs controller.
>
> Álvaro Fernández Rojas (3):
> dm: led: add BCM6358 led driver
> mips: bmips: add bcm6358-led driver support for BCM6358
> mips: bmips: add NeufBox 4 (Sercomm) board
>
> arch/mips/dts/brcm,bcm6358.dtsi | 9 ++
> arch/mips/dts/sfr,nb4-ser.dts | 93 ++++++++++++++++
> board/sfr/nb4_ser/Kconfig | 12 ++
> board/sfr/nb4_ser/MAINTAINERS | 6 +
> board/sfr/nb4_ser/Makefile | 5 +
> board/sfr/nb4_ser/nb4-ser.c | 7 ++
> configs/sfr_nb4-ser_ram_defconfig | 52 +++++++++
> drivers/led/Kconfig | 7 ++
> drivers/led/Makefile | 1 +
> drivers/led/led_bcm6358.c | 227 ++++++++++++++++++++++++++++++++++++++
> include/configs/sfr_nb4_ser.h | 20 ++++
> 11 files changed, 439 insertions(+)
> create mode 100644 arch/mips/dts/sfr,nb4-ser.dts
> create mode 100644 board/sfr/nb4_ser/Kconfig
> create mode 100644 board/sfr/nb4_ser/MAINTAINERS
> create mode 100644 board/sfr/nb4_ser/Makefile
> create mode 100644 board/sfr/nb4_ser/nb4-ser.c
> create mode 100644 configs/sfr_nb4-ser_ram_defconfig
> create mode 100644 drivers/led/led_bcm6358.c
> create mode 100644 include/configs/sfr_nb4_ser.h
>
series applied to u-boot-mips/next, thanks
--
- Daniel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170510/1d88703a/attachment.sig>
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2017-05-10 14:19 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-03 13:09 [U-Boot] [PATCH 0/3] dm: led: add BCM6358 serial leds support Álvaro Fernández Rojas
2017-05-03 13:09 ` [U-Boot] [PATCH 1/3] dm: led: add BCM6358 led driver Álvaro Fernández Rojas
2017-05-04 16:51 ` Simon Glass
2017-05-03 13:09 ` [U-Boot] [PATCH 2/3] mips: bmips: add bcm6358-led driver support for BCM6358 Álvaro Fernández Rojas
2017-05-04 16:51 ` Simon Glass
2017-05-03 13:09 ` [U-Boot] [PATCH 3/3] mips: bmips: add NeufBox 4 (Sercomm) board Álvaro Fernández Rojas
2017-05-04 16:51 ` Simon Glass
2017-05-07 18:11 ` [U-Boot] [PATCH v2 0/3] dm: led: add BCM6358 serial leds support Álvaro Fernández Rojas
2017-05-07 18:11 ` [U-Boot] [PATCH v2 1/3] dm: led: add BCM6358 led driver Álvaro Fernández Rojas
2017-05-07 18:11 ` [U-Boot] [PATCH v2 2/3] mips: bmips: add bcm6358-led driver support for BCM6358 Álvaro Fernández Rojas
2017-05-07 18:11 ` [U-Boot] [PATCH v2 3/3] mips: bmips: add NeufBox 4 (Sercomm) board Álvaro Fernández Rojas
2017-05-10 14:19 ` [U-Boot] [PATCH 0/3] dm: led: add BCM6358 serial leds support Daniel Schwierzeck
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox