Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 102039
b: refs/heads/master
c: aee3ad8
h: refs/heads/master
i:
  102037: 8566cb2
  102035: af24bd8
  102031: 9849e9a
v: v3
  • Loading branch information
Bjorn Helgaas authored and Andi Kleen committed Jul 16, 2008
1 parent 3dcbba7 commit b13f1a6
Show file tree
Hide file tree
Showing 13 changed files with 332 additions and 423 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 20bfdbba7212d19613b93dcea93f26cb65af91fe
refs/heads/master: aee3ad815dd291a7193ab01da0f1a30c84d00061
18 changes: 3 additions & 15 deletions trunk/drivers/pnp/base.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,27 +46,15 @@ int pnp_check_dma(struct pnp_dev *dev, struct resource *res);
char *pnp_resource_type_name(struct resource *res);
void dbg_pnp_show_resources(struct pnp_dev *dev, char *desc);

void pnp_init_resource(struct resource *res);
void pnp_free_resources(struct pnp_dev *dev);
int pnp_resource_type(struct resource *res);

struct pnp_resource *pnp_get_pnp_resource(struct pnp_dev *dev,
unsigned int type, unsigned int num);

#define PNP_MAX_PORT 40
#define PNP_MAX_MEM 24
#define PNP_MAX_IRQ 2
#define PNP_MAX_DMA 2

struct pnp_resource {
struct list_head list;
struct resource res;
};

struct pnp_resource_table {
struct pnp_resource port[PNP_MAX_PORT];
struct pnp_resource mem[PNP_MAX_MEM];
struct pnp_resource dma[PNP_MAX_DMA];
struct pnp_resource irq[PNP_MAX_IRQ];
};
void pnp_free_resource(struct pnp_resource *pnp_res);

struct pnp_resource *pnp_add_irq_resource(struct pnp_dev *dev, int irq,
int flags);
Expand Down
25 changes: 17 additions & 8 deletions trunk/drivers/pnp/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,29 @@ static void pnp_free_ids(struct pnp_dev *dev)
}
}

void pnp_free_resource(struct pnp_resource *pnp_res)
{
list_del(&pnp_res->list);
kfree(pnp_res);
}

void pnp_free_resources(struct pnp_dev *dev)
{
struct pnp_resource *pnp_res, *tmp;

list_for_each_entry_safe(pnp_res, tmp, &dev->resources, list) {
pnp_free_resource(pnp_res);
}
}

static void pnp_release_device(struct device *dmdev)
{
struct pnp_dev *dev = to_pnp_dev(dmdev);

pnp_free_option(dev->independent);
pnp_free_option(dev->dependent);
pnp_free_ids(dev);
kfree(dev->res);
pnp_free_resources(dev);
kfree(dev);
}

Expand All @@ -119,12 +134,7 @@ struct pnp_dev *pnp_alloc_dev(struct pnp_protocol *protocol, int id, char *pnpid
if (!dev)
return NULL;

dev->res = kzalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
if (!dev->res) {
kfree(dev);
return NULL;
}

INIT_LIST_HEAD(&dev->resources);
dev->protocol = protocol;
dev->number = id;
dev->dma_mask = DMA_24BIT_MASK;
Expand All @@ -140,7 +150,6 @@ struct pnp_dev *pnp_alloc_dev(struct pnp_protocol *protocol, int id, char *pnpid

dev_id = pnp_add_id(dev, pnpid);
if (!dev_id) {
kfree(dev->res);
kfree(dev);
return NULL;
}
Expand Down
60 changes: 26 additions & 34 deletions trunk/drivers/pnp/interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -269,46 +269,38 @@ static ssize_t pnp_show_current_resources(struct device *dmdev,
pnp_printf(buffer, "disabled\n");

for (i = 0; (res = pnp_get_resource(dev, IORESOURCE_IO, i)); i++) {
if (pnp_resource_valid(res)) {
pnp_printf(buffer, "io");
if (res->flags & IORESOURCE_DISABLED)
pnp_printf(buffer, " disabled\n");
else
pnp_printf(buffer, " 0x%llx-0x%llx\n",
(unsigned long long) res->start,
(unsigned long long) res->end);
}
pnp_printf(buffer, "io");
if (res->flags & IORESOURCE_DISABLED)
pnp_printf(buffer, " disabled\n");
else
pnp_printf(buffer, " 0x%llx-0x%llx\n",
(unsigned long long) res->start,
(unsigned long long) res->end);
}
for (i = 0; (res = pnp_get_resource(dev, IORESOURCE_MEM, i)); i++) {
if (pnp_resource_valid(res)) {
pnp_printf(buffer, "mem");
if (res->flags & IORESOURCE_DISABLED)
pnp_printf(buffer, " disabled\n");
else
pnp_printf(buffer, " 0x%llx-0x%llx\n",
(unsigned long long) res->start,
(unsigned long long) res->end);
}
pnp_printf(buffer, "mem");
if (res->flags & IORESOURCE_DISABLED)
pnp_printf(buffer, " disabled\n");
else
pnp_printf(buffer, " 0x%llx-0x%llx\n",
(unsigned long long) res->start,
(unsigned long long) res->end);
}
for (i = 0; (res = pnp_get_resource(dev, IORESOURCE_IRQ, i)); i++) {
if (pnp_resource_valid(res)) {
pnp_printf(buffer, "irq");
if (res->flags & IORESOURCE_DISABLED)
pnp_printf(buffer, " disabled\n");
else
pnp_printf(buffer, " %lld\n",
(unsigned long long) res->start);
}
pnp_printf(buffer, "irq");
if (res->flags & IORESOURCE_DISABLED)
pnp_printf(buffer, " disabled\n");
else
pnp_printf(buffer, " %lld\n",
(unsigned long long) res->start);
}
for (i = 0; (res = pnp_get_resource(dev, IORESOURCE_DMA, i)); i++) {
if (pnp_resource_valid(res)) {
pnp_printf(buffer, "dma");
if (res->flags & IORESOURCE_DISABLED)
pnp_printf(buffer, " disabled\n");
else
pnp_printf(buffer, " %lld\n",
(unsigned long long) res->start);
}
pnp_printf(buffer, "dma");
if (res->flags & IORESOURCE_DISABLED)
pnp_printf(buffer, " disabled\n");
else
pnp_printf(buffer, " %lld\n",
(unsigned long long) res->start);
}
ret = (buffer->curr - buf);
kfree(buffer);
Expand Down
12 changes: 4 additions & 8 deletions trunk/drivers/pnp/isapnp/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -973,8 +973,7 @@ static int isapnp_set_resources(struct pnp_dev *dev)
dev->active = 1;
for (tmp = 0; tmp < ISAPNP_MAX_PORT; tmp++) {
res = pnp_get_resource(dev, IORESOURCE_IO, tmp);
if (res && pnp_resource_valid(res) &&
!(res->flags & IORESOURCE_DISABLED)) {
if (pnp_resource_enabled(res)) {
dev_dbg(&dev->dev, " set io %d to %#llx\n",
tmp, (unsigned long long) res->start);
isapnp_write_word(ISAPNP_CFG_PORT + (tmp << 1),
Expand All @@ -983,8 +982,7 @@ static int isapnp_set_resources(struct pnp_dev *dev)
}
for (tmp = 0; tmp < ISAPNP_MAX_IRQ; tmp++) {
res = pnp_get_resource(dev, IORESOURCE_IRQ, tmp);
if (res && pnp_resource_valid(res) &&
!(res->flags & IORESOURCE_DISABLED)) {
if (pnp_resource_enabled(res)) {
int irq = res->start;
if (irq == 2)
irq = 9;
Expand All @@ -994,17 +992,15 @@ static int isapnp_set_resources(struct pnp_dev *dev)
}
for (tmp = 0; tmp < ISAPNP_MAX_DMA; tmp++) {
res = pnp_get_resource(dev, IORESOURCE_DMA, tmp);
if (res && pnp_resource_valid(res) &&
!(res->flags & IORESOURCE_DISABLED)) {
if (pnp_resource_enabled(res)) {
dev_dbg(&dev->dev, " set dma %d to %lld\n",
tmp, (unsigned long long) res->start);
isapnp_write_byte(ISAPNP_CFG_DMA + tmp, res->start);
}
}
for (tmp = 0; tmp < ISAPNP_MAX_MEM; tmp++) {
res = pnp_get_resource(dev, IORESOURCE_MEM, tmp);
if (res && pnp_resource_valid(res) &&
!(res->flags & IORESOURCE_DISABLED)) {
if (pnp_resource_enabled(res)) {
dev_dbg(&dev->dev, " set mem %d to %#llx\n",
tmp, (unsigned long long) res->start);
isapnp_write_word(ISAPNP_CFG_MEM + (tmp << 3),
Expand Down
Loading

0 comments on commit b13f1a6

Please sign in to comment.