Hello,

I designed a custom board based off of the OSD335x-SM. So, from the kernel 
perspective, the board looks a lot like the pocket beaglebone. In order to 
get the board to boot I did the following:


   - I reprogrammed the EEPROM so that U-Boot would boot
   - Installed the latest Beaglebone image 
   <https://beagleboard.org/latest-images> on an SDCard
   - Configured the DTS to behave like a pocket beaglebone
   - Modified uEnv.txt to not load capes dynamically and use my DTS file


The board booted fine.

I used Kernel build repo 
<https://github.com/RobertCNelson/ti-linux-kernel-dev> developed by Robert 
C Nelson to get a build-able version of the kernel. I can now create a 
custom version of the kernel DTS.

*Now I want to get the LCD screen working*

I have an 5 Inch New Haven LCD screen 
<http://www.newhavendisplay.com/specs/NHD-5.0-800480TF-ATXL-CTP.pdf> 
attached to the board and I've connected only 16 of the 24-bit color in an 
RGB565 format.

I've modified my DTS file to include support for the LCD Panel following 
the instructions in: 


   - <Kernel>/Documentation/devicetree/bindings/display/tilcdc/tilcdc.txt, 
   - <Kernel>/Documentation/devicetree/bindings/display/tilcdc/panel.txt
   - New Havel 5 Inch LCD Cape DTS File 
   <http://www.cembsoft.com/user/lcdCape/nh5cape/BB-BONE-NH5C-02-A0.dts>


The relevant portions of my DTS file are here:


/ {

  lcd_backlight: backlight {
    status = "okay";
    compatible = "gpio-backlight";
    //brightness-levels = <0 51 53 56 62 75 101 152 255>;
    //default-brightness-level = <8>;
    //default-brightness-level = <0>;
    pinctrl-names = "default";
    pinctrl-0 = <&backlight_pin>;
    gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
    //default-on;
    //default-off;
  };


  lcd0:panel {
    compatible = "ti,tilcdc,panel";
        pinctrl-names = "default";
    pinctrl-0 = <&lcd_pins>;
    enable-gpios = <&gpio1 20 GPIO_ACTIVE_HIGH>;
    backlight = <&lcd_backlight>;
    status = "okay";

    panel-info {
      ac-bias           = <255>;
      ac-bias-intrpt    = <0>;
      dma-burst-sz      = <16>;
      bpp               = <16>;
      fdd               = <0x80>;
      sync-edge         = <0>;
      sync-ctrl         = <1>;
      raster-order      = <0>;
      fifo-th           = <0>;
      //invert-pxl-clk;
    };

    display-timings {
      native-mode=<&timing0>;
      timing0: 800x480 {
        clock-frequency = <45000000>;
        hactive         = <800>;
        vactive         = <480>;

        hfront-porch    = <40>;
        hback-porch     = <40>;
        hsync-len       = <48>;

        vfront-porch    = <13>;
        vback-porch     = <29>;
        vsync-len       = <3>;

        hsync-active    = <0>;
        vsync-active    = <0>;
        //de-active       = <1>;
        //pixelclk-active = <1>;
      };
    };
  };
};

&lcdc {
  status = "okay";
  blue-and-red-wiring = "straight";
};




*Results:*

   - I do not see anything on the LCD screen
   - I do not see a fb0 in /dev directory
   - I have verified that the devicetree has been read correctly by looking 
   into /proc/devicetree/ocp/lcdc@4830e000 as well as /proc/devicetree/panel/ 
   and everything looks correct.

Here is a dump of, what I think, is the most relevant parts of the kernel 
boot dmesg output (I've added some extra messages within 
<kernel>/driver/gpu/tilcdc_drv.c to help me debug this:

...
[    2.056859] [drm] Initialized vgem 1.0.0 20120112 for virtual device on 
minor 0
[    2.064449] usbcore: registered new interface driver udl
[    2.071783] OF: graph: no port node found in /ocp/lcdc@4830e000
[    2.077961] OF: graph: no port node found in /ocp/lcdc@4830e000
[    2.084831] tilcdc 4830e000.lcdc: Check if componentized
[    2.090258] tilcdc 4830e000.lcdc: Not componentized
[    2.095191] tilcdc 4830e000.lcdc: Look for remote node
[    2.100384] OF: graph: no port node found in /ocp/lcdc@4830e000
[    2.106356] tilcdc 4830e000.lcdc: Return 0!
[    2.110583] tilcdc 4830e000.lcdc: no encoders/connectors found, failed 
to initialize
...
[    2.713767] panel panel: found backlight
...
[    2.745671] panel panel: found enable GPIO
...



(I can attach the full dmesg if requested)

*Analysis:*

It looks like the tilcdc which is the driver that, I think, should create 
the /dev/fb0 fails because it finds no 'encoder/connectors' I'm not sure 
what this means and I can't find documentation on this.

Within the 
<Kernel>/Documentation/devicetree/bindings/display/tilcdc/tilcdc.txt it 
makes a mention of the remote port but all the examples I've seen only make 
reference to HDMI as a remote endpoint, so I do not think I need to add a 
remote endpoint to the &lcdc entry. I've tried to add a remote port to my 
panel but it just causes a kernel panic. It seems like the tilcdc should 
automatically detect the panel and create an /dev/fb0.

Is there something I'm doing wrong?
Should the tilcdc be initialized after the panel. Perhaps using something 
like a deferred probe?

Any help would be greatly appreciated.

Dave

-- 
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/2eb1ec83-28d0-453d-a4b4-88d9d2dc8906%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to