lkml.org 
[lkml]   [2020]   [Sep]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 7/7] ARM: dts: sun8i: s3l: add support for Pine64 PineCube IP camera
    Date
    The Pine64 PineCube IP camera is an IP camera with SoChip S3 SoC.

    It comes with a main board, an expansion board and a camera.

    The main board features a Micro-USB power-only jack, a USB Type-A port,
    an Ethernet port connected to the internal PHY of the SoC and a Realtek
    RTL8189ES SDIO Wi-Fi module. A RGB LCD connector is reserved on the
    board.

    The expansion board features a TF slot, a microphone, a speaker
    connector with on-board amplifier and a few IR LEDs.

    Add support for the kit, with features on the main board and the
    expansion board now.

    Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
    ---
    arch/arm/boot/dts/Makefile | 1 +
    arch/arm/boot/dts/sun8i-s3-pinecube.dts | 235 ++++++++++++++++++++++++
    2 files changed, 236 insertions(+)
    create mode 100644 arch/arm/boot/dts/sun8i-s3-pinecube.dts

    diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
    index e7c59d0c8598..b163c8f1cefc 100644
    --- a/arch/arm/boot/dts/Makefile
    +++ b/arch/arm/boot/dts/Makefile
    @@ -1198,6 +1198,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \
    sun8i-r16-parrot.dtb \
    sun8i-r40-bananapi-m2-ultra.dtb \
    sun8i-s3-lichee-zero-plus.dtb \
    + sun8i-s3-pinecube.dtb \
    sun8i-t3-cqa3t-bv3.dtb \
    sun8i-v3s-licheepi-zero.dtb \
    sun8i-v3s-licheepi-zero-dock.dtb \
    diff --git a/arch/arm/boot/dts/sun8i-s3-pinecube.dts b/arch/arm/boot/dts/sun8i-s3-pinecube.dts
    new file mode 100644
    index 000000000000..9bab6b7f4014
    --- /dev/null
    +++ b/arch/arm/boot/dts/sun8i-s3-pinecube.dts
    @@ -0,0 +1,235 @@
    +// SPDX-License-Identifier: (GPL-2.0+ OR X11)
    +/*
    + * Copyright 2019 Icenowy Zheng <icenowy@aosc.io>
    + */
    +
    +/dts-v1/;
    +#include "sun8i-v3.dtsi"
    +#include <dt-bindings/gpio/gpio.h>
    +#include <dt-bindings/input/input.h>
    +
    +/ {
    + model = "PineCube IP Camera";
    + compatible = "pine64,pinecube", "allwinner,sun8i-s3";
    +
    + aliases {
    + serial0 = &uart2;
    + };
    +
    + chosen {
    + stdout-path = "serial0:115200n8";
    + };
    +
    + leds {
    + compatible = "gpio-leds";
    +
    + led1 {
    + label = "pine64:ir:led1";
    + gpios = <&pio 1 10 GPIO_ACTIVE_LOW>; /* PB10 */
    + };
    +
    + led2 {
    + label = "pine64:ir:led2";
    + gpios = <&pio 1 12 GPIO_ACTIVE_LOW>; /* PB12 */
    + };
    + };
    +
    + reg_vcc5v0: vcc5v0 {
    + compatible = "regulator-fixed";
    + regulator-name = "vcc5v0";
    + regulator-min-microvolt = <5000000>;
    + regulator-max-microvolt = <5000000>;
    + };
    +
    + reg_vcc_wifi: vcc-wifi {
    + compatible = "regulator-fixed";
    + regulator-name = "vcc-wifi";
    + regulator-min-microvolt = <3300000>;
    + regulator-max-microvolt = <3300000>;
    + gpio = <&pio 1 2 GPIO_ACTIVE_LOW>; /* PB2 WIFI-EN */
    + vin-supply = <&reg_dcdc3>;
    + startup-delay-us = <200000>;
    + };
    +
    + wifi_pwrseq: wifi_pwrseq {
    + compatible = "mmc-pwrseq-simple";
    + reset-gpios = <&pio 1 3 GPIO_ACTIVE_LOW>; /* PB3 WIFI-RST */
    + post-power-on-delay-ms = <200>;
    + };
    +};
    +
    +&csi1 {
    + pinctrl-names = "default";
    + pinctrl-0 = <&csi1_8bit_pins>;
    + status = "okay";
    +
    + port {
    + #address-cells = <1>;
    + #size-cells = <0>;
    +
    + csi1_ep: endpoint {
    + remote-endpoint = <&ov5640_ep>;
    + bus-width = <8>;
    + hsync-active = <1>; /* Active high */
    + vsync-active = <0>; /* Active low */
    + data-active = <1>; /* Active high */
    + pclk-sample = <1>; /* Rising */
    + };
    + };
    +};
    +
    +&emac {
    + phy-handle = <&int_mii_phy>;
    + phy-mode = "mii";
    + status = "okay";
    +};
    +
    +&i2c0 {
    + status = "okay";
    +
    + axp209: pmic@34 {
    + compatible = "x-powers,axp203",
    + "x-powers,axp209";
    + reg = <0x34>;
    + interrupt-parent = <&gic>;
    + interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
    + interrupt-controller;
    + #interrupt-cells = <1>;
    + };
    +};
    +
    +&i2c1 {
    + pinctrl-names = "default";
    + pinctrl-0 = <&i2c1_pe_pins>;
    + status = "okay";
    +
    + ov5640: camera@3c {
    + compatible = "ovti,ov5640";
    + reg = <0x3c>;
    + pinctrl-names = "default";
    + pinctrl-0 = <&csi1_mclk_pin>;
    + clocks = <&ccu CLK_CSI1_MCLK>;
    + clock-names = "xclk";
    +
    + AVDD-supply = <&reg_ldo3>;
    + DOVDD-supply = <&reg_ldo3>;
    + DVDD-supply = <&reg_ldo4>;
    + reset-gpios = <&pio 4 23 GPIO_ACTIVE_LOW>; /* PE23 */
    + powerdown-gpios = <&pio 4 24 GPIO_ACTIVE_HIGH>; /* PE24 */
    +
    + port {
    + ov5640_ep: endpoint {
    + remote-endpoint = <&csi1_ep>;
    + bus-width = <8>;
    + hsync-active = <1>; /* Active high */
    + vsync-active = <0>; /* Active low */
    + data-active = <1>; /* Active high */
    + pclk-sample = <1>; /* Rising */
    + };
    + };
    + };
    +};
    +
    +&lradc {
    + vref-supply = <&reg_ldo2>;
    + status = "okay";
    +
    + button-200 {
    + label = "Setup";
    + linux,code = <KEY_SETUP>;
    + channel = <0>;
    + voltage = <190000>;
    + };
    +};
    +
    +&mmc0 {
    + vmmc-supply = <&reg_dcdc3>;
    + bus-width = <4>;
    + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
    + status = "okay";
    +};
    +
    +&mmc1 {
    + vmmc-supply = <&reg_vcc_wifi>;
    + vqmmc-supply = <&reg_dcdc3>;
    + mmc-pwrseq = <&wifi_pwrseq>;
    + bus-width = <4>;
    + non-removable;
    + status = "okay";
    +};
    +
    +&pio {
    + vcc-pd-supply = <&reg_dcdc3>;
    + vcc-pe-supply = <&reg_ldo3>;
    +};
    +
    +#include "axp209.dtsi"
    +
    +&ac_power_supply {
    + status = "okay";
    +};
    +
    +&reg_dcdc2 {
    + regulator-always-on;
    + regulator-min-microvolt = <1250000>;
    + regulator-max-microvolt = <1250000>;
    + regulator-name = "vdd-sys-cpu-ephy";
    +};
    +
    +&reg_dcdc3 {
    + regulator-always-on;
    + regulator-min-microvolt = <3300000>;
    + regulator-max-microvolt = <3300000>;
    + regulator-name = "vcc-3v3";
    +};
    +
    +&reg_ldo1 {
    + regulator-name = "vdd-rtc";
    +};
    +
    +&reg_ldo2 {
    + regulator-always-on;
    + regulator-min-microvolt = <3000000>;
    + regulator-max-microvolt = <3000000>;
    + regulator-name = "avcc";
    +};
    +
    +&reg_ldo3 {
    + regulator-min-microvolt = <2800000>;
    + regulator-max-microvolt = <2800000>;
    + regulator-name = "avdd-dovdd-2v8-csi";
    + regulator-soft-start;
    + regulator-ramp-delay = <1600>;
    +};
    +
    +&reg_ldo4 {
    + regulator-min-microvolt = <1800000>;
    + regulator-max-microvolt = <1800000>;
    + regulator-name = "dvdd-1v8-csi";
    +};
    +
    +&spi0 {
    + status = "okay";
    +
    + flash@0 {
    + #address-cells = <1>;
    + #size-cells = <1>;
    + compatible = "winbond,w25q128", "jedec,spi-nor";
    + reg = <0>;
    + spi-max-frequency = <40000000>;
    + };
    +};
    +
    +&uart2 {
    + status = "okay";
    +};
    +
    +&usb_otg {
    + dr_mode = "host";
    + status = "okay";
    +};
    +
    +&usbphy {
    + usb0_vbus-supply = <&reg_vcc5v0>;
    + status = "okay";
    +};
    --
    2.27.0
    \
     
     \ /
      Last update: 2020-09-23 03:05    [W:6.041 / U:0.160 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site