Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add framebuffer and LCD panel support to device tree #5

Open
hansemro opened this issue Apr 16, 2021 · 70 comments
Open

Add framebuffer and LCD panel support to device tree #5

hansemro opened this issue Apr 16, 2021 · 70 comments
Assignees
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@hansemro
Copy link
Owner

hansemro commented Apr 16, 2021

Resources:

Device tree resources:

  • Documentation/devicetree/bindings/display/panel/panel-dpi.yaml
  • Documentation/devicetree/bindings/display/panel/panel-simple.yaml
  • Documentation/devicetree/bindings/display/panel/panel-common.yaml

Hardware details:

  • Framebuffer address: 0x9fec4000 (reported by U-Boot)
  • LCD Panel: Hydis HV070WS1-105
    • 1024x600
    • 32 bits/pixel (A8R8B8G8); 24 bits/pixel (R8B8G8)
    • GPTimer10 PWM backlight
    • GPIO 37: switch to LVDS mode (OMAP_RGB_SHTDOWN)
    • GPIO 47 : Enable 3.3V rail (OMAP_3V_ENABLE)
    • GPIO 45: LCD_PWR_ON

Notes:

  • Display Subsystem (DSS): responsible for displaying frame to LCD2 channel by MIPI DPI 1.0

DSS configuration (from 3.4.48):

framebuffers -- overlays -- managers -- displays
FB0 --- GFX --\    LCD ---- (none)
        VID1   \   TV ----- (none)
        VID2    \- LCD2 --- LCD2
        VID3

Timings (pixclock in kHz,xres/hfp/hbp/hsw,yres/vfp/vbp/vsw): 51200,1024/160/150/10,600/12/20/3

dpll4_ck (?) = 1536000000 Hz
DSS_FCLK = (dpll4_ck / 9) = 170666666 Hz
DSS_CLK = DSS_FCLK = 170666666 Hz (?)
PLL2_CLK1 = 153600000 Hz
DISPC_FCLK = PLL2_CLK1 = 153600000 Hz
LCD2_CLK (DSI2 functional clock) = PLL2_CLK1 = 153600000 Hz
LCD2 (lck div) = DISPC_DIVISOR2[23:16] = 1
PCD2 (pck div) = DISPC_DIVISOR2[7:0] = 3
LC2_PCLK  = (LCD2_CLK  / LCD2) / PCD2 = 51200000 Hz
@hansemro hansemro added enhancement New feature or request help wanted Extra attention is needed labels Apr 16, 2021
@hansemro hansemro self-assigned this Apr 16, 2021
@hansemro
Copy link
Owner Author

hansemro commented Apr 17, 2021

Reference:

  • Documentation/devicetree/bindings/display/simple-framebuffer.yaml

arch/arm/boot/dts/omap4-kc1.dts:

/ {
	...
	reserved-memory {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		framebuffer_region@9fec4000 {
			no-map;
			reg = <0x9fec4000 (600 * 1024 * 4)>;
		};
	};

	chosen {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		framebuffer0@9fec4000 {
			compatible = "simple-framebuffer";
			reg = <0x9fec4000 (600 * 1024 * 4)>;
			width = <600>;
			height = <1024>;
			stride = <(600 * 4)>;
			format = "r5g6b5";
			status = "okay";
		};
	};
	...
};

Kernel log:

[    0.842529] simple-framebuffer 9fec4000.framebuffer0: framebuffer at 0x9fec4000, 0x258000 bytes, mapped to 0x(ptrval)
[    0.842590] simple-framebuffer 9fec4000.framebuffer0: format=r5g6b5, mode=600x1024x16, linelength=2400
[    0.850769] Console: switching to colour frame buffer device 75x64
[    0.855682] simple-framebuffer 9fec4000.framebuffer0: fb0: simplefb registered!

Before the login prompt, the kernel seems to hang.

@hansemro
Copy link
Owner Author

hansemro commented Apr 17, 2021

Adding the following lines to enable dss (which is disabled by default) solved the hanging issue:

&dss {
	status = "okay";
};

However, there is still no backlight available.

@hansemro
Copy link
Owner Author

Never mind, the device still hangs before the login prompt can be reached.

@hansemro
Copy link
Owner Author

Setting framebuffer address to 0x9e600000 seems to create a framebuffer device without halting the system. However, I can't be certain about the address.

@hansemro
Copy link
Owner Author

hansemro commented Apr 19, 2021

amazon-otter:~# cat /sys/class/graphics/fb0/phys_addr 
9e800000
amazon-otter:~# cat /sys/class/graphics/fb0/size
8388608
amazon-otter:~# cat /sys/class/graphics/fb0/virtual_size 
1024,600
amazon-otter:~# cat /sys/class/graphics/fb0/bits_per_pixel 
32
amazon-otter:~# cat /sys/class/graphics/fb0/modes
U:1024x600p-59
amazon-otter:~# cat /sys/class/graphics/fb1/phys_addr 
9f000000
amazon-otter:~# cat /sys/class/graphics/fb1/size
4915200
amazon-otter:~# cat /sys/class/graphics/fb1/virtual_size
1024,600
amazon-otter:~# cat /sys/class/graphics/fb1/bits_per_pixel 
32
amazon-otter:~# cat /sys/class/graphics/fb1/modes
U:1024x600p-59
amazon-otter:~# uname -a
Linux amazon-otter 3.4.48+ #24 SMP PREEMPT Tue Mar 2 01:53:11 PST 2021 armv7l GNU/Linux

@hansemro
Copy link
Owner Author

hansemro commented Apr 20, 2021

For a brief moment, the screen was yellow when using the following device tree. However, the tablet quickly proceeds to halt. Either way, I think this cements that the framebuffer address was correctly identified by U-Boot.

/ {
	...
	reserved-memory {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		framebuffer_region@9fec4000 {
			no-map;
			reg = <0x9fec4000 (1024 * 600 * 4)>;
		};
	};

	chosen {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		stdout-path = "serial2";

		framebuffer0@9fec4000 {
			compatible = "simple-framebuffer";
			reg = <0x9fec4000 (1024 * 600 * 4)>;
			width = <1024>;
			height = <600>;
			stride = <(1024 * 4)>;
			format = "a8b8g8r8";
			status = "okay";
		};
	};
	...
};
...
&dss {
	status = "disabled";
	dispc@0  {
		status = "disabled";
	};
};

&dsi1 {
	status = "disabled";
};

&dsi2 {
	status = "disabled";
};

Interestingly, I had to use earlycon to show kernel messages through UART serial console.

@hansemro
Copy link
Owner Author

hansemro commented Apr 20, 2021

Leaving the framebuffer address at 0x9fec4000 and reserving from 9fec0000 onwards, the penguins show up for less than a second before the lcd backlight goes off and hangs.

image

@hansemro hansemro reopened this Apr 20, 2021
@mj-sakellaropoulos
Copy link

mj-sakellaropoulos commented Apr 21, 2021

I can confirm that with the same framebuffer entry, I get the same result.
There is variability in the following:

  • Presence of penguins
  • Image staying on screen indefinitely
  • Reboot after black screen

Constant: Foreground color always yellow.

This is happening because u-boot has already configured the display subsystem, but somewhere in the kernel initialization some settings are being changed thus being incompatible (I think???).

Right now I'm trying to port the DPI pinmux configuration from uBoot and configure DSS to use DPI LCD2
https://github.com/hansemro/kf_u-boot/blob/p-ti-u-boot-2014.01/board/ti/omap4_kc1/kc1_mux_data.h
https://www.kernel.org/doc/Documentation/arm/OMAP/DSS
https://elixir.bootlin.com/linux/v5.10.31/source/Documentation/devicetree/bindings/display/ti/ti,omap-dss.txt
Note: panel-dpi and similar bindings were removed sometime after kernel 4.x

Edit: DPI pinout is same as pandaboard but instead of going to an encoder it goes straight to the panel (?)

dss_dpi_pins: pinmux_dss_dpi_pins {
pinctrl-single,pins = <
	OMAP4_IOPAD(0x162, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data23 */
	OMAP4_IOPAD(0x164, PIN_OUTPUT | MUX_MODE5) 	/* dispc2_data22 */
	OMAP4_IOPAD(0x166, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data21 */
	OMAP4_IOPAD(0x168, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data20 */
	OMAP4_IOPAD(0x16a, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data19 */
	OMAP4_IOPAD(0x16c, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data18 */
	OMAP4_IOPAD(0x16e, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data15 */
	OMAP4_IOPAD(0x170, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data14 */
	OMAP4_IOPAD(0x172, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data13 */
	OMAP4_IOPAD(0x174, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data12 */
	OMAP4_IOPAD(0x176, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data11 */

	OMAP4_IOPAD(0x1b4, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data10 */
	OMAP4_IOPAD(0x1b6, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data9 */
	OMAP4_IOPAD(0x1b8, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data16 */
	OMAP4_IOPAD(0x1ba, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data17 */
	OMAP4_IOPAD(0x1bc, PIN_OUTPUT | MUX_MODE5)	/* dispc2_hsync */
	OMAP4_IOPAD(0x1be, PIN_OUTPUT | MUX_MODE5)	/* dispc2_pclk */
	OMAP4_IOPAD(0x1c0, PIN_OUTPUT | MUX_MODE5)	/* dispc2_vsync */
	OMAP4_IOPAD(0x1c2, PIN_OUTPUT | MUX_MODE5)	/* dispc2_de */
	OMAP4_IOPAD(0x1c4, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data8 */
	OMAP4_IOPAD(0x1c6, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data7 */
	OMAP4_IOPAD(0x1c8, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data6 */
	OMAP4_IOPAD(0x1ca, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data5 */
	OMAP4_IOPAD(0x1cc, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data4 */
	OMAP4_IOPAD(0x1ce, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data3 */

	OMAP4_IOPAD(0x1d0, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data2 */
	OMAP4_IOPAD(0x1d2, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data1 */
	OMAP4_IOPAD(0x1d4, PIN_OUTPUT | MUX_MODE5)	/* dispc2_data0 */
>;
};

@mj-sakellaropoulos
Copy link

mj-sakellaropoulos commented Apr 21, 2021

For simple-framebuffer, I think something similar to drebrez/linux@c2fa556 needs to be done. DSS initializing will overwrite the config from u-boot, breaking the framebuffer (?)
However, the relevant portions have been refactored/renamed/moved somewhere else in mainline - still tracking it down

Edit: There are multiple reports of the yellow/orange screen with OMAP processors. Default DSS color ?
I have compiled linux without DSS, omapdrm or omapfb and still get the yellow screen.

@hansemro
Copy link
Owner Author

FWIW, I've noticed that when the kernel starts handling pin configuration (pinctrl), the screen goes off.

@mj-sakellaropoulos
Copy link

FWIW, I've noticed that when the kernel starts handling pin configuration (pinctrl), the screen goes off.

Maybe somehow its resetting the backlight IC over SPI

I have tried a lot of combinations so far. Either I can get a yellow screen from the start or the screen turns off right away. Right now I'm blind until the 1v8 serial adapter arrives, so its pretty difficult.

@hansemro
Copy link
Owner Author

I've tested with 3.3 V BusPirate (for reads only) and it seems to work.

@mj-sakellaropoulos
Copy link

mj-sakellaropoulos commented Apr 21, 2021

I've tested with 3.3 V BusPirate (for reads only) and it seems to work.

Oh good idea, I have one of those

Now that I think of it, the GPIO47 is probably getting reset to LOW (or whatever means off) - turning off the backlight.
Can that pin be forced via devicetree ?

@hansemro
Copy link
Owner Author

hansemro commented Apr 22, 2021

@hansemro
Copy link
Owner Author

arch/arm/boot/dts/omap4-kc1.dts:

/* comment out framebuffer in root */

&dss {
	status = "okay";
};

&dsi2 {
	status = "okay";
	vdd-supply = <&vcxio>;
};
Kernel dmesg
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.11.0+ (clfs@ds3h) (arm-none-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture 10.2-2020.11 (arm-10.16)) 10.2.1 20201103, GNU ld (GNU Toolchain for the A-profile Architecture 10.2-2020.11 (arm-10.16)) 2.35.1.20201028) #33 SMP Wed Apr 21 21:20:33 PDT 2021
[    0.000000] CPU: ARMv7 Processor [411fc093] revision 3 (ARMv7), cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: Amazon Kindle Fire (first generation)
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] cma: Reserved 16 MiB at 0x9e800000
[    0.000000] OMAP4: Map 0x9fe00000 to (ptrval) for dram barrier
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000080000000-0x000000009fdfffff]
[    0.000000]   HighMem  empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x000000009fdfffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000009fdfffff]
[    0.000000] On node 0 totalpages: 130560
[    0.000000]   Normal zone: 1148 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 130560 pages, LIFO batch:31
[    0.000000] OMAP4430 ES2.3
[    0.000000] percpu: Embedded 20 pages/cpu s52332 r8192 d21396 u81920
[    0.000000] pcpu-alloc: s52332 r8192 d21396 u81920 alloc=20*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 129412
[    0.000000] Kernel command line: console=ttyO2,115200n8 androidboot.wifimac=F0A225D07EFA androidboot.serialno=D01EB0A0147327BN androidboot.hardware=otterx rw root=/dev/mmcblk0p9 vram=24M omapfb.mode=lcd2:1024x600@60 omapfb.debug=y omapfb.vram=0:8M omapdss.def_disp=lcd2 omapdss.debug=y omapfb.test=y rootwait console=ttyO2,115200
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 474248K/522240K available (12288K kernel code, 1151K rwdata, 4004K rodata, 1024K init, 6444K bss, 31608K reserved, 16384K cma-reserved, 0K highmem)
[    0.000000] Running RCU self tests
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: 	RCU lockdep checking is enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] L2C: platform modifies aux control register: 0x1e070000 -> 0x3e470000
[    0.000000] L2C: DT/platform modifies aux control register: 0x1e070000 -> 0x3e470000
[    0.000000] L2C-310 erratum 727915 enabled
[    0.000000] L2C-310 enabling early BRESP for Cortex-A9
[    0.000000] L2C-310 ID prefetch enabled, offset 6 lines
[    0.000000] L2C-310 cache controller enabled, 16 ways, 1024 kB
[    0.000000] L2C-310: CACHE_ID 0x410000c4, AUX_CTRL 0x7e470000
[    0.000000] random: get_random_bytes called from start_kernel+0x2b4/0x4e4 with crng_init=0
[    0.000000] OMAP clocksource: 32k_counter at 32768 Hz
[    0.000000] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
[    0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 65535999984741ns
[    0.001190] TI gptimer clockevent: always-on 32768 Hz at /ocp/interconnect@4a300000/segment@10000/target-module@8000
[    0.004882] Console: colour dummy device 80x30
[    0.004913] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[    0.004943] ... MAX_LOCKDEP_SUBCLASSES:  8
[    0.004974] ... MAX_LOCK_DEPTH:          48
[    0.004974] ... MAX_LOCKDEP_KEYS:        8192
[    0.005004] ... CLASSHASH_SIZE:          4096
[    0.005004] ... MAX_LOCKDEP_ENTRIES:     32768
[    0.005035] ... MAX_LOCKDEP_CHAINS:      65536
[    0.005035] ... CHAINHASH_SIZE:          32768
[    0.005065]  memory used by lock dependency info: 4061 kB
[    0.005096]  memory used for stack traces: 2112 kB
[    0.005096]  per task-struct memory footprint: 1536 bytes
[    0.005187] Calibrating delay loop... 2000.48 BogoMIPS (lpj=10002432)
[    0.119781] pid_max: default: 32768 minimum: 301
[    0.120147] LSM: Security Framework initializing
[    0.120269] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.120300] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.124633] CPU: Testing write buffer coherency: ok
[    0.124786] CPU0: Spectre v2: using BPIALL workaround
[    0.125823] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.125885] smp: CPU1 parked within kernel, needs reset (0x0 0x801263b4)
[    0.128570] Setting up static identity map for 0x80100000 - 0x80100078
[    0.129302] rcu: Hierarchical SRCU implementation.
[    0.131713] smp: Bringing up secondary CPUs ...
[    0.189758] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.189788] CPU1: Spectre v2: using BPIALL workaround
[    0.191040] smp: Brought up 1 node, 2 CPUs
[    0.191070] SMP: Total of 2 processors activated (4007.52 BogoMIPS).
[    0.191101] CPU: All CPU(s) started in SVC mode.
[    0.193817] devtmpfs: initialized
[    0.274688] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[    0.277252] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.277313] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[    0.278839] pinctrl core: initialized pinctrl subsystem
[    0.281585] regulator-dummy: no parameters, enabled
[    0.284881] NET: Registered protocol family 16
[    0.292633] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.298889] omap_hwmod: l3_main_3 using broken dt data from ocp
[    0.304931] omap_hwmod: l3_main_2 using broken dt data from ocp
[    0.351898] audit: initializing netlink subsys (disabled)
[    0.355285] thermal_sys: Registered thermal governor 'step_wise'
[    0.355316] thermal_sys: Registered thermal governor 'user_space'
[    0.355865] audit: type=2000 audit(0.350:1): state=initialized audit_enabled=0 res=1
[    0.356781] cpuidle: using governor menu
[    0.510314] No ATAGs?
[    0.510650] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[    0.510742] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    0.578094] iommu: Default domain type: Translated 
[    0.584014] SCSI subsystem initialized
[    0.584716] libata version 3.00 loaded.
[    0.585571] usbcore: registered new interface driver usbfs
[    0.586059] usbcore: registered new interface driver hub
[    0.586181] usbcore: registered new device driver usb
[    0.588531] pps_core: LinuxPPS API ver. 1 registered
[    0.588562] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti 
[    0.588623] PTP clock support registered
[    0.594177] clocksource: Switched to clocksource 32k_counter
[    0.915374] VFS: Disk quotas dquot_6.6.0
[    0.915588] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.966888] NET: Registered protocol family 2
[    1.394836] tcp_listen_portaddr_hash hash table entries: 256 (order: 1, 11264 bytes, linear)
[    1.394927] TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
[    1.395019] TCP bind hash table entries: 4096 (order: 5, 163840 bytes, linear)
[    1.395446] TCP: Hash tables configured (established 4096 bind 4096)
[    1.395874] UDP hash table entries: 256 (order: 2, 24576 bytes, linear)
[    1.395996] UDP-Lite hash table entries: 256 (order: 2, 24576 bytes, linear)
[    1.396514] NET: Registered protocol family 1
[    1.399169] RPC: Registered named UNIX socket transport module.
[    1.399291] RPC: Registered udp transport module.
[    1.399322] RPC: Registered tcp transport module.
[    1.399322] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.401123] PCI: CLS 0 bytes, default 64
[    1.404632] hw perfevents: no irqs for PMU, sampling events not supported
[    1.405090] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
[    1.410278] Initialise system trusted keyrings
[    1.411102] workingset: timestamp_bits=14 max_order=17 bucket_order=3
[    1.415069] NFS: Registering the id_resolver key type
[    1.415222] Key type id_resolver registered
[    1.415313] Key type id_legacy registered
[    1.415527] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
[    1.416839] Key type asymmetric registered
[    1.416961] Asymmetric key parser 'x509' registered
[    1.417144] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[    1.417266] io scheduler mq-deadline registered
[    1.417297] io scheduler kyber registered
[    1.431365] gpio gpiochip0: (gpio-0-31): added GPIO chardev (254:0)
[    1.432006] gpio gpiochip0: registered GPIOs 0 to 31 on gpio-0-31
[    1.432250] OMAP GPIO hardware version 0.1
[    1.509674] omap-dma-engine 4a056000.dma-controller: OMAP DMA engine driver (LinkedList1/2/3 supported)
[    1.536437] omap-mailbox 4a0f4000.mailbox: omap mailbox rev 0x400
[    1.559631] gpio gpiochip1: (gpio-32-63): added GPIO chardev (254:1)
[    1.559967] gpio gpiochip1: registered GPIOs 32 to 63 on gpio-32-63
[    1.563415] gpio gpiochip2: (gpio-64-95): added GPIO chardev (254:2)
[    1.563720] gpio gpiochip2: registered GPIOs 64 to 95 on gpio-64-95
[    1.567230] gpio gpiochip3: (gpio-96-127): added GPIO chardev (254:3)
[    1.567535] gpio gpiochip3: registered GPIOs 96 to 127 on gpio-96-127
[    1.571014] gpio gpiochip4: (gpio-128-159): added GPIO chardev (254:4)
[    1.571289] gpio gpiochip4: registered GPIOs 128 to 159 on gpio-128-159
[    1.574981] gpio gpiochip5: (gpio-160-191): added GPIO chardev (254:5)
[    1.575256] gpio gpiochip5: registered GPIOs 160 to 191 on gpio-160-191
[    1.624664] omap-gpmc 50000000.gpmc: GPMC revision 6.0
[    1.624969] gpmc_mem_init: disabling cs 0 mapped at 0x0-0x1000000
[    1.625061] gpiochip_find_base: found new base at 508
[    1.626708] gpio gpiochip6: (omap-gpmc): added GPIO chardev (254:6)
[    1.627014] gpio gpiochip6: registered GPIOs 508 to 511 on omap-gpmc
[    1.640686] phy phy-4a0ad080.usb2phy.0: Looking up phy-supply from device tree
[    1.640747] phy phy-4a0ad080.usb2phy.0: Looking up phy-supply property in node /ocp/interconnect@4a000000/segment@80000/target-module@2d000/ocp2scp@0/usb2phy@80 failed
[    1.646850] pinctrl-single 4a31e040.pinmux: 28 pins, size 56
[    1.649322] pinctrl-single 4a100040.pinmux: 203 pins, size 406
[    1.674926] pbias_mmc_omap4: 1800 <--> 3000 mV at 3000 mV, disabled
[    1.676788] ti_abb 4a307bd0.regulator-abb-mpu: Missing 'efuse-address' IO resource
[    1.676940] ti_abb 4a307bd0.regulator-abb-mpu: [0]v=1025000 ABB=0 ef=0x0 rbb=0x0 fbb=0x0 vset=0x0
[    1.676971] ti_abb 4a307bd0.regulator-abb-mpu: [1]v=1200000 ABB=0 ef=0x0 rbb=0x0 fbb=0x0 vset=0x0
[    1.677032] ti_abb 4a307bd0.regulator-abb-mpu: [2]v=1313000 ABB=0 ef=0x0 rbb=0x0 fbb=0x0 vset=0x0
[    1.677062] ti_abb 4a307bd0.regulator-abb-mpu: [3]v=1375000 ABB=1 ef=0x0 rbb=0x0 fbb=0x0 vset=0x0
[    1.677124] ti_abb 4a307bd0.regulator-abb-mpu: [4]v=1389000 ABB=1 ef=0x0 rbb=0x0 fbb=0x0 vset=0x0
[    1.677215] ti_abb 4a307bd0.regulator-abb-mpu: ti_abb_init_timings: Clk_rate=38400000, sr2_cnt=0x0000007d
[    1.677307] abb_mpu: 1025 <--> 1389 mV, enabled
[    1.682739] omap_uart 48020000.serial: GPIO lookup for consumer rs485-term
[    1.682769] omap_uart 48020000.serial: using device tree for GPIO lookup
[    1.682830] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@20000/serial@0[0]'
[    1.682952] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@20000/serial@0[0]'
[    1.683044] omap_uart 48020000.serial: using lookup tables for GPIO lookup
[    1.683197] omap_uart 48020000.serial: No GPIO consumer rs485-term found
[    1.683227] omap_uart 48020000.serial: GPIO lookup for consumer rts
[    1.683258] omap_uart 48020000.serial: using device tree for GPIO lookup
[    1.683288] of_get_named_gpiod_flags: can't parse 'rts-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@20000/serial@0[0]'
[    1.683410] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@20000/serial@0[0]'
[    1.683532] omap_uart 48020000.serial: using lookup tables for GPIO lookup
[    1.683563] omap_uart 48020000.serial: No GPIO consumer rts found
[    1.684844] 48020000.serial: ttyO2 at MMIO 0x48020000 (irq = 113, base_baud = 3000000) is a OMAP UART2
[    2.891540] printk: console [ttyO2] enabled
[    2.899353] omap_uart 4806a000.serial: no wakeirq for uart0
[    2.905364] omap_uart 4806a000.serial: GPIO lookup for consumer rs485-term
[    2.912597] omap_uart 4806a000.serial: using device tree for GPIO lookup
[    2.919799] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@6a000/serial@0[0]'
[    2.934722] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@6a000/serial@0[0]'
[    2.949493] omap_uart 4806a000.serial: using lookup tables for GPIO lookup
[    2.956787] omap_uart 4806a000.serial: No GPIO consumer rs485-term found
[    2.963836] omap_uart 4806a000.serial: GPIO lookup for consumer rts
[    2.970489] omap_uart 4806a000.serial: using device tree for GPIO lookup
[    2.977600] of_get_named_gpiod_flags: can't parse 'rts-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@6a000/serial@0[0]'
[    2.991821] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@6a000/serial@0[0]'
[    3.005950] omap_uart 4806a000.serial: using lookup tables for GPIO lookup
[    3.013214] omap_uart 4806a000.serial: No GPIO consumer rts found
[    3.020233] 4806a000.serial: ttyO0 at MMIO 0x4806a000 (irq = 124, base_baud = 3000000) is a OMAP UART0
[    3.031951] omap_uart 4806c000.serial: no wakeirq for uart1
[    3.037933] omap_uart 4806c000.serial: GPIO lookup for consumer rs485-term
[    3.045288] omap_uart 4806c000.serial: using device tree for GPIO lookup
[    3.052368] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@6c000/serial@0[0]'
[    3.067260] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@6c000/serial@0[0]'
[    3.082000] omap_uart 4806c000.serial: using lookup tables for GPIO lookup
[    3.089324] omap_uart 4806c000.serial: No GPIO consumer rs485-term found
[    3.096435] omap_uart 4806c000.serial: GPIO lookup for consumer rts
[    3.103027] omap_uart 4806c000.serial: using device tree for GPIO lookup
[    3.110168] of_get_named_gpiod_flags: can't parse 'rts-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@6c000/serial@0[0]'
[    3.124816] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@6c000/serial@0[0]'
[    3.138946] omap_uart 4806c000.serial: using lookup tables for GPIO lookup
[    3.146240] omap_uart 4806c000.serial: No GPIO consumer rts found
[    3.153198] 4806c000.serial: ttyO1 at MMIO 0x4806c000 (irq = 125, base_baud = 3000000) is a OMAP UART1
[    3.165191] omap_uart 4806e000.serial: no wakeirq for uart3
[    3.171081] omap_uart 4806e000.serial: GPIO lookup for consumer rs485-term
[    3.178405] omap_uart 4806e000.serial: using device tree for GPIO lookup
[    3.185546] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@6e000/serial@0[0]'
[    3.200408] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@6e000/serial@0[0]'
[    3.215179] omap_uart 4806e000.serial: using lookup tables for GPIO lookup
[    3.222412] omap_uart 4806e000.serial: No GPIO consumer rs485-term found
[    3.229553] omap_uart 4806e000.serial: GPIO lookup for consumer rts
[    3.236206] omap_uart 4806e000.serial: using device tree for GPIO lookup
[    3.243255] of_get_named_gpiod_flags: can't parse 'rts-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@6e000/serial@0[0]'
[    3.257507] of_get_named_gpiod_flags: can't parse 'rts-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@6e000/serial@0[0]'
[    3.271636] omap_uart 4806e000.serial: using lookup tables for GPIO lookup
[    3.278930] omap_uart 4806e000.serial: No GPIO consumer rts found
[    3.285949] 4806e000.serial: ttyO3 at MMIO 0x4806e000 (irq = 126, base_baud = 3000000) is a OMAP UART3
[    3.350219] brd: module loaded
[    3.391296] loop: module loaded
[    3.400421] mtdoops: mtd device (mtddev=name/number) must be supplied
[    3.424072] mdio_bus fixed-0: GPIO lookup for consumer reset
[    3.430175] mdio_bus fixed-0: using lookup tables for GPIO lookup
[    3.436676] mdio_bus fixed-0: No GPIO consumer reset found
[    3.442993] libphy: Fixed MDIO Bus: probed
[    3.463317] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    3.470306] ehci-pci: EHCI PCI platform driver
[    3.475219] ehci-omap: OMAP-EHCI Host Controller driver
[    3.482025] ehci-omap 4a064c00.ehci: EHCI Host Controller
[    3.489440] ehci-omap 4a064c00.ehci: new USB bus registered, assigned bus number 1
[    3.498809] ehci-omap 4a064c00.ehci: irq 106, io mem 0x4a064c00
[    3.534240] ehci-omap 4a064c00.ehci: USB 2.0 started, EHCI 1.00
[    3.542205] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.11
[    3.551147] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.558837] usb usb1: Product: EHCI Host Controller
[    3.563964] usb usb1: Manufacturer: Linux 5.11.0+ ehci_hcd
[    3.569793] usb usb1: SerialNumber: 4a064c00.ehci
[    3.578826] hub 1-0:1.0: USB hub found
[    3.583129] hub 1-0:1.0: 3 ports detected
[    3.591766] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    3.598419] ohci-platform: OHCI generic platform driver
[    3.605407] ohci-platform 4a064800.ohci: Generic Platform OHCI controller
[    3.613342] ohci-platform 4a064800.ohci: new USB bus registered, assigned bus number 2
[    3.622406] ohci-platform 4a064800.ohci: irq 105, io mem 0x4a064800
[    3.718414] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 5.11
[    3.727203] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.734863] usb usb2: Product: Generic Platform OHCI controller
[    3.741088] usb usb2: Manufacturer: Linux 5.11.0+ ohci_hcd
[    3.746948] usb usb2: SerialNumber: 4a064800.ohci
[    3.753997] hub 2-0:1.0: USB hub found
[    3.758209] hub 2-0:1.0: 3 ports detected
[    3.765838] usbcore: registered new interface driver cdc_acm
[    3.771789] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[    3.780395] usbcore: registered new interface driver cdc_wdm
[    3.786621] usbcore: registered new interface driver usb-storage
[    3.798004] musb-hdrc musb-hdrc.0.auto: MUSB HDRC host driver
[    3.805236] musb-hdrc musb-hdrc.0.auto: new USB bus registered, assigned bus number 3
[    3.814697] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.11
[    3.823486] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.831146] usb usb3: Product: MUSB HDRC host driver
[    3.836425] usb usb3: Manufacturer: Linux 5.11.0+ musb-hcd
[    3.842224] usb usb3: SerialNumber: musb-hdrc.0.auto
[    3.850067] hub 3-0:1.0: USB hub found
[    3.854614] hub 3-0:1.0: 1 port detected
[    3.866333] userial_init: registered 8 ttyGS* devices
[    3.871673] udc musb-hdrc.0.auto: registering UDC driver [g_cdc]
[    3.878509] using random self ethernet address
[    3.883331] using random host ethernet address
[    3.890594] g_cdc gadget: adding config #1 'CDC Composite (ECM + ACM)'/(ptrval)
[    3.898529] g_cdc gadget: adding 'cdc_ethernet'/(ptrval) to config 'CDC Composite (ECM + ACM)'/(ptrval)
[    3.910461] usb0: HOST MAC 5e:d6:ac:99:dd:1b
[    3.915466] usb0: MAC ba:2e:8e:dc:a9:84
[    3.919555] g_cdc gadget: CDC Ethernet: dual speed IN/ep1in OUT/ep1out NOTIFY/ep2in
[    3.927673] g_cdc gadget: adding 'acm'/(ptrval) to config 'CDC Composite (ECM + ACM)'/(ptrval)
[    3.936828] g_cdc gadget: acm ttyGS0: dual speed IN/ep3in OUT/ep2out NOTIFY/ep4in
[    3.944793] g_cdc gadget: cfg 1/(ptrval) speeds: high full
[    3.950592] g_cdc gadget:   interface 0 = cdc_ethernet/(ptrval)
[    3.956878] g_cdc gadget:   interface 1 = cdc_ethernet/(ptrval)
[    3.963104] g_cdc gadget:   interface 2 = acm/(ptrval)
[    3.968597] g_cdc gadget:   interface 3 = acm/(ptrval)
[    3.974029] g_cdc gadget: CDC Composite Gadget, version: King Kamehameha Day 2008
[    3.981964] g_cdc gadget: g_cdc ready
[    3.985931] musb-hdrc musb-hdrc.0.auto: musb_set_peripheral: already in peripheral mode: 98
[    3.997344] i2c /dev entries driver
[    4.009490] omap_wdt: OMAP Watchdog Timer Rev 0x00: initial timeout 60 sec
[    4.021392] sdhci: Secure Digital Host Controller Interface driver
[    4.027984] sdhci: Copyright(c) Pierre Ossman
[    4.035156] sdhci-pltfm: SDHCI platform and OF driver helper
[    4.046813] omap_hsmmc 480b4000.mmc: GPIO lookup for consumer cd
[    4.047058] omap_hsmmc 480d5000.mmc: GPIO lookup for consumer cd
[    4.053283] omap_hsmmc 480b4000.mmc: using device tree for GPIO lookup
[    4.059692] omap_hsmmc 480d5000.mmc: using device tree for GPIO lookup
[    4.066589] of_get_named_gpiod_flags: can't parse 'cd-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@b4000/mmc@0[0]'
[    4.073455] of_get_named_gpiod_flags: can't parse 'cd-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@d5000/mmc@0[0]'
[    4.087249] of_get_named_gpiod_flags: can't parse 'cd-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@b4000/mmc@0[0]'
[    4.101043] of_get_named_gpiod_flags: can't parse 'cd-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@d5000/mmc@0[0]'
[    4.114715] omap_hsmmc 480b4000.mmc: using lookup tables for GPIO lookup
[    4.128356] omap_hsmmc 480d5000.mmc: using lookup tables for GPIO lookup
[    4.135437] omap_hsmmc 480b4000.mmc: No GPIO consumer cd found
[    4.142456] omap_hsmmc 480d5000.mmc: No GPIO consumer cd found
[    4.148651] omap_hsmmc 480b4000.mmc: GPIO lookup for consumer wp
[    4.154815] omap_hsmmc 480d5000.mmc: GPIO lookup for consumer wp
[    4.161132] omap_hsmmc 480b4000.mmc: using device tree for GPIO lookup
[    4.167480] omap_hsmmc 480d5000.mmc: using device tree for GPIO lookup
[    4.174407] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@b4000/mmc@0[0]'
[    4.181304] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@d5000/mmc@0[0]'
[    4.195037] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@b4000/mmc@0[0]'
[    4.208831] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@d5000/mmc@0[0]'
[    4.222442] omap_hsmmc 480b4000.mmc: using lookup tables for GPIO lookup
[    4.236175] omap_hsmmc 480d5000.mmc: using lookup tables for GPIO lookup
[    4.243133] omap_hsmmc 480b4000.mmc: No GPIO consumer wp found
[    4.250244] omap_hsmmc 480d5000.mmc: No GPIO consumer wp found
[    4.258087] omap_hsmmc 480b4000.mmc: Looking up vmmc-supply from device tree
[    4.263610] omap_hsmmc 480d5000.mmc: Looking up vmmc-supply from device tree
[    4.270050] omap_hsmmc 480b4000.mmc: Looking up vqmmc-supply from device tree
[    4.277496] omap_hsmmc 480d5000.mmc: Looking up vqmmc-supply from device tree
[    4.285003] omap_hsmmc 480b4000.mmc: Looking up vqmmc-supply property in node /ocp/interconnect@48000000/segment@0/target-module@b4000/mmc@0 failed
[    4.292541] omap_hsmmc 480d5000.mmc: Looking up vqmmc-supply property in node /ocp/interconnect@48000000/segment@0/target-module@d5000/mmc@0 failed
[    4.320678] ledtrig-cpu: registered to indicate activity on CPUs
[    4.333953] Initializing XFRM netlink socket
[    4.339080] NET: Registered protocol family 10
[    4.347930] Segment Routing with IPv6
[    4.351928] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    4.360626] NET: Registered protocol family 17
[    4.365447] NET: Registered protocol family 15
[    4.370361] Key type dns_resolver registered
[    4.376617] oprofile: using arm/armv7-ca9
[    4.381042] ThumbEE CPU extension supported.
[    4.385650] Registering SWP/SWPB emulation handler
[    4.391510] twl: not initialized
[    4.394989] twl6030_uv_to_vsel:OUT OF RANGE! non mapped vsel for 1375000 Vs max 1316660
[    4.403442] twl6030_uv_to_vsel:OUT OF RANGE! non mapped vsel for 1375000 Vs max 1316660
[    4.411926] twl6030_uv_to_vsel:OUT OF RANGE! non mapped vsel for 1375000 Vs max 1316660
[    4.420410] twl6030_uv_to_vsel:OUT OF RANGE! non mapped vsel for 1375000 Vs max 1316660
[    4.428924] twl6030_uv_to_vsel:OUT OF RANGE! non mapped vsel for 1375000 Vs max 1316660
[    4.437408] twl6030_uv_to_vsel:OUT OF RANGE! non mapped vsel for 1375000 Vs max 1316660
[    4.445892] twl6030_uv_to_vsel:OUT OF RANGE! non mapped vsel for 1410000 Vs max 1316660
[    4.454376] Power Management for TI OMAP4+ devices.
[    4.459533] OMAP4 PM: u-boot >= v2012.07 is required for full PM support
[    4.469573] Loading compiled-in X.509 certificates
[    4.617950] smartreflex 4a0d9000.smartreflex: omap_sr_probe: SmartReflex driver initialized
[    4.627532] smartreflex 4a0d9000.smartreflex: omap_sr_probe: (null): No Voltage table for the corresponding vdd. Cannot create debugfs entries for n-values
[    4.643859] smartreflex: probe of 4a0d9000.smartreflex failed with error -61
[    4.651824] smartreflex 4a0db000.smartreflex: omap_sr_probe: SmartReflex driver initialized
[    4.661071] smartreflex 4a0db000.smartreflex: omap_sr_probe: (null): No Voltage table for the corresponding vdd. Cannot create debugfs entries for n-values
[    4.676239] smartreflex: probe of 4a0db000.smartreflex failed with error -61
[    4.684020] smartreflex 4a0dd000.smartreflex: omap_sr_probe: SmartReflex driver initialized
[    4.693115] smartreflex 4a0dd000.smartreflex: omap_sr_probe: (null): No Voltage table for the corresponding vdd. Cannot create debugfs entries for n-values
[    4.708282] smartreflex: probe of 4a0dd000.smartreflex failed with error -61
[    4.720367] dmm 4e000000.dmm: initialized all PAT entries
[    4.729339] reg-fixed-voltage wl12xx_vmmc: GPIO lookup for consumer (null)
[    4.736785] reg-fixed-voltage wl12xx_vmmc: using device tree for GPIO lookup
[    4.744323] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/wl12xx_vmmc[0]'
[    4.753387] of_get_named_gpiod_flags: parsed 'gpio' property of node '/wl12xx_vmmc[0]' - status (0)
[    4.763122] gpio gpiochip1: Persistence not supported for GPIO 22
[    4.769683] vwl1271: 1800 mV, disabled
[    4.774688] reg-fixed-voltage wl12xx_vmmc: vwl1271 supplying 1800000uV
[    4.803161] omap_wdt: OMAP Watchdog Timer Rev 0x00: initial timeout 60 sec
[    4.838989] omap-iommu 4a066000.mmu: 4a066000.mmu registered
[    4.854339] i2c i2c-2: GPIO lookup for consumer scl
[    4.859863] i2c i2c-2: using device tree for GPIO lookup
[    4.865631] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0[0]'
[    4.879516] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0[0]'
[    4.893402] i2c i2c-2: using lookup tables for GPIO lookup
[    4.899322] i2c i2c-2: No GPIO consumer scl found
[    4.904357] i2c i2c-2: GPIO lookup for consumer sda
[    4.909515] i2c i2c-2: using device tree for GPIO lookup
[    4.909515] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0[0]'
[    4.929138] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@60000/i2c@0[0]'
[    4.943023] i2c i2c-2: using lookup tables for GPIO lookup
[    4.948852] i2c i2c-2: No GPIO consumer sda found
[    4.953887] omap_i2c 48060000.i2c: bus 2 rev0.10 at 400 kHz
[    4.963043] i2c i2c-0: GPIO lookup for consumer scl
[    4.968292] i2c i2c-0: using device tree for GPIO lookup
[    4.968292] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0[0]'
[    4.987915] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0[0]'
[    5.001708] i2c i2c-0: using lookup tables for GPIO lookup
[    5.007507] i2c i2c-0: No GPIO consumer scl found
[    5.012542] i2c i2c-0: GPIO lookup for consumer sda
[    5.017700] i2c i2c-0: using device tree for GPIO lookup
[    5.023345] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0[0]'
[    5.037292] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@70000/i2c@0[0]'
[    5.037628] i2c i2c-0: using lookup tables for GPIO lookup
[    5.057220] i2c i2c-0: No GPIO consumer sda found
[    5.066467] bq27xxx-battery 0-0055: data memory update not supported for chip
[    5.094482] hw-breakpoint: Failed to enable monitor mode on CPU 0.
[    5.102539] hw-breakpoint: CPU 0 failed to disable vector catch
[    5.118927] power_supply bq27541-0: power_supply_changed
[    5.129791] Skipping twl internal clock init and using bootloader value (unknown osc rate)
[    5.139587] power_supply bq27541-0: power_supply_changed_work
[    5.145996] power_supply bq27541-0: power_supply_update_bat_leds 4
[    5.153076] power_supply bq27541-0: power_supply_changed
[    5.164794] twl 0-0048: PIH (irq 151) nested IRQs
[    5.175445] power_supply bq27541-0: power_supply_changed_work
[    5.181610] power_supply bq27541-0: power_supply_update_bat_leds 4
[    5.197662] twl_rtc 48070000.i2c:twl@48:rtc: Enabling TWL-RTC
[    5.214538] twl_rtc 48070000.i2c:twl@48:rtc: registered as rtc0
[    5.225158] twl_rtc 48070000.i2c:twl@48:rtc: setting system clock to 2021-04-22T16:18:37 UTC (1619108317)
[    5.240905] VAUX1_6030: 1000 <--> 3300 mV at 2800 mV, enabled
[    5.252990] VAUX2_6030: 1200 <--> 3300 mV at 1800 mV, disabled
[    5.264282] VAUX3_6030: 1000 <--> 3300 mV at 1200 mV, disabled
[    5.276153] VMMC: 1200 <--> 3000 mV at 1800 mV, disabled
[    5.285736] VPP: 1800 <--> 2500 mV at 1900 mV, disabled
[    5.295135] VUSIM: 1200 <--> 3300 mV at 1800 mV, disabled
[    5.304107] VDAC: 1800 mV, enabled
[    5.310516] VANA: 2100 mV, enabled
[    5.317901] VCXIO: 1800 mV, enabled
[    5.324432] VUSB: 3300 mV, disabled
[    5.328155] V1V8: override min_uV, 1 -> 1800000
[    5.334960] V1V8: override max_uV, 2147483647 -> 1800000
[    5.342010] V1V8: 1800 mV, enabled
[    5.345611] V2V1: override min_uV, 1 -> 2100000
[    5.352478] V2V1: override max_uV, 2147483647 -> 2100000
[    5.359497] V2V1: 2100 mV, enabled
[    5.365203] random: fast init done
[    5.371002] twl6030_usb 48070000.i2c:twl@48:usb-comparator: Looking up usb-supply from device tree
[    5.384918] twl6030_usb 48070000.i2c:twl@48:usb-comparator: Initialized TWL6030 USB module
[    5.400634] omap_i2c 48070000.i2c: bus 0 rev0.10 at 400 kHz
[    5.409667] i2c i2c-1: GPIO lookup for consumer scl
[    5.415191] i2c i2c-1: using device tree for GPIO lookup
[    5.415191] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@72000/i2c@0[0]'
[    5.434814] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@72000/i2c@0[0]'
[    5.448699] i2c i2c-1: using lookup tables for GPIO lookup
[    5.454559] i2c i2c-1: No GPIO consumer scl found
[    5.454559] i2c i2c-1: GPIO lookup for consumer sda
[    5.464691] i2c i2c-1: using device tree for GPIO lookup
[    5.464691] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@48000000/segment@0/target-module@72000/i2c@0[0]'
[    5.484283] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@48000000/segment@0/target-module@72000/i2c@0[0]'
[    5.498168] i2c i2c-1: using lookup tables for GPIO lookup
[    5.503967] i2c i2c-1: No GPIO consumer sda found
[    5.508941] omap_i2c 48072000.i2c: bus 1 rev0.10 at 400 kHz
[    5.517700] i2c i2c-3: GPIO lookup for consumer scl
[    5.523101] i2c i2c-3: using device tree for GPIO lookup
[    5.528778] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp/interconnect@48000000/segment@200000/target-module@150000/i2c@0[0]'
[    5.543273] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp/interconnect@48000000/segment@200000/target-module@150000/i2c@0[0]'
[    5.557769] i2c i2c-3: using lookup tables for GPIO lookup
[    5.563537] i2c i2c-3: No GPIO consumer scl found
[    5.568572] i2c i2c-3: GPIO lookup for consumer sda
[    5.573730] i2c i2c-3: using device tree for GPIO lookup
[    5.579437] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp/interconnect@48000000/segment@200000/target-module@150000/i2c@0[0]'
[    5.593902] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp/interconnect@48000000/segment@200000/target-module@150000/i2c@0[0]'
[    5.608306] i2c i2c-3: using lookup tables for GPIO lookup
[    5.614196] i2c i2c-3: No GPIO consumer sda found
[    5.619934] lm75 3-0048: Looking up vs-supply from device tree
[    5.626159] lm75 3-0048: Looking up vs-supply property in node /ocp/interconnect@48000000/segment@200000/target-module@150000/i2c@0/tmp@48 failed
[    5.640045] lm75 3-0048: supply vs not found, using dummy regulator
[    5.675933] lm75 3-0048: hwmon2: sensor 'tmp105'
[    5.691436] smb347 3-0006: charging enable/disable in SW disabled
[    5.700439] omap_i2c 48350000.i2c: bus 3 rev0.10 at 400 kHz
[    5.707763] omap-iommu 55082000.mmu: 55082000.mmu registered
[    5.720916] DSS: set fck to 170666667
[    5.727111] omapdss_dss 58000000.dss: Looking up vdda_video-supply from device tree
[    5.735290] omapdss_dss 58000000.dss: Looking up vdda_video-supply property in node /ocp/target-module@58000000/dss@0 failed
[    5.747344] omapdss_dss 58000000.dss: supply vdda_video not found, using dummy regulator
[    5.756011] DSS: dss_runtime_get
[    5.760131] DSS: dss_restore_context
[    5.763916] DSS: OMAP DSS rev 4.0
[    5.767456] DSS: dss_runtime_put
[    5.770935] DSS: dss_save_context
[    5.774505] DSS: context saved
[    5.777740] DSS: dss_restore_context
[    5.782928] DSS: context restored
[    5.801849] omapdss_dsi 58005000.encoder: Looking up vdd-supply from device tree
[    5.810638] power_supply smb347-usb: power_supply_changed
[    5.816497] power_supply smb347-mains: power_supply_changed
[    5.822723] power_supply smb347-usb: power_supply_changed_work
[    5.829010] power_supply smb347-usb: power_supply_update_gen_leds 1
[    5.836120] power_supply smb347-mains: power_supply_changed_work
[    5.836120] power_supply smb347-mains: power_supply_update_gen_leds 0
[    5.849456] power_supply smb347-mains: driver has no data for `charge_type' property
[    5.859039] DSI: dsi_runtime_get
[    5.863647] DSI: dsi_runtime_put
[    5.867156] OF: graph: no port node found in /ocp/target-module@58000000/dss@0/target-module@5000/encoder@0
[    5.877593] omapdss_dsi 58005000.encoder: failed to find video sink
[    5.884277] OF: graph: no port node found in /ocp/target-module@58000000/dss@0/target-module@5000/encoder@0
[    5.899261] DSS: dss_save_context
[    5.899261] DSS: context saved
[    5.909118] DISPC: dispc_mgr_set_gamma: channel 0, lut len 0, hw len 256
[    5.916503] DISPC: dispc_mgr_set_gamma: channel 1, lut len 0, hw len 1024
[    5.924102] DISPC: dispc_mgr_set_gamma: channel 2, lut len 0, hw len 256
[    5.924194] DISPC: dispc_runtime_get
[    5.935180] DSS: dss_restore_context
[    5.935211] DSS: context restored
[    5.942596] DISPC: fifo(0) threshold (bytes), old 20352/20464, new 32640/32752
[    5.950256] DISPC: fifo(1) threshold (bytes), old 32640/32752, new 32640/32752
[    5.957946] DISPC: fifo(2) threshold (bytes), old 32640/32752, new 32640/32752
[    5.965606] DISPC: fifo(3) threshold (bytes), old 32640/32752, new 32640/32752
[    5.973236] DISPC: fifo(4) threshold (bytes), old 32640/32752, new 0/128
[    5.980377] DISPC: dispc_ovl_setup 0, pa 0x9e844000, pa_uv 0x00000000, sw 1, 0,0, 1x1 -> 0x0, cmode 34325258, rot 1, chan 0 repl 1
[    5.992828] DISPC: scrw 1, width 1
[    5.996459] DISPC: offset0 0, offset1 0, row_inc 1, pix_inc 1
[    5.996490] DISPC: 0,0 1x1 -> 1x1
[    6.006103] DISPC: dispc_enable_plane 0, 1
[    6.010437] DISPC: lck = 170666667 (1)
[    6.014465] DISPC: pck = 85333333 (2)
[    6.018341] DISPC: channel 0 xres 8 yres 1
[    6.018341] DISPC: pck 16000000
[    6.026000] DISPC: hsync_len 8 hfp 4 hbp 4 vsw 1 vfp 1 vbp 1
[    6.032012] DISPC: vsync_level -1 hsync_level -1 data_pclk_edge 1 de_level 1 sync_pclk_edge 1
[    6.041015] DISPC: hsync 666666Hz, vsync 166666Hz
[    6.046112] DISPC: dispc_enable_plane 0, 0
[    6.046112] DISPC: dispc_restore_context
[    6.054626] DISPC: dispc_restore_gamma_tables()
[    6.059417] DISPC: dispc_mgr_write_gamma_table: channel 0
[    6.065124] DISPC: dispc_mgr_write_gamma_table: channel 1
[    6.070892] DISPC: dispc_mgr_write_gamma_table: channel 2
[    6.076721] DISPC: fifo(0) threshold (bytes), old 32640/32752, new 32640/32752
[    6.084411] DISPC: fifo(1) threshold (bytes), old 32640/32752, new 32640/32752
[    6.092010] DISPC: fifo(2) threshold (bytes), old 32640/32752, new 32640/32752
[    6.099700] DISPC: fifo(3) threshold (bytes), old 32640/32752, new 32640/32752
[    6.107391] DISPC: fifo(4) threshold (bytes), old 0/128, new 0/128
[    6.107391] omapdss_dispc 58001000.dispc: OMAP DISPC rev 4.0
[    6.119934] DISPC: dispc_runtime_put
[    6.123718] DISPC: dispc_save_context
[    6.123718] DISPC: context saved
[    6.131195] omapdss_dss 58000000.dss: bound 58001000.dispc (ops dispc_component_ops)
[    6.131195] DSI: dsi_runtime_get
[    6.143432] omapdss_dsi 58005000.encoder: OMAP DSI rev 3.0
[    6.149291] DSI: dsi_runtime_put
[    6.152893] omapdss_dss 58000000.dss: bound 58005000.encoder (ops dsi_component_ops)
[    6.167144] DISPC: dispc_runtime_get
[    6.167144] DISPC: dispc_runtime_put
[    6.174957] DISPC: dispc_save_context
[    6.174957] DISPC: context saved
[    6.185638] DSS: dss_save_context
[    6.189208] DSS: context saved
[    6.194366] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0

@hansemro
Copy link
Owner Author

Using r5g6b5 color format removes the yellow background. But now it is stretched vertically.

@mj-sakellaropoulos
Copy link

mj-sakellaropoulos commented Apr 22, 2021

Have been trying with the omapfb driver. I can confirm that I have the panel timings working in device tree, but not the video source.

omapfb details:
[    5.086059] panel-dpi panel: failed to find video source

See :

Edit: Now with the omapdrm driver using panel-simple/panel-dpi: the devicetree is similar, but I'm still missing GPIO config for power supply and LCD enable.

https://github.com/mj-sakellaropoulos/kc1_linux_configs/blob/main/drm/omap4-kc1-drm.dmesg.txt

@hansemro
Copy link
Owner Author

hansemro commented Apr 23, 2021

Using your dts, I also see this:

partial dmesg
[    5.799377] pinctrl-single 4a100040.pinmux: pin PIN145 already requested by display; cannot claim for 58000000.dss
[    5.811035] pinctrl-single 4a100040.pinmux: pin-145 (58000000.dss) status -22
[    5.818603] pinctrl-single 4a100040.pinmux: could not request pin 145 (PIN145) from group pinmux_dss_dpi_pins  on device pinctrl-single
[    5.831481] omapdss_dss 58000000.dss: Error applying setting, reverse things back
[    5.839447] omapdss_dss: probe of 58000000.dss failed with error -22

Also, I think &gpio45 10 should be &gpio2 13 (32 + 13 = 45)

@mj-sakellaropoulos
Copy link

Using your dts, I also see this:

Strange, I'm not getting those messages

Also, I think &gpio45 10 should be &gpio2 13 (32 + 13 = 45)

Ah that makes sense, I've been trying to figure out the GPIO numbers in the manual for a while

@hansemro
Copy link
Owner Author

hansemro commented Apr 23, 2021

Strange, I'm not getting those messages

They do not show up in kernel console as it boots, but show when I run dmesg. They might show if the log level increases from whatever I am using currently.

@mj-sakellaropoulos
Copy link

mj-sakellaropoulos commented Apr 23, 2021

Strange, I'm not getting those messages

They do not show up in kernel console as it boots, but show when I run dmesg. They might show if the log level increases from whatever I am using currently.

Ah, dmesg will have to wait until the serial adapter arrives. USB gadget doesen't seem to work and i've only just recently got userspace working by integrating initramfs into the kernel image. Is USB working for you ?

Also, I think &gpio45 10 should be &gpio2 13 (32 + 13 = 45)

I've just tried it and it resolved the "enable-gpio" message

@hansemro
Copy link
Owner Author

hansemro commented Apr 23, 2021

Is USB working for you ?

I can only access USB console when the device is able to reach the login prompt...

An alternative may be to use ram console from Android downstream. I created an issue here: #18

Also, I enabled Discussions on this repo and posted my UART setup

@hansemro
Copy link
Owner Author

hansemro commented Apr 23, 2021

"enable-gpio"

You may also need to enable the 3.3 V rail connected to the display (gpio_47 pin).

@mj-sakellaropoulos
Copy link

mj-sakellaropoulos commented Apr 23, 2021

"enable-gpio"

You may also need to enable the 3.3 V rail connected to the display (gpio_47 pin).

Done. Nothing special happened, just resolved the message.

Last relevant warning:

[    7.316741] panel-simple display: Specify missing connector_type

Edit: I've update my DTS

@hansemro
Copy link
Owner Author

hansemro commented Apr 23, 2021

I am not sure if the backlight node needs to be specified, but I am working on it here: #11. With older kernels (and in U-Boot), I can confirm that you can use a tool like devmem to set the registers responsible for PWM backlight (GPTimer10 PWM) to change brightness.

@mj-sakellaropoulos
Copy link

mj-sakellaropoulos commented Apr 30, 2021

Ok - I've tested both now. Must be down to differences in omapdrm across kernel versions.

For Linux 5.12-rc8 : DSI1/2 are needed as "ok"

I've tried your DTS as-is and its no longer working. You're on 5.11 right?

only change needed for it to work:
omap4-kc1-dss.dtsi for 5.12-rc8+

...
&dsi1 {
	status = "ok";
	vdd-supply = <&vcxio>;
};

&dsi2 {
	status = "ok";
	vdd-supply = <&vcxio>;
};

@hansemro
Copy link
Owner Author

I've tried your DTS as-is and its no longer working. You're on 5.11 right?

Yes

@hansemro
Copy link
Owner Author

The same device tree works in 5.12-rc8, weird.

@mj-sakellaropoulos
Copy link

Oh, ok then. Perhaps I broke the code somewhere if that's the case....

I will use the clean branch and check

Technically my kernel is 5.12-rc8(+), but I didn't see any recent changes

@hansemro
Copy link
Owner Author

hansemro commented Apr 30, 2021

I am using your fork: mj-sakellaropoulos/linux-omap4-kc1@9392a59
image

@mj-sakellaropoulos
Copy link

mj-sakellaropoulos commented Apr 30, 2021

Yeah, the kernel I've been running was on the branch with the printks. I am compiling the clean branch now, I trust it works as you say 😂

There are a lot of if statements without brackets, sometimes I would forget to add brackets after I added the printk, so it would totally change the control flow. Which is also how I ended up with kernel panics

It's all good in the end anyways, because reading the code is how I figured I need vcxio on dsi, which is the main requirement

@hansemro
Copy link
Owner Author

hansemro commented Apr 30, 2021

I just removed vcxio from dsi and it still works... Well, they were disabled, so it should not have made a difference.

@mj-sakellaropoulos
Copy link

mj-sakellaropoulos commented Apr 30, 2021

I've just booted from the clean branch : without DSI, it isn't working, and with DSI it's working. Ultimate confusion...

Actually our debugfs output is different:

- DSS -
FCK = 170666667
- DISPC -
dispc fclk source = FCK
fck		170666667       
- DISPC-CORE-CLK -
lck		170666667       lck div	1
- LCD -
LCD clk source = FCK
lck		170666667       lck div	1
pck		85333333        pck div	2
- LCD2 -
LCD2 clk source = PLL2:1
lck		153600000       lck div	1
pck		51200000        pck div	3

Your earlier post seems to be using the non-pll code path and mine is using the dsi1 pll, which is why your pixel clock is off by a bit, they can't get a very precise clock without a PLL.

@hansemro
Copy link
Owner Author

hansemro commented Apr 30, 2021

5.11.0_modules.tar.gz
2021-04-30-09-04_v5.11.0.tar.gz

@hansemro
Copy link
Owner Author

hansemro commented Apr 30, 2021

PLL works on your end, which is really interesting. Can you send your kernel + dtb?

@mj-sakellaropoulos
Copy link

mj-sakellaropoulos commented Apr 30, 2021

5.11.0_modules.tar.gz
2021-04-30-09-04_v5.11.0.tar.gz

This is working

PLL works on your end, which is really interesting. Can you send your kernel + dtb?

here it is:
CLEAN.tar.gz

#to try either dtb:
cat zImage DTB_HERE > zImageWithDTB

The dtb was compiled like this:

  • copy your dts from dtb_dev branch into my kernel tree
  • ARCH=arm CROSS_COMPILE=toolchain-prefix- make dtbs

The changes in dsi-enabled are as decribed above #5 (comment)

@hansemro
Copy link
Owner Author

hansemro commented Apr 30, 2021

here it is:
CLEAN.tar.gz

I can confirm your results with your image. DSI-enabled DT works, but get very unstable output with the other..

@mj-sakellaropoulos
Copy link

Very interesting. We have a difference somewhere, I'm not sure what though

@mj-sakellaropoulos
Copy link

mj-sakellaropoulos commented Apr 30, 2021

hmm, my buildroot has basically nothing in it. I do have libdrm installed, along with the test programs, that's about it

However it is integrated into the kernel image, because that's the only thing that worked for me

@hansemro
Copy link
Owner Author

hansemro commented Apr 30, 2021

Can you test with this old pmOS rootfs: https://www.mediafire.com/file/da090mmq6l0fmxv/pmos_rootfs.tar.gz/file

User: user
Password: 1234

Notes:
After extraction, add to /etc/inittab:

ttyO2::respawn:/sbin/getty -L ttyO2 115200 vt102
ttyGS0::respawn:/sbin/getty -L ttyGS0 115200 vt102

Change root password as user:
$ sudo passwd root

Get connected to internet and get fbdev: https://wiki.postmarketos.org/wiki/USB_Internet

  • Use ifconfig to set a fixed address for usb0
  • Set dns in /etc/resolv.conf
  • Share PC's network connection to the usb ethernet device
  • Configure PC's address as default gateway
  • Install fbdev and a DE of your choice
# apk update
# apk add xf86-video-fbdev xorg-server xinit xfce4
# startxfce4

@mj-sakellaropoulos
Copy link

Ok, I will try it

@mj-sakellaropoulos
Copy link

What's the best way to boot this ? Flash to emmc ? initrd ?

@hansemro
Copy link
Owner Author

hansemro commented Apr 30, 2021

Extract to a large enough (> 200 MB) emmc partition with ext4. Just make sure to set root=/dev/mmcblkMpN

@mj-sakellaropoulos
Copy link

Yeah your kernel + DTS from dtb_dev branch has started working. Something must be off with my buildroot config/environment

Rootfs is working too

@hansemro
Copy link
Owner Author

I am guessing it is a kernel config issue.

@mj-sakellaropoulos
Copy link

I can confirm kmscube is working, I haven't been able to get X11 running since my OTG adapter is non-functional - can't start xfce over ssh/tty.

@hansemro
Copy link
Owner Author

hansemro commented Apr 30, 2021

can't start xfce over ssh/tty.

It is possible as root:

$ startxfce4 &
$ xfce4-terminal -e 'bash -c "uname -a; bash"'

@mj-sakellaropoulos
Copy link

Indeed I tried. Im getting "x server already running ... connection refused". Im trying to find if there is a lockfile somewhere

@hansemro
Copy link
Owner Author

My bad, it works with root not user

@mj-sakellaropoulos
Copy link

Indeed, I've tried as root, looks like I broke something...

@hansemro
Copy link
Owner Author

hansemro commented Apr 30, 2021

Can you print /var/log/Xorg.0.log?

@mj-sakellaropoulos
Copy link

No such file, since X never even started, I'm not sure how it thinks it's already running

@mj-sakellaropoulos
Copy link

mj-sakellaropoulos commented Apr 30, 2021

OK , xinit works without xfce - weird. I can see xterm
glxgears at 60fps:
image
kmscube at 20fps:
image

@hansemro
Copy link
Owner Author

hansemro commented May 3, 2021

OK , xinit works without xfce - weird. I can see xterm

Do you have the following in /etc/X11/xorg.conf?

Section "Device"
        Identifier "omap"
        Driver "fbdev"
        Option "fb" "/dev/fb0"
EndSection

@mj-sakellaropoulos
Copy link

Turns out I don't even have an xorg conf...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants