[PATCH] mtd/spi-nor: Add SPI memory controllers for Aspeed SoCs

Cédric Le Goater clg at kaod.org
Thu Oct 20 02:32:08 PDT 2016


On 10/18/2016 06:39 PM, Rob Herring wrote:
> On Mon, Oct 17, 2016 at 06:57:07PM +0200, Cédric Le Goater wrote:
>> This driver adds mtd support for spi-nor attached to either or both of
>> the Firmware Memory Controller or the SPI Flash Controller (AST2400
>> only).
>>
>> The SMC controllers on the Aspeed AST2500 SoC are very similar to the
>> ones found on the AST2400. The differences are on the number of
>> supported flash modules and their default mappings in the SoC address
>> space.
>>
>> The Aspeed AST2500 has one SPI controller for the BMC firmware and two
>> for the host firmware. All controllers have now the same set of
>> registers compatible with the AST2400 FMC controller and the legacy
>> 'SMC' controller is fully gone.
>>
>> Based on previous work from Milton D. Miller II <miltonm at us.ibm.com>
>>
>> Signed-off-by: Cédric Le Goater <clg at kaod.org>
>> ---
>>  .../devicetree/bindings/mtd/aspeed-smc.txt         |  86 +++
>>  drivers/mtd/spi-nor/Kconfig                        |  12 +
>>  drivers/mtd/spi-nor/Makefile                       |   1 +
>>  drivers/mtd/spi-nor/aspeed-smc.c                   | 746 +++++++++++++++++++++
>>  4 files changed, 845 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/mtd/aspeed-smc.txt
>>  create mode 100644 drivers/mtd/spi-nor/aspeed-smc.c
>>
>> diff --git a/Documentation/devicetree/bindings/mtd/aspeed-smc.txt b/Documentation/devicetree/bindings/mtd/aspeed-smc.txt
>> new file mode 100644
>> index 000000000000..f6bfa7761205
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/mtd/aspeed-smc.txt
>> @@ -0,0 +1,86 @@
>> +* Aspeed Static Memory controller
>> +* Aspeed SPI Flash Controller
>> +
>> +The Static memory controller in the ast2400 supports 5 chip selects each
>> +can be attached to NAND, parallel NOR, or SPI NOR attached flash.  The
>> +Firmware Memory Controller in the ast2500 supports 3 chip selects, two of
>> +which are always in SPI-NOR mode and the third can be SPI-NOR or parallel
>> +flash.  The SPI flash controller in the ast2400 supports one of 2 chip
>> +selects selected by pinmux.  The two SPI flash controllers in the ast2500
>> +each support two chip selects.
>> +
>> +Required properties:
>> +  - compatible : Should be one of
>> +	"aspeed,ast2400-fmc" for the AST2400 Static Memory Controller
>> +	"aspeed,ast2400-smc" for the AST2400 SPI Flash Controller
>> +	"aspeed,ast2500-fmc" for the AST2500 Firmware SPI Memory Controller
>> +	"aspeed,ast2500-smc" for the AST2500 SPI Flash Controllers
>> +  - reg : the first contains the control register location and length,
>> +          the second contains the memory window mapping address and length
>> +  - clocks : The APB clock input to the controller
>> +  - #address-cells : must be 1 corresponding to chip select child binding
>> +  - #size-cells : must be 0 corresponding to chip select child binding
>> +
>> +Optional properties:
>> +  - aspeed,fmc-has-dma : controller supports DMA transfers
> 
> The compatible should imply this.

yes you are right. this is the case for the *fmc.

> 
>> +  - interrupts : Should contain the interrupt for the dma device if an fmc
>> +
>> +Child node required properties:
> 
> Need to say what the child nodes are.

yes again. the child node definitions really need more care. will do in v2.

Thanks for the review,

C. 


> 
>> +  - reg : must contain chip select number in first cell of address, must
>> +	  be 1 tuple long
>> +  - compatible : may contain "vendor,part", must include "jedec,spi-nor"
>> +		when attached to SPI flash (see spi-nor.txt binding).
>> +
>> +Child node optional properties:
>> +  - label           - (optional) name to assign to mtd, default os assigned
>> +
>> +Child node optional properties for SPI mode (may be ignored):
>> +  - spi-max-frequency - (optional) max frequency of spi bus
>> +  - spi-cpol        - (optional) Empty property indicating device requires
>> +			inverse clock polarity (CPOL) mode (boolean)
>> +  - spi-cpha        - (optional) Empty property indicating device requires
>> +			shifted clock phase (CPHA) mode (boolean)
>> +  - spi-tx-bus-width - (optional) The bus width(number of data wires) that
>> +                        used for MOSI. Defaults to 1 if not present.
>> +  - spi-rx-bus-width - (optional) The bus width(number of data wires) that
>> +                        used for MOSI. Defaults to 1 if not present.
>> +
>> +Grandchild node optional properties:
>> + - see mtd/partiton.txt for partitioning bindings and mtd naming
>> +
>> +
>> +Example:
>> +
>> +fmc: fmc at 1e620000 {
>> +	compatible = "aspeed,ast2400-fmc";
>> +	reg = < 0x1e620000 0x94
>> +		0x20000000 0x02000000
>> +		0x22000000 0x02000000 >;
>> +	#address-cells = <1>;
>> +	#size-cells = <0>;
>> +	flash at 0 {
>> +		reg = < 0 >;
>> +		compatible = "jedec,spi-nor" ;
>> +		label = "bmc";
> 
> label isn't really a defined property here. Belongs in jedec,spi-nor 
> binding if you want to add it.
> 
>> +		/* spi-max-frequency = <>; */
>> +		/* m25p,fast-read; */
>> +		#address-cells = <1>;
>> +		#size-cells = <1>;
>> +		boot at 0 {
> 
> Use the newer style with all partitions under a 'partitions' node.
> 
>> +			label = "boot-loader";
>> +			reg = < 0 0x8000 >
> 
> Missing ';'
> 
>> +		}
>> +		image at 8000 {
>> +			label = "kernel-image";
>> +			reg = < 0x8000 0x1f8000 >
> 
> ditto
> 
>> +		}
>> +	};
>> +	flash at 1 {
>> +		reg = < 1 >;
>> +		compatible = "jedec,spi-nor" ;
>> +		label = "alt";
>> +		/* spi-max-frequency = <>; */
>> +		status = "fail";
>> +		/* m25p,fast-read; */
>> +	};
>> +};
> 
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
> 




More information about the linux-mtd mailing list