[PATCH v3 1/5] Add clk wizard and mxic host controller driver
liao jaime
jaimeliao.tw at gmail.com
Thu Nov 9 17:18:04 PST 2023
Hi Miquel
Sorry for including a faulty patch in this patchwork.
I will remove it and send a new one.
Thanks
Jaime
>
> Hi Jaime,
>
> jaimeliao.tw at gmail.com wrote on Thu, 9 Nov 2023 19:24:56 +0800:
>
> > Signed-off-by: JaimeLiao <jaimeliao at mxic.com.tw>
>
> You need to split this patch and create a dedicated series with it.
>
> One patch for the clock wizard.
> One patch (or more) for the DT changes.
> Possibly a binding patch.
>
> [...]
>
> > diff --git a/drivers/spi/spi-mxic.c b/drivers/spi/spi-mxic.c
> > index 60c9f3048ac9..28c324d7200a 100644
> > --- a/drivers/spi/spi-mxic.c
> > +++ b/drivers/spi/spi-mxic.c
> > @@ -323,7 +323,7 @@ static u32 mxic_spi_mem_prep_op_cfg(const struct spi_mem_op *op,
> > (op->addr.dtr ? OP_ADDR_DDR : 0);
> >
> > if (op->dummy.nbytes)
> > - cfg |= OP_DUMMY_CYC(op->dummy.nbytes);
> > + cfg |= OP_DUMMY_CYC((op->dummy.nbytes) * (op->data.buswidth));
> >
> > /* Direct mapping data.nbytes field is not populated */
> > if (data_len) {
> > @@ -390,7 +390,7 @@ static int mxic_spi_data_xfer(struct mxic_spi *mxic, const void *txbuf,
> > static ssize_t mxic_spi_mem_dirmap_read(struct spi_mem_dirmap_desc *desc,
> > u64 offs, size_t len, void *buf)
> > {
> > - struct mxic_spi *mxic = spi_controller_get_devdata(desc->mem->spi->controller);
> > + struct mxic_spi *mxic = spi_master_get_devdata(desc->mem->spi->master);
>
> This and all changes below make no sense and should be dropped.
>
> > int ret;
> > u32 sts;
> >
> > @@ -434,7 +434,7 @@ static ssize_t mxic_spi_mem_dirmap_write(struct spi_mem_dirmap_desc *desc,
> > u64 offs, size_t len,
> > const void *buf)
> > {
> > - struct mxic_spi *mxic = spi_controller_get_devdata(desc->mem->spi->controller);
> > + struct mxic_spi *mxic = spi_master_get_devdata(desc->mem->spi->master);
> > u32 sts;
> > int ret;
> >
> > @@ -481,9 +481,9 @@ static bool mxic_spi_mem_supports_op(struct spi_mem *mem,
> > op->dummy.buswidth > 8 || op->cmd.buswidth > 8)
> > return false;
> >
> > - if (op->data.nbytes && op->dummy.nbytes &&
> > - op->data.buswidth != op->dummy.buswidth)
> > - return false;
> > + //if (op->data.nbytes && op->dummy.nbytes &&
> > + // op->data.buswidth != op->dummy.buswidth)
> > + // return false;
> >
> > if (op->addr.nbytes > 7)
> > return false;
> > @@ -493,7 +493,7 @@ static bool mxic_spi_mem_supports_op(struct spi_mem *mem,
> >
> > static int mxic_spi_mem_dirmap_create(struct spi_mem_dirmap_desc *desc)
> > {
> > - struct mxic_spi *mxic = spi_controller_get_devdata(desc->mem->spi->controller);
> > + struct mxic_spi *mxic = spi_master_get_devdata(desc->mem->spi->master);
> >
> > if (!mxic->linear.map)
> > return -EINVAL;
> > @@ -510,7 +510,7 @@ static int mxic_spi_mem_dirmap_create(struct spi_mem_dirmap_desc *desc)
> > static int mxic_spi_mem_exec_op(struct spi_mem *mem,
> > const struct spi_mem_op *op)
> > {
> > - struct mxic_spi *mxic = spi_controller_get_devdata(mem->spi->controller);
> > + struct mxic_spi *mxic = spi_master_get_devdata(mem->spi->master);
> > int i, ret;
> > u8 addr[8], cmd[2];
> >
> > @@ -543,7 +543,7 @@ static int mxic_spi_mem_exec_op(struct spi_mem *mem,
> > if (ret)
> > goto out;
> >
> > - ret = mxic_spi_data_xfer(mxic, NULL, NULL, op->dummy.nbytes);
> > + ret = mxic_spi_data_xfer(mxic, NULL, NULL, (op->dummy.nbytes) * (op->data.buswidth));
> > if (ret)
> > goto out;
> >
> > @@ -565,9 +565,9 @@ static int mxic_spi_mem_exec_op(struct spi_mem *mem,
> > static const struct spi_controller_mem_ops mxic_spi_mem_ops = {
> > .supports_op = mxic_spi_mem_supports_op,
> > .exec_op = mxic_spi_mem_exec_op,
> > - .dirmap_create = mxic_spi_mem_dirmap_create,
> > - .dirmap_read = mxic_spi_mem_dirmap_read,
> > - .dirmap_write = mxic_spi_mem_dirmap_write,
> > + //.dirmap_create = mxic_spi_mem_dirmap_create,
> > + //.dirmap_read = mxic_spi_mem_dirmap_read,
> > + //.dirmap_write = mxic_spi_mem_dirmap_write,
> > };
> >
> > static const struct spi_controller_mem_caps mxic_spi_mem_caps = {
> > @@ -577,7 +577,7 @@ static const struct spi_controller_mem_caps mxic_spi_mem_caps = {
> >
> > static void mxic_spi_set_cs(struct spi_device *spi, bool lvl)
> > {
> > - struct mxic_spi *mxic = spi_controller_get_devdata(spi->controller);
> > + struct mxic_spi *mxic = spi_master_get_devdata(spi->master);
> >
> > if (!lvl) {
> > writel(readl(mxic->regs + HC_CFG) | HC_CFG_MAN_CS_EN,
> > @@ -592,11 +592,11 @@ static void mxic_spi_set_cs(struct spi_device *spi, bool lvl)
> > }
> > }
> >
> > -static int mxic_spi_transfer_one(struct spi_controller *host,
> > +static int mxic_spi_transfer_one(struct spi_master *master,
> > struct spi_device *spi,
> > struct spi_transfer *t)
> > {
> > - struct mxic_spi *mxic = spi_controller_get_devdata(host);
> > + struct mxic_spi *mxic = spi_master_get_devdata(master);
> > unsigned int busw = OP_BUSW_1;
> > int ret;
> >
> > @@ -632,7 +632,7 @@ static int mxic_spi_transfer_one(struct spi_controller *host,
> > if (ret)
> > return ret;
> >
> > - spi_finalize_current_transfer(host);
> > + spi_finalize_current_transfer(master);
> >
> > return 0;
> > }
> > @@ -713,8 +713,8 @@ static int mxic_spi_mem_ecc_probe(struct platform_device *pdev,
> >
> > static int __maybe_unused mxic_spi_runtime_suspend(struct device *dev)
> > {
> > - struct spi_controller *host = dev_get_drvdata(dev);
> > - struct mxic_spi *mxic = spi_controller_get_devdata(host);
> > + struct spi_master *master = dev_get_drvdata(dev);
> > + struct mxic_spi *mxic = spi_master_get_devdata(master);
> >
> > mxic_spi_clk_disable(mxic);
> > clk_disable_unprepare(mxic->ps_clk);
> > @@ -724,8 +724,8 @@ static int __maybe_unused mxic_spi_runtime_suspend(struct device *dev)
> >
> > static int __maybe_unused mxic_spi_runtime_resume(struct device *dev)
> > {
> > - struct spi_controller *host = dev_get_drvdata(dev);
> > - struct mxic_spi *mxic = spi_controller_get_devdata(host);
> > + struct spi_master *master = dev_get_drvdata(dev);
> > + struct mxic_spi *mxic = spi_master_get_devdata(master);
> > int ret;
> >
> > ret = clk_prepare_enable(mxic->ps_clk);
> > @@ -744,21 +744,21 @@ static const struct dev_pm_ops mxic_spi_dev_pm_ops = {
> >
> > static int mxic_spi_probe(struct platform_device *pdev)
> > {
> > - struct spi_controller *host;
> > + struct spi_master *master;
> > struct resource *res;
> > struct mxic_spi *mxic;
> > int ret;
> >
> > - host = devm_spi_alloc_host(&pdev->dev, sizeof(struct mxic_spi));
> > - if (!host)
> > + master = devm_spi_alloc_master(&pdev->dev, sizeof(struct mxic_spi));
> > + if (!master)
> > return -ENOMEM;
> >
> > - platform_set_drvdata(pdev, host);
> > + platform_set_drvdata(pdev, master);
> >
> > - mxic = spi_controller_get_devdata(host);
> > + mxic = spi_master_get_devdata(master);
> > mxic->dev = &pdev->dev;
> >
> > - host->dev.of_node = pdev->dev.of_node;
> > + master->dev.of_node = pdev->dev.of_node;
> >
> > mxic->ps_clk = devm_clk_get(&pdev->dev, "ps_clk");
> > if (IS_ERR(mxic->ps_clk))
> > @@ -786,19 +786,19 @@ static int mxic_spi_probe(struct platform_device *pdev)
> > }
> >
> > pm_runtime_enable(&pdev->dev);
> > - host->auto_runtime_pm = true;
> > + master->auto_runtime_pm = true;
> >
> > - host->num_chipselect = 1;
> > - host->mem_ops = &mxic_spi_mem_ops;
> > - host->mem_caps = &mxic_spi_mem_caps;
> > + master->num_chipselect = 1;
> > + master->mem_ops = &mxic_spi_mem_ops;
> > + master->mem_caps = &mxic_spi_mem_caps;
> >
> > - host->set_cs = mxic_spi_set_cs;
> > - host->transfer_one = mxic_spi_transfer_one;
> > - host->bits_per_word_mask = SPI_BPW_MASK(8);
> > - host->mode_bits = SPI_CPOL | SPI_CPHA |
> > - SPI_RX_DUAL | SPI_TX_DUAL |
> > - SPI_RX_QUAD | SPI_TX_QUAD |
> > - SPI_RX_OCTAL | SPI_TX_OCTAL;
> > + master->set_cs = mxic_spi_set_cs;
> > + master->transfer_one = mxic_spi_transfer_one;
> > + master->bits_per_word_mask = SPI_BPW_MASK(8);
> > + master->mode_bits = SPI_CPOL | SPI_CPHA |
> > + SPI_RX_DUAL | SPI_TX_DUAL |
> > + SPI_RX_QUAD | SPI_TX_QUAD |
> > + SPI_RX_OCTAL | SPI_TX_OCTAL;
> >
> > mxic_spi_hw_init(mxic);
> >
> > @@ -808,9 +808,9 @@ static int mxic_spi_probe(struct platform_device *pdev)
> > return ret;
> > }
> >
> > - ret = spi_register_controller(host);
> > + ret = spi_register_master(master);
> > if (ret) {
> > - dev_err(&pdev->dev, "spi_register_controller failed\n");
> > + dev_err(&pdev->dev, "spi_register_master failed\n");
> > pm_runtime_disable(&pdev->dev);
> > mxic_spi_mem_ecc_remove(mxic);
> > }
> > @@ -820,12 +820,12 @@ static int mxic_spi_probe(struct platform_device *pdev)
> >
> > static void mxic_spi_remove(struct platform_device *pdev)
> > {
> > - struct spi_controller *host = platform_get_drvdata(pdev);
> > - struct mxic_spi *mxic = spi_controller_get_devdata(host);
> > + struct spi_master *master = platform_get_drvdata(pdev);
> > + struct mxic_spi *mxic = spi_master_get_devdata(master);
> >
> > pm_runtime_disable(&pdev->dev);
> > mxic_spi_mem_ecc_remove(mxic);
> > - spi_unregister_controller(host);
> > + spi_unregister_master(master);
> > }
> >
> > static const struct of_device_id mxic_spi_of_ids[] = {
>
>
> Thanks,
> Miquèl
More information about the linux-mtd
mailing list