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], },
        ...
};

Reply via email to