Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6
[deliverable/linux.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 }
This page took 0.031801 seconds and 6 git commands to generate.