diff options
author | Andy Fleming <afleming@freescale.com> | 2009-02-04 19:43:44 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-02-04 19:43:44 -0500 |
commit | 4d7902f22b0804730b80f7a4147f676430248a3a (patch) | |
tree | f3a2eb354156760e9f07b02774006fb2103aa20e /drivers/net/gianfar.c | |
parent | 0fd56bb5be6455d0d42241e65aed057244665e5e (diff) |
gianfar: Fix stashing support
Stashing is only supported on the 85xx (e500-based) SoCs. The 83xx and 86xx
chips don't have a proper cache for this. U-Boot has been updated to add
stashing properties to the device tree nodes of gianfar devices on 85xx. So
now we modify Linux to keep stashing off unless those properties are there.
Signed-off-by: Andy Fleming <afleming@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/gianfar.c')
-rw-r--r-- | drivers/net/gianfar.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index 33de25602b3..dadd08cd801 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
@@ -164,6 +164,9 @@ static int gfar_of_init(struct net_device *dev) | |||
164 | struct gfar_private *priv = netdev_priv(dev); | 164 | struct gfar_private *priv = netdev_priv(dev); |
165 | struct device_node *np = priv->node; | 165 | struct device_node *np = priv->node; |
166 | char bus_name[MII_BUS_ID_SIZE]; | 166 | char bus_name[MII_BUS_ID_SIZE]; |
167 | const u32 *stash; | ||
168 | const u32 *stash_len; | ||
169 | const u32 *stash_idx; | ||
167 | 170 | ||
168 | if (!np || !of_device_is_available(np)) | 171 | if (!np || !of_device_is_available(np)) |
169 | return -ENODEV; | 172 | return -ENODEV; |
@@ -193,6 +196,26 @@ static int gfar_of_init(struct net_device *dev) | |||
193 | } | 196 | } |
194 | } | 197 | } |
195 | 198 | ||
199 | stash = of_get_property(np, "bd-stash", NULL); | ||
200 | |||
201 | if(stash) { | ||
202 | priv->device_flags |= FSL_GIANFAR_DEV_HAS_BD_STASHING; | ||
203 | priv->bd_stash_en = 1; | ||
204 | } | ||
205 | |||
206 | stash_len = of_get_property(np, "rx-stash-len", NULL); | ||
207 | |||
208 | if (stash_len) | ||
209 | priv->rx_stash_size = *stash_len; | ||
210 | |||
211 | stash_idx = of_get_property(np, "rx-stash-idx", NULL); | ||
212 | |||
213 | if (stash_idx) | ||
214 | priv->rx_stash_index = *stash_idx; | ||
215 | |||
216 | if (stash_len || stash_idx) | ||
217 | priv->device_flags |= FSL_GIANFAR_DEV_HAS_BUF_STASHING; | ||
218 | |||
196 | mac_addr = of_get_mac_address(np); | 219 | mac_addr = of_get_mac_address(np); |
197 | if (mac_addr) | 220 | if (mac_addr) |
198 | memcpy(dev->dev_addr, mac_addr, MAC_ADDR_LEN); | 221 | memcpy(dev->dev_addr, mac_addr, MAC_ADDR_LEN); |