[<prev] [next>] [day] [month] [year] [list]
Message-ID: <CAKON4OzatC3nsby3_SA_yG-TtE2-BSXE3Ojkm2DbryxTcANyQg@mail.gmail.com>
Date: Tue, 24 Apr 2012 10:54:41 -0400
From: "jonsmirl@...il.com" <jonsmirl@...il.com>
To: netdev@...r.kernel.org
Subject: Problem with iosize in Davicom DM9000 driver
In the probe code of the DM9000 driver...
iosize = resource_size(db->data_res);
------ iosize is the size of the resource block
static inline resource_size_t resource_size(const struct resource *res)
{
return res->end - res->start + 1;
}
db->data_req = request_mem_region(db->data_res->start, iosize,
pdev->name);
if (db->data_req == NULL) {
dev_err(db->dev, "cannot claim data reg area\n");
ret = -EIO;
goto out;
}
db->io_data = ioremap(db->data_res->start, iosize);
if (db->io_data == NULL) {
dev_err(db->dev, "failed to ioremap data reg\n");
ret = -EINVAL;
goto out;
}
/* fill in parameters for net-dev structure */
ndev->base_addr = (unsigned long)db->io_addr;
ndev->irq = db->irq_res->start;
/* ensure at least we have a default set of IO routines */
dm9000_set_io(db, iosize);
--------------------------
---- but it is passed into this routine which is expecting byte_width.
---- luckily the default case turns it into 32b IO which works on most systems.
---- I hit this working on a system with a 16b bus
static void dm9000_set_io(struct board_info *db, int byte_width)
{
/* use the size of the data resource to work out what IO
* routines we want to use
*/
switch (byte_width) {
--
Jon Smirl
jonsmirl@...il.com
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists