]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #include <linux/kernel.h> |
2 | #include <linux/pci.h> | |
3 | #include <linux/module.h> | |
4 | #include "pci.h" | |
5 | ||
312c004d KS |
6 | int pci_uevent(struct device *dev, char **envp, int num_envp, |
7 | char *buffer, int buffer_size) | |
1da177e4 LT |
8 | { |
9 | struct pci_dev *pdev; | |
1da177e4 LT |
10 | int i = 0; |
11 | int length = 0; | |
12 | ||
13 | if (!dev) | |
14 | return -ENODEV; | |
15 | ||
16 | pdev = to_pci_dev(dev); | |
17 | if (!pdev) | |
18 | return -ENODEV; | |
19 | ||
312c004d KS |
20 | if (add_uevent_var(envp, num_envp, &i, |
21 | buffer, buffer_size, &length, | |
22 | "PCI_CLASS=%04X", pdev->class)) | |
1da177e4 | 23 | return -ENOMEM; |
1da177e4 | 24 | |
312c004d KS |
25 | if (add_uevent_var(envp, num_envp, &i, |
26 | buffer, buffer_size, &length, | |
27 | "PCI_ID=%04X:%04X", pdev->vendor, pdev->device)) | |
1da177e4 | 28 | return -ENOMEM; |
1da177e4 | 29 | |
312c004d KS |
30 | if (add_uevent_var(envp, num_envp, &i, |
31 | buffer, buffer_size, &length, | |
32 | "PCI_SUBSYS_ID=%04X:%04X", pdev->subsystem_vendor, | |
33 | pdev->subsystem_device)) | |
1da177e4 | 34 | return -ENOMEM; |
1da177e4 | 35 | |
312c004d KS |
36 | if (add_uevent_var(envp, num_envp, &i, |
37 | buffer, buffer_size, &length, | |
38 | "PCI_SLOT_NAME=%s", pci_name(pdev))) | |
1da177e4 LT |
39 | return -ENOMEM; |
40 | ||
312c004d KS |
41 | if (add_uevent_var(envp, num_envp, &i, |
42 | buffer, buffer_size, &length, | |
43 | "MODALIAS=pci:v%08Xd%08Xsv%08Xsd%08Xbc%02Xsc%02Xi%02x", | |
44 | pdev->vendor, pdev->device, | |
45 | pdev->subsystem_vendor, pdev->subsystem_device, | |
46 | (u8)(pdev->class >> 16), (u8)(pdev->class >> 8), | |
47 | (u8)(pdev->class))) | |
d1ded203 GKH |
48 | return -ENOMEM; |
49 | ||
1da177e4 LT |
50 | envp[i] = NULL; |
51 | ||
52 | return 0; | |
53 | } |