[PATCH v1 00/12] Sahara protocol enhancements.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Team,                                                                        
                                                                                
I am submitting a series of patches to enhance Sahara protocol framework in     
Linux kernel.                                                                   
                                                                                
The current sahara driver is present in drivers/accel/qaic directory and it has 
Qualcomm AIC specific image table hardcoded in it. This is making Sahara        
protocol to be strictly tagged to Qualcomm AIC devices. We have another device  
called QDU100 where it uses sahara protocol for transfer of images from host    
filesytem, to collect memory dumps. To achieve this, the sahara protocol driver 
needs to be at a common location. Hence it is now moved to                      
drivers/soc/qcom/sahara directory. This change also brings in a mechanism for   
client drivers such as AIC and QDU100 to register the device specific image     
table with Sahara protocol. The Sahara driver will pick the right image table   
during runtime based on the device attached to the system.                      
                                                                                
In addition to this, during the first boot up of the device, the sahara driver  
loads the dummy DDR training data file present in the firmware filesystem.      
When this dummy data is sent to device, the device sees that the training data  
is invalid and triggers DDR training. This training data needs to be saved at   
the host end. In the subsequent bootup of the device, the saved training data is
sent to the device thus restoring the DDR training data and reduces the boot    
time of the device.                                                             
                                                                                
The handling of save and restore of DDR training data is done via the Sahara    
protocol with mode set to Command mode. The Sahara protocol at host and device  
exchanges relevant packets and once the training data is saved, the mode of     
operation again changes back to image transfer mode to continue loading of next 
images.                                                                         
                                                                                
The DDR training data is exposed to userspace via the sysfs node. There will be 
a service which is triggered by a udev rule that reads the sysfs node in every  
bootup and then saves the training data file in the firmware filesystem in the  
format - mdmddr_0x<serial_number>.mbn as each card connected will have its own  
serial number. The userspace service is hosted at this location -               
https://github.com/qualcomm/csm-utils                                           
                                                                                
Thank you for reviewing these patches. I look forward for your feedback.

Kishore Batta (12):
  Add documentation for Sahara protocol.
  drivers: accel : Move AIC specific image tables to mhi_controller.c
    file
  drivers: accel: qaic: Support for registration of image tables in
    Sahara.
  drivers: accel: Register Qualcomm AIC specific image tables with
    Sahara.
  drivers: soc: qcom: Move Sahara driver to drivers/soc/qcom directory.
  drivers: soc: qcom: Add support for Qualcomm QDU device.
  drivers: soc: qcom: Add sysfs support for DDR training data in Sahara.
  drivers: soc: qcom: Support Sahara command mode packets(READY and
    EXECUTE)
  drivers: soc: qcom: Remove is_mem_dump_mode variable.
  drivers: soc: qcom: Support for DDR training in Sahara.
  drivers: soc: qcom: Support to load saved DDR training data in Sahara.
  Add sysfs ABI documentation for DDR training data node.

 .../testing/sysfs-bus-mhi-ddr_training_data   |   19 +
 Documentation/sahara/index.rst                |   14 +
 Documentation/sahara/sahara_protocol.rst      | 1241 +++++++++++++++++
 drivers/accel/qaic/Kconfig                    |    1 +
 drivers/accel/qaic/Makefile                   |    3 +-
 drivers/accel/qaic/mhi_controller.c           |   94 ++
 drivers/accel/qaic/mhi_controller.h           |    2 +
 drivers/accel/qaic/qaic_drv.c                 |    8 +-
 drivers/soc/qcom/Kconfig                      |   20 +-
 drivers/soc/qcom/Makefile                     |    2 +
 drivers/soc/qcom/qdu.c                        |   85 ++
 drivers/soc/qcom/sahara/Kconfig               |   17 +
 drivers/soc/qcom/sahara/Makefile              |    6 +
 .../{accel/qaic => soc/qcom/sahara}/sahara.c  |  534 ++++++-
 drivers/soc/qcom/sahara/sahara_image_table.c  |  178 +++
 .../accel/qaic => include/linux}/sahara.h     |    1 +
 include/linux/sahara_image_table_ops.h        |  102 ++
 17 files changed, 2252 insertions(+), 75 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-bus-mhi-ddr_training_data
 create mode 100644 Documentation/sahara/index.rst
 create mode 100644 Documentation/sahara/sahara_protocol.rst
 create mode 100644 drivers/soc/qcom/qdu.c
 create mode 100644 drivers/soc/qcom/sahara/Kconfig
 create mode 100644 drivers/soc/qcom/sahara/Makefile
 rename drivers/{accel/qaic => soc/qcom/sahara}/sahara.c (64%)
 create mode 100644 drivers/soc/qcom/sahara/sahara_image_table.c
 rename {drivers/accel/qaic => include/linux}/sahara.h (99%)
 create mode 100644 include/linux/sahara_image_table_ops.h


base-commit: 0f4c93f7eb861acab537dbe94441817a270537bf
-- 
2.34.1





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux