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
next prev parent 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).