mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-12-11 07:02:10 -05:00
ltq-ptm: add NVMEM MAC support
This will be used in the following commit to move MAC assignment of the DSL interface to NVMEM. Signed-off-by: Rosen Penev <rosenp@gmail.com> Link: https://github.com/openwrt/openwrt/pull/17289 Signed-off-by: Robert Marko <robimarko@gmail.com>
This commit is contained in:
parent
77132c2fc1
commit
fcc48204d2
@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
include $(INCLUDE_DIR)/kernel.mk
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
PKG_NAME:=ltq-ptm
|
PKG_NAME:=ltq-ptm
|
||||||
PKG_RELEASE:=4
|
PKG_RELEASE:=5
|
||||||
|
|
||||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||||
PKG_LICENSE:=GPL-2.0+
|
PKG_LICENSE:=GPL-2.0+
|
||||||
|
|||||||
@ -35,6 +35,7 @@
|
|||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/of_device.h>
|
#include <linux/of_device.h>
|
||||||
|
#include <linux/of_net.h>
|
||||||
|
|
||||||
#include "ifxmips_ptm_vdsl.h"
|
#include "ifxmips_ptm_vdsl.h"
|
||||||
#include <lantiq_soc.h>
|
#include <lantiq_soc.h>
|
||||||
@ -69,7 +70,7 @@ unsigned long cgu_get_pp32_clock(void)
|
|||||||
return rate;
|
return rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ptm_setup(struct net_device *, int);
|
static int ptm_setup(struct device_node* np, struct net_device *, int);
|
||||||
static struct net_device_stats *ptm_get_stats(struct net_device *);
|
static struct net_device_stats *ptm_get_stats(struct net_device *);
|
||||||
static int ptm_open(struct net_device *);
|
static int ptm_open(struct net_device *);
|
||||||
static int ptm_stop(struct net_device *);
|
static int ptm_stop(struct net_device *);
|
||||||
@ -144,9 +145,10 @@ unsigned int ifx_ptm_dbg_enable = DBG_ENABLE_MASK_ERR;
|
|||||||
* ####################################
|
* ####################################
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void ptm_setup(struct net_device *dev, int ndev)
|
static int ptm_setup(struct device_node *np, struct net_device *dev, int ndev)
|
||||||
{
|
{
|
||||||
u8 addr[ETH_ALEN];
|
u8 addr[ETH_ALEN];
|
||||||
|
int err;
|
||||||
|
|
||||||
netif_carrier_off(dev);
|
netif_carrier_off(dev);
|
||||||
|
|
||||||
@ -160,13 +162,20 @@ static void ptm_setup(struct net_device *dev, int ndev)
|
|||||||
#endif
|
#endif
|
||||||
dev->watchdog_timeo = ETH_WATCHDOG_TIMEOUT;
|
dev->watchdog_timeo = ETH_WATCHDOG_TIMEOUT;
|
||||||
|
|
||||||
addr[0] = 0x00;
|
err = of_get_ethdev_address(np, dev);
|
||||||
addr[1] = 0x20;
|
if (err == -EPROBE_DEFER)
|
||||||
addr[2] = 0xda;
|
return err;
|
||||||
addr[3] = 0x86;
|
if (err) {
|
||||||
addr[4] = 0x23;
|
addr[0] = 0x00;
|
||||||
addr[5] = 0x75 + ndev;
|
addr[1] = 0x20;
|
||||||
eth_hw_addr_set(dev, addr);
|
addr[2] = 0xda;
|
||||||
|
addr[3] = 0x86;
|
||||||
|
addr[4] = 0x23;
|
||||||
|
addr[5] = 0x75 + ndev;
|
||||||
|
eth_hw_addr_set(dev, addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct net_device_stats *ptm_get_stats(struct net_device *dev)
|
static struct net_device_stats *ptm_get_stats(struct net_device *dev)
|
||||||
@ -986,6 +995,7 @@ static int ltq_ptm_probe(struct platform_device *pdev)
|
|||||||
int i;
|
int i;
|
||||||
char ver_str[256];
|
char ver_str[256];
|
||||||
struct port_cell_info port_cell = {0};
|
struct port_cell_info port_cell = {0};
|
||||||
|
struct device_node *np = pdev->dev.of_node;
|
||||||
|
|
||||||
ret = init_priv_data();
|
ret = init_priv_data();
|
||||||
if ( ret != 0 ) {
|
if ( ret != 0 ) {
|
||||||
@ -1006,7 +1016,9 @@ static int ltq_ptm_probe(struct platform_device *pdev)
|
|||||||
g_net_dev[i] = alloc_netdev(0, g_net_dev_name[i], NET_NAME_UNKNOWN, ether_setup);
|
g_net_dev[i] = alloc_netdev(0, g_net_dev_name[i], NET_NAME_UNKNOWN, ether_setup);
|
||||||
if ( g_net_dev[i] == NULL )
|
if ( g_net_dev[i] == NULL )
|
||||||
goto ALLOC_NETDEV_FAIL;
|
goto ALLOC_NETDEV_FAIL;
|
||||||
ptm_setup(g_net_dev[i], i);
|
ret = ptm_setup(np, g_net_dev[i], i);
|
||||||
|
if (ret == -EPROBE_DEFER)
|
||||||
|
goto INIT_TABLES_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( i = 0; i < ARRAY_SIZE(g_net_dev); i++ ) {
|
for ( i = 0; i < ARRAY_SIZE(g_net_dev); i++ ) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user