0hmX/am3352-ddr-track-a-local-dfm-wip-20261007
Experimental RJ45-corrected board with isolated PG indication. 1005/1005 source joins pass; 15 expanded-guard physical errors, sourcing and qualification gates remain. Not fabrication-ready.
- Version
- 0.0.14
- License
- unset
- Stars
- 0
hdmi/firmware/am3352-ddr-hdmi.dtsi
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
// Board-specific include; requires the normal AM335x SoC and board power DTS.
// The physical wiring contract is cpu-hdmi-pin-contract.tsx.
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/pinctrl/am33xx.h>
/ {
hdmi_3v3: regulator-hdmi-3v3 {
compatible = "regulator-fixed";
regulator-name = "HDMI_3V3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
regulator-always-on;
};
hdmi_1v2: regulator-hdmi-1v2 {
compatible = "regulator-fixed";
regulator-name = "HDMI_1V2";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
vin-supply = <&hdmi_3v3>;
regulator-boot-on;
regulator-always-on;
};
hdmi_connector: connector-hdmi {
compatible = "hdmi-connector";
label = "HDMI";
type = "a";
port {
hdmi_connector_in: endpoint {
remote-endpoint = <&it66122_out>;
};
};
};
};
&am33xx_pinmux {
hdmi_rgb24_pins: hdmi-rgb24-pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PIN_OUTPUT, MUX_MODE0)
/* AD15..AD8 supply LCD_DATA16..LCD_DATA23 in reverse order. */
AM33XX_PADCONF(AM335X_PIN_GPMC_AD15, PIN_OUTPUT, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_GPMC_AD14, PIN_OUTPUT, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_GPMC_AD13, PIN_OUTPUT, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_GPMC_AD12, PIN_OUTPUT, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_GPMC_AD11, PIN_OUTPUT, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_GPMC_AD10, PIN_OUTPUT, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_GPMC_AD9, PIN_OUTPUT, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_GPMC_AD8, PIN_OUTPUT, MUX_MODE1)
AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
>;
};
hdmi_control_pins: hdmi-control-pins {
pinctrl-single,pins = <
/* C18: command into the physical reset-qualification gate. */
AM33XX_PADCONF(AM335X_PIN_ECAP0_IN_PWM0_OUT, PIN_OUTPUT_PULLUP, MUX_MODE7)
/* V17: IT66122 open-drain interrupt, externally pulled to 3.3V. */
AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_INPUT_PULLUP, MUX_MODE7)
>;
};
hdmi_mmc0_pins: hdmi-mmc0-pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_MMC0_DAT0, PIN_INPUT_PULLUP, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_MMC0_DAT1, PIN_INPUT_PULLUP, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_MMC0_DAT2, PIN_INPUT_PULLUP, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_MMC0_DAT3, PIN_INPUT_PULLUP, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_MMC0_CLK, PIN_INPUT_PULLUP, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_MMC0_CMD, PIN_INPUT_PULLUP, MUX_MODE0)
/* U16 GPIO1_25 replaces U10, now needed for LCD_DATA23. */
AM33XX_PADCONF(AM335X_PIN_GPMC_A9, PIN_INPUT_PULLUP, MUX_MODE7)
>;
};
};
&lcdc {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&hdmi_rgb24_pins>;
/* TI SPRZ360I Fig2: correct RGB888/XRGB8888; 16-bit mode is BGR565. */
blue-and-red-wiring = "crossed";
max-pixelclock = <126000>;
port {
lcdc_hdmi_out: endpoint {
remote-endpoint = <&it66122_in>;
};
};
};
&i2c0 {
status = "okay";
it66122: bridge-hdmi@4c {
compatible = "ite,it66122";
reg = <0x4c>;
pinctrl-names = "default";
pinctrl-0 = <&hdmi_control_pins>;
vcn33-supply = <&hdmi_3v3>;
/* Legacy driver name: IT66122 core is physically 1.2V, not 1.8V. */
vcn18-supply = <&hdmi_1v2>;
vrf12-supply = <&hdmi_1v2>;
reset-gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio1>;
interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
/* No #sound-dai-cells or audio card: this revision is video-only. */
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
it66122_in: endpoint {
bus-width = <24>;
remote-endpoint = <&lcdc_hdmi_out>;
};
};
port@1 {
reg = <1>;
it66122_out: endpoint {
remote-endpoint = <&hdmi_connector_in>;
};
};
};
};
};
/* Linux label mmc1 is the SoC's physical MMC0 controller. */
&mmc1 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&hdmi_mmc0_pins>;
bus-width = <4>;
cd-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
};