diff options
Diffstat (limited to 'drivers/pnp/resource.c')
-rw-r--r-- | drivers/pnp/resource.c | 54 |
1 files changed, 46 insertions, 8 deletions
diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c index 391828c7f207..61145491f363 100644 --- a/drivers/pnp/resource.c +++ b/drivers/pnp/resource.c | |||
@@ -78,13 +78,20 @@ struct pnp_option *pnp_register_dependent_option(struct pnp_dev *dev, | |||
78 | } | 78 | } |
79 | 79 | ||
80 | int pnp_register_irq_resource(struct pnp_dev *dev, struct pnp_option *option, | 80 | int pnp_register_irq_resource(struct pnp_dev *dev, struct pnp_option *option, |
81 | struct pnp_irq *data) | 81 | pnp_irq_mask_t *map, unsigned char flags) |
82 | { | 82 | { |
83 | struct pnp_irq *ptr; | 83 | struct pnp_irq *data, *ptr; |
84 | #ifdef DEBUG | 84 | #ifdef DEBUG |
85 | char buf[PNP_IRQ_NR]; /* hex-encoded, so this is overkill but safe */ | 85 | char buf[PNP_IRQ_NR]; /* hex-encoded, so this is overkill but safe */ |
86 | #endif | 86 | #endif |
87 | 87 | ||
88 | data = kzalloc(sizeof(struct pnp_irq), GFP_KERNEL); | ||
89 | if (!data) | ||
90 | return -ENOMEM; | ||
91 | |||
92 | data->map = *map; | ||
93 | data->flags = flags; | ||
94 | |||
88 | ptr = option->irq; | 95 | ptr = option->irq; |
89 | while (ptr && ptr->next) | 96 | while (ptr && ptr->next) |
90 | ptr = ptr->next; | 97 | ptr = ptr->next; |
@@ -112,9 +119,16 @@ int pnp_register_irq_resource(struct pnp_dev *dev, struct pnp_option *option, | |||
112 | } | 119 | } |
113 | 120 | ||
114 | int pnp_register_dma_resource(struct pnp_dev *dev, struct pnp_option *option, | 121 | int pnp_register_dma_resource(struct pnp_dev *dev, struct pnp_option *option, |
115 | struct pnp_dma *data) | 122 | unsigned char map, unsigned char flags) |
116 | { | 123 | { |
117 | struct pnp_dma *ptr; | 124 | struct pnp_dma *data, *ptr; |
125 | |||
126 | data = kzalloc(sizeof(struct pnp_dma), GFP_KERNEL); | ||
127 | if (!data) | ||
128 | return -ENOMEM; | ||
129 | |||
130 | data->map = map; | ||
131 | data->flags = flags; | ||
118 | 132 | ||
119 | ptr = option->dma; | 133 | ptr = option->dma; |
120 | while (ptr && ptr->next) | 134 | while (ptr && ptr->next) |
@@ -130,9 +144,21 @@ int pnp_register_dma_resource(struct pnp_dev *dev, struct pnp_option *option, | |||
130 | } | 144 | } |
131 | 145 | ||
132 | int pnp_register_port_resource(struct pnp_dev *dev, struct pnp_option *option, | 146 | int pnp_register_port_resource(struct pnp_dev *dev, struct pnp_option *option, |
133 | struct pnp_port *data) | 147 | resource_size_t min, resource_size_t max, |
148 | resource_size_t align, resource_size_t size, | ||
149 | unsigned char flags) | ||
134 | { | 150 | { |
135 | struct pnp_port *ptr; | 151 | struct pnp_port *data, *ptr; |
152 | |||
153 | data = kzalloc(sizeof(struct pnp_port), GFP_KERNEL); | ||
154 | if (!data) | ||
155 | return -ENOMEM; | ||
156 | |||
157 | data->min = min; | ||
158 | data->max = max; | ||
159 | data->align = align; | ||
160 | data->size = size; | ||
161 | data->flags = flags; | ||
136 | 162 | ||
137 | ptr = option->port; | 163 | ptr = option->port; |
138 | while (ptr && ptr->next) | 164 | while (ptr && ptr->next) |
@@ -152,9 +178,21 @@ int pnp_register_port_resource(struct pnp_dev *dev, struct pnp_option *option, | |||
152 | } | 178 | } |
153 | 179 | ||
154 | int pnp_register_mem_resource(struct pnp_dev *dev, struct pnp_option *option, | 180 | int pnp_register_mem_resource(struct pnp_dev *dev, struct pnp_option *option, |
155 | struct pnp_mem *data) | 181 | resource_size_t min, resource_size_t max, |
182 | resource_size_t align, resource_size_t size, | ||
183 | unsigned char flags) | ||
156 | { | 184 | { |
157 | struct pnp_mem *ptr; | 185 | struct pnp_mem *data, *ptr; |
186 | |||
187 | data = kzalloc(sizeof(struct pnp_mem), GFP_KERNEL); | ||
188 | if (!data) | ||
189 | return -ENOMEM; | ||
190 | |||
191 | data->min = min; | ||
192 | data->max = max; | ||
193 | data->align = align; | ||
194 | data->size = size; | ||
195 | data->flags = flags; | ||
158 | 196 | ||
159 | ptr = option->mem; | 197 | ptr = option->mem; |
160 | while (ptr && ptr->next) | 198 | while (ptr && ptr->next) |