devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: Jean-Jacques Hiblot <jjhiblot-dLKeG7h1OhBDOHtkgc7UlQ@public.gmane.org>
Cc: Nicolas Ferre
	<nicolas.ferre-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>,
	Jean-Christophe Plagniol-Villard
	<plagnioj-sclMFOaUSTBWk0Htik3J/w@public.gmane.org>,
	Alexandre Belloni
	<alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Pawel Moll <pawel.moll-5wv7dgnIgG8@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Ian Campbell
	<ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org>,
	Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	Linux Kernel Mailing List
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Subject: Re: [PATCH v6 2/2] memory: atmel-ebi: add DT bindings documentation
Date: Thu, 28 Apr 2016 10:49:25 +0200	[thread overview]
Message-ID: <20160428104925.7eb12ca2@bbrezillon> (raw)
In-Reply-To: <CACh+v5OO+UQ_EiWVyewdMHnMB-p3nd6N=R5P7K4V_4=ymy-YuQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

Hi Jean-Jacques,

On Thu, 28 Apr 2016 10:32:49 +0200
Jean-Jacques Hiblot <jjhiblot-dLKeG7h1OhBDOHtkgc7UlQ@public.gmane.org> wrote:

> Hi Boris,
> 
> i haven't seen this code in a while :) I'm glad you're working on it
> 
> 2016-04-27 16:35 GMT+02:00 Boris Brezillon <boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>:
> > The EBI (External Bus Interface) is used to access external peripherals
> > (NOR, SRAM, NAND, and other specific devices like ethernet controllers).
> > Each device is assigned a CS line and an address range and can have its
> > own configuration (timings, access mode, bus width, ...).
> > This driver provides a generic DT binding to configure a device according
> > to its requirements.
> > For specific device controllers (like the NAND one) the SMC timings
> > should be configured by the controller driver through the matrix and smc
> > syscon regmaps.
> >
> > Signed-off-by: Boris Brezillon <boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
> > ---
> >  .../bindings/memory-controllers/atmel,ebi.txt      | 146 +++++++++++++++++++++
> >  1 file changed, 146 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/memory-controllers/atmel,ebi.txt
> >
> > diff --git a/Documentation/devicetree/bindings/memory-controllers/atmel,ebi.txt b/Documentation/devicetree/bindings/memory-controllers/atmel,ebi.txt
> > new file mode 100644
> > index 0000000..0f332d2
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/memory-controllers/atmel,ebi.txt
> > @@ -0,0 +1,146 @@
> > +* Device tree bindings for Atmel EBI
> > +
> > +The External Bus Interface (EBI) controller is a bus where you can connect
> > +asynchronous (NAND, NOR, SRAM, ....) and synchronous memories (SDR/DDR SDRAMs).
> > +The EBI provides a glue-less interface to asynchronous memories though the SMC
> > +(Static Memory Controller).
> > +Synchronous memories (and some asynchronous memories like NANDs) can be
> > +attached to specialized controllers which are responsible for configuring the
> > +bus appropriately according to the connected device.
> > +In the other hand, the bus interface can be automated for simple asynchronous
> > +devices.
> > +
> > +Required properties:
> > +
> > +- compatible:          "atmel,at91sam9260-ebi"
> > +                       "atmel,at91sam9261-ebi"
> > +                       "atmel,at91sam9263-ebi0"
> > +                       "atmel,at91sam9263-ebi1"
> > +                       "atmel,at91sam9rl-ebi"
> > +                       "atmel,at91sam9g45-ebi"
> > +                       "atmel,at91sam9x5-ebi"
> > +                       "atmel,sama5d3-ebi"
> > +
> > +- reg:                 Contains offset/length value for EBI memory mapping.
> > +                       This property might contain several entries if the EBI
> > +                       memory range is not contiguous
> > +
> > +- #address-cells:      Must be 2.
> > +                       The first cell encodes the CS.
> > +                       The second cell encode the offset into the CS memory
> > +                       range.
> > +
> > +- #size-cells:         Must be set to 1.
> > +
> > +- ranges:              Encodes CS to memory region association.
> > +
> > +- clocks:              Clock feeding the EBI controller.
> > +                       See clock-bindings.txt
> > +
> > +Child chip-select (cs) nodes contain the memory devices nodes connected to
> > +such as NOR (e.g. cfi-flash) and NAND.
> > +There might be board specific devices like FPGAs.
> > +You'll define you device requirements in these child nodes.
> > +
> > +Required child cs node properties:
> > +
> > +- #address-cells:      Must be 2.
> > +
> > +- #size-cells:         Must be 1.
> > +
> > +- ranges:              Empty property indicating that child nodes can inherit
> > +                       memory layout.
> > +
> > +Optional child cs node properties:
> > +- atmel,bus-width:             width of the asynchronous device's data bus
> > +                               8, 16 or 32.
> > +                               8 if not present.
> > +
> > +- atmel,byte-access-type       "write" or "select" (see Atmel datasheet).
> > +                               "select" if not present.
> > +
> > +- atmel,read-mode              "nrd" or "ncs".
> > +                               "ncs" is not present.
> > +
> > +- atmel,write-mode             "nwe" or "ncs".
> > +                               "ncs" is not present.
> > +
> > +- atmel,exnw-mode              "disabled", "frozen" or "ready".
> > +                               "disabled" if not present.
> > +
> > +- atmel,page-mode              enable page mode if present. The provided value
> > +                               defines the page size (supported values: 4, 8,
> > +                               16 and 32).
> > +
> > +Optional device timings expressed in nanoseconds (if the property is not
> > +present 0 is assumed):  
> 
> IMO If no timing information is provided, it's probably better not to
> change it. It may have been configured by the bootloader or romboot.
> It may not be the perfect timings but at least it could work, whereas
> filling up with 0 is most probably going to break the access: it's a
> kind of very agressive timing optimization

Yes, probably. I'll make all those timings mandatory in the next
version.

> 
> > +
> > +- atmel,ncs-rd-setup-ns
> > +- atmel,nrd-setup-ns
> > +- atmel,ncs-wr-setup-ns
> > +- atmel,nwe-setup-ns
> > +- atmel,ncs-rd-pulse-ns
> > +- atmel,nrd-pulse-ns
> > +- atmel,ncs-wr-pulse-ns
> > +- atmel,nwe-pulse-ns
> > +- atmel,nwe-cycle-ns
> > +- atmel,nrd-cycle-ns
> > +- atmel,tdf-ns  
> 
> One thought about the configuration in 'ns' unit: Some devices may
> have requirements expressed in clock cycles (I'm thinking of FPGA
> here). At  a fixed frequency one can always convert manually from 'ns'
> to 'clocks' but it's a bit tedious and prone to rounding errors. And
> It 'll  break when the EBI frequency is changed

If you don't mind, I'd like to first get this version accepted, and
we'll extend it with timings expressed in clock cycles afterward.

BTW, could you describe a real use case where timings should be
expressed in clock cycles? I mean, usually the devices have some timing
constraints (tXX_min = Y ns), and I don't see why it would differ for
FPGA interfaces, but I'm clearly not an FPGA expert.

Thanks,

Boris

-- 
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2016-04-28  8:49 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-27 14:35 [PATCH v6 0/2] memory: add Atmel EBI (External Bus Interface) driver Boris Brezillon
     [not found] ` <1461767754-12189-1-git-send-email-boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2016-04-27 14:35   ` [PATCH v6 1/2] " Boris Brezillon
2016-04-28  8:47     ` Jean-Jacques Hiblot
2016-04-28  8:57       ` Boris Brezillon
2016-04-27 14:35 ` [PATCH v6 2/2] memory: atmel-ebi: add DT bindings documentation Boris Brezillon
     [not found]   ` <1461767754-12189-3-git-send-email-boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2016-04-27 15:07     ` Mark Rutland
2016-04-27 15:37       ` Boris Brezillon
2016-04-28  6:44       ` Boris Brezillon
2016-04-28  9:29         ` Mark Rutland
2016-04-28  8:32   ` Jean-Jacques Hiblot
     [not found]     ` <CACh+v5OO+UQ_EiWVyewdMHnMB-p3nd6N=R5P7K4V_4=ymy-YuQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-04-28  8:49       ` Boris Brezillon [this message]
2016-04-28 12:18         ` Jean-Jacques Hiblot
     [not found]           ` <CACh+v5Mi2Qd58SZkwW0mZ3ZJx3Rv3mwSkRqzgHwBTxpUbwjVFQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-04-28 12:46             ` Boris Brezillon
2016-04-28 12:54               ` Jean-Jacques Hiblot
     [not found]                 ` <CACh+v5ObRAf=7D3tbQdAzef+QRVObF_9eHJEreXwxVyrV8THcA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-04-28 13:17                   ` Boris Brezillon

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=20160428104925.7eb12ca2@bbrezillon \
    --to=boris.brezillon-wi1+55scjutkeb57/3fjtnbpr1lh4cv8@public.gmane.org \
    --cc=alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
    --cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
    --cc=jjhiblot-dLKeG7h1OhBDOHtkgc7UlQ@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=nicolas.ferre-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org \
    --cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
    --cc=plagnioj-sclMFOaUSTBWk0Htik3J/w@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    /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).