Some problems with kernel module und device tree..
#1
Hello guys,

I'm developing a kernel driver for a MOST NIC and have got some problems by reading the chip configuration from device tree.

Here is the configuration:

Code:
&i2c2 {
    pinctrl-names = "default";
    pinctrl-0 = <&i2c2_pins_a>;
    status = "okay";
    
    os8104: [email protected] {
        compatible = "smsc,os8104";
        reg = <0x41>;
        master = <0>;
        bypass = <0>;
        
        gpio_reset = <&pio 8 17>;    /* PI17 */
        gpio_int = <&pio 8 16>;        /* PI16 */
        gpio_aint = <&pio 8 19>;    /* PI19 */
        gpio_error = <&pio 8 18>;    /* PI18 */
    };
};

My NIC (os8104) is connected to i2c-2. 

And here is the corresponding code in LKM:

Code:
static int os8104_probe(struct i2c_client *client, const struct i2c_device_id *id) {
    struct device_node *dn;
    int rc;
    int master = 0, bypass = 0;
    struct os8104 *priv;

    dn = of_find_node_by_name(NULL, os8104_driver.driver.name);
    if (dn == NULL) {
        return -ENODEV;
    }

    rc = of_property_read_u32(dn, "master", &master);
    pr_err("rc = %d, master = %11d\n", rc, master);
    
    rc = of_property_read_u32(dn, "bypass", &bypass);
    pr_err("rc = %d, bypass = %11d\n", rc, bypass);

    priv = devm_kzalloc(&client->dev, sizeof(*priv), GFP_KERNEL);

    if (!priv) {
        return -ENOMEM;
    }

    priv->adapter = to_i2c_adapter(client->dev.parent);
    priv->client = client;
    priv->mode = val;
    
    priv->gpio_reset = of_get_named_gpio(dn, "gpio_reset", 0);
    priv->gpio_int = of_get_named_gpio(dn, "gpio_int", 0);
    priv->gpio_aint = of_get_named_gpio(dn, "gpio_aint", 0);
    priv->gpio_error = of_get_named_gpio(dn, "gpio_error", 0);
    
    return 0;
}

If I'm loading the module, the function of_find_node_by_name find my os8104 node, then I'm able to read the both properties (master and bypass). 

But, if I do an of_get_named_gpio(dn, "gpio_reset", 0), I get for each of four gpio-properties

Quote:[ 1610.330108] OF: /[email protected]/[email protected]/[email protected]: arguments longer than property

in dmesg.

Any ideas?

Kernel version is 4.14.39 and SBC is a BananaPRO (Allwinner A20 SoC).

Many thanks. Smile
  Reply


Possibly Related Threads...
Thread Author Replies Views Last Post
  On the matter of the proposed Pine64 mobile device (a potentially unpopular opinion) hiccupstix 20 1,660 02-06-2019, 03:45 PM
Last Post: tllim
  New EMMC module not working jsfrederick 4 678 02-09-2018, 09:57 PM
Last Post: jsfrederick

Forum Jump:


Users browsing this thread: 1 Guest(s)