Sorry I can't be more help at the moment, the infrastructure has changed too much since I did this about 14 months ago. I guess that's forever-ago in embedded linux kernel develop time. I'll likely be doing this alongside you though over the next week or two, so I'll keep you posted if I have any luck.
Andrew J. Pikul System Architect, CEO (800) 565 4026 autopogo.com https://twitter.com/misterpikul "All the devil requires is acquiescence... not struggle, not conflict. Acquiescence." On Thu, Oct 11, 2018 at 8:36 AM David M <[email protected]> wrote: > I'm still new to a lot of this stuff so my knowledge isn't 100% so if > someone sees something wrong with what I'm saying please correct me. > > It looks like the DRM (Direct Render Manager) is the kernel module that > manages the display subsystem, at least the display through the LCD pins, > it's loaded when the kernel starts up, Here it is within dmesg: > > [ 2.070851] serial serial0: tty port ttyS3 registered > [ 2.078095] omap_rng 48310000.rng: Random Number Generator ver. 20 > [ 2.085519] [drm] Initialized vgem 1.0.0 20120112 for virtual device on > minor 0 > [ 2.093108] usbcore: registered new interface driver udl > [ 2.102436] at24 0-0050: 32768 byte 24c256 EEPROM, writable, 1 > bytes/write > > > > Because the LCD panel is specified within the DTS: > > lcd0:panel { > status = "okay"; > compatible = "ti,tilcdc,panel"; > pinctrl-names = "default"; > pinctrl-0 = <&lcd_pins>; > //enable-gpios = <&gpio1 20 GPIO_ACTIVE_HIGH>; > enable-gpios = <&gpio1 20 0>; > backlight = <&lcd_backlight>; > > panel-info { > ac-bias = <255>; > ac-bias-intrpt = <0>; > dma-burst-sz = <16>; > bpp = <16>; > /* bpp = <32>; */ > fdd = <0x80>; > sync-edge = <0>; > sync-ctrl = <1>; > raster-order = <0>; > fifo-th = <0>; > invert-pxl-clk = <1>; > }; > > display-timings { > native-mode=<&timing0>; > timing0: 800x480 { > clock-frequency = <45000000>; > hactive = <800>; > vactive = <480>; > > vsync-len = <3>; > vfront-porch = <13>; > vback-porch = <32>; > > hsync-len = <48>; > hfront-porch = <40>; > hback-porch = <88>; > > > hsync-active = <1>; > vsync-active = <1>; > de-active = <1>; > pixelclk-active = <1>; > }; > }; > }; > > > > and the TILCDC panel driver is built within the kernel it is also loaded > during boot before the filesystem starts: > > [ 24.971896] Bluetooth: HCI UART protocol QCA registered > [ 25.054865] panel panel: found backlight > [ 25.054921] panel panel: found enable GPIO > [ 25.083796] sd 0:0:0:0: Attached scsi generic sg0 type 0 > > > TI's LCD Controller module (TILCDC) plugs into the DRM. When the TILCDC > gets loaded it queries the DRM for available displays (like a panel and/or > HDMI). The kernel will attempt to load TILCDC DRM driver because it is > specified in the DTS under the lcdc node within the am33xx.dtsi file. > > lcdc: lcdc@4830e000 { > compatible = "ti,am33xx-tilcdc"; > reg = <0x4830e000 0x1000>; > interrupts = <36>; > ti,hwmods = "lcdc"; > status = "disabled"; > }; > > (The 'status' field is overridden to 'okay' within my dts file) > > > > When I built the kernel I changed the TILCDC DRM driver to an external > module instead of a built in one. Now instead of the kernel loading the > module while booting it must wait until the the filesystem is loaded before > it can attempt to load the module. > > Here is where the kernel loads the TILCDC module > > [ 25.100373] OF: graph: no port node found in /ocp/lcdc@4830e000 > [ 25.121599] Bluetooth: hci0: change remote baud rate command in firmware > [ 25.177123] usbcore: registered new interface driver cdc_ether > [ 25.196841] OF: graph: no port node found in /ocp/lcdc@4830e000 > [ 25.282171] tilcdc 4830e000.lcdc: Check if componentized > [ 25.282191] tilcdc 4830e000.lcdc: Not componentized > [ 25.282199] tilcdc 4830e000.lcdc: Look for remote node > [ 25.282217] OF: graph: no port node found in /ocp/lcdc@4830e000 > [ 25.347611] tilcdc 4830e000.lcdc: Return 0! > [ 25.347624] tilcdc 4830e000.lcdc: Found encoders and/or connectors > [ 25.347638] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). > [ 25.347643] [drm] No driver support for vblank timestamp query. > [ 25.420388] Console: switching to colour frame buffer device 100x30 > [ 25.430403] tilcdc 4830e000.lcdc: fb0: frame buffer device > > > > The kernel knows what modules are in the filesystem because it reads > /lib/module/`uname -r`/modules.* files > > cospan@guppy-buddy:/lib/modules/4.14.67+$ ls -l > total 2168 > drwxr-xr-x 11 root root 4096 Sep 9 02:18 kernel > -rw-r--r-- 1 root root 583616 Oct 11 01:31 modules.alias > -rw-r--r-- 1 root root 610839 Oct 11 01:31 modules.alias.bin > -rw-r--r-- 1 root root 16162 Oct 11 01:29 modules.builtin > -rw-r--r-- 1 root root 18391 Oct 11 01:31 modules.builtin.bin > -rw-r--r-- 1 root root 172045 Oct 11 01:31 modules.dep > -rw-r--r-- 1 root root 270086 Oct 11 01:31 modules.dep.bin > -rw-r--r-- 1 root root 214 Oct 11 01:31 modules.devname > -rw-r--r-- 1 root root 89017 Oct 11 01:29 modules.order > -rw-r--r-- 1 root root 381 Oct 11 01:31 modules.softdep > -rw-r--r-- 1 root root 192388 Oct 11 01:31 modules.symbols > -rw-r--r-- 1 root root 239831 Oct 11 01:31 modules.symbols.bin > cospan@guppy-buddy:/lib/modules/4.14.67+$ > > > These files are created when you run 'depmod' on the command line. So the > first time I installed the new kernel and modules the LCD didn't work > because I needed to log in over serial and run depmod > > I didn't load the modules explicitly because the DTS told the kernel to > load the modules for me whether those modules were built in to the kernel > or as separate modules within the filesystem. > > Another way that this could be accomplished is by using udev and writing > some rules that will tell the kernel to load the module when some condition > happens or by explicitly calling modprobe on a kernel module directly. > > Again, if I got something wrong let me know. > > -- > For more options, visit http://beagleboard.org/discuss > --- > You received this message because you are subscribed to a topic in the > Google Groups "BeagleBoard" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/beagleboard/XKH0M5_Q-Tk/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beagleboard/49b6b0fe-a6e1-4c61-8f2a-b518fcd9d7a4%40googlegroups.com > <https://groups.google.com/d/msgid/beagleboard/49b6b0fe-a6e1-4c61-8f2a-b518fcd9d7a4%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/CAOn%2BBK1mXbJJxxaPeidAVy%3DsYMD8v3Qc1FNwzxX8cDMp0iQv3w%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
