The linux driver for this is an i2c driver. So the device tree node that you added will create an i2c device in the linux kernel (i.e. /sys/bus/i2c/devices/1-003c). Then udev sees that this device matches the compatible string of the "ssd1307fb" driver (you will see this listed in `lsmod`). This driver is bound to the device and calls the drivers probe function. This is where the error message is coming from. If the probe function had completed successfully, it would have registered a new fbdev device.

It looks like this error is a bug in the linux kernel that was fixed in kernel v4.11. <https://github.com/torvalds/linux/commit/cfc5b2b551d8c089079e754525839101b1b43624>.

You can work around this by adding a fixed regulator to the device tree and adding it to your device. Or, if you are compiling your own kernel anyway, you can grab the patch I linked.


On 1/8/18 8:09 PM, Mark Grosen wrote:
mark@pocket:~$ dmesg | grep -P 'fb|ssd'
[    2.165499] ssd1307fb 1-003c: failed to get VBAT regulator: -19

How does fbdev "find" the ssd1306?

On Mon, Jan 8, 2018 at 5:51 PM David Lechner <da...@lechnology.com <mailto:da...@lechnology.com>> wrote:

    On 01/08/2018 07:27 PM, Mark Grosen wrote:
    On Mon, Jan 8, 2018 at 10:08 AM David Lechner
    <da...@lechnology.com <mailto:da...@lechnology.com>> wrote:

        On 01/07/2018 05:59 PM, Mark Grosen wrote:
        > I am trying to get the kernel driver for the ssd1306
        working with the PocketBeagle USB HUB cape which has a 64x32
        SSD1306 display
        
(https://www.tindie.com/products/microwavemont/oled-with-24-port-usb-hub-cape-for-pocketbeagle/)
        I know it is physically working as I can use it via user-mode
        I2C. I believe a small change is needed to support the
        unusual 64 pixel width of this board. I have built and loaded
        a new kernel and have a .dtbo

        And what does your device tree overlay look like?


    /dts-v1/;
    /plugin/;

    #include <dt-bindings/board/am335x-bbw-bbb-base.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/pinctrl/am33xx.h>

    / {
    fragment@0 {
    target = <&i2c1>;
    __overlay__ {
    status = "okay";

    #address-cells = <1>;
    #size-cells = <0>;

    ssd1306: oled@3c {
    compatible = "solomon,ssd1306fb-i2c";
    reg = <0x3c>;
                                    solomon,width = <64>;
                                    solomon,height = <32>;
    solomon,page-offset = <0>;
    };
    };
    };
    };


        > loaded via u-boot with 4.4.88-ti-r128 kernel. It shows up
        in /proc/device-tree correctly (at least as far as I can tell
        - the entries match the dts values). I am missing how to get
        this connected to the framebuffer world - there is no
        /dev/fb0 showing up. I see the config options appear to be
        enabled (I am using the defconfig).

        And which options did you enable/are enabled?


    mark@pocket:~$ zcat /proc/config.gz | grep CONFIG_FB | grep -v '#'
    CONFIG_FB=y
    CONFIG_FB_CMDLINE=y
    CONFIG_FB_NOTIFY=y
    CONFIG_FB_CFB_FILLRECT=y
    CONFIG_FB_CFB_COPYAREA=y
    CONFIG_FB_CFB_IMAGEBLIT=y
    CONFIG_FB_SYS_FILLRECT=y
    CONFIG_FB_SYS_COPYAREA=y
    CONFIG_FB_SYS_IMAGEBLIT=y
    CONFIG_FB_SYS_FOPS=y
    CONFIG_FB_DEFERRED_IO=y
    CONFIG_FB_BACKLIGHT=y
    CONFIG_FB_MODE_HELPERS=y
    CONFIG_FB_TILEBLITTING=y
    CONFIG_FB_SMSCUFX=m
    CONFIG_FB_UDL=m
    CONFIG_FB_SIMPLE=y
    CONFIG_FB_SSD1307=y


    Looks alright to me. Is there any error in `dmesg`?


-- 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 beagleboard+unsubscr...@googlegroups.com
    <mailto:beagleboard+unsubscr...@googlegroups.com>.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/beagleboard/8d1b9f53-ab73-6bf4-92d0-ebcfb072bb06%40lechnology.com
    
<https://groups.google.com/d/msgid/beagleboard/8d1b9f53-ab73-6bf4-92d0-ebcfb072bb06%40lechnology.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 beagleboard+unsubscr...@googlegroups.com <mailto:beagleboard+unsubscr...@googlegroups.com>. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/CAL8ugEcSLFrFasGKqfX44iR-UDhzeNE9nt4u4Nfirj9oDnC20A%40mail.gmail.com <https://groups.google.com/d/msgid/beagleboard/CAL8ugEcSLFrFasGKqfX44iR-UDhzeNE9nt4u4Nfirj9oDnC20A%40mail.gmail.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 beagleboard+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beagleboard/fab14b2e-8b97-b6ff-80e5-626edd04d9fa%40lechnology.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to