On Tue, 5 Feb 2019 11:43:46 +0530 Vignesh R <vigneshr@xxxxxx> wrote: > >> static int cqspi_setup_flash(struct cqspi_st *cqspi, struct device_node *np) > >> { > >> - const struct spi_nor_hwcaps hwcaps = { > >> - .mask = SNOR_HWCAPS_READ | > >> - SNOR_HWCAPS_READ_FAST | > >> - SNOR_HWCAPS_READ_1_1_2 | > >> - SNOR_HWCAPS_READ_1_1_4 | > >> - SNOR_HWCAPS_PP, > >> - }; > >> struct platform_device *pdev = cqspi->pdev; > >> struct device *dev = &pdev->dev; > >> + const struct cqspi_driver_platdata *ddata; > >> + struct spi_nor_hwcaps hwcaps; > >> struct cqspi_flash_pdata *f_pdata; > >> struct spi_nor *nor; > >> struct mtd_info *mtd; > >> unsigned int cs; > >> int i, ret; > >> > >> + ddata = of_device_get_match_data(dev); > >> + if (!ddata) > >> + hwcaps.mask = CQSPI_BASE_HWCAPS_MASK; > > > > Now that .data is set in all cqspi_dt_ids[], maybe it's better to print a > > message and return an error here. But I guess it's a matter of taste, so not a > > show stopper. > > Since, driver data is kernel internal field, I guess there is little > help in printing out the error to the user when its missing. I prefer to > keep this as is, as basic Quad mode is supported by all versions of the IP. Well, if all compat entries have an associated platdata instance we don't need to support the !ddata case, right? I think enforcing the presence of such a platdata is actually is a sane thing to do (which implies returning an error when ddata is NULL).