diff options
Diffstat (limited to 'drivers/pnp/support.c')
-rw-r--r-- | drivers/pnp/support.c | 79 |
1 files changed, 35 insertions, 44 deletions
diff --git a/drivers/pnp/support.c b/drivers/pnp/support.c index eb07345f5cf7..1566e4a73849 100644 --- a/drivers/pnp/support.c +++ b/drivers/pnp/support.c | |||
@@ -16,6 +16,10 @@ | |||
16 | */ | 16 | */ |
17 | int pnp_is_active(struct pnp_dev *dev) | 17 | int pnp_is_active(struct pnp_dev *dev) |
18 | { | 18 | { |
19 | /* | ||
20 | * I don't think this is very reliable because pnp_disable_dev() | ||
21 | * only clears out auto-assigned resources. | ||
22 | */ | ||
19 | if (!pnp_port_start(dev, 0) && pnp_port_len(dev, 0) <= 1 && | 23 | if (!pnp_port_start(dev, 0) && pnp_port_len(dev, 0) <= 1 && |
20 | !pnp_mem_start(dev, 0) && pnp_mem_len(dev, 0) <= 1 && | 24 | !pnp_mem_start(dev, 0) && pnp_mem_len(dev, 0) <= 1 && |
21 | pnp_irq(dev, 0) == -1 && pnp_dma(dev, 0) == -1) | 25 | pnp_irq(dev, 0) == -1 && pnp_dma(dev, 0) == -1) |
@@ -70,54 +74,41 @@ char *pnp_resource_type_name(struct resource *res) | |||
70 | void dbg_pnp_show_resources(struct pnp_dev *dev, char *desc) | 74 | void dbg_pnp_show_resources(struct pnp_dev *dev, char *desc) |
71 | { | 75 | { |
72 | #ifdef DEBUG | 76 | #ifdef DEBUG |
77 | char buf[128]; | ||
78 | int len = 0; | ||
79 | struct pnp_resource *pnp_res; | ||
73 | struct resource *res; | 80 | struct resource *res; |
74 | int i; | ||
75 | 81 | ||
76 | dev_dbg(&dev->dev, "current resources: %s\n", desc); | 82 | dev_dbg(&dev->dev, "current resources: %s\n", desc); |
83 | list_for_each_entry(pnp_res, &dev->resources, list) { | ||
84 | res = &pnp_res->res; | ||
77 | 85 | ||
78 | for (i = 0; i < PNP_MAX_IRQ; i++) { | 86 | len += snprintf(buf + len, sizeof(buf) - len, " %-3s ", |
79 | res = pnp_get_resource(dev, IORESOURCE_IRQ, i); | 87 | pnp_resource_type_name(res)); |
80 | if (res && !(res->flags & IORESOURCE_UNSET)) | 88 | |
81 | dev_dbg(&dev->dev, " irq %lld flags %#lx%s%s\n", | 89 | if (res->flags & IORESOURCE_DISABLED) { |
82 | (unsigned long long) res->start, res->flags, | 90 | dev_dbg(&dev->dev, "%sdisabled\n", buf); |
83 | res->flags & IORESOURCE_DISABLED ? | 91 | continue; |
84 | " DISABLED" : "", | 92 | } |
85 | res->flags & IORESOURCE_AUTO ? | 93 | |
86 | " AUTO" : ""); | 94 | switch (pnp_resource_type(res)) { |
87 | } | 95 | case IORESOURCE_IO: |
88 | for (i = 0; i < PNP_MAX_DMA; i++) { | 96 | case IORESOURCE_MEM: |
89 | res = pnp_get_resource(dev, IORESOURCE_DMA, i); | 97 | len += snprintf(buf + len, sizeof(buf) - len, |
90 | if (res && !(res->flags & IORESOURCE_UNSET)) | 98 | "%#llx-%#llx flags %#lx", |
91 | dev_dbg(&dev->dev, " dma %lld flags %#lx%s%s\n", | 99 | (unsigned long long) res->start, |
92 | (unsigned long long) res->start, res->flags, | 100 | (unsigned long long) res->end, |
93 | res->flags & IORESOURCE_DISABLED ? | 101 | res->flags); |
94 | " DISABLED" : "", | 102 | break; |
95 | res->flags & IORESOURCE_AUTO ? | 103 | case IORESOURCE_IRQ: |
96 | " AUTO" : ""); | 104 | case IORESOURCE_DMA: |
97 | } | 105 | len += snprintf(buf + len, sizeof(buf) - len, |
98 | for (i = 0; i < PNP_MAX_PORT; i++) { | 106 | "%lld flags %#lx", |
99 | res = pnp_get_resource(dev, IORESOURCE_IO, i); | 107 | (unsigned long long) res->start, |
100 | if (res && !(res->flags & IORESOURCE_UNSET)) | 108 | res->flags); |
101 | dev_dbg(&dev->dev, " io %#llx-%#llx flags %#lx" | 109 | break; |
102 | "%s%s\n", | 110 | } |
103 | (unsigned long long) res->start, | 111 | dev_dbg(&dev->dev, "%s\n", buf); |
104 | (unsigned long long) res->end, res->flags, | ||
105 | res->flags & IORESOURCE_DISABLED ? | ||
106 | " DISABLED" : "", | ||
107 | res->flags & IORESOURCE_AUTO ? | ||
108 | " AUTO" : ""); | ||
109 | } | ||
110 | for (i = 0; i < PNP_MAX_MEM; i++) { | ||
111 | res = pnp_get_resource(dev, IORESOURCE_MEM, i); | ||
112 | if (res && !(res->flags & IORESOURCE_UNSET)) | ||
113 | dev_dbg(&dev->dev, " mem %#llx-%#llx flags %#lx" | ||
114 | "%s%s\n", | ||
115 | (unsigned long long) res->start, | ||
116 | (unsigned long long) res->end, res->flags, | ||
117 | res->flags & IORESOURCE_DISABLED ? | ||
118 | " DISABLED" : "", | ||
119 | res->flags & IORESOURCE_AUTO ? | ||
120 | " AUTO" : ""); | ||
121 | } | 112 | } |
122 | #endif | 113 | #endif |
123 | } | 114 | } |