Hello, I followed along to this post on a ICN6211 design I have. I've downloaded and compiled a new kernel based on 6.6.
I added a chipone-icn6211.dts file and added it to the Makefile in /linux/arch/arm64/boot/dts/overlays.I added chipone-icn6211.o to the Makefile in /linux/drivers/gpu/drm/bridge/ to make sure the output files were compiled.
I then used make menuconfig at /linux/ and added the Chipone-ICN6211 bridge driver. At this point, I added dtoverlay=chipone-icn6211 to my config.txt and I was not getting the module to load at boot.
Are there any extra steps I need to take to enable the driver to load at boot?
I added a chipone-icn6211.dts file and added it to the Makefile in /linux/arch/arm64/boot/dts/overlays.
Code:
/dts-v1/;/plugin/;//#include <dt-bindings/gpio/gpio.h>//#include <dt-bindings/pinctrl/bcm2835.h>/ { compatible = "brcm,bcm2835"; /* PWM0 function */ fragment@0 { target = <&gpio>; __overlay__ { pwm_pins: pwm_pins { brcm,pins = <18>; brcm,function = <2>; brcm,pull = <0>; }; }; }; fragment@1 { target = <&pwm>; frag1: __overlay__ { pinctrl-names = "default"; pinctrl-0 = <&pwm_pins>; assigned-clock-rates = <100000000>; status = "okay"; }; }; fragment@2 { target-path = "/"; __overlay__ { //#gpio-cells = <2>; /* Panel backlight through PWM0 on GPIO 19 */ backlight: backlight { compatible = "pwm-backlight"; pwms = <&pwm 1 5000000>; /* Period of 5000000ns means 200Hz */ brightness-levels = <0 1000>; num-interpolated-steps = <1000>; default-brightness-level = <800>; enable-gpios = <&gpio 16 0>; /* Backlight enable... */ }; panel: panel { compatible = "panel-dpi"; backlight = <&backlight>; /* Physical dimensions of active area */ width-mm = <120>; height-mm = <68>; panel-timing { clock-frequency = <24284160>; hactive = <800>; hfront-porch = <8>; hsync-len = <4>; hback-porch = <8>; vactive = <480>; vfront-porch = <8>; vsync-len = <4>; vback-porch = <8>; }; port { panel_in: endpoint { remote-endpoint = <&bridge_out>; }; }; }; }; }; fragment@3 { target = <&i2c_csi_dsi>; __overlay__ { #gpio-cells = <2>; #address-cells = <1>; #size-cells = <0>; status = "okay"; bridge@2c { compatible = "chipone,icn6211"; reg = <0x2c>; enable-gpios = <&gpio 15 0>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; bridge_in: endpoint { remote-endpoint = <&dsi_out_port>; data-lanes = <0 1>; }; }; port@2 { reg = <2>; bridge_out: endpoint { remote-endpoint = <&panel_in_dpi>; }; }; }; }; }; }; fragment@4 { target = <&dsi1>; __overlay__ { #address-cells = <1>; #size-cells = <0>; status = "okay"; port { dsi_out_port: endpoint { remote-endpoint = <&bridge_in>; data-lanes = <0 1>; }; }; }; };};
I then used make menuconfig at /linux/ and added the Chipone-ICN6211 bridge driver. At this point, I added dtoverlay=chipone-icn6211 to my config.txt and I was not getting the module to load at boot.
Are there any extra steps I need to take to enable the driver to load at boot?
- I did find this tutorial (https://askubuntu.com/questions/299676/ ... ed-on-boot) which had me manually adding the .ko file to lib/modules. And I got the module to load at boot (albeit with a error in dmesg). My gut feeling is that this isn't the right way to do it
Statistics: Posted by ncarley — Wed Mar 20, 2024 2:42 am