Skip to content

Commit

Permalink
PNP: add debug output to option registration
Browse files Browse the repository at this point in the history
Add debug output to resource option registration functions (enabled
by CONFIG_PNP_DEBUG).  This uses dev_printk, so I had to add pnp_dev
arguments at the same time.

Signed-off-by: Bjorn Helgaas <[email protected]>
Acked-By: Rene Herman <[email protected]>
Signed-off-by: Len Brown <[email protected]>
  • Loading branch information
Bjorn Helgaas authored and lenb committed Apr 29, 2008
1 parent cdef625 commit c1caf06
Show file tree
Hide file tree
Showing 5 changed files with 141 additions and 84 deletions.
50 changes: 29 additions & 21 deletions drivers/pnp/isapnp/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,8 @@ static struct pnp_dev *__init isapnp_parse_device(struct pnp_card *card,
/*
* Add IRQ resource to resources list.
*/
static void __init isapnp_parse_irq_resource(struct pnp_option *option,
static void __init isapnp_parse_irq_resource(struct pnp_dev *dev,
struct pnp_option *option,
int size)
{
unsigned char tmp[3];
Expand All @@ -448,13 +449,14 @@ static void __init isapnp_parse_irq_resource(struct pnp_option *option,
irq->flags = tmp[2];
else
irq->flags = IORESOURCE_IRQ_HIGHEDGE;
pnp_register_irq_resource(option, irq);
pnp_register_irq_resource(dev, option, irq);
}

/*
* Add DMA resource to resources list.
*/
static void __init isapnp_parse_dma_resource(struct pnp_option *option,
static void __init isapnp_parse_dma_resource(struct pnp_dev *dev,
struct pnp_option *option,
int size)
{
unsigned char tmp[2];
Expand All @@ -466,13 +468,14 @@ static void __init isapnp_parse_dma_resource(struct pnp_option *option,
return;
dma->map = tmp[0];
dma->flags = tmp[1];
pnp_register_dma_resource(option, dma);
pnp_register_dma_resource(dev, option, dma);
}

/*
* Add port resource to resources list.
*/
static void __init isapnp_parse_port_resource(struct pnp_option *option,
static void __init isapnp_parse_port_resource(struct pnp_dev *dev,
struct pnp_option *option,
int size)
{
unsigned char tmp[7];
Expand All @@ -487,13 +490,14 @@ static void __init isapnp_parse_port_resource(struct pnp_option *option,
port->align = tmp[5];
port->size = tmp[6];
port->flags = tmp[0] ? PNP_PORT_FLAG_16BITADDR : 0;
pnp_register_port_resource(option, port);
pnp_register_port_resource(dev, option, port);
}

/*
* Add fixed port resource to resources list.
*/
static void __init isapnp_parse_fixed_port_resource(struct pnp_option *option,
static void __init isapnp_parse_fixed_port_resource(struct pnp_dev *dev,
struct pnp_option *option,
int size)
{
unsigned char tmp[3];
Expand All @@ -507,13 +511,14 @@ static void __init isapnp_parse_fixed_port_resource(struct pnp_option *option,
port->size = tmp[2];
port->align = 0;
port->flags = PNP_PORT_FLAG_FIXED;
pnp_register_port_resource(option, port);
pnp_register_port_resource(dev, option, port);
}

/*
* Add memory resource to resources list.
*/
static void __init isapnp_parse_mem_resource(struct pnp_option *option,
static void __init isapnp_parse_mem_resource(struct pnp_dev *dev,
struct pnp_option *option,
int size)
{
unsigned char tmp[9];
Expand All @@ -528,13 +533,14 @@ static void __init isapnp_parse_mem_resource(struct pnp_option *option,
mem->align = (tmp[6] << 8) | tmp[5];
mem->size = ((tmp[8] << 8) | tmp[7]) << 8;
mem->flags = tmp[0];
pnp_register_mem_resource(option, mem);
pnp_register_mem_resource(dev, option, mem);
}

/*
* Add 32-bit memory resource to resources list.
*/
static void __init isapnp_parse_mem32_resource(struct pnp_option *option,
static void __init isapnp_parse_mem32_resource(struct pnp_dev *dev,
struct pnp_option *option,
int size)
{
unsigned char tmp[17];
Expand All @@ -551,13 +557,14 @@ static void __init isapnp_parse_mem32_resource(struct pnp_option *option,
mem->size =
(tmp[16] << 24) | (tmp[15] << 16) | (tmp[14] << 8) | tmp[13];
mem->flags = tmp[0];
pnp_register_mem_resource(option, mem);
pnp_register_mem_resource(dev, option, mem);
}

/*
* Add 32-bit fixed memory resource to resources list.
*/
static void __init isapnp_parse_fixed_mem32_resource(struct pnp_option *option,
static void __init isapnp_parse_fixed_mem32_resource(struct pnp_dev *dev,
struct pnp_option *option,
int size)
{
unsigned char tmp[9];
Expand All @@ -572,7 +579,7 @@ static void __init isapnp_parse_fixed_mem32_resource(struct pnp_option *option,
mem->size = (tmp[8] << 24) | (tmp[7] << 16) | (tmp[6] << 8) | tmp[5];
mem->align = 0;
mem->flags = tmp[0];
pnp_register_mem_resource(option, mem);
pnp_register_mem_resource(dev, option, mem);
}

/*
Expand Down Expand Up @@ -656,13 +663,13 @@ static int __init isapnp_create_device(struct pnp_card *card,
case _STAG_IRQ:
if (size < 2 || size > 3)
goto __skip;
isapnp_parse_irq_resource(option, size);
isapnp_parse_irq_resource(dev, option, size);
size = 0;
break;
case _STAG_DMA:
if (size != 2)
goto __skip;
isapnp_parse_dma_resource(option, size);
isapnp_parse_dma_resource(dev, option, size);
size = 0;
break;
case _STAG_STARTDEP:
Expand All @@ -682,25 +689,26 @@ static int __init isapnp_create_device(struct pnp_card *card,
if (size != 0)
goto __skip;
priority = 0;
dev_dbg(&dev->dev, "end dependent options\n");
break;
case _STAG_IOPORT:
if (size != 7)
goto __skip;
isapnp_parse_port_resource(option, size);
isapnp_parse_port_resource(dev, option, size);
size = 0;
break;
case _STAG_FIXEDIO:
if (size != 3)
goto __skip;
isapnp_parse_fixed_port_resource(option, size);
isapnp_parse_fixed_port_resource(dev, option, size);
size = 0;
break;
case _STAG_VENDOR:
break;
case _LTAG_MEMRANGE:
if (size != 9)
goto __skip;
isapnp_parse_mem_resource(option, size);
isapnp_parse_mem_resource(dev, option, size);
size = 0;
break;
case _LTAG_ANSISTR:
Expand All @@ -715,13 +723,13 @@ static int __init isapnp_create_device(struct pnp_card *card,
case _LTAG_MEM32RANGE:
if (size != 17)
goto __skip;
isapnp_parse_mem32_resource(option, size);
isapnp_parse_mem32_resource(dev, option, size);
size = 0;
break;
case _LTAG_FIXEDMEM32RANGE:
if (size != 9)
goto __skip;
isapnp_parse_fixed_mem32_resource(option, size);
isapnp_parse_fixed_mem32_resource(dev, option, size);
size = 0;
break;
case _STAG_END:
Expand Down
68 changes: 40 additions & 28 deletions drivers/pnp/pnpacpi/rsparser.c
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,8 @@ acpi_status pnpacpi_parse_allocated_resource(acpi_handle handle,
pnpacpi_allocated_resource, res);
}

static __init void pnpacpi_parse_dma_option(struct pnp_option *option,
static __init void pnpacpi_parse_dma_option(struct pnp_dev *dev,
struct pnp_option *option,
struct acpi_resource_dma *p)
{
int i;
Expand All @@ -427,10 +428,11 @@ static __init void pnpacpi_parse_dma_option(struct pnp_option *option,

dma->flags = dma_flags(p->type, p->bus_master, p->transfer);

pnp_register_dma_resource(option, dma);
pnp_register_dma_resource(dev, option, dma);
}

static __init void pnpacpi_parse_irq_option(struct pnp_option *option,
static __init void pnpacpi_parse_irq_option(struct pnp_dev *dev,
struct pnp_option *option,
struct acpi_resource_irq *p)
{
int i;
Expand All @@ -447,10 +449,11 @@ static __init void pnpacpi_parse_irq_option(struct pnp_option *option,
__set_bit(p->interrupts[i], irq->map);
irq->flags = irq_flags(p->triggering, p->polarity, p->sharable);

pnp_register_irq_resource(option, irq);
pnp_register_irq_resource(dev, option, irq);
}

static __init void pnpacpi_parse_ext_irq_option(struct pnp_option *option,
static __init void pnpacpi_parse_ext_irq_option(struct pnp_dev *dev,
struct pnp_option *option,
struct acpi_resource_extended_irq *p)
{
int i;
Expand All @@ -467,10 +470,11 @@ static __init void pnpacpi_parse_ext_irq_option(struct pnp_option *option,
__set_bit(p->interrupts[i], irq->map);
irq->flags = irq_flags(p->triggering, p->polarity, p->sharable);

pnp_register_irq_resource(option, irq);
pnp_register_irq_resource(dev, option, irq);
}

static __init void pnpacpi_parse_port_option(struct pnp_option *option,
static __init void pnpacpi_parse_port_option(struct pnp_dev *dev,
struct pnp_option *option,
struct acpi_resource_io *io)
{
struct pnp_port *port;
Expand All @@ -486,10 +490,11 @@ static __init void pnpacpi_parse_port_option(struct pnp_option *option,
port->size = io->address_length;
port->flags = ACPI_DECODE_16 == io->io_decode ?
PNP_PORT_FLAG_16BITADDR : 0;
pnp_register_port_resource(option, port);
pnp_register_port_resource(dev, option, port);
}

static __init void pnpacpi_parse_fixed_port_option(struct pnp_option *option,
static __init void pnpacpi_parse_fixed_port_option(struct pnp_dev *dev,
struct pnp_option *option,
struct acpi_resource_fixed_io *io)
{
struct pnp_port *port;
Expand All @@ -503,10 +508,11 @@ static __init void pnpacpi_parse_fixed_port_option(struct pnp_option *option,
port->size = io->address_length;
port->align = 0;
port->flags = PNP_PORT_FLAG_FIXED;
pnp_register_port_resource(option, port);
pnp_register_port_resource(dev, option, port);
}

static __init void pnpacpi_parse_mem24_option(struct pnp_option *option,
static __init void pnpacpi_parse_mem24_option(struct pnp_dev *dev,
struct pnp_option *option,
struct acpi_resource_memory24 *p)
{
struct pnp_mem *mem;
Expand All @@ -524,10 +530,11 @@ static __init void pnpacpi_parse_mem24_option(struct pnp_option *option,
mem->flags = (ACPI_READ_WRITE_MEMORY == p->write_protect) ?
IORESOURCE_MEM_WRITEABLE : 0;

pnp_register_mem_resource(option, mem);
pnp_register_mem_resource(dev, option, mem);
}

static __init void pnpacpi_parse_mem32_option(struct pnp_option *option,
static __init void pnpacpi_parse_mem32_option(struct pnp_dev *dev,
struct pnp_option *option,
struct acpi_resource_memory32 *p)
{
struct pnp_mem *mem;
Expand All @@ -545,10 +552,11 @@ static __init void pnpacpi_parse_mem32_option(struct pnp_option *option,
mem->flags = (ACPI_READ_WRITE_MEMORY == p->write_protect) ?
IORESOURCE_MEM_WRITEABLE : 0;

pnp_register_mem_resource(option, mem);
pnp_register_mem_resource(dev, option, mem);
}

static __init void pnpacpi_parse_fixed_mem32_option(struct pnp_option *option,
static __init void pnpacpi_parse_fixed_mem32_option(struct pnp_dev *dev,
struct pnp_option *option,
struct acpi_resource_fixed_memory32 *p)
{
struct pnp_mem *mem;
Expand All @@ -565,10 +573,11 @@ static __init void pnpacpi_parse_fixed_mem32_option(struct pnp_option *option,
mem->flags = (ACPI_READ_WRITE_MEMORY == p->write_protect) ?
IORESOURCE_MEM_WRITEABLE : 0;

pnp_register_mem_resource(option, mem);
pnp_register_mem_resource(dev, option, mem);
}

static __init void pnpacpi_parse_address_option(struct pnp_option *option,
static __init void pnpacpi_parse_address_option(struct pnp_dev *dev,
struct pnp_option *option,
struct acpi_resource *r)
{
struct acpi_resource_address64 addr, *p = &addr;
Expand Down Expand Up @@ -596,7 +605,7 @@ static __init void pnpacpi_parse_address_option(struct pnp_option *option,
mem->flags = (p->info.mem.write_protect ==
ACPI_READ_WRITE_MEMORY) ? IORESOURCE_MEM_WRITEABLE
: 0;
pnp_register_mem_resource(option, mem);
pnp_register_mem_resource(dev, option, mem);
} else if (p->resource_type == ACPI_IO_RANGE) {
port = kzalloc(sizeof(struct pnp_port), GFP_KERNEL);
if (!port)
Expand All @@ -605,7 +614,7 @@ static __init void pnpacpi_parse_address_option(struct pnp_option *option,
port->size = p->address_length;
port->align = 0;
port->flags = PNP_PORT_FLAG_FIXED;
pnp_register_port_resource(option, port);
pnp_register_port_resource(dev, option, port);
}
}

Expand All @@ -625,11 +634,11 @@ static __init acpi_status pnpacpi_option_resource(struct acpi_resource *res,

switch (res->type) {
case ACPI_RESOURCE_TYPE_IRQ:
pnpacpi_parse_irq_option(option, &res->data.irq);
pnpacpi_parse_irq_option(dev, option, &res->data.irq);
break;

case ACPI_RESOURCE_TYPE_DMA:
pnpacpi_parse_dma_option(option, &res->data.dma);
pnpacpi_parse_dma_option(dev, option, &res->data.dma);
break;

case ACPI_RESOURCE_TYPE_START_DEPENDENT:
Expand Down Expand Up @@ -664,44 +673,47 @@ static __init acpi_status pnpacpi_option_resource(struct acpi_resource *res,
}
parse_data->option = parse_data->option_independent;
parse_data->option_independent = NULL;
dev_dbg(&dev->dev, "end dependent options\n");
break;

case ACPI_RESOURCE_TYPE_IO:
pnpacpi_parse_port_option(option, &res->data.io);
pnpacpi_parse_port_option(dev, option, &res->data.io);
break;

case ACPI_RESOURCE_TYPE_FIXED_IO:
pnpacpi_parse_fixed_port_option(option, &res->data.fixed_io);
pnpacpi_parse_fixed_port_option(dev, option,
&res->data.fixed_io);
break;

case ACPI_RESOURCE_TYPE_VENDOR:
case ACPI_RESOURCE_TYPE_END_TAG:
break;

case ACPI_RESOURCE_TYPE_MEMORY24:
pnpacpi_parse_mem24_option(option, &res->data.memory24);
pnpacpi_parse_mem24_option(dev, option, &res->data.memory24);
break;

case ACPI_RESOURCE_TYPE_MEMORY32:
pnpacpi_parse_mem32_option(option, &res->data.memory32);
pnpacpi_parse_mem32_option(dev, option, &res->data.memory32);
break;

case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
pnpacpi_parse_fixed_mem32_option(option,
pnpacpi_parse_fixed_mem32_option(dev, option,
&res->data.fixed_memory32);
break;

case ACPI_RESOURCE_TYPE_ADDRESS16:
case ACPI_RESOURCE_TYPE_ADDRESS32:
case ACPI_RESOURCE_TYPE_ADDRESS64:
pnpacpi_parse_address_option(option, res);
pnpacpi_parse_address_option(dev, option, res);
break;

case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64:
break;

case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
pnpacpi_parse_ext_irq_option(option, &res->data.extended_irq);
pnpacpi_parse_ext_irq_option(dev, option,
&res->data.extended_irq);
break;

case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
Expand Down
Loading

0 comments on commit c1caf06

Please sign in to comment.