mbox series

[00/12] add STM32 FMC2 controller drivers

Message ID 1584975532-8038-1-git-send-email-christophe.kerello@st.com
Headers show
Series add STM32 FMC2 controller drivers | expand

Message

Christophe Kerello March 23, 2020, 2:58 p.m. UTC
The FMC2 functional block makes the interface with: synchronous and
asynchronous static devices (such as PSNOR, PSRAM or other memory-mapped
peripherals) and NAND flash memories.
Its main purposes are:
  - to translate AXI transactions into the appropriate external device
    protocol
  - to meet the access time requirements of the external devices
All external devices share the addresses, data and control signals with the
controller. Each external device is accessed by means of a unique Chip
Select. The FMC2 performs only one access at a time to an external device.

Christophe Kerello (12):
  dt-bindings: mfd: stm32-fmc2: add STM32 FMC2 controller documentation
  mfd: stm32-fmc2: add STM32 FMC2 controller driver
  bus: stm32-fmc2-ebi: add STM32 FMC2 EBI controller driver
  mtd: rawnand: stm32_fmc2: manage all errors cases at probe time
  mtd: rawnand: stm32_fmc2: remove useless inline comments
  mtd: rawnand: stm32_fmc2: use FMC2_TIMEOUT_MS for timeouts
  mtd: rawnand: stm32_fmc2: cleanup
  mtd: rawnand: stm32_fmc2: use FIELD_PREP/FIELD_GET macros
  mtd: rawnand: stm32_fmc2: move all registers
  mtd: rawnand: stm32_fmc2: use regmap APIs
  mtd: rawnand: stm32_fmc2: use stm32_fmc2 structure in nfc controller
  mtd: rawnand: stm32_fmc2: add new MP1 compatible string

 .../devicetree/bindings/mfd/st,stm32-fmc2.yaml     |  370 ++++++
 drivers/bus/Kconfig                                |   11 +
 drivers/bus/Makefile                               |    1 +
 drivers/bus/stm32-fmc2-ebi.c                       | 1093 +++++++++++++++++
 drivers/mfd/Kconfig                                |   12 +
 drivers/mfd/Makefile                               |    1 +
 drivers/mfd/stm32-fmc2.c                           |  120 ++
 drivers/mtd/nand/raw/Kconfig                       |    3 +
 drivers/mtd/nand/raw/stm32_fmc2_nand.c             | 1273 +++++++++-----------
 include/linux/mfd/stm32-fmc2.h                     |  226 ++++
 10 files changed, 2407 insertions(+), 703 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mfd/st,stm32-fmc2.yaml
 create mode 100644 drivers/bus/stm32-fmc2-ebi.c
 create mode 100644 drivers/mfd/stm32-fmc2.c
 create mode 100644 include/linux/mfd/stm32-fmc2.h

Comments

Marek Vasut March 24, 2020, 12:37 a.m. UTC | #1
On 3/23/20 3:58 PM, Christophe Kerello wrote:
> The FMC2 functional block makes the interface with: synchronous and
> asynchronous static devices (such as PSNOR, PSRAM or other memory-mapped
> peripherals) and NAND flash memories.
> Its main purposes are:
>   - to translate AXI transactions into the appropriate external device
>     protocol
>   - to meet the access time requirements of the external devices
> All external devices share the addresses, data and control signals with the
> controller. Each external device is accessed by means of a unique Chip
> Select. The FMC2 performs only one access at a time to an external device.
> 
> Christophe Kerello (12):
>   dt-bindings: mfd: stm32-fmc2: add STM32 FMC2 controller documentation
>   mfd: stm32-fmc2: add STM32 FMC2 controller driver
>   bus: stm32-fmc2-ebi: add STM32 FMC2 EBI controller driver
>   mtd: rawnand: stm32_fmc2: manage all errors cases at probe time
>   mtd: rawnand: stm32_fmc2: remove useless inline comments
>   mtd: rawnand: stm32_fmc2: use FMC2_TIMEOUT_MS for timeouts
>   mtd: rawnand: stm32_fmc2: cleanup
>   mtd: rawnand: stm32_fmc2: use FIELD_PREP/FIELD_GET macros
>   mtd: rawnand: stm32_fmc2: move all registers
>   mtd: rawnand: stm32_fmc2: use regmap APIs
>   mtd: rawnand: stm32_fmc2: use stm32_fmc2 structure in nfc controller
>   mtd: rawnand: stm32_fmc2: add new MP1 compatible string

This doesn't apply to either next or 5.6-rc7, do you have a tree
somewhere with those patches applied ?
Christophe Kerello March 24, 2020, 7:36 a.m. UTC | #2
On 3/24/20 1:37 AM, Marek Vasut wrote:
> On 3/23/20 3:58 PM, Christophe Kerello wrote:
>> The FMC2 functional block makes the interface with: synchronous and
>> asynchronous static devices (such as PSNOR, PSRAM or other memory-mapped
>> peripherals) and NAND flash memories.
>> Its main purposes are:
>>    - to translate AXI transactions into the appropriate external device
>>      protocol
>>    - to meet the access time requirements of the external devices
>> All external devices share the addresses, data and control signals with the
>> controller. Each external device is accessed by means of a unique Chip
>> Select. The FMC2 performs only one access at a time to an external device.
>>
>> Christophe Kerello (12):
>>    dt-bindings: mfd: stm32-fmc2: add STM32 FMC2 controller documentation
>>    mfd: stm32-fmc2: add STM32 FMC2 controller driver
>>    bus: stm32-fmc2-ebi: add STM32 FMC2 EBI controller driver
>>    mtd: rawnand: stm32_fmc2: manage all errors cases at probe time
>>    mtd: rawnand: stm32_fmc2: remove useless inline comments
>>    mtd: rawnand: stm32_fmc2: use FMC2_TIMEOUT_MS for timeouts
>>    mtd: rawnand: stm32_fmc2: cleanup
>>    mtd: rawnand: stm32_fmc2: use FIELD_PREP/FIELD_GET macros
>>    mtd: rawnand: stm32_fmc2: move all registers
>>    mtd: rawnand: stm32_fmc2: use regmap APIs
>>    mtd: rawnand: stm32_fmc2: use stm32_fmc2 structure in nfc controller
>>    mtd: rawnand: stm32_fmc2: add new MP1 compatible string
> 
> This doesn't apply to either next or 5.6-rc7, do you have a tree
> somewhere with those patches applied ?
> 

Hi Marek,

This implementation has been done on mtd/nand/next branch.

Regards,
Christophe Kerello.
Marek Vasut March 24, 2020, 1:27 p.m. UTC | #3
On 3/24/20 8:36 AM, Christophe Kerello wrote:
> 
> 
> On 3/24/20 1:37 AM, Marek Vasut wrote:
>> On 3/23/20 3:58 PM, Christophe Kerello wrote:
>>> The FMC2 functional block makes the interface with: synchronous and
>>> asynchronous static devices (such as PSNOR, PSRAM or other memory-mapped
>>> peripherals) and NAND flash memories.
>>> Its main purposes are:
>>>    - to translate AXI transactions into the appropriate external device
>>>      protocol
>>>    - to meet the access time requirements of the external devices
>>> All external devices share the addresses, data and control signals
>>> with the
>>> controller. Each external device is accessed by means of a unique Chip
>>> Select. The FMC2 performs only one access at a time to an external
>>> device.
>>>
>>> Christophe Kerello (12):
>>>    dt-bindings: mfd: stm32-fmc2: add STM32 FMC2 controller documentation
>>>    mfd: stm32-fmc2: add STM32 FMC2 controller driver
>>>    bus: stm32-fmc2-ebi: add STM32 FMC2 EBI controller driver
>>>    mtd: rawnand: stm32_fmc2: manage all errors cases at probe time
>>>    mtd: rawnand: stm32_fmc2: remove useless inline comments
>>>    mtd: rawnand: stm32_fmc2: use FMC2_TIMEOUT_MS for timeouts
>>>    mtd: rawnand: stm32_fmc2: cleanup
>>>    mtd: rawnand: stm32_fmc2: use FIELD_PREP/FIELD_GET macros
>>>    mtd: rawnand: stm32_fmc2: move all registers
>>>    mtd: rawnand: stm32_fmc2: use regmap APIs
>>>    mtd: rawnand: stm32_fmc2: use stm32_fmc2 structure in nfc controller
>>>    mtd: rawnand: stm32_fmc2: add new MP1 compatible string
>>
>> This doesn't apply to either next or 5.6-rc7, do you have a tree
>> somewhere with those patches applied ?
>>
> 
> Hi Marek,

Hi,

> This implementation has been done on mtd/nand/next branch.

Of which tree ?
Christophe Kerello March 24, 2020, 1:37 p.m. UTC | #4
On 3/24/20 2:27 PM, Marek Vasut wrote:
> On 3/24/20 8:36 AM, Christophe Kerello wrote:
>>
>>
>> On 3/24/20 1:37 AM, Marek Vasut wrote:
>>> On 3/23/20 3:58 PM, Christophe Kerello wrote:
>>>> The FMC2 functional block makes the interface with: synchronous and
>>>> asynchronous static devices (such as PSNOR, PSRAM or other memory-mapped
>>>> peripherals) and NAND flash memories.
>>>> Its main purposes are:
>>>>     - to translate AXI transactions into the appropriate external device
>>>>       protocol
>>>>     - to meet the access time requirements of the external devices
>>>> All external devices share the addresses, data and control signals
>>>> with the
>>>> controller. Each external device is accessed by means of a unique Chip
>>>> Select. The FMC2 performs only one access at a time to an external
>>>> device.
>>>>
>>>> Christophe Kerello (12):
>>>>     dt-bindings: mfd: stm32-fmc2: add STM32 FMC2 controller documentation
>>>>     mfd: stm32-fmc2: add STM32 FMC2 controller driver
>>>>     bus: stm32-fmc2-ebi: add STM32 FMC2 EBI controller driver
>>>>     mtd: rawnand: stm32_fmc2: manage all errors cases at probe time
>>>>     mtd: rawnand: stm32_fmc2: remove useless inline comments
>>>>     mtd: rawnand: stm32_fmc2: use FMC2_TIMEOUT_MS for timeouts
>>>>     mtd: rawnand: stm32_fmc2: cleanup
>>>>     mtd: rawnand: stm32_fmc2: use FIELD_PREP/FIELD_GET macros
>>>>     mtd: rawnand: stm32_fmc2: move all registers
>>>>     mtd: rawnand: stm32_fmc2: use regmap APIs
>>>>     mtd: rawnand: stm32_fmc2: use stm32_fmc2 structure in nfc controller
>>>>     mtd: rawnand: stm32_fmc2: add new MP1 compatible string
>>>
>>> This doesn't apply to either next or 5.6-rc7, do you have a tree
>>> somewhere with those patches applied ?
>>>
>>
>> Hi Marek,
> 
> Hi,
> 
>> This implementation has been done on mtd/nand/next branch.
> 
> Of which tree ?
> 

Hi Marek,

I am using https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git

Regards,
Christophe Kerello.