Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  px30-cobra.dtsi   Sprache: unbekannt

 
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2025 Cherry Embedded Solutions GmbH
 */

/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include "px30.dtsi"

/ {
 aliases {
  ethernet0 = &gmac;
  mmc0 = &emmc;
 };

 chosen {
  stdout-path = "serial5:115200n8";
 };

 backlight: backlight {
  compatible = "pwm-backlight";
  power-supply = <&vcc5v0_sys>;
  pwms = <&pwm0 0 25000 0>;
 };

 beeper {
  compatible = "pwm-beeper";
  pwms = <&pwm1 0 1000 0>;
 };

 emmc_pwrseq: emmc-pwrseq {
  compatible = "mmc-pwrseq-emmc";
  pinctrl-0 = <&emmc_reset>;
  pinctrl-names = "default";
  reset-gpios = <&gpio1 RK_PB3 GPIO_ACTIVE_HIGH>;
 };

 gpio-leds {
  compatible = "gpio-leds";
  pinctrl-names = "default";
  pinctrl-0 = <&heartbeat_led_pin>;

  /*
   * LED14 on the PCB. Typically NOT populated.
   */
  led-0 {
   color = <LED_COLOR_ID_BLUE>;
   gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
   label = "heartbeat";
   linux,default-trigger = "heartbeat";
  };
 };

 pwm-leds {
  compatible = "pwm-leds";

  ring_red: led-0 {
   color = <LED_COLOR_ID_RED>;
   default-state = "off";
   label = "ring_red";
   pwms = <&pwm5 0 1000000 0>;
   max-brightness = <255>;
  };

  ring_green: led-1 {
   color = <LED_COLOR_ID_GREEN>;
   default-state = "off";
   label = "ring_green";
   pwms = <&pwm6 0 1000000 0>;
   max-brightness = <255>;
  };

  ring_blue: led-2 {
   color = <LED_COLOR_ID_BLUE>;
   default-state = "off";
   label = "ring_blue";
   pwms = <&pwm7 0 1000000 0>;
   max-brightness = <255>;
  };
 };

 /* also named 5V_Q7 in schematics */
 vcc5v0_sys: regulator-vccsys {
  compatible = "regulator-fixed";
  regulator-name = "vcc5v0_sys";
  regulator-always-on;
  regulator-boot-on;
  regulator-min-microvolt = <5000000>;
  regulator-max-microvolt = <5000000>;
 };
};

&cpu0 {
 cpu-supply = <&vdd_arm>;
};

&cpu1 {
 cpu-supply = <&vdd_arm>;
};

&cpu2 {
 cpu-supply = <&vdd_arm>;
};

&cpu3 {
 cpu-supply = <&vdd_arm>;
};

&display_subsystem {
 status = "okay";
};

&dsi_dphy {
 status = "okay";
};

&emmc {
 bus-width = <8>;
 cap-mmc-highspeed;
 /*
  * For hs200 support, U-Boot would have to set the RK809 DCDC4
  * rail to 1.8V from the default of 3.0V. It doesn't do that on
  * devices out in the field, so disable hs200.
  * mmc-hs200-1_8v;
  */
 mmc-pwrseq = <&emmc_pwrseq>;
 non-removable;
 vmmc-supply = <&vcc_3v3>;
 vqmmc-supply = <&vcc_emmc>;
 status = "okay";
};

&gmac {
 clock_in_out = "output";
 phy-handle = <&dp83825>;
 phy-supply = <&vcc_3v3>;
 status = "okay";
};

&gpu {
 mali-supply = <&vdd_log>;
 status = "okay";
};

/* I2C0 = PMIC, STUSB4500, RTC */
&i2c0 {
 status = "okay";

 rk809: pmic@20 {
  compatible = "rockchip,rk809";
  reg = <0x20>;
  #clock-cells = <0>;
  clock-output-names = "xin32k";
  interrupt-parent = <&gpio0>;
  interrupts = <RK_PA7 IRQ_TYPE_LEVEL_LOW>;
  pinctrl-names = "default";
  pinctrl-0 = <&pmic_int>;
  system-power-controller;
  wakeup-source;

  vcc1-supply = <&vcc5v0_sys>;
  vcc2-supply = <&vcc5v0_sys>;
  vcc3-supply = <&vcc5v0_sys>;
  vcc4-supply = <&vcc5v0_sys>;
  vcc5-supply = <&vcc_3v3>;
  vcc6-supply = <&vcc_3v3>;
  vcc7-supply = <&vcc_3v3>;
  vcc9-supply = <&vcc5v0_sys>;

  regulators {
   vdd_log: DCDC_REG1 {
    regulator-name = "vdd_log";
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <950000>;
    regulator-max-microvolt = <1350000>;
    regulator-ramp-delay = <6001>;

    regulator-state-mem {
     regulator-on-in-suspend;
     regulator-suspend-microvolt = <950000>;
    };
   };

   vdd_arm: DCDC_REG2 {
    regulator-name = "vdd_arm";
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <950000>;
    regulator-max-microvolt = <1350000>;
    regulator-ramp-delay = <6001>;

    regulator-state-mem {
     regulator-off-in-suspend;
     regulator-suspend-microvolt = <950000>;
    };
   };

   vcc_ddr: DCDC_REG3 {
    regulator-name = "vcc_ddr";
    regulator-always-on;
    regulator-boot-on;

    regulator-state-mem {
     regulator-on-in-suspend;
    };
   };

   vcc_3v0_1v8: vcc_emmc: DCDC_REG4 {
    regulator-name = "vcc_3v0_1v8";
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <3000000>;
    regulator-max-microvolt = <3000000>;

    regulator-state-mem {
     regulator-on-in-suspend;
     regulator-suspend-microvolt = <3000000>;
    };
   };

   vcc_3v3: DCDC_REG5 {
    regulator-name = "vcc_3v3";
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <3300000>;
    regulator-max-microvolt = <3300000>;

    regulator-state-mem {
     regulator-on-in-suspend;
     regulator-suspend-microvolt = <3300000>;
    };
   };

   vcc_1v8: LDO_REG2 {
    regulator-name = "vcc_1v8";
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <1800000>;
    regulator-max-microvolt = <1800000>;

    regulator-state-mem {
     regulator-on-in-suspend;
     regulator-suspend-microvolt = <1800000>;
    };
   };

   vcc_1v0: LDO_REG3 {
    regulator-name = "vcc_1v0";
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <1000000>;
    regulator-max-microvolt = <1000000>;

    regulator-state-mem {
     regulator-on-in-suspend;
     regulator-suspend-microvolt = <1000000>;
    };
   };

   vcc_2v8: LDO_REG4 {
    regulator-name = "vcc_2v8";
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <2800000>;
    regulator-max-microvolt = <2800000>;

    regulator-state-mem {
     regulator-off-in-suspend;
     regulator-suspend-microvolt = <2800000>;
    };
   };

   /*
    * vccio_sd also supplies the vmmc supply on prototypes
    * with sd-slots, so needs to stay single voltage for
    * those. Production models don't have sd-slots anymore
    * and only supply vccio2 from this regulator.
    */
   vccio_sd: LDO_REG5 {
    regulator-name = "vccio_sd";
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <3000000>;
    regulator-max-microvolt = <3000000>;

    regulator-state-mem {
     regulator-on-in-suspend;
     regulator-suspend-microvolt = <3000000>;
    };
   };

   /* vcc_sdio also supplies the pull-up resistors for i2c1 */
   vcc_sdio: LDO_REG6 {
    regulator-name = "vcc_sdio";
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <3000000>;
    regulator-max-microvolt = <3000000>;

    regulator-state-mem {
     regulator-on-in-suspend;
     regulator-suspend-microvolt = <3300000>;
    };
   };

   vcc_lcd: LDO_REG7 {
    regulator-name = "vcc_lcd";
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <1000000>;
    regulator-max-microvolt = <1000000>;

    regulator-state-mem {
     regulator-off-in-suspend;
     regulator-suspend-microvolt = <1000000>;
    };
   };

   vcc_1v8_lcd: LDO_REG8 {
    regulator-name = "vcc_1v8_lcd";
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <1800000>;
    regulator-max-microvolt = <1800000>;

    regulator-state-mem {
     regulator-on-in-suspend;
     regulator-suspend-microvolt = <1800000>;
    };
   };

   vcca_1v8: LDO_REG9 {
    regulator-name = "vcca_1v8";
    regulator-always-on;
    regulator-boot-on;
    regulator-min-microvolt = <1800000>;
    regulator-max-microvolt = <1800000>;

    regulator-state-mem {
     regulator-off-in-suspend;
     regulator-suspend-microvolt = <1800000>;
    };
   };
  };
 };
};

&i2c1 {
 clock-frequency = <100000>;
 status = "okay";
};

&i2c2 {
 clock-frequency = <100000>;
 i2c-scl-falling-time-ns = <50>;
 i2c-scl-rising-time-ns = <300>;
 status = "okay";

 touchscreen@14 {
  compatible = "goodix,gt911";
  reg = <0x14>;
  AVDD28-supply = <&vcc_2v8>;
  interrupt-parent = <&gpio0>;
  interrupts = <RK_PA1 IRQ_TYPE_LEVEL_LOW>;
  irq-gpios = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
  pinctrl-names = "default";
  pinctrl-0 = <&tch_int &tch_rst>;
  reset-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
  touchscreen-inverted-x;
  VDDIO-supply = <&vcc_3v3>;
 };
};

/*
 * Enable pull-ups to prevent floating pins when the touch
 * panel is not connected.
 */
&i2c2_xfer {
 rockchip,pins =
  <2 RK_PB7 2 &pcfg_pull_up>,
  <2 RK_PC0 2 &pcfg_pull_up>;
};

&io_domains {
 vccio1-supply = <&vcc_sdio>;
 vccio2-supply = <&vccio_sd>;
 vccio3-supply = <&vcc_3v3>;
 vccio4-supply = <&vcc_3v3>;
 vccio5-supply = <&vcc_1v8>;
 vccio6-supply = <&vcc_emmc>;
 status = "okay";
};

&mdio {
 dp83825: ethernet-phy@0 {
  compatible = "ethernet-phy-ieee802.3-c22";
  reg = <0x0>;
  pinctrl-names = "default";
  pinctrl-0 = <&phy_rst>;
  reset-assert-us = <50000>;
  reset-deassert-us = <50000>;
  reset-gpios = <&gpio2 RK_PB6 GPIO_ACTIVE_LOW>;
 };
};

&pinctrl {
 pinctrl-names = "default";
 pinctrl-0 = <&cobra_pin_hog>;

 hog {
  cobra_pin_hog: cobra-pin-hog {
   rockchip,pins =
    /* USB_HUB2_RESET */
    <0 RK_PA5 RK_FUNC_GPIO &pcfg_output_high>,
    /* USB_HUB1_RESET */
    <0 RK_PB4 RK_FUNC_GPIO &pcfg_output_high>,
    /* The default pull-down can keep the IC in reset. */
    <3 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>,
    /* USB-A 5V enable */
    <3 RK_PC0 RK_FUNC_GPIO &pcfg_output_high>,
    /* USB-A data enable */
    <3 RK_PD3 RK_FUNC_GPIO &pcfg_output_high>;
  };
 };

 emmc {
  emmc_reset: emmc-reset {
   rockchip,pins =
    <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
  };
 };

 ethernet {
  phy_rst: phy-rst {
   rockchip,pins =
    <2 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
  };
 };

 leds {
  heartbeat_led_pin: heartbeat-led-pin {
   rockchip,pins =
    <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
  };
 };

 panel {
  dsp_rst: dsp-rst {
   rockchip,pins =
    <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_down>;
  };

  tch_int: tch-int {
   rockchip,pins =
    <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
  };

  tch_rst: tch-rst {
   rockchip,pins =
    <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
  };
 };

 pmic {
  pmic_int: pmic-int {
   rockchip,pins =
    <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
  };
 };
};

&pmu_io_domains {
 pmuio1-supply = <&vcc_3v3>;
 pmuio2-supply = <&vcc_3v3>;
 status = "okay";
};

&pwm0 {
 status = "okay";
};

&pwm1 {
 status = "okay";
};

&pwm5 {
 status = "okay";
};

&pwm6 {
 status = "okay";
};

&pwm7 {
 status = "okay";
};

&saradc {
 vref-supply = <&vcc_1v8>;
 status = "okay";
};

&tsadc {
 status = "okay";
};

&u2phy {
 status = "okay";
};

&u2phy_host {
 status = "okay";
};

&u2phy_otg {
 status = "okay";
};

&uart1 {
 /delete-property/ dmas;
 /delete-property/ dma-names;
 pinctrl-names = "default";
 pinctrl-0 = <&uart1_xfer>;
 status = "okay";
};

&uart5 {
 pinctrl-0 = <&uart5_xfer>;
 status = "okay";
};

&usb20_otg {
 status = "okay";
};

&usb_host0_ehci {
 status = "okay";
};

&usb_host0_ohci {
 status = "okay";
};

&vopb {
 status = "okay";
};

&vopb_mmu {
 status = "okay";
};

&vopl {
 status = "disabled";
};

&vopl_mmu {
 status = "disabled";
};

&wdt {
 status = "okay";
};

[ Dauer der Verarbeitung: 0.4 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge