Re: [PATCH V5 2/3] PCI: Create device tree node for selected devices

From: clement . leger
Date: Tue Jan 03 2023 - 14:35:15 EST


Le 2023-01-03 19:44, Lizhi Hou a écrit :
On 1/2/23 05:56, Clément Léger wrote:
Le Thu, 15 Dec 2022 09:30:45 -0800,
Lizhi Hou <lizhi.hou@xxxxxxx> a écrit :

+};
+
+static int of_pci_prop_device_type(struct pci_dev *pdev,
+ struct of_changeset *ocs,
+ struct device_node *np)
+{
+ return of_changeset_add_prop_string(ocs, np, "device_type", "pci");
+}
+
+static int of_pci_prop_address_cells(struct pci_dev *pdev,
+ struct of_changeset *ocs,
+ struct device_node *np)
+{
+ return of_changeset_add_prop_u32(ocs, np, "#address_cells",
+ OF_PCI_ADDRESS_CELLS);
+}
+
+static int of_pci_prop_size_cells(struct pci_dev *pdev,
+ struct of_changeset *ocs,
+ struct device_node *np)
+{
+ return of_changeset_add_prop_u32(ocs, np, "#size_cells",
+ OF_PCI_SIZE_CELLS);
+}
Hi Lizhi,

For all these functions, the "pdev" parameter is actually unused.

[snip]
Ok. I will remove unused pdev.

+
+static int of_pci_prop_compatible(struct pci_dev *pdev,
+ struct of_changeset *ocs,
+ struct device_node *np)
+{
+ const char *compat_strs[PROP_COMPAT_NUM] = { 0 };
+ int i, ret;
+
+ compat_strs[PROP_COMPAT_PCI_VVVV_DDDD] =
+ kasprintf(GFP_KERNEL, "pci%x,%x", pdev->vendor, pdev->device);
Maybe it should be better to use "pci%04x,%04x" to keep the existing
naming.

Based on
https://www.devicetree.org/open-firmware/bindings/pci/pci2_1.pdf,
"pci%x,%x" should be used?

"name" Based on the PCI Class Code register, pick a name from Table 1.
If none apply, generate a name of the
form pciVVVV,DDDD as described below under "compatible".

VVVV, DDDD, SSSS, ssss and RR are lower-case ASCII hexadecimal numbers
without leading zeroes.

You might be right then ! I just looked at the already existing device-tree
which adds leading zeroes. Someone like Rob or Frank might be able to answer
on that.

Clément



Thanks,

Lizhi