|
@@ -279,8 +279,8 @@ enum RxCfg { RxAllMulti = 0x0004, RxPromisc = 0x0002,
|
|
|
/*====================================================================*/
|
|
|
|
|
|
static void smc91c92_detach(struct pcmcia_device *p_dev);
|
|
|
-static void smc91c92_config(dev_link_t *link);
|
|
|
-static void smc91c92_release(dev_link_t *link);
|
|
|
+static void smc91c92_config(struct pcmcia_device *link);
|
|
|
+static void smc91c92_release(struct pcmcia_device *link);
|
|
|
|
|
|
static int smc_open(struct net_device *dev);
|
|
|
static int smc_close(struct net_device *dev);
|
|
@@ -309,11 +309,10 @@ static struct ethtool_ops ethtool_ops;
|
|
|
|
|
|
======================================================================*/
|
|
|
|
|
|
-static int smc91c92_attach(struct pcmcia_device *p_dev)
|
|
|
+static int smc91c92_attach(struct pcmcia_device *link)
|
|
|
{
|
|
|
struct smc_private *smc;
|
|
|
struct net_device *dev;
|
|
|
- dev_link_t *link = dev_to_instance(p_dev);
|
|
|
|
|
|
DEBUG(0, "smc91c92_attach()\n");
|
|
|
|
|
@@ -322,7 +321,7 @@ static int smc91c92_attach(struct pcmcia_device *p_dev)
|
|
|
if (!dev)
|
|
|
return -ENOMEM;
|
|
|
smc = netdev_priv(dev);
|
|
|
- smc->p_dev = p_dev;
|
|
|
+ smc->p_dev = link;
|
|
|
link->priv = dev;
|
|
|
|
|
|
spin_lock_init(&smc->lock);
|
|
@@ -372,9 +371,8 @@ static int smc91c92_attach(struct pcmcia_device *p_dev)
|
|
|
|
|
|
======================================================================*/
|
|
|
|
|
|
-static void smc91c92_detach(struct pcmcia_device *p_dev)
|
|
|
+static void smc91c92_detach(struct pcmcia_device *link)
|
|
|
{
|
|
|
- dev_link_t *link = dev_to_instance(p_dev);
|
|
|
struct net_device *dev = link->priv;
|
|
|
|
|
|
DEBUG(0, "smc91c92_detach(0x%p)\n", link);
|
|
@@ -411,7 +409,7 @@ static int cvt_ascii_address(struct net_device *dev, char *s)
|
|
|
|
|
|
/*====================================================================*/
|
|
|
|
|
|
-static int first_tuple(client_handle_t handle, tuple_t *tuple,
|
|
|
+static int first_tuple(struct pcmcia_device *handle, tuple_t *tuple,
|
|
|
cisparse_t *parse)
|
|
|
{
|
|
|
int i;
|
|
@@ -422,7 +420,7 @@ static int first_tuple(client_handle_t handle, tuple_t *tuple,
|
|
|
return pcmcia_parse_tuple(handle, tuple, parse);
|
|
|
}
|
|
|
|
|
|
-static int next_tuple(client_handle_t handle, tuple_t *tuple,
|
|
|
+static int next_tuple(struct pcmcia_device *handle, tuple_t *tuple,
|
|
|
cisparse_t *parse)
|
|
|
{
|
|
|
int i;
|
|
@@ -444,7 +442,7 @@ static int next_tuple(client_handle_t handle, tuple_t *tuple,
|
|
|
|
|
|
======================================================================*/
|
|
|
|
|
|
-static int mhz_3288_power(dev_link_t *link)
|
|
|
+static int mhz_3288_power(struct pcmcia_device *link)
|
|
|
{
|
|
|
struct net_device *dev = link->priv;
|
|
|
struct smc_private *smc = netdev_priv(dev);
|
|
@@ -466,7 +464,7 @@ static int mhz_3288_power(dev_link_t *link)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int mhz_mfc_config(dev_link_t *link)
|
|
|
+static int mhz_mfc_config(struct pcmcia_device *link)
|
|
|
{
|
|
|
struct net_device *dev = link->priv;
|
|
|
struct smc_private *smc = netdev_priv(dev);
|
|
@@ -501,7 +499,7 @@ static int mhz_mfc_config(dev_link_t *link)
|
|
|
tuple->TupleDataMax = 255;
|
|
|
tuple->DesiredTuple = CISTPL_CFTABLE_ENTRY;
|
|
|
|
|
|
- i = first_tuple(link->handle, tuple, parse);
|
|
|
+ i = first_tuple(link, tuple, parse);
|
|
|
/* The Megahertz combo cards have modem-like CIS entries, so
|
|
|
we have to explicitly try a bunch of port combinations. */
|
|
|
while (i == CS_SUCCESS) {
|
|
@@ -510,11 +508,11 @@ static int mhz_mfc_config(dev_link_t *link)
|
|
|
for (k = 0; k < 0x400; k += 0x10) {
|
|
|
if (k & 0x80) continue;
|
|
|
link->io.BasePort1 = k ^ 0x300;
|
|
|
- i = pcmcia_request_io(link->handle, &link->io);
|
|
|
+ i = pcmcia_request_io(link, &link->io);
|
|
|
if (i == CS_SUCCESS) break;
|
|
|
}
|
|
|
if (i == CS_SUCCESS) break;
|
|
|
- i = next_tuple(link->handle, tuple, parse);
|
|
|
+ i = next_tuple(link, tuple, parse);
|
|
|
}
|
|
|
if (i != CS_SUCCESS)
|
|
|
goto free_cfg_mem;
|
|
@@ -524,7 +522,7 @@ static int mhz_mfc_config(dev_link_t *link)
|
|
|
req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE;
|
|
|
req.Base = req.Size = 0;
|
|
|
req.AccessSpeed = 0;
|
|
|
- i = pcmcia_request_window(&link->handle, &req, &link->win);
|
|
|
+ i = pcmcia_request_window(&link, &req, &link->win);
|
|
|
if (i != CS_SUCCESS)
|
|
|
goto free_cfg_mem;
|
|
|
smc->base = ioremap(req.Base, req.Size);
|
|
@@ -543,9 +541,8 @@ free_cfg_mem:
|
|
|
return i;
|
|
|
}
|
|
|
|
|
|
-static int mhz_setup(dev_link_t *link)
|
|
|
+static int mhz_setup(struct pcmcia_device *link)
|
|
|
{
|
|
|
- client_handle_t handle = link->handle;
|
|
|
struct net_device *dev = link->priv;
|
|
|
struct smc_cfg_mem *cfg_mem;
|
|
|
tuple_t *tuple;
|
|
@@ -568,13 +565,13 @@ static int mhz_setup(dev_link_t *link)
|
|
|
/* Read the station address from the CIS. It is stored as the last
|
|
|
(fourth) string in the Version 1 Version/ID tuple. */
|
|
|
tuple->DesiredTuple = CISTPL_VERS_1;
|
|
|
- if (first_tuple(handle, tuple, parse) != CS_SUCCESS) {
|
|
|
+ if (first_tuple(link, tuple, parse) != CS_SUCCESS) {
|
|
|
rc = -1;
|
|
|
goto free_cfg_mem;
|
|
|
}
|
|
|
/* Ugh -- the EM1144 card has two VERS_1 tuples!?! */
|
|
|
- if (next_tuple(handle, tuple, parse) != CS_SUCCESS)
|
|
|
- first_tuple(handle, tuple, parse);
|
|
|
+ if (next_tuple(link, tuple, parse) != CS_SUCCESS)
|
|
|
+ first_tuple(link, tuple, parse);
|
|
|
if (parse->version_1.ns > 3) {
|
|
|
station_addr = parse->version_1.str + parse->version_1.ofs[3];
|
|
|
if (cvt_ascii_address(dev, station_addr) == 0) {
|
|
@@ -585,11 +582,11 @@ static int mhz_setup(dev_link_t *link)
|
|
|
|
|
|
/* Another possibility: for the EM3288, in a special tuple */
|
|
|
tuple->DesiredTuple = 0x81;
|
|
|
- if (pcmcia_get_first_tuple(handle, tuple) != CS_SUCCESS) {
|
|
|
+ if (pcmcia_get_first_tuple(link, tuple) != CS_SUCCESS) {
|
|
|
rc = -1;
|
|
|
goto free_cfg_mem;
|
|
|
}
|
|
|
- if (pcmcia_get_tuple_data(handle, tuple) != CS_SUCCESS) {
|
|
|
+ if (pcmcia_get_tuple_data(link, tuple) != CS_SUCCESS) {
|
|
|
rc = -1;
|
|
|
goto free_cfg_mem;
|
|
|
}
|
|
@@ -613,7 +610,7 @@ free_cfg_mem:
|
|
|
|
|
|
======================================================================*/
|
|
|
|
|
|
-static void mot_config(dev_link_t *link)
|
|
|
+static void mot_config(struct pcmcia_device *link)
|
|
|
{
|
|
|
struct net_device *dev = link->priv;
|
|
|
struct smc_private *smc = netdev_priv(dev);
|
|
@@ -634,7 +631,7 @@ static void mot_config(dev_link_t *link)
|
|
|
mdelay(100);
|
|
|
}
|
|
|
|
|
|
-static int mot_setup(dev_link_t *link)
|
|
|
+static int mot_setup(struct pcmcia_device *link)
|
|
|
{
|
|
|
struct net_device *dev = link->priv;
|
|
|
kio_addr_t ioaddr = dev->base_addr;
|
|
@@ -668,7 +665,7 @@ static int mot_setup(dev_link_t *link)
|
|
|
|
|
|
/*====================================================================*/
|
|
|
|
|
|
-static int smc_config(dev_link_t *link)
|
|
|
+static int smc_config(struct pcmcia_device *link)
|
|
|
{
|
|
|
struct net_device *dev = link->priv;
|
|
|
struct smc_cfg_mem *cfg_mem;
|
|
@@ -693,16 +690,16 @@ static int smc_config(dev_link_t *link)
|
|
|
tuple->DesiredTuple = CISTPL_CFTABLE_ENTRY;
|
|
|
|
|
|
link->io.NumPorts1 = 16;
|
|
|
- i = first_tuple(link->handle, tuple, parse);
|
|
|
+ i = first_tuple(link, tuple, parse);
|
|
|
while (i != CS_NO_MORE_ITEMS) {
|
|
|
if (i == CS_SUCCESS) {
|
|
|
link->conf.ConfigIndex = cf->index;
|
|
|
link->io.BasePort1 = cf->io.win[0].base;
|
|
|
link->io.IOAddrLines = cf->io.flags & CISTPL_IO_LINES_MASK;
|
|
|
- i = pcmcia_request_io(link->handle, &link->io);
|
|
|
+ i = pcmcia_request_io(link, &link->io);
|
|
|
if (i == CS_SUCCESS) break;
|
|
|
}
|
|
|
- i = next_tuple(link->handle, tuple, parse);
|
|
|
+ i = next_tuple(link, tuple, parse);
|
|
|
}
|
|
|
if (i == CS_SUCCESS)
|
|
|
dev->base_addr = link->io.BasePort1;
|
|
@@ -711,9 +708,8 @@ static int smc_config(dev_link_t *link)
|
|
|
return i;
|
|
|
}
|
|
|
|
|
|
-static int smc_setup(dev_link_t *link)
|
|
|
+static int smc_setup(struct pcmcia_device *link)
|
|
|
{
|
|
|
- client_handle_t handle = link->handle;
|
|
|
struct net_device *dev = link->priv;
|
|
|
struct smc_cfg_mem *cfg_mem;
|
|
|
tuple_t *tuple;
|
|
@@ -736,11 +732,11 @@ static int smc_setup(dev_link_t *link)
|
|
|
|
|
|
/* Check for a LAN function extension tuple */
|
|
|
tuple->DesiredTuple = CISTPL_FUNCE;
|
|
|
- i = first_tuple(handle, tuple, parse);
|
|
|
+ i = first_tuple(link, tuple, parse);
|
|
|
while (i == CS_SUCCESS) {
|
|
|
if (parse->funce.type == CISTPL_FUNCE_LAN_NODE_ID)
|
|
|
break;
|
|
|
- i = next_tuple(handle, tuple, parse);
|
|
|
+ i = next_tuple(link, tuple, parse);
|
|
|
}
|
|
|
if (i == CS_SUCCESS) {
|
|
|
node_id = (cistpl_lan_node_id_t *)parse->funce.data;
|
|
@@ -753,7 +749,7 @@ static int smc_setup(dev_link_t *link)
|
|
|
}
|
|
|
/* Try the third string in the Version 1 Version/ID tuple. */
|
|
|
tuple->DesiredTuple = CISTPL_VERS_1;
|
|
|
- if (first_tuple(handle, tuple, parse) != CS_SUCCESS) {
|
|
|
+ if (first_tuple(link, tuple, parse) != CS_SUCCESS) {
|
|
|
rc = -1;
|
|
|
goto free_cfg_mem;
|
|
|
}
|
|
@@ -771,7 +767,7 @@ free_cfg_mem:
|
|
|
|
|
|
/*====================================================================*/
|
|
|
|
|
|
-static int osi_config(dev_link_t *link)
|
|
|
+static int osi_config(struct pcmcia_device *link)
|
|
|
{
|
|
|
struct net_device *dev = link->priv;
|
|
|
static const kio_addr_t com[4] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8 };
|
|
@@ -791,22 +787,21 @@ static int osi_config(dev_link_t *link)
|
|
|
|
|
|
for (i = j = 0; j < 4; j++) {
|
|
|
link->io.BasePort2 = com[j];
|
|
|
- i = pcmcia_request_io(link->handle, &link->io);
|
|
|
+ i = pcmcia_request_io(link, &link->io);
|
|
|
if (i == CS_SUCCESS) break;
|
|
|
}
|
|
|
if (i != CS_SUCCESS) {
|
|
|
/* Fallback: turn off hard decode */
|
|
|
link->conf.ConfigIndex = 0x03;
|
|
|
link->io.NumPorts2 = 0;
|
|
|
- i = pcmcia_request_io(link->handle, &link->io);
|
|
|
+ i = pcmcia_request_io(link, &link->io);
|
|
|
}
|
|
|
dev->base_addr = link->io.BasePort1 + 0x10;
|
|
|
return i;
|
|
|
}
|
|
|
|
|
|
-static int osi_setup(dev_link_t *link, u_short manfid, u_short cardid)
|
|
|
+static int osi_setup(struct pcmcia_device *link, u_short manfid, u_short cardid)
|
|
|
{
|
|
|
- client_handle_t handle = link->handle;
|
|
|
struct net_device *dev = link->priv;
|
|
|
struct smc_cfg_mem *cfg_mem;
|
|
|
tuple_t *tuple;
|
|
@@ -827,12 +822,12 @@ static int osi_setup(dev_link_t *link, u_short manfid, u_short cardid)
|
|
|
|
|
|
/* Read the station address from tuple 0x90, subtuple 0x04 */
|
|
|
tuple->DesiredTuple = 0x90;
|
|
|
- i = pcmcia_get_first_tuple(handle, tuple);
|
|
|
+ i = pcmcia_get_first_tuple(link, tuple);
|
|
|
while (i == CS_SUCCESS) {
|
|
|
- i = pcmcia_get_tuple_data(handle, tuple);
|
|
|
+ i = pcmcia_get_tuple_data(link, tuple);
|
|
|
if ((i != CS_SUCCESS) || (buf[0] == 0x04))
|
|
|
break;
|
|
|
- i = pcmcia_get_next_tuple(handle, tuple);
|
|
|
+ i = pcmcia_get_next_tuple(link, tuple);
|
|
|
}
|
|
|
if (i != CS_SUCCESS) {
|
|
|
rc = -1;
|
|
@@ -865,9 +860,8 @@ free_cfg_mem:
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
-static int smc91c92_suspend(struct pcmcia_device *p_dev)
|
|
|
+static int smc91c92_suspend(struct pcmcia_device *link)
|
|
|
{
|
|
|
- dev_link_t *link = dev_to_instance(p_dev);
|
|
|
struct net_device *dev = link->priv;
|
|
|
|
|
|
if ((link->state & DEV_CONFIG) && (link->open))
|
|
@@ -876,9 +870,8 @@ static int smc91c92_suspend(struct pcmcia_device *p_dev)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int smc91c92_resume(struct pcmcia_device *p_dev)
|
|
|
+static int smc91c92_resume(struct pcmcia_device *link)
|
|
|
{
|
|
|
- dev_link_t *link = dev_to_instance(p_dev);
|
|
|
struct net_device *dev = link->priv;
|
|
|
struct smc_private *smc = netdev_priv(dev);
|
|
|
int i;
|
|
@@ -922,7 +915,7 @@ static int smc91c92_resume(struct pcmcia_device *p_dev)
|
|
|
|
|
|
======================================================================*/
|
|
|
|
|
|
-static int check_sig(dev_link_t *link)
|
|
|
+static int check_sig(struct pcmcia_device *link)
|
|
|
{
|
|
|
struct net_device *dev = link->priv;
|
|
|
kio_addr_t ioaddr = dev->base_addr;
|
|
@@ -960,9 +953,9 @@ static int check_sig(dev_link_t *link)
|
|
|
};
|
|
|
printk(KERN_INFO "smc91c92_cs: using 8-bit IO window.\n");
|
|
|
|
|
|
- smc91c92_suspend(link->handle);
|
|
|
- pcmcia_modify_configuration(link->handle, &mod);
|
|
|
- smc91c92_resume(link->handle);
|
|
|
+ smc91c92_suspend(link);
|
|
|
+ pcmcia_modify_configuration(link, &mod);
|
|
|
+ smc91c92_resume(link);
|
|
|
return check_sig(link);
|
|
|
}
|
|
|
return -ENODEV;
|
|
@@ -977,11 +970,10 @@ static int check_sig(dev_link_t *link)
|
|
|
======================================================================*/
|
|
|
|
|
|
#define CS_EXIT_TEST(ret, svc, label) \
|
|
|
-if (ret != CS_SUCCESS) { cs_error(link->handle, svc, ret); goto label; }
|
|
|
+if (ret != CS_SUCCESS) { cs_error(link, svc, ret); goto label; }
|
|
|
|
|
|
-static void smc91c92_config(dev_link_t *link)
|
|
|
+static void smc91c92_config(struct pcmcia_device *link)
|
|
|
{
|
|
|
- client_handle_t handle = link->handle;
|
|
|
struct net_device *dev = link->priv;
|
|
|
struct smc_private *smc = netdev_priv(dev);
|
|
|
struct smc_cfg_mem *cfg_mem;
|
|
@@ -1008,14 +1000,14 @@ static void smc91c92_config(dev_link_t *link)
|
|
|
tuple->TupleDataMax = 64;
|
|
|
|
|
|
tuple->DesiredTuple = CISTPL_CONFIG;
|
|
|
- i = first_tuple(handle, tuple, parse);
|
|
|
+ i = first_tuple(link, tuple, parse);
|
|
|
CS_EXIT_TEST(i, ParseTuple, config_failed);
|
|
|
link->conf.ConfigBase = parse->config.base;
|
|
|
link->conf.Present = parse->config.rmask[0];
|
|
|
|
|
|
tuple->DesiredTuple = CISTPL_MANFID;
|
|
|
tuple->Attributes = TUPLE_RETURN_COMMON;
|
|
|
- if (first_tuple(handle, tuple, parse) == CS_SUCCESS) {
|
|
|
+ if (first_tuple(link, tuple, parse) == CS_SUCCESS) {
|
|
|
smc->manfid = parse->manfid.manf;
|
|
|
smc->cardid = parse->manfid.card;
|
|
|
}
|
|
@@ -1036,9 +1028,9 @@ static void smc91c92_config(dev_link_t *link)
|
|
|
}
|
|
|
CS_EXIT_TEST(i, RequestIO, config_failed);
|
|
|
|
|
|
- i = pcmcia_request_irq(link->handle, &link->irq);
|
|
|
+ i = pcmcia_request_irq(link, &link->irq);
|
|
|
CS_EXIT_TEST(i, RequestIRQ, config_failed);
|
|
|
- i = pcmcia_request_configuration(link->handle, &link->conf);
|
|
|
+ i = pcmcia_request_configuration(link, &link->conf);
|
|
|
CS_EXIT_TEST(i, RequestConfiguration, config_failed);
|
|
|
|
|
|
if (smc->manfid == MANFID_MOTOROLA)
|
|
@@ -1119,7 +1111,7 @@ static void smc91c92_config(dev_link_t *link)
|
|
|
|
|
|
link->dev_node = &smc->node;
|
|
|
link->state &= ~DEV_CONFIG_PENDING;
|
|
|
- SET_NETDEV_DEV(dev, &handle_to_dev(handle));
|
|
|
+ SET_NETDEV_DEV(dev, &handle_to_dev(link));
|
|
|
|
|
|
if (register_netdev(dev) != 0) {
|
|
|
printk(KERN_ERR "smc91c92_cs: register_netdev() failed\n");
|
|
@@ -1172,7 +1164,7 @@ config_failed: /* CS_EXIT_TEST() calls jump to here... */
|
|
|
|
|
|
======================================================================*/
|
|
|
|
|
|
-static void smc91c92_release(dev_link_t *link)
|
|
|
+static void smc91c92_release(struct pcmcia_device *link)
|
|
|
{
|
|
|
DEBUG(0, "smc91c92_release(0x%p)\n", link);
|
|
|
if (link->win) {
|
|
@@ -1180,7 +1172,7 @@ static void smc91c92_release(dev_link_t *link)
|
|
|
struct smc_private *smc = netdev_priv(dev);
|
|
|
iounmap(smc->base);
|
|
|
}
|
|
|
- pcmcia_disable_device(link->handle);
|
|
|
+ pcmcia_disable_device(link);
|
|
|
}
|
|
|
|
|
|
/*======================================================================
|
|
@@ -1269,7 +1261,7 @@ static void smc_dump(struct net_device *dev)
|
|
|
static int smc_open(struct net_device *dev)
|
|
|
{
|
|
|
struct smc_private *smc = netdev_priv(dev);
|
|
|
- dev_link_t *link = smc->p_dev;
|
|
|
+ struct pcmcia_device *link = smc->p_dev;
|
|
|
|
|
|
#ifdef PCMCIA_DEBUG
|
|
|
DEBUG(0, "%s: smc_open(%p), ID/Window %4.4x.\n",
|
|
@@ -1306,7 +1298,7 @@ static int smc_open(struct net_device *dev)
|
|
|
static int smc_close(struct net_device *dev)
|
|
|
{
|
|
|
struct smc_private *smc = netdev_priv(dev);
|
|
|
- dev_link_t *link = smc->p_dev;
|
|
|
+ struct pcmcia_device *link = smc->p_dev;
|
|
|
kio_addr_t ioaddr = dev->base_addr;
|
|
|
|
|
|
DEBUG(0, "%s: smc_close(), status %4.4x.\n",
|