
1 2 3 4 5 6 7 8 9 10 11
|
static struct pdata = { .subdevs = (struct intel_ipu4_isys_subdev_info *[]) { &ov13858_crl_sd, ... }, };
static void ipu4_quirk(struct pci_dev *pci_dev) { pci_dev->dev.platform_data = &pdata; }
|
pdata->spdata
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
static int intel_ipu4_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) isp->isys = intel_ipu4_isys_init( pdev, &isp->isys_iommu->dev, &isp->isys_iommu->dev, isys_base, isys_ipdata, pdev->dev.platform_data, 0, is_intel_ipu_hw_fpga(isp) ? INTEL_IPU4_ISYS_TYPE_INTEL_IPU4_FPGA : INTEL_IPU4_ISYS_TYPE_INTEL_IPU4); pdata->spdata = spdata; return intel_ipu4_bus_add_device(pdev, parent, pdata, iommu, NULL, INTEL_IPU4_ISYS_NAME, nr); adev = kzalloc(sizeof(*adev), GFP_KERNEL); adev->pdata = pdata; }
|
1 2 3 4 5 6 7 8 9 10 11
|
static int isys_probe(struct intel_ipu4_bus_device *adev) { isys->pdata = adev->pdata;
rval = isys_register_devices(isys); isys_register_ext_subdevs(isys); struct *spdata = isys->pdata->spdata; for (sd_info = spdata->subdevs; *sd_info; sd_info++) isys_register_ext_subdev(isys, *sd_info, false); }
|
所以sd_info就指向了ov13858_crl_sd,将依次遍历pdata->subdevs。
近期评论