Merge master.kernel.org:/pub/scm/linux/kernel/git/acme/net-2.6
[sfrench/cifs-2.6.git] / drivers / pci / hotplug.c
1 #include <linux/kernel.h>
2 #include <linux/pci.h>
3 #include <linux/module.h>
4 #include "pci.h"
5
6 int pci_hotplug (struct device *dev, char **envp, int num_envp,
7                  char *buffer, int buffer_size)
8 {
9         struct pci_dev *pdev;
10         char *scratch;
11         int i = 0;
12         int length = 0;
13
14         if (!dev)
15                 return -ENODEV;
16
17         pdev = to_pci_dev(dev);
18         if (!pdev)
19                 return -ENODEV;
20
21         scratch = buffer;
22
23
24         if (add_hotplug_env_var(envp, num_envp, &i,
25                                 buffer, buffer_size, &length,
26                                 "PCI_CLASS=%04X", pdev->class))
27                 return -ENOMEM;
28
29         if (add_hotplug_env_var(envp, num_envp, &i,
30                                 buffer, buffer_size, &length,
31                                 "PCI_ID=%04X:%04X", pdev->vendor, pdev->device))
32                 return -ENOMEM;
33
34         if (add_hotplug_env_var(envp, num_envp, &i,
35                                 buffer, buffer_size, &length,
36                                 "PCI_SUBSYS_ID=%04X:%04X", pdev->subsystem_vendor,
37                                 pdev->subsystem_device))
38                 return -ENOMEM;
39
40         if (add_hotplug_env_var(envp, num_envp, &i,
41                                 buffer, buffer_size, &length,
42                                 "PCI_SLOT_NAME=%s", pci_name(pdev)))
43                 return -ENOMEM;
44
45         if (add_hotplug_env_var(envp, num_envp, &i,
46                                 buffer, buffer_size, &length,
47                                 "MODALIAS=pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02x",
48                                 pdev->vendor, pdev->device,
49                                 pdev->subsystem_vendor, pdev->subsystem_device,
50                                 (u8)(pdev->class >> 16), (u8)(pdev->class >> 8),
51                                 (u8)(pdev->class)))
52                 return -ENOMEM;
53
54         envp[i] = NULL;
55
56         return 0;
57 }