linux-mtd.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: masonccyang@mxic.com.tw
To: "Miquel Raynal" <miquel.raynal@bootlin.com>
Cc: mark.rutland@arm.com, devicetree@vger.kernel.org,
	christophe.kerello@st.com, bbrezillon@kernel.org,
	juliensu@mxic.com.tw, lee.jones@linaro.org,
	linux-kernel@vger.kernel.org, robh+dt@kernel.org,
	linux-spi@vger.kernel.org, marcel.ziswiler@toradex.com,
	paul.burton@mips.com, broonie@kernel.org, geert@linux-m68k.org,
	stefan@agner.ch, linux-mtd@lists.infradead.org, richard@nod.at,
	liang.yang@amlogic.com, computersforpeace@gmail.com,
	dwmw2@infradead.org, marek.vasut@gmail.com,
	zhengxunli@mxic.com.tw
Subject: Re: [PATCH v3 2/4] mtd: rawnand: Add Macronix MX25F0A NAND controller
Date: Tue, 18 Jun 2019 09:24:14 +0800	[thread overview]
Message-ID: <OF1C1397B4.241DC339-ON4825841D.000482A2-4825841D.0007B67E@mxic.com.tw> (raw)
In-Reply-To: <20190617143510.4ded5728@xps13>


Hi Miquel,

> 
> > > > > > > > +static void mxic_nand_select_chip(struct nand_chip *chip, 
int 
> > 
> > > > chipnr) 
> > > > > > > 
> > > > > > > _select_target() is preferred now 
> > > > > > 
> > > > > > Do you mean I implement mxic_nand_select_target() to control 
#CS ?
> > > > > > 
> > > > > > If so, I need to call mxic_nand_select_target( ) to control 
#CS ON
> > > > > > and then #CS OFF in _exec_op() due to nand_select_target()<in  

> > > > nand_base,c> 
> > > > > > is still calling chip->legacy.select_chip ? 
> > > > > 
> > > > > You must forget about the ->select_chip() callback. Now it 
should be
> > > > > handled directly from the controller driver. Please have a look 
at 
> > the
> > > > > commit pointed against the marvell_nand.c driver. 
> > > > 
> > > > I have no Marvell NFC datasheet and have one question.
> > > > 
> > > > In marvell_nand.c, there is no xxx_deselect_target() or 
> > > > something like that doing #CS OFF.
> > > > marvell_nfc_select_target() seems always to make one of chip or 
die
> > > > #CS keep low.
> > > > 
> > > > Is it right ? 
> > > 
> > > Yes, AFAIR there is no "de-assert" mechanism in this controller.
> > > 
> > > > 
> > > > How to make all #CS keep high for NAND to enter 
> > > > low-power standby mode if driver don't use "legacy.select_chip()" 
? 
> > > 
> > > See commit 02b4a52604a4 ("mtd: rawnand: Make ->select_chip() 
optional
> > > when ->exec_op() is implemented") which states:
> > > 
> > >         "When [->select_chip() is] not implemented, the core is 
assuming
> > >    the CS line is automatically asserted/deasserted by the driver 
> > >    ->exec_op() implementation." 
> > > 
> > > Of course, the above is right only when the controller driver 
supports
> > > the ->exec_op() interface. 
> > 
> > Currently, it seems that we will get the incorrect data and error
> > operation due to CS in error toggling if CS line is controlled in 
> > ->exec_op(). 
> 
> Most of the chips today are CS-don't-care, which chip are you using?

I think CS-don't-care means read-write operation for NAND device to reside
on the same memory bus as other Flash or SRAM devices. Other devices on 
the 
memory bus can then be accessed while the NAND Flash is busy with internal 

operations. This capability is very important for designs that require 
multiple
NAND Flash devices on the same bus.

> 
> Is this behavior publicly documented?
> 

CS# pin goes High enter standby mode to reduce power consumption,
i.e,. standby mode w/ CS# keep High, standby current: 10 uA (Typ for 3.3V 
NAND)
        otherwise, current is more than 1 mA.
i.e,. page read current, 25 mA (Typ for 3.3V NAND)
 

> Is this LPM mode always activated?
> 
> > i.e,. 
> > 
> > 1) In nand_onfi_detect() to call nand_exec_op() twice by 
> > nand_read_param_page_op() and annd_read_data_op()
> > 
> > 2) In nand_write_page_xxx to call nand_exec_op() many times by
> > nand_prog_page_begin_op(), nand_write_data_op() and 
> > nand_prog_page_end_op().
> > 
> > 
> > Should we consider to add a CS line controller in struct 
nand_controller
> > i.e,.
> > 
> > struct nand_controller {
> >          struct mutex lock;
> >          const struct nand_controller_ops *ops;
> > +          void (*select_chip)(struct nand_chip *chip, int cs);
> > };
> > 
> > to replace legacy.select_chip() ?
> > 
> 
> No, if really needed, we could add a "macro op done" flag in the nand
> operation structure.
> 

Is this "macron op done" flag good for multiple NAND devices on
the same bus ?

Any other way to control CS# pin? if user application is really
care of power consumption, i.e,. loT.

> 
> Thanks,
> Miquèl

thanks & best regards,
Mason

CONFIDENTIALITY NOTE:

This e-mail and any attachments may contain confidential information 
and/or personal data, which is protected by applicable laws. Please be 
reminded that duplication, disclosure, distribution, or use of this e-mail 
(and/or its attachments) or any part thereof is prohibited. If you receive 
this e-mail in error, please notify us immediately and delete this mail as 
well as its attachment(s) from your system. In addition, please be 
informed that collection, processing, and/or use of personal data is 
prohibited unless expressly permitted by personal data protection laws. 
Thank you for your attention and cooperation.

Macronix International Co., Ltd.

=====================================================================



============================================================================

CONFIDENTIALITY NOTE:

This e-mail and any attachments may contain confidential information and/or personal data, which is protected by applicable laws. Please be reminded that duplication, disclosure, distribution, or use of this e-mail (and/or its attachments) or any part thereof is prohibited. If you receive this e-mail in error, please notify us immediately and delete this mail as well as its attachment(s) from your system. In addition, please be informed that collection, processing, and/or use of personal data is prohibited unless expressly permitted by personal data protection laws. Thank you for your attention and cooperation.

Macronix International Co., Ltd.

=====================================================================


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

  reply	other threads:[~2019-06-18  1:25 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-15  9:23 [PATCH v3 0/4] Add Macronix MX25F0A MFD driver for raw nand and spi Mason Yang
2019-04-15  9:23 ` [PATCH v3 1/4] mfd: Add Macronix MX25F0A MFD controller driver Mason Yang
2019-05-12 13:08   ` Miquel Raynal
2019-05-15  6:46     ` masonccyang
2019-04-15  9:23 ` [PATCH v3 2/4] mtd: rawnand: Add Macronix MX25F0A NAND controller Mason Yang
2019-05-12 13:18   ` Miquel Raynal
2019-05-15  8:48     ` masonccyang
2019-05-15 12:08       ` Miquel Raynal
     [not found]     ` <OF8A566F14.A2F0F576-ON482583FB.002E7E32-482583FB.003068B1@LocalDomain>
2019-05-15  9:18       ` masonccyang
2019-05-17  9:30     ` masonccyang
2019-05-20 12:23       ` Miquel Raynal
2019-05-23  8:58         ` masonccyang
2019-05-27 12:42           ` Miquel Raynal
2019-05-29  3:12             ` masonccyang
2019-06-17 12:35               ` Miquel Raynal
2019-06-18  1:24                 ` masonccyang [this message]
2019-06-18  6:14                   ` Boris Brezillon
2019-06-18  7:29                     ` Boris Brezillon
2019-06-19  8:04                       ` masonccyang
2019-06-19  8:09                         ` Miquel Raynal
2019-06-19  8:48                           ` masonccyang
2019-06-24  9:05                           ` masonccyang
2019-06-19  8:15                         ` Boris Brezillon
2019-06-19  8:55                           ` masonccyang
2019-06-19  9:06                             ` Boris Brezillon
2019-06-24  8:55                               ` masonccyang
2019-04-15  9:23 ` [PATCH v3 3/4] spi: Patch Macronix SPI controller driver according to MX25F0A MFD driver Mason Yang
2019-04-19 14:51   ` Mark Brown
     [not found]     ` <OF7742B4A9.445066F6-ON482583EC.0037E377-482583EC.0039125B@mxic.com.tw>
2019-05-02  2:41       ` Mark Brown
2019-04-15  9:23 ` [PATCH v3 4/4] dt-bindings: mfd: Document Macronix MX25F0A controller bindings Mason Yang
2019-04-26 22:41   ` Rob Herring
2019-05-12 13:23   ` Miquel Raynal
2019-05-15  7:36     ` masonccyang

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=OF1C1397B4.241DC339-ON4825841D.000482A2-4825841D.0007B67E@mxic.com.tw \
    --to=masonccyang@mxic.com.tw \
    --cc=bbrezillon@kernel.org \
    --cc=broonie@kernel.org \
    --cc=christophe.kerello@st.com \
    --cc=computersforpeace@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dwmw2@infradead.org \
    --cc=geert@linux-m68k.org \
    --cc=juliensu@mxic.com.tw \
    --cc=lee.jones@linaro.org \
    --cc=liang.yang@amlogic.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=marcel.ziswiler@toradex.com \
    --cc=marek.vasut@gmail.com \
    --cc=mark.rutland@arm.com \
    --cc=miquel.raynal@bootlin.com \
    --cc=paul.burton@mips.com \
    --cc=richard@nod.at \
    --cc=robh+dt@kernel.org \
    --cc=stefan@agner.ch \
    --cc=zhengxunli@mxic.com.tw \
    /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;
as well as URLs for NNTP newsgroup(s).