This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BBB AM3358 Framebuffer Driver Problem

Hi.

I use Beaglebone Black.

I work in ti-processor-sdk-linux-am335x-evm-01.00.00.03.

File System : arago-base-tisdk-image-am335x-evm

I want to use only Framebuffer. Not hdmi.

But not exist framebuffer driver.

> cat /proc/fb  --> Only 0

> fbset -t 167515 20 10 2 4 10 2 ---> Timings 0 0 0 0 0 0 0

After Power-On, LCD Sync Signal (VSync, HSync, PClk, DE) is not Out.

What is Framebuffer Driver Name ?

How install Framebuffer Driver ?

Please, Help !

root@am335x-evm:~# dmesg | grep drm 

[ 1.066119] [drm] Initialized drm 1.1.0 20060810
[ 1.729744] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 1.736414] [drm] No driver support for vblank timestamp query.
[ 1.749945] [drm] Cannot find any crtc or sizes - going 1024x768
[ 1.791856] [drm] Initialized tilcdc 1.0.0 20121205 on minor 0

Exist drm driver for framebuffer.

How use to drm driver ?

  • Hi,

    See the following guides:
    processors.wiki.ti.com/.../Linux_Core_LCD_Controller_User_Guide
    processors.wiki.ti.com/.../Processor_SDK_Linux_LCDC

    They contain the available information on how to port/use FB or DRM and how to switch from one to the other in linux kernel.

    Best Regards,
    Yordan
  • Hi, Yordan.
    Thanks reply.

    I already confirmed your recommend document.
    But I don't understand.

    I want directly use Framebuffer mmap() in console mode. Not X-Mode.
    Useful drm driver ?

    fbset command error ?
    root@am335x-evm:~# fbset -t 167515 20 10 2 4 10 2 --> LCD Driver Chip Data
    ioctl FBIOPUT_VSCREENINFO: Invalid argument

    Timings 0 0 0 0 0 0 0 ?
    LCD Sync Signal not Out. ?

    How connect between /dev/fb and drm driver ?
    cat /proc/fb
    0 ?

    I don't understand.
    Help !

    I modified am335x-boneblack.dts.

    /*
    * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
    *
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of the GNU General Public License version 2 as
    * published by the Free Software Foundation.
    */
    /dts-v1/;

    #include "am33xx.dtsi"
    #include "am335x-bone-common.dtsi"

    &ldo3_reg {
    regulator-min-microvolt = <1800000>;
    regulator-max-microvolt = <1800000>;
    regulator-always-on;
    };

    &mmc1 {
    vmmc-supply = <&vmmcsd_fixed>;
    };

    &mmc2 {
    vmmc-supply = <&vmmcsd_fixed>;
    pinctrl-names = "default";
    pinctrl-0 = <&emmc_pins>;
    bus-width = <8>;
    status = "okay";
    ti,vcc-aux-disable-is-sleep;
    };

    &am33xx_pinmux {

    spi1_pins: spi1_pins {
    pinctrl-single,pins = <
    0x190 ( PIN_INPUT_PULLUP | MUX_MODE3 ) /* (A13) mcasp0_aclkx.spi1_sclk */
    0x194 ( PIN_INPUT_PULLUP | MUX_MODE3 ) /* (B13) mcasp0_fsx.spi1_d0 */
    0x198 ( PIN_OUTPUT_PULLUP | MUX_MODE3 ) /* (D12) mcasp0_axr0.spi1_d1 */
    0x16c ( PIN_INPUT_PULLUP | MUX_MODE5 ) /* (E17) uart0_rtsn.spi1_cs0 */
    0x17c ( PIN_INPUT_PULLUP | MUX_MODE4 ) /* (D17) xdma_event_intr0.spi1_cs1 */
    >;
    };

    lcd_pins_default: lcd_pins_default {
    pinctrl-single,pins = <
    0xa0 ( PIN_OUTPUT | MUX_MODE0 ) /* (R1) lcd_data0.lcd_data0 */
    0xa4 ( PIN_OUTPUT | MUX_MODE0 ) /* (R2) lcd_data1.lcd_data1 */
    0xa8 ( PIN_OUTPUT | MUX_MODE0 ) /* (R3) lcd_data2.lcd_data2 */
    0xac ( PIN_OUTPUT | MUX_MODE0 ) /* (R4) lcd_data3.lcd_data3 */
    0xb0 ( PIN_OUTPUT | MUX_MODE0 ) /* (T1) lcd_data4.lcd_data4 */
    0xb4 ( PIN_OUTPUT | MUX_MODE0 ) /* (T2) lcd_data5.lcd_data5 */
    0xb8 ( PIN_OUTPUT | MUX_MODE0 ) /* (T3) lcd_data6.lcd_data6 */
    0xbc ( PIN_OUTPUT | MUX_MODE0 ) /* (T4) lcd_data7.lcd_data7 */
    0xc0 ( PIN_OUTPUT | MUX_MODE0 ) /* (U1) lcd_data8.lcd_data8 */
    0xc4 ( PIN_OUTPUT | MUX_MODE0 ) /* (U2) lcd_data9.lcd_data9 */
    0xc8 ( PIN_OUTPUT | MUX_MODE0 ) /* (U3) lcd_data10.lcd_data10 */
    0xcc ( PIN_OUTPUT | MUX_MODE0 ) /* (U4) lcd_data11.lcd_data11 */
    0xd0 ( PIN_OUTPUT | MUX_MODE0 ) /* (V2) lcd_data12.lcd_data12 */
    0xd4 ( PIN_OUTPUT | MUX_MODE0 ) /* (V3) lcd_data13.lcd_data13 */
    0xd8 ( PIN_OUTPUT | MUX_MODE0 ) /* (V4) lcd_data14.lcd_data14 */
    0xdc ( PIN_OUTPUT | MUX_MODE0 ) /* (T5) lcd_data15.lcd_data15 */
    0xe0 ( PIN_OUTPUT | MUX_MODE0 ) /* (U5) lcd_vsync.lcd_vsync */
    0xe4 ( PIN_OUTPUT | MUX_MODE0 ) /* (R5) lcd_hsync.lcd_hsync */
    0xe8 ( PIN_OUTPUT | MUX_MODE0 ) /* (V5) lcd_pclk.lcd_pclk */
    0xec ( PIN_OUTPUT | MUX_MODE0 ) /* (R6) lcd_ac_bias_en.lcd_ac_bias_en */
    >;
    };

    // nxp_hdmi_bonelt_pins: nxp_hdmi_bonelt_pins {
    // pinctrl-single,pins = <
    // 0x1b0 0x03 /* xdma_event_intr0, OMAP_MUX_MODE3 | AM33XX_PIN_OUTPUT */
    // 0xa0 0x08 /* lcd_data0.lcd_data0, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xa4 0x08 /* lcd_data1.lcd_data1, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xa8 0x08 /* lcd_data2.lcd_data2, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xac 0x08 /* lcd_data3.lcd_data3, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xb0 0x08 /* lcd_data4.lcd_data4, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xb4 0x08 /* lcd_data5.lcd_data5, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xb8 0x08 /* lcd_data6.lcd_data6, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xbc 0x08 /* lcd_data7.lcd_data7, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xc0 0x08 /* lcd_data8.lcd_data8, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xc4 0x08 /* lcd_data9.lcd_data9, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xc8 0x08 /* lcd_data10.lcd_data10, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xcc 0x08 /* lcd_data11.lcd_data11, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xd0 0x08 /* lcd_data12.lcd_data12, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xd4 0x08 /* lcd_data13.lcd_data13, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xd8 0x08 /* lcd_data14.lcd_data14, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xdc 0x08 /* lcd_data15.lcd_data15, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
    // 0xe0 0x00 /* lcd_vsync.lcd_vsync, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
    // 0xe4 0x00 /* lcd_hsync.lcd_hsync, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
    // 0xe8 0x00 /* lcd_pclk.lcd_pclk, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
    // 0xec 0x00 /* lcd_ac_bias_en.lcd_ac_bias_en, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
    // >;
    // };
    // nxp_hdmi_bonelt_off_pins: nxp_hdmi_bonelt_off_pins {
    // pinctrl-single,pins = <
    // 0x1b0 0x03 /* xdma_event_intr0, OMAP_MUX_MODE3 | AM33XX_PIN_OUTPUT */
    // >;
    // };
    //
    // mcasp0_pins: mcasp0_pins {
    // pinctrl-single,pins = <
    // 0x1ac (PIN_INPUT_PULLUP | MUX_MODE0) /* mcasp0_ahclkx.mcasp0_ahclkx */
    // 0x19c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2 */
    // 0x194 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* mcasp0_fsx.mcasp0_fsx */
    // 0x190 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mcasp0_aclkx.mcasp0_aclkx */
    // 0x06c (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gpmc_a11.GPIO1_27 */
    // >;
    // };
    //
    // mcasp0_pins_sleep: mcasp0_pins_sleep {
    // pinctrl-single,pins = <
    // 0x1ac (PIN_INPUT_PULLDOWN | MUX_MODE7) /* mcasp0_ahclkx.mcasp0_ahclkx */
    // 0x19c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* mcasp0_ahclkr.mcasp0_axr2 */
    // 0x194 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* mcasp0_fsx.mcasp0_fsx */
    // 0x190 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* mcasp0_aclkx.mcasp0_aclkx */
    // 0x06c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_a11.GPIO1_27 */
    // >;
    // };
    };

    &spi1 {
    pinctrl-names = "default";
    pinctrl-0 = <&spi1_pins>;

    status = "okay";
    spidev@0 {
    compatible = "linux,spidev";
    spi-max-frequency = <24000000>; /* TODO */
    reg = <0>;
    };
    spidev@1 {
    compatible = "linux,spidev";
    spi-max-frequency = <24000000>; /* TODO */
    reg = <1>;
    };
    };

    &lcdc {
    status = "okay";
    };

    //&mcasp0 {
    // pinctrl-names = "default", "sleep";
    // pinctrl-0 = <&mcasp0_pins>;
    // pinctrl-1 = <&mcasp0_pins_sleep>;
    // status = "okay";
    // op-mode = <0>; /* MCASP_IIS_MODE */
    // tdm-slots = <2>;
    // serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
    // 0 0 1 0
    // >;
    // tx-num-evt = <1>;
    // rx-num-evt = <1>;
    //};

    / {
    panel {
    compatible = "ti,tilcdc,panel";
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&lcd_pins_default>;

    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>;
    };

    display-timings {
    native-mode = <&timing0>;
    timing0: 240x320p60 {
    clock-frequency = <6000000>;
    hactive = <240>;
    vactive = <320>;
    hfront-porch = <10>;
    hback-porch = <20>;
    hsync-len = <10>;
    vback-porch = <2>;
    vfront-porch = <4>;
    vsync-len = <2>;
    hsync-active = <1>;
    vsync-active = <1>;
    };
    };
    };

    hdmi {
    //compatible = "ti,tilcdc,slave";
    //i2c = <&i2c0>;
    //pinctrl-names = "default", "off";
    //pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
    //pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
    status = "disabled";
    };

    // clk_mcasp0_fixed: clk_mcasp0_fixed {
    // #clock-cells = <0>;
    // compatible = "fixed-clock";
    // clock-frequency = <24576000>;
    // };
    //
    // clk_mcasp0: clk_mcasp0 {
    // #clock-cells = <0>;
    // compatible = "ti,gpio-gate-clock";
    // clocks = <&clk_mcasp0_fixed>;
    // enable-gpios = <&gpio1 27 0>; /* BeagleBone Black Clk enable on GPIO1_27 */
    // };
    //
    // hdmi_audio: hdmi_audio@0 {
    // compatible = "linux,hdmi-audio";
    // status = "okay";
    // };
    //
    // sound {
    // compatible = "ti,beaglebone-black-audio";
    // ti,model = "TI BeagleBone Black";
    // ti,audio-codec = <&hdmi_audio>;
    // ti,mcasp-controller = <&mcasp0>;
    // ti,audio-routing =
    // "HDMI Out", "TX";
    // clocks = <&clk_mcasp0>;
    // clock-names = "mclk";
    // };
    };

    Please, Confirm !