[U-Boot] [PATCH v1 16/16] board: Add Qualcomm Dragonboard 410C support

Simon Glass
2016-01-11T16:58:10Z

Hi,

On 6 January 2016 at 11:21, Mateusz Kulikowski
<mateusz.kulikowski@gmail.com> wrote:
> This commit add support for 96Boards Dragonboard410C.
>
> It is board based on APQ8016 Qualcomm SoC, complying with
> 96boards specification.
>
> Features (present out of the box):
> - 4x Cortex A53 (ARMv8)
> - 2x USB Host port
> - 1x USB Device port
> - 4x LEDs
> - 1x HDMI connector
> - 1x uSD connector
> - 3x buttons (Power, Vol+, Vol-/Reset)
> - WIFI, Bluetooth with integrated antenna
> - 8GiB eMMC
>
> U-Boot boots chained with fastboot in 64-bit mode.
> For detailed build instructions see readme.txt in board directory.
>
> Signed-off-by: Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
> ---
>
> Changes in v1:
> - Add better help for dragonboard
> - Move static structures to board_prepare_usb
> - Add DM_SPMI to defconfig
>
> arch/arm/dts/Makefile | 2 +
> arch/arm/dts/dragonboard410c.dts | 154 +++++++++++++++++++
> arch/arm/mach-snapdragon/Kconfig | 20 +++
> board/qualcomm/dragonboard410c/Kconfig | 15 ++
> board/qualcomm/dragonboard410c/Makefile | 8 +
> board/qualcomm/dragonboard410c/dragonboard410c.c | 111 ++++++++++++++
> board/qualcomm/dragonboard410c/head.S | 20 +++
> board/qualcomm/dragonboard410c/readme.txt | 40 +++++
> board/qualcomm/dragonboard410c/u-boot.lds | 90 +++++++++++
> configs/dragonboard410c_defconfig | 30 ++++
> include/configs/dragonboard410c.h | 182 +++++++++++++++++++++++
> 11 files changed, 672 insertions(+)
> create mode 100644 arch/arm/dts/dragonboard410c.dts
> create mode 100644 board/qualcomm/dragonboard410c/Kconfig
> create mode 100644 board/qualcomm/dragonboard410c/Makefile
> create mode 100644 board/qualcomm/dragonboard410c/dragonboard410c.c
> create mode 100644 board/qualcomm/dragonboard410c/head.S
> create mode 100644 board/qualcomm/dragonboard410c/readme.txt
> create mode 100644 board/qualcomm/dragonboard410c/u-boot.lds
> create mode 100644 configs/dragonboard410c_defconfig
> create mode 100644 include/configs/dragonboard410c.h

Reviewed-by: Simon Glass <sjg@chromium.org>

But please see my comment below.

>
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 0bcd316..47aecf5 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -95,6 +95,8 @@ dtb-$(CONFIG_FSL_LSCH3) += fsl-ls2080a-qds.dtb \
> dtb-$(CONFIG_FSL_LSCH2) += fsl-ls1043a-qds.dtb \
> fsl-ls1043a-rdb.dtb
>
> +dtb-$(CONFIG_ARCH_SNAPDRAGON) += dragonboard410c.dtb
> +
> dtb-$(CONFIG_MACH_SUN4I) += \
> sun4i-a10-a1000.dtb \
> sun4i-a10-ba10-tvbox.dtb \
> diff --git a/arch/arm/dts/dragonboard410c.dts b/arch/arm/dts/dragonboard410c.dts
> new file mode 100644
> index 0000000..1de5d23
> --- /dev/null
> +++ b/arch/arm/dts/dragonboard410c.dts
> @@ -0,0 +1,154 @@
> +/dts-v1/;
> +
> +#include "skeleton64.dtsi"
> +
> +/ {
> + model = "Qualcomm Technologies, Inc. Dragonboard 410c";
> + compatible = "qcom,dragonboard", "qcom,apq8016-sbc";
> + qcom,msm-id = <0xce 0x0 0xf8 0x0 0xf9 0x0 0xfa 0x0 0xf7 0x0>;
> + qcom,board-id = <0x10018 0x0>;
> + #address-cells = <0x2>;
> + #size-cells = <0x2>;
> +
> + memory {
> + device_type = "memory";
> + reg = <0 0x80000000 0 0x3da00000>;
> + };
> +
> + chosen {
> + stdout-path = "/soc/serial at 78b0000";
> + };
> +
> +
> + soc {
> + #address-cells = <0x1>;
> + #size-cells = <0x1>;
> + ranges = <0x0 0x0 0x0 0xffffffff>;
> + compatible = "simple-bus";
> +
> + clkc: qcom,gcc at 1800000 {
> + compatible = "qcom,gcc-apq8016";
> + reg = <0x1800000 0x80000>;
> + #address-cells = <0x1>;
> + #size-cells = <0x0>;
> + };
> +
> + serial at 78b0000 {
> + compatible = "qcom,msm-uartdm-v1.4";
> + reg = <0x78b0000 0x200>;
> + u-boot,dm-pre-reloc;
> + clock = <&clkc 4>;
> + };
> +
> + restart at 4ab000 {
> + compatible = "qcom,pshold";
> + reg = <0x4ab000 0x4>;
> + };
> +
> + soc_gpios: pinctrl at 1000000 {
> + compatible = "qcom,apq8016-pinctrl";
> + reg = <0x1000000 0x300000>;
> + gpio-controller;
> + gpio-count = <122>;
> + gpio-bank-name="soc";
> + #gpio-cells = <1>;
> + };
> +
> + ehci at 78d9000 {
> + compatible = "qcom,ehci-host";
> + reg = <0x78d9000 0x400>;
> + };
> +
> + sdhci at 07824000 {
> + compatible = "qcom,sdhci-msm-v4";
> + reg = <0x7824900 0x11c 0x7824000 0x800>;
> + bus-width = <0x8>;
> + index = <0x0>;
> + non-removable;
> + clock = <&clkc 0>;
> + clock-frequency = <100000000>;
> + };
> +
> + sdhci at 07864000 {
> + compatible = "qcom,sdhci-msm-v4";
> + reg = <0x7864900 0x11c 0x7864000 0x800>;
> + index = <0x1>;
> + bus-width = <0x4>;
> + clock = <&clkc 1>;
> + clock-frequency = <200000000>;
> + };
> +
> + spmi at 200f000 {
> + compatible = "qcom,spmi-pmic-arb";
> + reg = <0x200f800 0x200 0x2400000 0x400000 0x2c00000 0x400000>;
> + #address-cells = <0x1>;
> + #size-cells = <0x1>;
> + pm8916 at 0 {
> + compatible = "qcom,spmi-pmic";
> + reg = <0x0 0x1>;
> + #address-cells = <0x1>;
> + #size-cells = <0x1>;
> +
> + pmic_pon: pon at 800 {
> + compatible = "qcom,pm8916-pwrkey";
> + reg = <0x800 0x96>;
> + #gpio-cells = <2>;
> + gpio-controller;
> + };
> +
> + pmic_gpios: gpios at c000 {
> + compatible = "qcom,pm8916-gpio";
> + reg = <0xc000 0x400>;
> + gpio-controller;
> + gpio-count = <4>;
> + #gpio-cells = <2>;
> + gpio-bank-name="pmic";
> + };
> + };
> +
> + pm8916 at 1 {
> + compatible = "qcom,spmi-pmic";
> + reg = <0x1 0x1>;
> + };
> + };
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> + user1 {
> + label = "green:user1";
> + gpios = <&soc_gpios 21 0>;
> + };
> +
> + user2 {
> + label = "green:user2";
> + gpios = <&soc_gpios 120 0>;
> + };
> +
> + user3 {
> + label = "green:user3";
> + gpios = <&pmic_gpios 0 0>;
> + };
> +
> + user4 {
> + label = "green:user4";
> + gpios = <&pmic_gpios 1 0>;
> + };
> + };
> +
> + usb_hub_reset_n_pm {
> + gpios = <&pmic_gpios 2 0>;
> + };
> +
> + usb_sw_sel_pm {
> + gpios = <&pmic_gpios 3 0>;
> + };
> +
> + key_vol_down {
> + gpios = <&pmic_pon 1 0>;
> + };
> +
> + key_power {
> + gpios = <&pmic_pon 0 0>;
> + };

The above four nodes seems odd in that they don't have compatible
strings. Is this how Linux does it? Also more normally the node name
has hyphens rather than underscores.

Regards,
Simon