Changeset 36047


Ignore:
Timestamp:
2013-03-15T16:50:08+01:00 (5 years ago)
Author:
juhosg
Message:

generic: ar8216: add OF configuration support for AR8327

Signed-off-by: Gabor Juhos <juhosg@…>

File:
1 edited

Legend:

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

    r36046 r36047  
    3434#include <linux/ar8216_platform.h> 
    3535#include <linux/workqueue.h> 
     36#include <linux/of_device.h> 
     37 
    3638#include "ar8216.h" 
    3739 
     
    10871089} 
    10881090 
     1091#ifdef CONFIG_OF 
     1092static int 
     1093ar8327_hw_config_of(struct ar8xxx_priv *priv, struct device_node *np) 
     1094{ 
     1095        const __be32 *paddr; 
     1096        int len; 
     1097        int i; 
     1098 
     1099        paddr = of_get_property(np, "qca,ar8327-initvals", &len); 
     1100        if (!paddr || len < (2 * sizeof(*paddr))) 
     1101                return -EINVAL; 
     1102 
     1103        len /= sizeof(*paddr); 
     1104 
     1105        for (i = 0; i < len - 1; i += 2) { 
     1106                u32 reg; 
     1107                u32 val; 
     1108 
     1109                reg = be32_to_cpup(paddr + i); 
     1110                val = be32_to_cpup(paddr + i + 1); 
     1111 
     1112                switch (reg) { 
     1113                case AR8327_REG_PORT_STATUS(0): 
     1114                        priv->chip_data.ar8327.port0_status = val; 
     1115                        break; 
     1116                case AR8327_REG_PORT_STATUS(6): 
     1117                        priv->chip_data.ar8327.port6_status = val; 
     1118                        break; 
     1119                default: 
     1120                        priv->write(priv, reg, val); 
     1121                        break; 
     1122                } 
     1123        } 
     1124 
     1125        return 0; 
     1126} 
     1127#else 
     1128static inline int 
     1129ar8327_hw_config_of(struct ar8xxx_priv *priv, struct device_node *np) 
     1130{ 
     1131        return -EINVAL; 
     1132} 
     1133#endif 
     1134 
    10891135static int 
    10901136ar8327_hw_init(struct ar8xxx_priv *priv) 
     
    10941140        int i; 
    10951141 
    1096         ret = ar8327_hw_config_pdata(priv, priv->phy->dev.platform_data); 
     1142        if (priv->phy->dev.of_node) 
     1143                ret = ar8327_hw_config_of(priv, priv->phy->dev.of_node); 
     1144        else 
     1145                ret = ar8327_hw_config_pdata(priv, 
     1146                                             priv->phy->dev.platform_data); 
     1147 
    10971148        if (ret) 
    10981149                return ret; 
Note: See TracChangeset for help on using the changeset viewer.