On 2023/5/31 21:20, Mark Brown wrote: > On Wed, May 31, 2023 at 02:19:16PM +0800, William Qiu wrote: >> On 2023/5/30 18:33, Mark Brown wrote: > >> > You could always specify a different array of clocks depending on which >> > compatible the driver sees, just like you'd conditionally request clocks >> > individually. > >> If specify a different array of clocks depending on which compatible >> the driver sees, since there will also be clock operations in the suspend >> and resume interfaces, this can make the code look complicated. > > If you store the clock count and array in the driver data that should be > fairly simple I think. > >> as following: > >> /* Obtain QSPI clock. */ >> cqspi->num_clks = devm_clk_bulk_get_all(dev, &cqspi->clks); >> if (cqspi->num_clks < 0) { >> dev_err(dev, "Cannot claim QSPI clock: %u\n", cqspi->num_clks); >> return -EINVAL; >> } > >> This way, the code will look simpler and clearer. How do you think >> about it. > > I'm not clear how enable and disable would then work? enable use this API: clk_bulk_prepare_enable(dev->num_clks, dev->clks); then disable: clk_bulk_disable_unprepare(dev->num_clks, dev->clks); But I'll first try specify a different array of clocks depending on which compatible the driver sees first. Best regards, William