Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 95582
b: refs/heads/master
c: 02d83b5
h: refs/heads/master
v: v3
  • Loading branch information
Bjorn Helgaas authored and Len Brown committed Apr 29, 2008
1 parent 94bbe4e commit 8aad558
Show file tree
Hide file tree
Showing 9 changed files with 44 additions and 32 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: 8766ad0ce8621aa6f0e4a91ef355509cc3364d5b
refs/heads/master: 02d83b5da3efa3c278ce87db2637f3dd6837166d
12 changes: 12 additions & 0 deletions trunk/drivers/pnp/base.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,15 @@ int pnp_check_dma(struct pnp_dev *dev, struct resource *res);
void dbg_pnp_show_resources(struct pnp_dev *dev, char *desc);

void pnp_init_resource(struct resource *res);

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

struct pnp_resource_table {
struct resource port_resource[PNP_MAX_PORT];
struct resource mem_resource[PNP_MAX_MEM];
struct resource dma_resource[PNP_MAX_DMA];
struct resource irq_resource[PNP_MAX_IRQ];
};
8 changes: 8 additions & 0 deletions trunk/drivers/pnp/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ static void pnp_release_device(struct device *dmdev)
pnp_free_option(dev->independent);
pnp_free_option(dev->dependent);
pnp_free_ids(dev);
kfree(dev->res);
kfree(dev);
}

Expand All @@ -118,6 +119,12 @@ 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;
}

dev->protocol = protocol;
dev->number = id;
dev->dma_mask = DMA_24BIT_MASK;
Expand All @@ -133,6 +140,7 @@ 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
4 changes: 2 additions & 2 deletions trunk/drivers/pnp/isapnp/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -931,7 +931,7 @@ EXPORT_SYMBOL(isapnp_write_byte);

static int isapnp_read_resources(struct pnp_dev *dev)
{
struct pnp_resource_table *res = &dev->res;
struct pnp_resource_table *res = dev->res;
int tmp, ret;

dev->active = isapnp_read_byte(ISAPNP_CFG_ACTIVATE);
Expand Down Expand Up @@ -987,7 +987,7 @@ static int isapnp_get_resources(struct pnp_dev *dev)

static int isapnp_set_resources(struct pnp_dev *dev)
{
struct pnp_resource_table *res = &dev->res;
struct pnp_resource_table *res = dev->res;
int tmp;

dev_dbg(&dev->dev, "set resources\n");
Expand Down
16 changes: 8 additions & 8 deletions trunk/drivers/pnp/manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -247,22 +247,22 @@ void pnp_init_resources(struct pnp_dev *dev)
int idx;

for (idx = 0; idx < PNP_MAX_IRQ; idx++) {
res = &dev->res.irq_resource[idx];
res = &dev->res->irq_resource[idx];
res->flags = IORESOURCE_IRQ;
pnp_init_resource(res);
}
for (idx = 0; idx < PNP_MAX_DMA; idx++) {
res = &dev->res.dma_resource[idx];
res = &dev->res->dma_resource[idx];
res->flags = IORESOURCE_DMA;
pnp_init_resource(res);
}
for (idx = 0; idx < PNP_MAX_PORT; idx++) {
res = &dev->res.port_resource[idx];
res = &dev->res->port_resource[idx];
res->flags = IORESOURCE_IO;
pnp_init_resource(res);
}
for (idx = 0; idx < PNP_MAX_MEM; idx++) {
res = &dev->res.mem_resource[idx];
res = &dev->res->mem_resource[idx];
res->flags = IORESOURCE_MEM;
pnp_init_resource(res);
}
Expand All @@ -278,28 +278,28 @@ static void pnp_clean_resource_table(struct pnp_dev *dev)
int idx;

for (idx = 0; idx < PNP_MAX_IRQ; idx++) {
res = &dev->res.irq_resource[idx];
res = &dev->res->irq_resource[idx];
if (res->flags & IORESOURCE_AUTO) {
res->flags = IORESOURCE_IRQ;
pnp_init_resource(res);
}
}
for (idx = 0; idx < PNP_MAX_DMA; idx++) {
res = &dev->res.dma_resource[idx];
res = &dev->res->dma_resource[idx];
if (res->flags & IORESOURCE_AUTO) {
res->flags = IORESOURCE_DMA;
pnp_init_resource(res);
}
}
for (idx = 0; idx < PNP_MAX_PORT; idx++) {
res = &dev->res.port_resource[idx];
res = &dev->res->port_resource[idx];
if (res->flags & IORESOURCE_AUTO) {
res->flags = IORESOURCE_IO;
pnp_init_resource(res);
}
}
for (idx = 0; idx < PNP_MAX_MEM; idx++) {
res = &dev->res.mem_resource[idx];
res = &dev->res->mem_resource[idx];
if (res->flags & IORESOURCE_AUTO) {
res->flags = IORESOURCE_MEM;
pnp_init_resource(res);
Expand Down
10 changes: 6 additions & 4 deletions trunk/drivers/pnp/pnpacpi/rsparser.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
#include <linux/kernel.h>
#include <linux/acpi.h>
#include <linux/pci.h>
#include <linux/pnp.h>
#include "../base.h"
#include "pnpacpi.h"

#ifdef CONFIG_IA64
Expand Down Expand Up @@ -80,7 +82,7 @@ static void pnpacpi_parse_allocated_irqresource(struct pnp_dev *dev,
u32 gsi, int triggering,
int polarity, int shareable)
{
struct pnp_resource_table *res = &dev->res;
struct pnp_resource_table *res = dev->res;
int i = 0;
int irq;
int p, t;
Expand Down Expand Up @@ -176,7 +178,7 @@ static int dma_flags(int type, int bus_master, int transfer)
static void pnpacpi_parse_allocated_dmaresource(struct pnp_dev *dev,
u32 dma, int flags)
{
struct pnp_resource_table *res = &dev->res;
struct pnp_resource_table *res = dev->res;
int i = 0;
static unsigned char warned;

Expand All @@ -202,7 +204,7 @@ static void pnpacpi_parse_allocated_dmaresource(struct pnp_dev *dev,
static void pnpacpi_parse_allocated_ioresource(struct pnp_dev *dev,
u64 io, u64 len, int io_decode)
{
struct pnp_resource_table *res = &dev->res;
struct pnp_resource_table *res = dev->res;
int i = 0;
static unsigned char warned;

Expand Down Expand Up @@ -230,7 +232,7 @@ static void pnpacpi_parse_allocated_memresource(struct pnp_dev *dev,
u64 mem, u64 len,
int write_protect)
{
struct pnp_resource_table *res = &dev->res;
struct pnp_resource_table *res = dev->res;
int i = 0;
static unsigned char warned;

Expand Down
8 changes: 4 additions & 4 deletions trunk/drivers/pnp/pnpbios/rsparser.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ inline void pcibios_penalize_isa_irq(int irq, int active)

static void pnpbios_parse_allocated_irqresource(struct pnp_dev *dev, int irq)
{
struct pnp_resource_table *res = &dev->res;
struct pnp_resource_table *res = dev->res;
int i = 0;

while (!(res->irq_resource[i].flags & IORESOURCE_UNSET)
Expand All @@ -76,7 +76,7 @@ static void pnpbios_parse_allocated_irqresource(struct pnp_dev *dev, int irq)

static void pnpbios_parse_allocated_dmaresource(struct pnp_dev *dev, int dma)
{
struct pnp_resource_table *res = &dev->res;
struct pnp_resource_table *res = dev->res;
int i = 0;

while (i < PNP_MAX_DMA &&
Expand All @@ -96,7 +96,7 @@ static void pnpbios_parse_allocated_dmaresource(struct pnp_dev *dev, int dma)
static void pnpbios_parse_allocated_ioresource(struct pnp_dev *dev,
int io, int len)
{
struct pnp_resource_table *res = &dev->res;
struct pnp_resource_table *res = dev->res;
int i = 0;

while (!(res->port_resource[i].flags & IORESOURCE_UNSET)
Expand All @@ -116,7 +116,7 @@ static void pnpbios_parse_allocated_ioresource(struct pnp_dev *dev,
static void pnpbios_parse_allocated_memresource(struct pnp_dev *dev,
int mem, int len)
{
struct pnp_resource_table *res = &dev->res;
struct pnp_resource_table *res = dev->res;
int i = 0;

while (!(res->mem_resource[i].flags & IORESOURCE_UNSET)
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/pnp/resource.c
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,7 @@ int pnp_check_dma(struct pnp_dev *dev, struct resource *res)
struct resource *pnp_get_resource(struct pnp_dev *dev,
unsigned int type, unsigned int num)
{
struct pnp_resource_table *res = &dev->res;
struct pnp_resource_table *res = dev->res;

switch (type) {
case IORESOURCE_IO:
Expand Down
14 changes: 2 additions & 12 deletions trunk/include/linux/pnp.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,11 @@
#include <linux/errno.h>
#include <linux/mod_devicetable.h>

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

struct pnp_protocol;
struct pnp_dev;
struct pnp_resource_table;

/*
* Resource Management
Expand Down Expand Up @@ -184,13 +181,6 @@ struct pnp_option {
struct pnp_option *next; /* used to chain dependent resources */
};

struct pnp_resource_table {
struct resource port_resource[PNP_MAX_PORT];
struct resource mem_resource[PNP_MAX_MEM];
struct resource dma_resource[PNP_MAX_DMA];
struct resource irq_resource[PNP_MAX_IRQ];
};

/*
* Device Management
*/
Expand Down Expand Up @@ -260,7 +250,7 @@ struct pnp_dev {
int capabilities;
struct pnp_option *independent;
struct pnp_option *dependent;
struct pnp_resource_table res;
struct pnp_resource_table *res;

char name[PNP_NAME_LEN]; /* contains a human-readable name */
unsigned short regs; /* ISAPnP: supported registers */
Expand Down

0 comments on commit 8aad558

Please sign in to comment.