Changeset 36159


Ignore:
Timestamp:
2013-04-03T11:58:33+02:00 (5 years ago)
Author:
blogic
Message:

[generic] add OF support to rtl8367b driver

Signed-off-by: John Crispin <blogic@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/generic/files/drivers/net/phy/rtl8367b.c

    r35328 r36159  
    863863} 
    864864 
     865#ifdef CONFIG_OF 
     866static int rtl8367b_extif_init_of(struct rtl8366_smi *smi, int id, const char *name) 
     867{ 
     868        struct rtl8367_extif_config *cfg; 
     869        const __be32 *prop; 
     870        int size; 
     871 
     872        prop = of_get_property(smi->parent->of_node, name, &size); 
     873        if (!prop || size != (9 * sizeof(*prop))) 
     874                return 0; 
     875 
     876        cfg = kzalloc(sizeof(struct rtl8367_extif_config), GFP_KERNEL); 
     877        if (!cfg) 
     878                return -1; 
     879 
     880        cfg->txdelay = be32_to_cpup(prop++); 
     881        cfg->rxdelay = be32_to_cpup(prop++); 
     882        cfg->mode = be32_to_cpup(prop++); 
     883        cfg->ability.force_mode = be32_to_cpup(prop++); 
     884        cfg->ability.txpause = be32_to_cpup(prop++); 
     885        cfg->ability.rxpause = be32_to_cpup(prop++); 
     886        cfg->ability.link = be32_to_cpup(prop++); 
     887        cfg->ability.duplex = be32_to_cpup(prop++); 
     888        cfg->ability.speed = be32_to_cpup(prop++); 
     889 
     890        return rtl8367b_extif_init(smi, id, cfg); 
     891} 
     892#else 
     893static int rtl8367b_extif_init_of(struct rtl8366_smi *smi, int id, const char *name) 
     894{ 
     895        return -1; 
     896} 
     897#endif 
     898 
    865899static int rtl8367b_setup(struct rtl8366_smi *smi) 
    866900{ 
     
    876910 
    877911        /* initialize external interfaces */ 
    878         err = rtl8367b_extif_init(smi, 0, pdata->extif0_cfg); 
    879         if (err) 
    880                 return err; 
    881  
    882         err = rtl8367b_extif_init(smi, 1, pdata->extif1_cfg); 
    883         if (err) 
    884                 return err; 
     912        if (smi->parent->of_node) { 
     913                err = rtl8367b_extif_init_of(smi, 0, "realtek,extif0"); 
     914                if (err) 
     915                        return err; 
     916 
     917                err = rtl8367b_extif_init_of(smi, 1, "realtek,extif1"); 
     918                if (err) 
     919                        return err; 
     920        } else { 
     921                err = rtl8367b_extif_init(smi, 0, pdata->extif0_cfg); 
     922                if (err) 
     923                        return err; 
     924 
     925                err = rtl8367b_extif_init(smi, 1, pdata->extif1_cfg); 
     926                if (err) 
     927                        return err; 
     928        } 
    885929 
    886930        /* set maximum packet length to 1536 bytes */ 
Note: See TracChangeset for help on using the changeset viewer.