Lines Matching refs:edev

44 			 struct eisa_device *edev)
49 x = (root->bus_nr << 8) | edev->slot;
57 static void __init eisa_name_device(struct eisa_device *edev)
62 if (!strcmp(edev->id.sig, eisa_table[i].id.sig)) {
63 strlcpy(edev->pretty_name,
65 sizeof(edev->pretty_name));
71 sprintf(edev->pretty_name, "EISA device %.7s", edev->id.sig);
110 struct eisa_device *edev = to_eisa_device(dev);
118 if (!strcmp(eids->sig, edev->id.sig) &&
119 edev->state & EISA_CONFIG_ENABLED) {
120 edev->id.driver_data = eids->driver_data;
132 struct eisa_device *edev = to_eisa_device(dev);
134 add_uevent_var(env, "MODALIAS=" EISA_DEVICE_MODALIAS_FMT, edev->id.sig);
161 struct eisa_device *edev = to_eisa_device(dev);
162 return sprintf(buf, "%s\n", edev->id.sig);
171 struct eisa_device *edev = to_eisa_device(dev);
172 return sprintf(buf, "%d\n", edev->state & EISA_CONFIG_ENABLED);
181 struct eisa_device *edev = to_eisa_device(dev);
182 return sprintf(buf, EISA_DEVICE_MODALIAS_FMT "\n", edev->id.sig);
188 struct eisa_device *edev,
201 memcpy(edev->id.sig, sig, EISA_SIG_LEN);
202 edev->slot = slot;
203 edev->state = inb(SLOT_ADDRESS(root, slot) + EISA_CONFIG_OFFSET)
205 edev->base_addr = SLOT_ADDRESS(root, slot);
206 edev->dma_mask = root->dma_mask; /* Default DMA mask */
207 eisa_name_device(edev);
208 edev->dev.parent = root->dev;
209 edev->dev.bus = &eisa_bus_type;
210 edev->dev.dma_mask = &edev->dma_mask;
211 edev->dev.coherent_dma_mask = edev->dma_mask;
212 dev_set_name(&edev->dev, "%02X:%02X", root->bus_nr, slot);
216 edev->res[i].name = edev->pretty_name;
218 edev->res[i].name = edev->id.sig;
222 if (is_forced_dev(enable_dev, enable_dev_count, root, edev))
223 edev->state = EISA_CONFIG_ENABLED | EISA_CONFIG_FORCED;
225 if (is_forced_dev(disable_dev, disable_dev_count, root, edev))
226 edev->state = EISA_CONFIG_FORCED;
231 static int __init eisa_register_device(struct eisa_device *edev)
233 int rc = device_register(&edev->dev);
235 put_device(&edev->dev);
239 rc = device_create_file(&edev->dev, &dev_attr_signature);
242 rc = device_create_file(&edev->dev, &dev_attr_enabled);
245 rc = device_create_file(&edev->dev, &dev_attr_modalias);
252 device_remove_file(&edev->dev, &dev_attr_enabled);
254 device_remove_file(&edev->dev, &dev_attr_signature);
256 device_unregister(&edev->dev);
261 struct eisa_device *edev,
274 edev->res[i].start = edev->res[i].end = 0;
279 edev->res[i].name = NULL;
280 edev->res[i].start = SLOT_ADDRESS(root, slot)
282 edev->res[i].end = edev->res[i].start + 0xff;
283 edev->res[i].flags = IORESOURCE_IO;
285 edev->res[i].name = NULL;
286 edev->res[i].start = SLOT_ADDRESS(root, slot)
288 edev->res[i].end = edev->res[i].start + 3;
289 edev->res[i].flags = IORESOURCE_IO | IORESOURCE_BUSY;
292 if (request_resource(root->res, &edev->res[i]))
300 release_resource(&edev->res[i]);
305 static void __init eisa_release_resources(struct eisa_device *edev)
310 if (edev->res[i].start || edev->res[i].end)
311 release_resource(&edev->res[i]);
317 struct eisa_device *edev;
325 edev = kzalloc(sizeof(*edev), GFP_KERNEL);
326 if (!edev)
329 if (eisa_request_resources(root, edev, 0)) {
332 kfree(edev);
338 if (eisa_init_device(root, edev, 0)) {
339 eisa_release_resources(edev);
340 kfree(edev);
346 dev_info(&edev->dev, "EISA: Mainboard %s detected\n", edev->id.sig);
348 if (eisa_register_device(edev)) {
349 dev_err(&edev->dev, "EISA: Failed to register %s\n",
350 edev->id.sig);
351 eisa_release_resources(edev);
352 kfree(edev);
358 edev = kzalloc(sizeof(*edev), GFP_KERNEL);
359 if (!edev) {
365 if (eisa_request_resources(root, edev, i)) {
369 kfree(edev);
373 if (eisa_init_device(root, edev, i)) {
374 eisa_release_resources(edev);
375 kfree(edev);
379 if (edev->state == (EISA_CONFIG_ENABLED | EISA_CONFIG_FORCED))
381 else if (edev->state == EISA_CONFIG_FORCED)
383 else if (edev->state == 0)
388 dev_info(&edev->dev, "EISA: slot %d: %s detected%s\n", i,
389 edev->id.sig, enabled_str);
393 if (eisa_register_device(edev)) {
394 dev_err(&edev->dev, "EISA: Failed to register %s\n",
395 edev->id.sig);
396 eisa_release_resources(edev);
397 kfree(edev);