public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* Reducing the number of interrupts by page reads, part 1
@ 2018-04-20  8:19 Sam Lefebvre
  2018-04-20  8:19 ` [PATCH 01/18] mtd: nand: gpmi: drop dma_ops_type Sam Lefebvre
                   ` (17 more replies)
  0 siblings, 18 replies; 25+ messages in thread
From: Sam Lefebvre @ 2018-04-20  8:19 UTC (permalink / raw)
  To: linux-mtd; +Cc: Han Xu, Sam Lefebvre

The current implementation for gmpi nand flashes use existing libraries for composing                    
dma command chains in different pieces with mutliple interrupts. This invokes a lot of                   
unnecessary context switches. In order to make more optimal use of dma chaining capabilities
of the gpmi hardware, some rework must be performed to allow gpmi_ecc_read_page() submitting 
a range of dma's to reduce the interrupts from 4 to 1 for every page read.

In the current situation, a page read for large page incurs 4 interrupts:
- DMA for READ0
- DMA for READSTART
- DMA for reading of page data
- BCH
                                                                                                         
This series is the first part which contains some preparation work and primary modifications             
to reduce the number of interrrupts from 4 to 3 for each page read action by removing the
interrupt for READ0.                               

Some changes by Sasha Hauer are also adopted which contain some bugfixes and preliminary
cleanup of several parts in de code.

Sam lefebvre 

----------------------------------------------------------------                                        
Arnout Vandecappelle (Essensium/Mind) (8):                                                              
      mtd: rawnand: make nand_command() and nand_command_lp() more similar                              
      mtd: rawnand: factor nand_command_lp() into nand_command()                                        
      mtd: rawnand: gpmi: instantiate cmdfunc                                                           
      mtd: rawnand: gpmi: gpmi_ccs_delay() is not needed                                                
      mtd: rawnand: gpmi: explicit delays are not needed                                                
      mtd: rawnand: gpmi: no explicit wait is needed after sending a command                            
      mtd: rawnand: gpmi: cmd_ctrl is no longer needed                                                  
      mtd: rawnand: gpmi: inline gpmi_cmd_ctrl()                                                        
                                                                                                        
Sam Lefebvre (Essensium/Mind) (4):                                                                     
      mtd: rawnand: gpmi: return generated errors in gpmi_ecc_read_oob()                                
      mtd: rawnand: gpmi: set aggregate ready/busy signalling                                           
      mtd: rawnand: gpmi: gpmi_nand_command(): use separate sgl for the two commands                    
      mtd: rawnand: gpmi: issue two commands in a single DMA chain                                      
                                                                                                        
Sascha Hauer (6):                                                                                       
      mtd: nand: gpmi: drop dma_ops_type                                                                
      mtd: nand: gpmi: pass buffer and len around                                                       
      mtd: nand: gpmi: put only once used functions inline                                              
      mtd: nand: gpmi: remove direct_dma_map_ok from driver data struct                                 
      mtd: nand: gpmi: return valid value from bch_set_geometry()                                       
      mtd: nand: gpmi: remove unnecessary variables                                                     
                                                                                                        
 drivers/mtd/nand/raw/gpmi-nand/gpmi-lib.c  |  71 ++++++------                                          
 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 330 ++++++++++++++++++++++++++++--------------------------
 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.h |  34 ++----                                                
 drivers/mtd/nand/raw/gpmi-nand/gpmi-regs.h |   1 +                                                     
 drivers/mtd/nand/raw/nand_base.c           | 259 +++++++++++++-----------------------------            
 5 files changed, 304 insertions(+), 391 deletions(-)                                                   

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2018-04-23 10:06 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-04-20  8:19 Reducing the number of interrupts by page reads, part 1 Sam Lefebvre
2018-04-20  8:19 ` [PATCH 01/18] mtd: nand: gpmi: drop dma_ops_type Sam Lefebvre
2018-04-20  8:19 ` [PATCH 02/18] mtd: nand: gpmi: pass buffer and len around Sam Lefebvre
2018-04-20  8:19 ` [PATCH 03/18] mtd: nand: gpmi: put only once used functions inline Sam Lefebvre
2018-04-20  8:19 ` [PATCH 04/18] mtd: nand: gpmi: remove direct_dma_map_ok from driver data struct Sam Lefebvre
2018-04-20  8:19 ` [PATCH 05/18] mtd: nand: gpmi: return valid value from bch_set_geometry() Sam Lefebvre
2018-04-20  8:19 ` [PATCH 06/18] mtd: nand: gpmi: remove unnecessary variables Sam Lefebvre
2018-04-20  8:19 ` [PATCH 07/18] mtd: rawnand: gpmi: return generated errors in gpmi_ecc_read_oob() Sam Lefebvre
2018-04-20 22:40   ` Boris Brezillon
2018-04-20  8:19 ` [PATCH 08/18] mtd: rawnand: gpmi: set aggregate ready/busy signalling Sam Lefebvre
2018-04-20  8:19 ` [PATCH 09/18] mtd: rawnand: make nand_command() and nand_command_lp() more similar Sam Lefebvre
2018-04-20  8:19 ` [PATCH 10/18] mtd: rawnand: factor nand_command_lp() into nand_command() Sam Lefebvre
2018-04-20 20:34   ` Boris Brezillon
2018-04-23  7:16     ` Arnout Vandecappelle
2018-04-20  8:19 ` [PATCH 11/18] mtd: rawnand: gpmi: instantiate cmdfunc Sam Lefebvre
2018-04-20 20:38   ` Boris Brezillon
2018-04-23  7:43     ` Arnout Vandecappelle
2018-04-23 10:05       ` Boris Brezillon
2018-04-20  8:19 ` [PATCH 12/18] mtd: rawnand: gpmi: gpmi_ccs_delay() is not needed Sam Lefebvre
2018-04-20  8:19 ` [PATCH 13/18] mtd: rawnand: gpmi: explicit delays are " Sam Lefebvre
2018-04-20  8:19 ` [PATCH 14/18] mtd: rawnand: gpmi: no explicit wait is needed after sending a command Sam Lefebvre
2018-04-20  8:19 ` [PATCH 15/18] mtd: rawnand: gpmi: cmd_ctrl is no longer needed Sam Lefebvre
2018-04-20  8:19 ` [PATCH 16/18] mtd: rawnand: gpmi: inline gpmi_cmd_ctrl() Sam Lefebvre
2018-04-20  8:19 ` [PATCH 17/18] mtd: rawnand: gpmi: gpmi_nand_command(): use separate sgl for the two commands Sam Lefebvre
2018-04-20  8:19 ` [PATCH 18/18] mtd: rawnand: gpmi: issue two commands in a single DMA chain Sam Lefebvre

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox