u-boot/arch/arm/dts/am335x-brsmarc1.dts
Dario Binacchi ff94c15a3c video: omap: add panel driver
The previous version of am335x-fb.c contained the functionalities of two
drivers that this patch has split. It was a video type driver that used
the same registration compatible string that now registers a panel type
driver. The proof of this is that two compatible strings were referred
to within the same driver.
There are now two drivers, each with its own compatible string,
functions and API.
Furthermore, the panel driver, in addition to decoding the display
timings, is now also able to manage the backlight.

Signed-off-by: Dario Binacchi <dariobin@libero.it>
Reviewed-by: Simon Glass <sjg@chromium.org>
2021-01-12 10:58:27 +05:30

437 lines
6.7 KiB
Text

// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (C) 2017 B&R Industrial Automation GmbH
* http://www.br-automation.com
*
*/
/dts-v1/;
#include "am33xx.dtsi"
#include "dt-bindings/thermal/thermal.h"
/ {
model = "BRSMARC1 SoM";
compatible = "ti,am33xx";
fset: factory-settings {
bl-version = " ";
order-no = " ";
cpu-order-no = " ";
hw-revision = " ";
serial-no = <0>;
device-id = <0x0>;
parent-id = <0x0>;
hw-variant = <0x0>;
hw-platform = <0x7>;
fram-offset = <0x100>;
fram-size = <0x1F00>;
cache-disable = <0x0>;
cpu-clock = <0x0>;
};
chosen {
bootargs = "console=ttyO0,115200 earlyprintk";
stdout-path = &uart0;
};
aliases {
fset = &fset;
mmc = &mmc2;
spi0 = &spi0;
spi1 = &spi1;
touch0 = &burtouch0;
screen0 = &lcdscreen0;
};
memory {
device_type = "memory";
reg = <0x80000000 0x10000000>; /* 256 MB */
};
vmmcsd_fixed: fixedregulator@0 {
compatible = "regulator-fixed";
regulator-name = "vmmcsd_fixed";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
lcdscreen0: lcdscreen@0 {
/*backlight = <&tps_bl>; */
compatible = "ti,tilcdc,panel";
status = "okay";
panel-info {
ac-bias = <255>;
ac-bias-intrpt = <0>;
dma-burst-sz = <16>;
bpp = <32>;
fdd = <0x80>;
sync-edge = <0>;
sync-ctrl = <1>;
raster-order = <0>;
fifo-th = <0>;
rotation = <0>;
pupdelay = <0>;
pondelay = <0>;
pwrpin = <0x000000B1>;
brightdrv = <0>;
brightfdim = <100>;
brightdef = <50>;
};
display-timings {
default {
clock-frequency = <0>;
hactive = <0>;
vactive = <0>;
hfront-porch = <0>;
hback-porch = <0>;
hsync-len = <0>;
vfront-porch = <0>;
vback-porch = <0>;
vsync-len = <0>;
hsync-active = <0>;
vsync-active = <0>;
pupdelay = <10>;
pondelay = <10>;
};
};
};
board_thermal: board-thermal {
polling-delay-passive = <1000>; /* milliseconds */
polling-delay = <2500>; /* milliseconds */
thermal-sensors = <&cputemp>;
trips {
crit_trip: crit-trip {
temperature = <95000>; /* millicelsius */
hysteresis = <5000>; /* millicelsius */
type = "critical";
};
};
cooling-maps {
map0 {
trip = <&crit_trip>;
cooling-device =
<&resetc THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
};
};
&uart0 { /* console uart */
u-boot,dm-spl;
status = "okay";
};
&uart2 { /* X2X - P2P */
status = "okay";
};
&uart3 { /* RS485 */
status = "okay";
};
&uart4 { /* RS232 */
status = "okay";
};
&i2c0 {
u-boot,dm-spl;
status = "okay";
clock-frequency = <100000>;
tps: tps@24 { /* PMIC controller */
u-boot,dm-spl;
reg = <0x24>;
compatible = "ti,tps65217";
};
cputemp: temperature-sensor@48 { /* cpu temperature */
#thermal-sensor-cells = <0>;
compatible = "nxp,pct2075";
reg = <0x48>;
};
basetemp: temperature-sensor@49 { /* baseboard temperature */
#thermal-sensor-cells = <0>;
compatible = "nxp,pct2075";
reg = <0x49>;
};
extrtc: rtc@51 { /* realtime clock */
compatible = "epson,rx8571";
reg = <0x51>;
};
resetc: reset-controller@60 {
compatible = "bur,rststm";
reg = <0x60>;
cooling-min-state = <0>;
cooling-max-state = <1>; /* reset gets fired */
#cooling-cells = <2>; /* min followed by max */
};
};
&i2c1 {
u-boot,dm-spl;
status = "okay";
};
&spi0 {
u-boot,dm-spl;
status = "okay";
cs-gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>,
<&gpio0 6 GPIO_ACTIVE_HIGH>,
<0>,
<0>;
spi-max-frequency = <24000000>;
spi_flash: spiflash@0 {
u-boot,dm-spl;
u-boot,dm-pre-reloc;
compatible = "spidev", "spi-flash";
spi-max-frequency = <24000000>;
reg = <0>;
};
};
&spi1 {
u-boot,dm-spl;
status = "okay";
cs-gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>,
<&gpio0 19 GPIO_ACTIVE_HIGH>,
<0>,
<0>;
spi-max-frequency = <24000000>;
};
&edma {
status = "okay";
};
&cppi41dma {
status = "okay";
};
&usb {
status = "okay";
};
&usb_ctrl_mod {
status = "okay";
};
&usb0_phy {
status = "okay";
};
&usb1_phy {
status = "okay";
};
&usb0 {
status = "okay";
dr_mode = "host";
};
&usb1 {
status = "okay";
dr_mode = "host";
};
&davinci_mdio {
status = "okay";
ethphy0: ethernet-phy@1 {
reg = <1>;
};
ethphy1: ethernet-phy@3 {
reg = <3>;
};
};
&mac {
status = "okay";
};
&phy_sel {
rmii-clock-ext;
};
&cpsw_emac0 {
phy_id = <&davinci_mdio>, <1>;
phy-handle = <&ethphy0>;
phy-mode = "rmii";
ti,ledcr = <0x0480>;
};
&cpsw_emac1 {
phy_id = <&davinci_mdio>, <3>;
phy-handle = <&ethphy1>;
phy-mode = "rmii";
ti,ledcr = <0x0480>;
};
&mmc1 {
vmmc-supply = <&vmmcsd_fixed>;
bus-width = <0x4>;
ti,non-removable;
ti,needs-special-hs-handling;
ti,vcc-aux-disable-is-sleep;
status = "okay";
};
&mmc2 {
vmmc-supply = <&vmmcsd_fixed>;
bus-width = <0x8>;
ti,non-removable;
ti,needs-special-hs-handling;
ti,vcc-aux-disable-is-sleep;
status = "okay";
};
&l4_per {
segment@300000 {
target-module@e000 {
u-boot,dm-pre-reloc;
lcdc: lcdc@0 {
u-boot,dm-pre-reloc;
status = "okay";
ti,no-reset-on-init;
ti,no-idle-on-init;
};
};
};
};
&elm {
status = "okay";
};
&sham {
status = "okay";
};
&aes {
status = "okay";
};
&gpio0 {
u-boot,dm-spl;
ti,no-reset-on-init;
};
&gpio1 {
u-boot,dm-spl;
ti,no-reset-on-init;
};
&gpio2 {
u-boot,dm-spl;
ti,no-reset-on-init;
};
&gpio3 {
u-boot,dm-spl;
ti,no-reset-on-init;
};
&timer1 { /* today unused */
status = "okay";
ti,no-reset-on-init;
ti,no-idle-on-init;
};
&timer2 { /* used for vxworks primary timer device */
status = "okay";
ti,no-reset-on-init;
ti,no-idle-on-init;
};
&timer3 { /* used sysdelay and hal tsc counter*/
status = "okay";
ti,no-reset-on-init;
ti,no-idle-on-init;
};
&timer4 { /* used for PWM beeper */
status = "okay";
ti,no-reset-on-init;
ti,no-idle-on-init;
};
&timer5 { /* used for PWM backlight */
status = "okay";
ti,no-reset-on-init;
ti,no-idle-on-init;
};
&timer6 { /* used for cpsw end device */
status = "okay";
ti,no-reset-on-init;
ti,no-idle-on-init;
};
&timer7 { /* used for cpsw end device */
status = "okay";
ti,no-reset-on-init;
ti,no-idle-on-init;
};
&wdt2 {
status = "okay";
ti,no-reset-on-init;
ti,no-idle-on-init;
};
&epwmss0 {
status = "okay";
};
&tscadc {
status = "okay";
tsc {
burtouch0: burtouch@0 {
status = "okay";
compatible = "bur,DdVxSfTouchXXX";
bur,hwtree = "IF7";
bur,KX0 = <0x0>;
bur,KX1 = <0x0>;
bur,KX2 = <0x0>;
bur,KY0 = <0x0>;
bur,KY1 = <0x0>;
bur,KY2 = <0x0>;
};
};
};
&dcan0 {
status = "okay";
};
&dcan1 {
status = "okay";
};
&sham {
status = "disabled";
};
&aes {
status = "disabled";
};
&rng {
status = "disabled";
};