<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>i.MX ProcessorsのトピックProper Way To Configure JEIDA 16 bit Display For IMX6SX</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/Proper-Way-To-Configure-JEIDA-16-bit-Display-For-IMX6SX/m-p/2089553#M236826</link>
    <description>&lt;P&gt;Bunch of problems I'm experiencing here trying to bring up a JDI 16 bits per pixel 640x480 display. Here are all the relevant excerpts from the DTS:&lt;/P&gt;&lt;PRE&gt;#include "imx6sx.dtsi"&lt;BR /&gt;&lt;BR /&gt;/ {&lt;BR /&gt;    mxcfb1: fb@0 {&lt;BR /&gt;        compatible = "fsl,mxc_sdc_fb";&lt;BR /&gt;        disp_dev = "ldb";&lt;BR /&gt;        interface_pix_fmt = "RGB24";&lt;BR /&gt;        default_bpp = &amp;lt;24&amp;gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;      int_clk = &amp;lt;0&amp;gt;;&lt;BR /&gt;        late_init = &amp;lt;0&amp;gt;;&lt;BR /&gt;        status = "okay";&lt;BR /&gt;    };&lt;BR /&gt;    reserved-memory {&lt;BR /&gt;        #address-cells = &amp;lt;1&amp;gt;;&lt;BR /&gt;        #size-cells = &amp;lt;1&lt;BR /&gt;        ranges;&lt;BR /&gt;        &lt;BR /&gt;        // Memory map for vdev, m4 firmware here, all the way to 0x901000+0x1f000&lt;BR /&gt;        &lt;BR /&gt;        linux,cma {&lt;BR /&gt;            compatible = "shared-dma-pool";&lt;BR /&gt;            reusable;&lt;BR /&gt;            size = &amp;lt;0x8000000&amp;gt;;&lt;BR /&gt;            linux,cma-default;&lt;BR /&gt;        };&lt;BR /&gt;    };&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;&lt;PRE&gt;&amp;amp;lcdif2 {&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; display = &amp;lt;&amp;amp;display1&amp;gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; disp-dev = "ldb";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; status = "okay";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; display1: display@1 {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bits-per-pixel = &amp;lt;24&amp;gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bus-width = &amp;lt;24&amp;gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; };&lt;/SPAN&gt;&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;&amp;amp;ldb {&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; status = "okay";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; lvds-channel@0 {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fsl,data-mapping = "jeida";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fsl,data-width = &amp;lt;24&amp;gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; crtc = "lcdif2";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; status = "okay";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; primary;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; display-timings {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; native-mode = &amp;lt;&amp;amp;timing1&amp;gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; timing1: jdi {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clock-frequency = &amp;lt;25000000&amp;gt;; // Min/typ/max clk in hz&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hactive = &amp;lt;640&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // horizontal resolution&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hback-porch = &amp;lt;130&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Min/typ/max #clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hfront-porch = &amp;lt;20&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Min/typ/max #clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hsync-len = &amp;lt;10&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Min/typ/max #clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vactive = &amp;lt;480&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // vertical resolution&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vback-porch = &amp;lt;25&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Min/typ/max #clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vfront-porch = &amp;lt;10&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Min/typ/max #clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vsync-len = &amp;lt;10&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Min/typ/max #clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; de-active = &amp;lt;1&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // active high display enable in datasheet&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pixelclk-active = &amp;lt;1&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // negative edge&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; };&lt;/SPAN&gt;&lt;BR /&gt;};&lt;/PRE&gt;&lt;P&gt;I have also patched the mxcfb.c driver to reduce the allocation size from 32M to 16M.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It seems that even with 128M of CMA size, the driver still fails to allocate... With kernel cmd argument cma=128M, I get:&lt;/P&gt;&lt;PRE&gt;[ 1.976945] mxsfb 2220000.lcdif: supply lcd not found, using dummy regulator&lt;BR /&gt;[ 1.984239] cma: cma_alloc: reserved: alloc failed, req-size: 4096 pages, ret: -12&lt;BR /&gt;[ 1.992149] mxsfb 2220000.lcdif: Unable to allocate framebuffer memory&lt;BR /&gt;[ 1.998750] mxsfb 2220000.lcdif: Failed to initialize fbinfo: -12&lt;BR /&gt;[ 2.004919] mxsfb: probe of 2220000.lcdif failed with error -12&lt;/PRE&gt;&lt;P&gt;I don't see issues when I don't enable this driver, so perhaps it's fragmentation, but it's odd that everything seems to work fine with 32M, and a 32M allocation fails with 128M available.&lt;/P&gt;&lt;P&gt;But more importantly - I can't seem to get Linux to honor my framebuffer timings, and I'm not sure how I can support JEIDA 18 bit.&lt;/P&gt;&lt;P&gt;With or without a kernel command line option: "video=mxcfb0:dev=ldb,if=RGB24"&lt;/P&gt;&lt;PRE&gt;$ fbset&lt;BR /&gt;&lt;BR /&gt;mode "320x240-150"&lt;BR /&gt;# D: 15.750 MHz, H: 39.375 kHz, V: 150.286 Hz&lt;BR /&gt;geometry 320 240 320 240 32&lt;BR /&gt;timings 63492 16 16 16 4 48 2&lt;BR /&gt;accel false&lt;BR /&gt;rgba 8/16,8/8,8/0,0/0&lt;BR /&gt;endmode&lt;/PRE&gt;&lt;P&gt;The mode is forced to this weird 150Hz 320x240.&lt;/P&gt;&lt;P&gt;I am also not sure how to support my 16 bits per pixel RGB666 panel. Should I keep everything 24 bits, and attempt to pinmux the additional pair off, if that's possible?&lt;/P&gt;</description>
    <pubDate>Tue, 29 Apr 2025 17:28:10 GMT</pubDate>
    <dc:creator>alexkl</dc:creator>
    <dc:date>2025-04-29T17:28:10Z</dc:date>
    <item>
      <title>Proper Way To Configure JEIDA 16 bit Display For IMX6SX</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Proper-Way-To-Configure-JEIDA-16-bit-Display-For-IMX6SX/m-p/2089553#M236826</link>
      <description>&lt;P&gt;Bunch of problems I'm experiencing here trying to bring up a JDI 16 bits per pixel 640x480 display. Here are all the relevant excerpts from the DTS:&lt;/P&gt;&lt;PRE&gt;#include "imx6sx.dtsi"&lt;BR /&gt;&lt;BR /&gt;/ {&lt;BR /&gt;    mxcfb1: fb@0 {&lt;BR /&gt;        compatible = "fsl,mxc_sdc_fb";&lt;BR /&gt;        disp_dev = "ldb";&lt;BR /&gt;        interface_pix_fmt = "RGB24";&lt;BR /&gt;        default_bpp = &amp;lt;24&amp;gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;      int_clk = &amp;lt;0&amp;gt;;&lt;BR /&gt;        late_init = &amp;lt;0&amp;gt;;&lt;BR /&gt;        status = "okay";&lt;BR /&gt;    };&lt;BR /&gt;    reserved-memory {&lt;BR /&gt;        #address-cells = &amp;lt;1&amp;gt;;&lt;BR /&gt;        #size-cells = &amp;lt;1&lt;BR /&gt;        ranges;&lt;BR /&gt;        &lt;BR /&gt;        // Memory map for vdev, m4 firmware here, all the way to 0x901000+0x1f000&lt;BR /&gt;        &lt;BR /&gt;        linux,cma {&lt;BR /&gt;            compatible = "shared-dma-pool";&lt;BR /&gt;            reusable;&lt;BR /&gt;            size = &amp;lt;0x8000000&amp;gt;;&lt;BR /&gt;            linux,cma-default;&lt;BR /&gt;        };&lt;BR /&gt;    };&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;&lt;PRE&gt;&amp;amp;lcdif2 {&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; display = &amp;lt;&amp;amp;display1&amp;gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; disp-dev = "ldb";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; status = "okay";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; display1: display@1 {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bits-per-pixel = &amp;lt;24&amp;gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bus-width = &amp;lt;24&amp;gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; };&lt;/SPAN&gt;&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;&amp;amp;ldb {&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; status = "okay";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; lvds-channel@0 {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fsl,data-mapping = "jeida";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fsl,data-width = &amp;lt;24&amp;gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; crtc = "lcdif2";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; status = "okay";&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; primary;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; display-timings {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; native-mode = &amp;lt;&amp;amp;timing1&amp;gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; timing1: jdi {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; clock-frequency = &amp;lt;25000000&amp;gt;; // Min/typ/max clk in hz&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hactive = &amp;lt;640&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // horizontal resolution&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hback-porch = &amp;lt;130&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Min/typ/max #clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hfront-porch = &amp;lt;20&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Min/typ/max #clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hsync-len = &amp;lt;10&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Min/typ/max #clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vactive = &amp;lt;480&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // vertical resolution&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vback-porch = &amp;lt;25&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Min/typ/max #clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vfront-porch = &amp;lt;10&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Min/typ/max #clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vsync-len = &amp;lt;10&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Min/typ/max #clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; de-active = &amp;lt;1&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // active high display enable in datasheet&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pixelclk-active = &amp;lt;1&amp;gt;;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // negative edge&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; };&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; };&lt;/SPAN&gt;&lt;BR /&gt;};&lt;/PRE&gt;&lt;P&gt;I have also patched the mxcfb.c driver to reduce the allocation size from 32M to 16M.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It seems that even with 128M of CMA size, the driver still fails to allocate... With kernel cmd argument cma=128M, I get:&lt;/P&gt;&lt;PRE&gt;[ 1.976945] mxsfb 2220000.lcdif: supply lcd not found, using dummy regulator&lt;BR /&gt;[ 1.984239] cma: cma_alloc: reserved: alloc failed, req-size: 4096 pages, ret: -12&lt;BR /&gt;[ 1.992149] mxsfb 2220000.lcdif: Unable to allocate framebuffer memory&lt;BR /&gt;[ 1.998750] mxsfb 2220000.lcdif: Failed to initialize fbinfo: -12&lt;BR /&gt;[ 2.004919] mxsfb: probe of 2220000.lcdif failed with error -12&lt;/PRE&gt;&lt;P&gt;I don't see issues when I don't enable this driver, so perhaps it's fragmentation, but it's odd that everything seems to work fine with 32M, and a 32M allocation fails with 128M available.&lt;/P&gt;&lt;P&gt;But more importantly - I can't seem to get Linux to honor my framebuffer timings, and I'm not sure how I can support JEIDA 18 bit.&lt;/P&gt;&lt;P&gt;With or without a kernel command line option: "video=mxcfb0:dev=ldb,if=RGB24"&lt;/P&gt;&lt;PRE&gt;$ fbset&lt;BR /&gt;&lt;BR /&gt;mode "320x240-150"&lt;BR /&gt;# D: 15.750 MHz, H: 39.375 kHz, V: 150.286 Hz&lt;BR /&gt;geometry 320 240 320 240 32&lt;BR /&gt;timings 63492 16 16 16 4 48 2&lt;BR /&gt;accel false&lt;BR /&gt;rgba 8/16,8/8,8/0,0/0&lt;BR /&gt;endmode&lt;/PRE&gt;&lt;P&gt;The mode is forced to this weird 150Hz 320x240.&lt;/P&gt;&lt;P&gt;I am also not sure how to support my 16 bits per pixel RGB666 panel. Should I keep everything 24 bits, and attempt to pinmux the additional pair off, if that's possible?&lt;/P&gt;</description>
      <pubDate>Tue, 29 Apr 2025 17:28:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Proper-Way-To-Configure-JEIDA-16-bit-Display-For-IMX6SX/m-p/2089553#M236826</guid>
      <dc:creator>alexkl</dc:creator>
      <dc:date>2025-04-29T17:28:10Z</dc:date>
    </item>
    <item>
      <title>Re: Proper Way To Configure JEIDA 16 bit Display For IMX6SX</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Proper-Way-To-Configure-JEIDA-16-bit-Display-For-IMX6SX/m-p/2091038#M236909</link>
      <description>&lt;P&gt;Found why the odd resolution was being set - was a userspace process that set up the display mode.&lt;/P&gt;&lt;P&gt;I've also realized I made an error - RGB666 is 18 bits per pixel - so the title and description are wrong about that.&lt;/P&gt;</description>
      <pubDate>Fri, 02 May 2025 18:41:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Proper-Way-To-Configure-JEIDA-16-bit-Display-For-IMX6SX/m-p/2091038#M236909</guid>
      <dc:creator>alexkl</dc:creator>
      <dc:date>2025-05-02T18:41:40Z</dc:date>
    </item>
  </channel>
</rss>

