From: xiangsheng.hou <xiangsheng.hou@mediatek.com>
To: Miquel Raynal <miquel.raynal@bootlin.com>
Cc: <broonie@kernel.org>, <benliang.zhao@mediatek.com>,
<dandan.he@mediatek.com>, <guochun.mao@mediatek.com>,
<bin.zhang@mediatek.com>, <sanny.chen@mediatek.com>,
<mao.zhong@mediatek.com>, <yingjoe.chen@mediatek.com>,
<donghunt@amazon.com>, <rdlee@amazon.com>,
<linux-mtd@lists.infradead.org>,
<linux-mediatek@lists.infradead.org>,
<srv_heupstream@mediatek.com>
Subject: Re: [RFC,v4,3/5] spi: mtk: Add mediatek SPI Nand Flash interface driver
Date: Fri, 10 Dec 2021 17:09:31 +0800 [thread overview]
Message-ID: <60212a8cba39939ff2bf48196cc37cb1a2eb20e4.camel@mediatek.com> (raw)
In-Reply-To: <20211209112030.5cdcd07c@xps13>
Hi Miquel,
On Thu, 2021-12-09 at 11:20 +0100, Miquel Raynal wrote:
> Hi Xiangsheng,
>
> xiangsheng.hou@mediatek.com wrote on Tue, 30 Nov 2021 16:32:00 +0800:
>
> >
> > +
> > +static int mtk_snfi_config(struct nand_device *nand,
> > + struct mtk_snfi *snfi)
> > +{
> > + struct mtk_ecc_engine *eng = mtk_snfi_to_ecc_engine(snfi);
> > + u32 val;
> > +
> > + switch (nanddev_page_size(nand)) {
> > + case 512:
> > + val = PAGEFMT_512_2K | PAGEFMT_SEC_SEL_512;
> > + break;
> > + case KB(2):
> > + if (eng->section_size == 512)
> > + val = PAGEFMT_2K_4K | PAGEFMT_SEC_SEL_512;
> > + else
> > + val = PAGEFMT_512_2K;
> > + break;
> > + case KB(4):
> > + if (eng->section_size == 512)
> > + val = PAGEFMT_4K_8K | PAGEFMT_SEC_SEL_512;
> > + else
> > + val = PAGEFMT_2K_4K;
> > + break;
> > + case KB(8):
> > + if (eng->section_size == 512)
> > + val = PAGEFMT_8K_16K | PAGEFMT_SEC_SEL_512;
> > + else
> > + val = PAGEFMT_4K_8K;
> > + break;
> > + case KB(16):
> > + val = PAGEFMT_8K_16K;
> > + break;
> > + default:
> > + dev_err(snfi->dev, "invalid page len: %d\n",
> > + nanddev_page_size(nand));
> > + return -EINVAL;
> > + }
> > +
> > + val |= eng->oob_per_section_idx << PAGEFMT_SPARE_SHIFT;
> > + val |= eng->oob_free << PAGEFMT_FDM_SHIFT;
> > + val |= eng->oob_free_protected << PAGEFMT_FDM_ECC_SHIFT;
> > + writel(val, snfi->regs + NFI_PAGEFMT);
>
> Shouldn't this be calculated only once?
Yes, The mtk_snfi_config function can be only called in prepare_io_req
at the first time. I will add a variable to indicate config done or not
to avoid calculate repeatedly.
>
> > +
> > + return 0;
> > +}
> > +
> > +static int mtk_snfi_ecc_init_ctx(struct nand_device *nand)
> > +{
> > + struct nand_ecc_engine_ops *ops = mtk_ecc_get_pipelined_ops();
> > +
> > + return ops->init_ctx(nand);
> > +}
> > +
> > +static void mtk_snfi_ecc_cleanup_ctx(struct nand_device *nand)
> > +{
> > + struct nand_ecc_engine_ops *ops = mtk_ecc_get_pipelined_ops();
> > +
> > + ops->cleanup_ctx(nand);
> > +}
> > +
> > +static int mtk_snfi_ecc_prepare_io_req(struct nand_device *nand,
> > + struct nand_page_io_req *req)
> > +{
> > + struct nand_ecc_engine_ops *ops = mtk_ecc_get_pipelined_ops();
> > + struct mtk_snfi *snfi = mtk_nand_to_spi(nand);
> > + int ret;
> > +
> > + ret = mtk_snfi_config(nand, snfi);
> > + if (ret)
> > + return ret;
> > +
> > + return ops->prepare_io_req(nand, req);
> > +}
> > +
> > +static int mtk_snfi_ecc_finish_io_req(struct nand_device *nand,
> > + struct nand_page_io_req *req)
> > +{
> > + struct nand_ecc_engine_ops *ops = mtk_ecc_get_pipelined_ops();
> > + struct mtk_ecc_engine *eng = nand_to_ecc_ctx(nand);
> > + struct mtk_snfi *snfi = mtk_nand_to_spi(nand);
> > +
> > + if (req->mode != MTD_OPS_RAW)
> > + eng->read_empty = readl(snfi->regs + NFI_STA) &
> > STA_EMP_PAGE;
> > +
> > + return ops->finish_io_req(nand, req);
> > +}
> > +
> > +
> > +MODULE_LICENSE("GPL v2");
> > +MODULE_AUTHOR("Xiangsheng Hou <xiangsheng.hou@mediatek.com>");
> > +MODULE_DESCRIPTION("Mediatek SPI Nand Flash interface driver");
>
> Otherwise looks good, I believe you can drop the RFC prefix now.
>
I will prepare the formal patch and send for review after internal
review and test.
Thanks
Xiangsheng Hou
_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek
next prev parent reply other threads:[~2021-12-10 9:10 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-30 8:31 [RFC,v4,0/5] Add Mediatek SPI Nand controller and convert ECC driver Xiangsheng Hou
2021-11-30 8:31 ` [RFC,v4,1/5] mtd: nand: ecc: Move mediatek " Xiangsheng Hou
2021-11-30 8:31 ` [RFC,v4,2/5] mtd: nand: ecc: mtk: Convert to the ECC infrastructure Xiangsheng Hou
2021-12-09 10:32 ` Miquel Raynal
2021-12-10 9:09 ` xiangsheng.hou
2021-12-10 9:34 ` Miquel Raynal
2021-12-11 3:25 ` xiangsheng.hou
2021-12-13 9:29 ` Miquel Raynal
2021-12-14 3:32 ` xiangsheng.hou
2021-12-14 9:47 ` Miquel Raynal
2021-11-30 8:32 ` [RFC,v4,3/5] spi: mtk: Add mediatek SPI Nand Flash interface driver Xiangsheng Hou
2021-12-09 10:20 ` Miquel Raynal
2021-12-10 9:09 ` xiangsheng.hou [this message]
2021-12-10 9:40 ` Miquel Raynal
2021-11-30 8:32 ` [RFC, v4, 4/5] mtd: spinand: Move set/get OOB databytes to each ECC engines Xiangsheng Hou
2021-12-14 11:41 ` [RFC,v4,4/5] " Miquel Raynal
2021-12-20 7:37 ` xiangsheng.hou
2021-11-30 8:32 ` [RFC,v4,5/5] arm64: dts: mtk: Add snfi node Xiangsheng Hou
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=60212a8cba39939ff2bf48196cc37cb1a2eb20e4.camel@mediatek.com \
--to=xiangsheng.hou@mediatek.com \
--cc=benliang.zhao@mediatek.com \
--cc=bin.zhang@mediatek.com \
--cc=broonie@kernel.org \
--cc=dandan.he@mediatek.com \
--cc=donghunt@amazon.com \
--cc=guochun.mao@mediatek.com \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=mao.zhong@mediatek.com \
--cc=miquel.raynal@bootlin.com \
--cc=rdlee@amazon.com \
--cc=sanny.chen@mediatek.com \
--cc=srv_heupstream@mediatek.com \
--cc=yingjoe.chen@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox