All of lore.kernel.org
 help / color / mirror / Atom feed
From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
To: Sandeep Singh <Sandeep.Singh@amd.com>,
	jikos@kernel.org, benjamin.tissoires@redhat.com,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	jic23@kernel.org, linux-iio@vger.kernel.org
Cc: Shyam-sundar.S-k@amd.com, Nehal Shah <Nehal-bakulchandra.Shah@amd.com>
Subject: Re: [PATCH v2 1/4] SFH: Add maintainer list and documentation for AMD SFH based on HID framework
Date: Mon, 03 Feb 2020 06:29:04 -0800	[thread overview]
Message-ID: <f669f2682373bcd79995dcd518d3405fd62ec61f.camel@linux.intel.com> (raw)
In-Reply-To: <1580272046-32101-2-git-send-email-Sandeep.Singh@amd.com>

On Wed, 2020-01-29 at 09:57 +0530, Sandeep Singh wrote:
> From: Sandeep Singh <sandeep.singh@amd.com>
> 
> Add Maintainer list for AMD SFH

SFH (SENSOR FUSION HUB)

This way it will be clear what is SFH.

>  Solution and work flow
> document.
> 
> Signed-off-by: Nehal Shah <Nehal-bakulchandra.Shah@amd.com>
> Signed-off-by: Sandeep Singh <sandeep.singh@amd.com>
> ---
>  Documentation/hid/amd-sfh-hid.rst | 159
> ++++++++++++++++++++++++++++++++++++++
>  MAINTAINERS                       |   8 ++
>  2 files changed, 167 insertions(+)
>  create mode 100644 Documentation/hid/amd-sfh-hid.rst
> 
> diff --git a/Documentation/hid/amd-sfh-hid.rst
> b/Documentation/hid/amd-sfh-hid.rst
> new file mode 100644
> index 0000000..1183350
> --- /dev/null
> +++ b/Documentation/hid/amd-sfh-hid.rst
> @@ -0,0 +1,159 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +
> +AMD Sensor Fusion Hub:-
> +======================
> +AMD sensor fushion Hub is part of a SOC starting from ryzon based
> platforms.
> +The solution is working well on windows OS in several
> +OEM products. AMD SFH uses HID over PCIe bus. In terms of
> architecture
> +it is much more resmebles like ISH .However the major diffrence is
> all
> +The hid reports are generated as part of kernel driver.
> +
> +Block Diagram:-
> +=============
> +	-------------------------------
> +	|  HID User Space Applications  |
> +	-------------------------------
> +---------------------------------------------
> +	 ---------------------------------
> +	|		HID Core          |
> +	 ---------------------------------
> +
> +	 ---------------------------------
> +	|     AMD HID Transport Driver    |
> +	 ---------------------------------
> +
> +	 --------------------------------
> +	|     AMD HID Client Driver      |
> +	|	with HID Report Generator|
> +	 --------------------------------
> +
> +	 --------------------------------
> +	|     AMD MP2 PCIe Driver         |
> +	 --------------------------------
> +---------------------------------------------
> +	  -------------------------------
> +	|     SFH MP2 Processor         |
> +	 --------------------------------
> +
> +
> +AMD HID Transport Layer :-
> +***************************
> +AMD SFH transport is also implemented as a bus. Each client
> application
> +executing in the AMD MP2 is registered as a device on this bus.
> +The driver, which binds each device (AMD SFH  HID driver) identifies
> +the device type and registers with the hid core. Transport drivers
> +attach a constant "struct hid_ll_driver" object with each device.
> +Once a device is registered with HID core, the callbacks provided
> via
> +this struct are used by HID core to communicate with the device.
> +AMD HID Transport driver implements the synchronous calls.
> +
> +AMD HID Client Driver:-
> +**********************
> +This driver is responsible to implement HID request and descriptors.
> +As firmware is OS agnostic, HID client driver fills the HID request
> +structure and descriptors. HID client driver is in complex in nature
> +as it is interface between MP2 PCIe driver and HID. HID client
> driver
> +initialized the MP2 PCIe driver and holds the instance of MP2
> driver.
> +It identified the number of sensors connected using MP2- PCIe driver
> and
> +based on that allocate the DRAM address for each and every sensor
> and
> +pass it to MP2-PCIe driver.
> +On enumeration of each sensor, client driver fills out the HID
> Descriptor
> +structure and HID input report structure. HID Feature report
> structure can
> +be optional.  The report descriptor structure varies sensor to
> sensor.
> +Now on enumeration client driver does two major things
> +1.	Register the HID sensor client to virtual bus (Platform driver)
> and bind it.
> +2.	Probes the AMD HID transport driver. Which in turns register
> device to the core.
> +
> +AMD MP2 PCIe Driver:-
> +********************
> +MP2 PCIe driver is responsible for making all transaction with the
> firmware over
> +PCIe.The connection establishment between firmware and MP2 PCIe
> driver happens here.
> +
> +The communication between X86 and MP2 is spilt into three parts.
> +1. Command Transfer => C2P Mailbox Register are used
> +2. Data Transfer => DRAM
> +
> +Commands are sent to MP2 using C2P Mail Box registers. These
> C2P  registers
> +are mapped in PCIe address space.Writing into C2P Message register
> generate
> +interrupt to MP2.  The client driver allocates the physical memory
> and send
> +the same to MP2 for data transfer. MP2 firmware uses DRAM interface
> registers
> +to indirectly access DRAM memory. For Firmware always write minimum
> 32 bytes
> +into DRAM.So it is expected that driver shall allocate minimum 32
> bytes DRAM space.
> +
> +Enumeration and Probing flow:-
> +*****************************
> +       HID             AMD            AMD                       AMD
> -PCIe             MP2
> +       Core         Transport      Client
> Driver                 Driver               FW
> +	|		|	       |                           |         
>         |
> +	|		|       on Boot Driver Loaded	  	   |         
>         |
> +	|		|	       |                           |         
>         |
> +	|		|	       |----MP2-PCIe Int--------->
> |                 |
> +	|		|              |			   |         
>         |
> +	|		|	       |---Get Number of sensors->
> |                 |
> +	|		|              |                       Read
> P2C              |
> +	|		|	       |			Register     
>         |
> +	|		|              |                           |         
>         |
> +	|               |              | Loop(for No of
> Sensors)   |                 |
> +	|		|	       |--------------------
> --|    |                 |
> +	|		|              | Create HID
> Descriptor|    |                 |
> +	|		|	       | Create Input  report
> |    |                 |
> +	|		|              |  Descriptor
> Map      |    |                 |
> +	|		|	       |  the MP2 FW Index to
> |    |                 |
> +	|		|              |   HID
> Index          |    |                 |
> +	|		|	       | Allocate the
> DRAM    |  Enable              |
> +        |		|	       |	address       |  Sensors     
>         |
> +	|		|              |--------------------
> --|    |                 |
> +	|		| HID
> transport|                           |    Enable       |
> +	|	        |<--Probe------|                           |---Sensor 
> CMD--> |
> +	|		| Create the   |			   |         
>         |
> +	|		| HID
> device   |                           |                 |
> +	|               |    (MFD)     |                           |   
>               |
> +	|		| by Populating|			   |         
>         |
> +        |               |  the
> HID     |                           |                 |
> +	|               |  ll_driver   |                           |   
>               |
> +	| HID           |	       |			   |         
>         |
> +	|  add          |              |                           |   
>               |
> +	|Device         |              |                           |   
>               |
> +	|<------------- |	       |			   |         
>         |
> +
> +
> +Data Flow from Application to the AMD SFH Driver:-
> +*************************************************
> +
> +	|	       |              |	  	 	          |		
>     |
> +Get   	|	       |	      |			          |  
>                |
> +Input 	|	       |	      |			          |  
>                |
> +Report	|              |              |                        
>    |                 |
> +--->  	|              |              |                        
>    |                 |
> +	|HID_req       |              |                           |    
>              |
> +	|get_report    |              |                           |    
>              |
> +	|-------------
> >|              |                           |                 |
> +	|              |
> HID_get_input|                           |                 |
> +	|              |  report      |                           |    
>              |
> +	|              |------------->|----------------------
> --|  |                 |
> +	|              |              |  Read the DRAM data
> for|  |                 |
> +	|              |              |  requsted sensor
> and   |  |                 |
> +	|              |              |  create the HID
> input  |  |                 |
> +	|              |              |  report                |  |    
>              |
> +	|              |              |----------------------
> --|  |                 |
> +	|              |Data received
> |                           |                 |
> +	|              | in HID
> report|                           |                 |
> + To	|<-------------|<-------------
> |                           |                 |
> +Applications           |              |                           | 
>                 |
> +<-------
> |              |              |                           |          
>        |
> +
> +
> +Data Flow from AMD SFH Driver to Application:-
> +**********************************************
> +      |		  |               |	            	     
>      |		    |
> +      |           |               |----------------------
> --|      |                 |
> +      |           |               |Periodically
> Read       |      |                 |
> +      |           |               |the data for
> all        |      |                 |
> +      |           |               |enumerated
> sensors      |      |                 |
> +      |           |               |from the dram and
> create|      |                 |
> +      |           |               | HID Input
> reports      |      |                 |
> +      |           |               |----------------------
> --|      |                 |
> +      |           |HID
> Input      |                               |                 |
> +      |           |Input
> report   |                               |                 |
> +   <----submit to Application-----
> |                               |                 |
> +      |           |               |                               | 
>                 |
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 56765f5..7cfeb5a 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -884,6 +884,14 @@ S:	Supported
>  F:	drivers/net/ethernet/amd/xgbe/
>  F:	arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi
>  
> +AMD SENSOR FUSION HUB DRIVER
> +M:	Nehal Shah <nehal-bakulchandra.shah@amd.com>
> +M:	Sandeep Singh <sandeep.singh@amd.com>
> +L:	linux-input@vger.kernel.org
> +S:	Maintained
> +F:	Documentation/hid/amd-sfh*
> +F:	drivers/hid/amd-sfh-hid/
> +
>  ANALOG DEVICES INC AD5686 DRIVER
>  M:	Stefan Popa <stefan.popa@analog.com>
>  L:	linux-pm@vger.kernel.org


  reply	other threads:[~2020-02-03 14:29 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-29  4:27 [PATCH v2 0/4] SFH: Add Support for AMD Sensor Fusion Hub Sandeep Singh
2020-01-29  4:27 ` [PATCH v2 1/4] SFH: Add maintainer list and documentation for AMD SFH based on HID framework Sandeep Singh
2020-02-03 14:29   ` Srinivas Pandruvada [this message]
2020-01-29  4:27 ` [PATCH v2 2/4] SFH: PCI driver to add support of AMD sensor fusion Hub using " Sandeep Singh
2020-02-03  5:05   ` Shah, Nehal-bakulchandra
2020-02-03  5:34     ` Srinivas Pandruvada
2020-02-03 14:52   ` Srinivas Pandruvada
2020-01-29  4:27 ` [PATCH v2 3/4] SFH: Transport Driver to add support of AMD sensor fusion Hub (SFH) Sandeep Singh
2020-02-03 14:58   ` Srinivas Pandruvada
2020-01-29  4:27 ` [PATCH v2 4/4] SFH: Create HID report to Enable " Sandeep Singh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f669f2682373bcd79995dcd518d3405fd62ec61f.camel@linux.intel.com \
    --to=srinivas.pandruvada@linux.intel.com \
    --cc=Nehal-bakulchandra.Shah@amd.com \
    --cc=Sandeep.Singh@amd.com \
    --cc=Shyam-sundar.S-k@amd.com \
    --cc=benjamin.tissoires@redhat.com \
    --cc=jic23@kernel.org \
    --cc=jikos@kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.