const char *ubuf, size_t count)
{
struct pnp_dev *dev = to_pnp_dev(dmdev);
- struct resource *res;
+ struct pnp_resource *pnp_res;
char *buf = (void *)ubuf;
int retval = 0;
+ resource_size_t start, end;
if (dev->status & PNP_ATTACHED) {
retval = -EBUSY;
buf += 2;
while (isspace(*buf))
++buf;
- res = pnp_get_resource(dev, IORESOURCE_IO,
- nport);
- if (!res)
- break;
- res->start = simple_strtoul(buf, &buf, 0);
+ start = simple_strtoul(buf, &buf, 0);
while (isspace(*buf))
++buf;
if (*buf == '-') {
buf += 1;
while (isspace(*buf))
++buf;
- res->end = simple_strtoul(buf, &buf, 0);
+ end = simple_strtoul(buf, &buf, 0);
} else
- res->end = res->start;
- res->flags = IORESOURCE_IO;
- nport++;
+ end = start;
+ pnp_res = pnp_add_io_resource(dev, start, end,
+ 0);
+ if (pnp_res)
+ pnp_res->index = nport++;
continue;
}
if (!strnicmp(buf, "mem", 3)) {
buf += 3;
while (isspace(*buf))
++buf;
- res = pnp_get_resource(dev, IORESOURCE_MEM,
- nmem);
- if (!res)
- break;
- res->start = simple_strtoul(buf, &buf, 0);
+ start = simple_strtoul(buf, &buf, 0);
while (isspace(*buf))
++buf;
if (*buf == '-') {
buf += 1;
while (isspace(*buf))
++buf;
- res->end = simple_strtoul(buf, &buf, 0);
+ end = simple_strtoul(buf, &buf, 0);
} else
- res->end = res->start;
- res->flags = IORESOURCE_MEM;
- nmem++;
+ end = start;
+ pnp_res = pnp_add_mem_resource(dev, start, end,
+ 0);
+ if (pnp_res)
+ pnp_res->index = nmem++;
continue;
}
if (!strnicmp(buf, "irq", 3)) {
buf += 3;
while (isspace(*buf))
++buf;
- res = pnp_get_resource(dev, IORESOURCE_IRQ,
- nirq);
- if (!res)
- break;
- res->start = res->end =
- simple_strtoul(buf, &buf, 0);
- res->flags = IORESOURCE_IRQ;
- nirq++;
+ start = simple_strtoul(buf, &buf, 0);
+ pnp_res = pnp_add_irq_resource(dev, start, 0);
+ if (pnp_res)
+ pnp_res->index = nirq++;
continue;
}
if (!strnicmp(buf, "dma", 3)) {
buf += 3;
while (isspace(*buf))
++buf;
- res = pnp_get_resource(dev, IORESOURCE_DMA,
- ndma);
- if (!res)
- break;
- res->start = res->end =
- simple_strtoul(buf, &buf, 0);
- res->flags = IORESOURCE_DMA;
- ndma++;
+ start = simple_strtoul(buf, &buf, 0);
+ pnp_res = pnp_add_dma_resource(dev, start, 0);
+ if (pnp_res)
+ pnp_res->index = ndma++;
continue;
}
break;