What is a cawake gpio pin and how to disable it in device tree

348 Views Asked by At

I am receiving an error as under in the bootup logs when my kernel 4.2 armv7l ( and hardware OMAP35xSOM-LV, a LogicPD board) boots up.

[  14.893432] omap_ssi 48058000.ssi-controller: ssi controller 0 initialized (2 ports)!
[   14.959777] omap_ssi_port 4805a000.ssi-port: couldn't get cawake gpio (err=-2)!
[   15.034698] omap_ssi_port: probe of 4805a000.ssi-port failed with error -2
[   15.130096] omap_ssi_port 4805b000.ssi-port: couldn't get cawake gpio (err=-2)!

I can see this ssi port controller disabled in one of the the device tree files (omap3.dtsi) but still this error shows up when the kernel boots up. How to suppress this error ? I am new to device tree concept. For more clarity the relevant code inside omap3.dtsi referring to the ports in discussion is as under:

ssi: ssi-controller@48058000 {
    compatible = "ti,omap3-ssi";
    ti,hwmods = "ssi";

    status = "disabled";

    reg = <0x48058000 0x1000>, <0x48059000 0x1000>;
    reg-names = "sys", "gdd";

    interrupts = <71>;
    interrupt-names = "gdd_mpu";

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

    ssi_port1: ssi-port@4805a000 {
        compatible = "ti,omap3-ssi-port";
        reg = <0x4805a000 0x800>, <0x4805a800 0x800>;
        reg-names = "tx", "rx";
        interrupts = <67>, <68>;
    };

    ssi_port2: ssi-port@4805b000 {
        compatible = "ti,omap3-ssi-port";
        reg = <0x4805b000 0x800>, <0x4805b800 0x800>;
        reg-names = "tx", "rx";
        interrupts = <69>, <70>;
    };
};
1

There are 1 best solutions below

1
On BEST ANSWER

The warning can be suppressed from inside the drivers/hsi/controllers/omap_ssi_port.c. The document keeps the cawake gpio as an optional component. Since the cawake gpio is just a multiplexed form (and not an actual hardware pin) it does not make any sense to disable it inside the device tree (for atleast omap3 series).

cawake_gpio = devm_gpiod_get(&pd->dev, "ti,ssi-cawake", GPIOD_IN);
/*        if (IS_ERR(cawake_gpio)) {
                err = PTR_ERR(cawake_gpio);
                dev_err(&pd->dev, "couldn't get cawake gpio (err=%d)!\n", err);
                goto error;
        }
*/