From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH v3 06/11] memory: atmel-ebi: add DT bindings documentation Date: Wed, 3 Dec 2014 16:34:49 +0100 Message-ID: <20141203163449.3ca4f43b@bbrezillon> References: <1417429647-3419-1-git-send-email-boris.brezillon@free-electrons.com> <1417429647-3419-7-git-send-email-boris.brezillon@free-electrons.com> <547F24B6.8070504@atmel.com> <547F2918.3070803@atmel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-Reply-To: <547F2918.3070803-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org> Sender: devicetree-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Nicolas Ferre Cc: Jean-Christophe Plagniol-Villard , Alexandre Belloni , Andrew Victor , Samuel Ortiz , Lee Jones , Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Arnd Bergmann , Jean-Jacques Hiblot List-Id: devicetree@vger.kernel.org On Wed, 3 Dec 2014 16:15:36 +0100 Nicolas Ferre wrote: > Le 03/12/2014 15:56, Nicolas Ferre a =C3=A9crit : > > Le 01/12/2014 11:27, Boris Brezillon a =C3=A9crit : > >> The EBI (External Bus Interface) is used to access external periph= erals > >> (NOR, SRAM, NAND, and other specific devices like ethernet control= lers). > >> Each device is assigned a CS line and an address range and can hav= e its > >> own configuration (timings, access mode, bus width, ...). > >> This driver provides a generic DT binding to configure a device ac= cording > >> to its requirements. > >> For specific device controllers (like the NAND one) the SMC timing= s > >> should be configured by the controller driver through the matrix a= nd smc > >> syscon regmaps. > >> > >> Signed-off-by: Boris Brezillon > >> --- > >> .../bindings/memory-controllers/atmel-ebi.txt | 155 ++++++++= +++++++++++++ > >> 1 file changed, 155 insertions(+) > >> create mode 100644 Documentation/devicetree/bindings/memory-contr= ollers/atmel-ebi.txt > >> > >> diff --git a/Documentation/devicetree/bindings/memory-controllers/= atmel-ebi.txt b/Documentation/devicetree/bindings/memory-controllers/at= mel-ebi.txt > >> new file mode 100644 > >> index 0000000..3749ea1 > >> --- /dev/null > >> +++ b/Documentation/devicetree/bindings/memory-controllers/atmel-e= bi.txt > >> @@ -0,0 +1,155 @@ > >> +* Device tree bindings for Atmel EBI > >> + > >> +The External Bus Interface (EBI) controller is a bus where you ca= n connect > >> +asynchronous (NAND, NOR, SRAM, ....) and synchronous memories (SD= R/DDR SDRAMs). > >> +The EBI provides a glue-less interface to asynchronous memories t= hough the SMC > >> +(Static Memory Controller). > >> +Synchronous memories (and some asynchronous memories like NANDs) = can be > >> +attached to specialized controllers which are responsible for con= figuring 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" > >=20 > > Ditto: 9263 twice. > >=20 > >> + "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 con= nected 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,generic-dev boolean property specifying if the device is > >> + a generic device. >=20 > Well... no real information, specify right here what a "generic devic= e" is. I do not describe what a generic device is, but the description of a specialized device is given just below. Maybe I haven't chosen the appropriate word here. The datasheet gives the following description: >=20 > >> + The following properties are only parsed if > >> + this property is present. > >> + Specialized devices are attached to specialized > >> + controllers which are responsible for > >> + configuring the bus appropriately. > >> + Here are some examples of specialized > >> + controllers: NAND, CompactFlash, SDR-SDRAM. > >> + > >> +- 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 valu= e > >> + 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): > >> + > >> +- 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 > >> + > >> +- atmel,tdf-optimized data float optimized mode. If present the = data > >> + float time is optimized depending on the next > >> + device being accessed (next device setup > >> + time is substracted to the current devive data > >=20 > > Typo: subtract, device > >=20 > >> + float time). > >> + > >> + > >> + > >> +Example: > >> + > >> + ebi: ebi@10000000 { > >> + compatible =3D "atmel,sama5d3-ebi", "simple-bus"; > >> + #address-cells =3D <2>; > >> + #size-cells =3D <1>; > >> + atmel,smc =3D <&hsmc>; > >> + atmel,matrix =3D <&matrix>; > >> + reg =3D <0x10000000 0x10000000 > >> + 0x40000000 0x30000000>; > >> + ranges =3D <0x0 0x0 0x10000000 0x10000000 > >> + 0x1 0x0 0x40000000 0x10000000 > >> + 0x2 0x0 0x50000000 0x10000000 > >> + 0x3 0x0 0x60000000 0x10000000>; > >> + clocks =3D <&mck>; > >> + > >> + pinctrl-names =3D "default"; > >> + pinctrl-0 =3D <&pinctrl_ebi_addr>; > >> + > >> + cs@0 { > >> + #address-cells =3D <2>; > >> + #size-cells =3D <1>; > >> + ranges; > >> + atmel,generic-dev; > >> + atmel,read-mode =3D "nrd"; > >> + atmel,write-mode =3D "nwe"; > >> + atmel,bus-width =3D <16>; > >> + atmel,ncs-rd-setup-ns =3D <0>; > >> + atmel,ncs-wr-setup-ns =3D <0>; > >> + atmel,nwe-setup-ns =3D <8>; > >> + atmel,nrd-setup-ns =3D <16>; > >> + atmel,ncs-rd-pulse-ns =3D <84>; > >> + atmel,ncs-wr-pulse-ns =3D <84>; > >> + atmel,nrd-pulse-ns =3D <76>; > >> + atmel,nwe-pulse-ns =3D <76>; > >> + atmel,nrd-cycle-ns =3D <107>; > >> + atmel,nwe-cycle-ns =3D <84>; > >> + atmel,tdf-ns =3D <16>; > >> + > >> + nor: flash@0,0 { > >> + compatible =3D "cfi-flash"; > >> + #address-cells =3D <1>; > >> + #size-cells =3D <1>; > >> + reg =3D <0x0 0x0 0x1000000>; > >> + bank-width =3D <2>; > >> + }; > >> + }; > >> + }; > >> + > >> > >=20 > >=20 >=20 >=20 --=20 Boris Brezillon, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com -- To unsubscribe from this list: send the line "unsubscribe devicetree" i= n the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html