From d8af1489e0e3cbeba49897e8f6dee1572295dd43 Mon Sep 17 00:00:00 2001 From: hauke Date: Thu, 14 Feb 2013 12:36:52 +0000 Subject: switch: export name of device found via /proc git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35596 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/switch/src/switch-adm.c | 1 + package/switch/src/switch-core.c | 7 +++++++ package/switch/src/switch-core.h | 2 ++ package/switch/src/switch-robo.c | 7 ++++++- 4 files changed, 16 insertions(+), 1 deletion(-) (limited to 'package/switch') diff --git a/package/switch/src/switch-adm.c b/package/switch/src/switch-adm.c index 2d0fcc35a..8c0ddc6c9 100644 --- a/package/switch/src/switch-adm.c +++ b/package/switch/src/switch-adm.c @@ -578,6 +578,7 @@ static int __init adm_init(void) port_handlers: port, vlan_handlers: vlan, }; + snprintf(driver.dev_name, SWITCH_NAME_BUFSZ, DRIVER_NAME); if (!detect_adm()) return -ENODEV; diff --git a/package/switch/src/switch-core.c b/package/switch/src/switch-core.c index ab0754c94..fc8a6bf2c 100644 --- a/package/switch/src/switch-core.c +++ b/package/switch/src/switch-core.c @@ -156,6 +156,12 @@ static int handle_driver_vlans(void *driver, char *buf, int nr) return sprintf(buf, "%i\n", vlans); } +static int handle_driver_dev_name(void *driver, char *buf, int nr) +{ + char *dev_name = ((switch_driver *) driver)->dev_name; + return sprintf(buf, "%s\n", dev_name); +} + static void add_handler(switch_driver *driver, const switch_config *handler, struct proc_dir_entry *parent, int nr) { switch_priv *priv = (switch_priv *) driver->data; @@ -242,6 +248,7 @@ switch_config global_driver_handlers[] = { {"cpuport", handle_driver_cpuport, NULL}, {"ports", handle_driver_ports, NULL}, {"vlans", handle_driver_vlans, NULL}, + {"dev_name", handle_driver_dev_name, NULL}, {NULL, NULL, NULL} }; diff --git a/package/switch/src/switch-core.h b/package/switch/src/switch-core.h index 7192f7b0f..cc520e493 100644 --- a/package/switch/src/switch-core.h +++ b/package/switch/src/switch-core.h @@ -4,6 +4,7 @@ #include #include #define SWITCH_MAX_BUFSZ 4096 +#define SWITCH_NAME_BUFSZ 16 #define SWITCH_MEDIA_AUTO 1 #define SWITCH_MEDIA_100 2 @@ -28,6 +29,7 @@ typedef struct { const switch_config *driver_handlers, *port_handlers, *vlan_handlers; void *data; void *priv; + char dev_name[SWITCH_NAME_BUFSZ]; } switch_driver; typedef struct { diff --git a/package/switch/src/switch-robo.c b/package/switch/src/switch-robo.c index 57240a3fd..f7159729b 100644 --- a/package/switch/src/switch-robo.c +++ b/package/switch/src/switch-robo.c @@ -3,6 +3,7 @@ * * Copyright (C) 2005 Felix Fietkau * Copyright (C) 2008 Michael Buesch + * Copyright (C) 2013 Hauke Mehrtens * Based on 'robocfg' by Oleg I. Vdovikin * * This program is free software; you can redistribute it and/or @@ -40,7 +41,7 @@ #endif #define DRIVER_NAME "bcm53xx" -#define DRIVER_VERSION "0.02" +#define DRIVER_VERSION "0.03" #define PFX "roboswitch: " #define ROBO_PHY_ADDR 0x1E /* robo switch phy address */ @@ -862,6 +863,10 @@ static int __init robo_init(void) driver.ports = 9; driver.cpuport = 8; } + if (robo.is_5365) + snprintf(driver.dev_name, SWITCH_NAME_BUFSZ, "BCM5365"); + else + snprintf(driver.dev_name, SWITCH_NAME_BUFSZ, "BCM5%s%x", robo.devid & 0xff00 ? "" : "3", robo.devid); return switch_register_driver(&driver); } -- cgit v1.2.3