On Mon, 2018-11-19 at 10:41 +0100, Stefan Agner wrote: > > > +static const struct imx6_pcie_drvdata imx6q_pcie_drvdata = { > + .variant = IMX6Q, > + .dbi_length = 0x15c, > +}; > + > +static const struct imx6_pcie_drvdata imx6sx_pcie_drvdata = { > + .variant = IMX6SX, > +}; > + > +static const struct imx6_pcie_drvdata imx6qp_pcie_drvdata = { > + .variant = IMX6QP, > +}; > + > +static const struct imx6_pcie_drvdata imx7d_pcie_drvdata = { > + .variant = IMX7D, > +}; > + > static const struct of_device_id imx6_pcie_of_match[] = { > - { .compatible = "fsl,imx6q-pcie", .data = (void *)IMX6Q, }, > - { .compatible = "fsl,imx6sx-pcie", .data = (void *)IMX6SX, }, > - { .compatible = "fsl,imx6qp-pcie", .data = (void *)IMX6QP, }, > - { .compatible = "fsl,imx7d-pcie", .data = (void *)IMX7D, }, > + { .compatible = "fsl,imx6q-pcie", .data = &imx6q_pcie_drvdata, }, > + { .compatible = "fsl,imx6sx-pcie", .data = &imx6sx_pcie_drvdata, }, > + { .compatible = "fsl,imx6qp-pcie", .data = &imx6qp_pcie_drvdata, }, > + { .compatible = "fsl,imx7d-pcie", .data = &imx7d_pcie_drvdata, }, > {}, > }; Instead of making a single drvdata struct for each type, this could use an array: static const struct imx6_pcie_drvdata drvdata[] = { [IMX6Q] = { .variant = IMX6Q, .dbi_length = 0x15c }, [IMX6SX] = { .variant = IMX6SX }, [...] }; static const struct of_device_id imx6_pcie_of_match[] = { { .compatible = "fsl,imx6q-pcie", .data = &drvdata[IMX6Q], }, { .compatible = "fsl,imx6sx-pcie", .data = &drvdata[IMX6SX], }, ... };