From: Ramalingam C <ramalingam.c@intel.com>
To: "Winkler, Tomas" <tomas.winkler@intel.com>,
"intel-gfx@lists.freedesktop.org"
<intel-gfx@lists.freedesktop.org>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"seanpaul@chromium.org" <seanpaul@chromium.org>,
"chris@chris-wilson.co.uk" <chris@chris-wilson.co.uk>,
"jani.nikula@linux.intel.com" <jani.nikula@linux.intel.com>
Cc: "Shankar, Uma" <uma.shankar@intel.com>,
"Vivi, Rodrigo" <rodrigo.vivi@intel.com>
Subject: Re: [PATCH v2 07/42] misc/mei/hdcp: Get & Put for mei cl_device
Date: Mon, 12 Mar 2018 17:05:35 +0530 [thread overview]
Message-ID: <baf5643b-2c93-fb89-75cb-c0af07a9c782@intel.com> (raw)
In-Reply-To: <5B8DA87D05A7694D9FA63FD143655C1B942317FD@hasmsx108.ger.corp.intel.com>
On Thursday 08 March 2018 06:40 PM, Winkler, Tomas wrote:
>> Interfaces to obtain and release the cl_device reference is developed.
>> Using these interfaces intel hdcp driver will get the reference to the mei
>> client devices, so that hdcp2.2 service calls can be routed to that client
>> device.
>>
>> During registration, call back function will be registered with mei_hdcp driver
>> so that when the client device is removed intel hdcp driver can be informed.
>>
>> At a time only one reference is allowed in this interfaces.
>>
>> v2:
>> Rebased.
> Linux kernel already provide notification chain, please use that.
Sensing a problem here. Publisher module (mei_hdcp) for the notifier
chain is loaded later than the I915's hdcp init (subscriber to the module).
Events that we will be interested are enabled and disabled states of the
mei_hdcp_device.
I will explore further. Thanks for the suggestion
> This is not needed and I'm not sure it will ever work.
I am not sure, why do you think like that. This might not be in good
shape but this is completely functional.
This v2 series is tested for HDCP2.2 feature on drm-tip before publishing.
From starting I was not comfortable with this handshaking part between
I915 and mei_hdcp. Thanks for the suggestions.
I will work on them.
--Ram
>
> Tomas
>
>
>> Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
>> ---
>> drivers/misc/mei/hdcp/mei_hdcp.c | 55
>> +++++++++++++++++++++++++++++++++++++++-
>> drivers/misc/mei/hdcp/mei_hdcp.h | 9 +++++++
>> include/linux/mei_hdcp.h | 47 ++++++++++++++++++++++++++++++++++
>> 3 files changed, 110 insertions(+), 1 deletion(-) create mode 100644
>> include/linux/mei_hdcp.h
>>
>> diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c
>> b/drivers/misc/mei/hdcp/mei_hdcp.c
>> index 25df7034cfb4..63f77800a6f7 100644
>> --- a/drivers/misc/mei/hdcp/mei_hdcp.c
>> +++ b/drivers/misc/mei/hdcp/mei_hdcp.c
>> @@ -55,18 +55,71 @@ static int mei_hdcp_probe(struct mei_cl_device
>> *cldev,
>> mei_cldev_set_drvdata(cldev, &mei_hdcp);
>>
>> ret = mei_cldev_enable(cldev);
>> - if (ret < 0)
>> + if (ret < 0) {
>> dev_err(&cldev->dev, "mei_cldev_enable Failed. %d\n", ret);
>> + goto err;
>> + }
>> +
>> + if (mei_hdcp.notify_on_cldev_change)
>> + mei_hdcp.notify_on_cldev_change(mei_hdcp.client, cldev);
>> +
>> + return 0;
>> +err:
>> + if (mei_hdcp.notify_on_cldev_change)
>> + mei_hdcp.notify_on_cldev_change(mei_hdcp.client, NULL);
>>
>> return ret;
>> }
>>
>> static int mei_hdcp_remove(struct mei_cl_device *cldev) {
>> + struct mei_hdcp *mei_hdcp = mei_cldev_get_drvdata(cldev);
>> +
>> + if (mei_hdcp->notify_on_cldev_change)
>> + mei_hdcp->notify_on_cldev_change(mei_hdcp->client, NULL);
>> +
>> mei_cldev_disable(cldev);
>> +
>> return 0;
>> }
>>
>> +int mei_hdcp_cldev_get_reference(void *client_data,
>> + struct mei_cl_device **cldev,
>> + void (*notify_change)(void *client,
>> + struct mei_cl_device
>> + *cldev))
>> +{
>> + if (!notify_change || !client_data)
>> + return -EINVAL;
>> +
>> + if (mei_hdcp.ref_cnt)
>> + return -EBUSY;
>> +
>> + if (!mei_cldev_active_and_enabled(mei_hdcp.cldev)) {
>> + if (!notify_change)
>> + return -EAGAIN;
>> + } else {
>> + *cldev = mei_hdcp.cldev;
>> + }
>> +
>> + mei_hdcp.ref_cnt++;
>> + mei_hdcp.client = client_data;
>> + mei_hdcp.notify_on_cldev_change = notify_change;
>> +
>> + return 0;
>> +}
>> +EXPORT_SYMBOL(mei_hdcp_cldev_get_reference);
>> +
>> +void mei_hdcp_cldev_put_reference(struct mei_cl_device *cldev) {
>> + if (cldev == mei_hdcp.cldev) {
>> + mei_hdcp.ref_cnt--;
>> + mei_hdcp.client = NULL;
>> + mei_hdcp.notify_on_cldev_change = NULL;
>> + }
>> +}
>> +EXPORT_SYMBOL(mei_hdcp_cldev_put_reference);
>> +
>> #define WIDI_HECI_CLIENT_GUID UUID_LE(0xB638AB7E, 0x94E2,
>> 0x4EA2, 0xA5, \
>> 0x52, 0xD1, 0xC5, 0x4B, \
>> 0x62, 0x7F, 0x04)
>> diff --git a/drivers/misc/mei/hdcp/mei_hdcp.h
>> b/drivers/misc/mei/hdcp/mei_hdcp.h
>> index c06c0d767c4f..7d792b5ad703 100644
>> --- a/drivers/misc/mei/hdcp/mei_hdcp.h
>> +++ b/drivers/misc/mei/hdcp/mei_hdcp.h
>> @@ -27,6 +27,15 @@
>>
>> struct mei_hdcp {
>> struct mei_cl_device *cldev;
>> +
>> + /* Reference to the HDCP2.2 service consumer */
>> + void *client;
>> +
>> + /* Callback function for the consumer on cl_device state change */
>> + void (*notify_on_cldev_change)(void *client,
>> + struct mei_cl_device *cldev);
>> +
>> + int ref_cnt;
>> };
>>
>> #endif /* __MEI_HDCP_H__ */
>> diff --git a/include/linux/mei_hdcp.h b/include/linux/mei_hdcp.h new file
>> mode 100644 index 000000000000..774b26da0c26
>> --- /dev/null
>> +++ b/include/linux/mei_hdcp.h
>> @@ -0,0 +1,47 @@
>> +/*
>> + * Copyright (c) 2017 Intel Corporation
>> + *
>> + * Permission to use, copy, modify, distribute, and sell this software
>> +and its
>> + * documentation for any purpose is hereby granted without fee,
>> +provided that
>> + * the above copyright notice appear in all copies and that both that
>> +copyright
>> + * notice and this permission notice appear in supporting
>> +documentation, and
>> + * that the name of the copyright holders not be used in advertising or
>> + * publicity pertaining to distribution of the software without
>> +specific,
>> + * written prior permission. The copyright holders make no
>> +representations
>> + * about the suitability of this software for any purpose. It is
>> +provided "as
>> + * is" without express or implied warranty.
>> + *
>> + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO
>> THIS
>> +SOFTWARE,
>> + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
>> FITNESS, IN
>> +NO
>> + * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL,
>> +INDIRECT OR
>> + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
>> FROM LOSS
>> +OF USE,
>> + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
>> OR
>> +OTHER
>> + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
>> OR
>> +PERFORMANCE
>> + * OF THIS SOFTWARE.
>> + */
>> +
>> +#ifndef _LINUX_MEI_HDCP_H
>> +#define _LINUX_MEI_HDCP_H
>> +
>> +#ifdef CONFIG_INTEL_MEI_HDCP
>> +int mei_hdcp_cldev_get_reference(void *client_data,
>> + struct mei_cl_device **cldev,
>> + void (*notify_change)(void *client,
>> + struct mei_cl_device
>> + *cldev));
>> +void mei_hdcp_cldev_put_reference(struct mei_cl_device *cldev); #else
>> +static inline int mei_hdcp_cldev_get_reference(void *client_data,
>> + struct mei_cl_device **cldev,
>> + void (*notify_change)(void *client,
>> + struct mei_cl_device
>> + *cldev))
>> +{
>> + return -ENODEV;
>> +}
>> +static inline
>> +void mei_hdcp_cldev_put_reference(struct mei_cl_device *cldev) {}
>> +#endif /* defined (CONFIG_INTEL_MEI_HDCP) */ #endif /* defined
>> +(_LINUX_MEI_HDCP_H) */
>> --
>> 2.7.4
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-03-12 11:35 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-08 11:58 [PATCH v2 00/42] drm/i915: Implement HDCP2.2 Ramalingam C
2018-03-08 11:58 ` [PATCH v2 01/42] drm: hdcp2.2 authentication msg definitions Ramalingam C
2018-03-08 11:58 ` [PATCH v2 02/42] drm: HDMI and DP specific HDCP2.2 defines Ramalingam C
2018-03-08 11:58 ` [PATCH v2 03/42] mei: bus: whitelist hdcp client Ramalingam C
2018-03-08 11:58 ` [PATCH v2 04/42] misc/mei/hdcp: Client driver for HDCP application Ramalingam C
2018-03-08 13:07 ` Winkler, Tomas
2018-03-12 10:58 ` Ramalingam C
2018-03-12 11:22 ` Winkler, Tomas
2018-03-12 11:20 ` Ramalingam C
2018-03-08 11:58 ` [PATCH v2 05/42] misc/mei/hdcp: Add KBuild for mei hdcp driver Ramalingam C
2018-03-08 11:58 ` [PATCH v2 06/42] misc/mei/hdcp: Verify mei client device status Ramalingam C
2018-03-08 13:08 ` Winkler, Tomas
2018-03-12 11:02 ` Ramalingam C
2018-03-08 11:58 ` [PATCH v2 07/42] misc/mei/hdcp: Get & Put for mei cl_device Ramalingam C
2018-03-08 13:10 ` Winkler, Tomas
2018-03-12 11:35 ` Ramalingam C [this message]
2018-03-08 11:58 ` [PATCH v2 08/42] misc/mei/hdcp: Define ME FW interface for HDCP2.2 Ramalingam C
2018-03-08 11:58 ` [PATCH v2 09/42] linux/mei: Header for mei_hdcp driver interface Ramalingam C
2018-03-08 13:13 ` Winkler, Tomas
2018-03-12 11:15 ` Ramalingam C
2018-03-08 11:58 ` [PATCH v2 10/42] misc/mei/hdcp: Initiate Wired HDCP2.2 Tx Session Ramalingam C
2018-03-08 13:17 ` Winkler, Tomas
2018-03-12 11:19 ` Ramalingam C
2018-03-12 11:32 ` Winkler, Tomas
2018-03-12 11:38 ` Ramalingam C
2018-03-08 11:58 ` [PATCH v2 11/42] misc/mei/hdcp: Verify Receiver Cert and prepare km Ramalingam C
2018-03-08 11:58 ` [PATCH v2 12/42] misc/mei/hdcp: Verify H_prime Ramalingam C
2018-03-08 11:58 ` [PATCH v2 13/42] misc/mei/hdcp: Store the HDCP Pairing info Ramalingam C
2018-03-08 11:58 ` [PATCH v2 14/42] misc/mei/hdcp: Initiate Locality check Ramalingam C
2018-03-08 11:58 ` [PATCH v2 15/42] misc/mei/hdcp: Verify L_prime Ramalingam C
2018-03-08 11:58 ` [PATCH v2 16/42] misc/mei/hdcp: Prepare Session Key Ramalingam C
2018-03-08 11:58 ` [PATCH v2 17/42] misc/mei/hdcp: Repeater topology verifcation and ack Ramalingam C
2018-03-08 11:58 ` [PATCH v2 18/42] misc/mei/hdcp: Verify M_prime Ramalingam C
2018-03-08 11:58 ` [PATCH v2 19/42] misc/mei/hdcp: Enabling the HDCP authentication Ramalingam C
2018-03-08 11:58 ` [PATCH v2 20/42] misc/mei/hdcp: Closing wired HDCP2.2 Tx Session Ramalingam C
2018-03-08 11:58 ` [PATCH v2 21/42] drm/i915: wrapping all hdcp var into intel_hdcp Ramalingam C
2018-03-08 11:58 ` [PATCH v2 22/42] drm/i915: Define HDCP2.2 related variables Ramalingam C
2018-03-08 11:58 ` [PATCH v2 23/42] drm/i915: Define Intel HDCP2.2 registers Ramalingam C
2018-03-08 11:58 ` [PATCH v2 24/42] drm/i915: Wrappers for mei HDCP2.2 services Ramalingam C
2018-03-08 11:58 ` [PATCH v2 25/42] drm/i915: Implement HDCP2.2 receiver authentication Ramalingam C
2018-03-08 11:58 ` [PATCH v2 26/42] drm/i915: Implement HDCP2.2 repeater authentication Ramalingam C
2018-03-08 11:58 ` [PATCH v2 27/42] drm/i915: Enable and Disable HDCP2.2 port encryption Ramalingam C
2018-03-08 11:58 ` [PATCH v2 28/42] drm/i915: Implement HDCP2.2 En/Dis-able Ramalingam C
2018-03-08 11:58 ` [PATCH v2 29/42] drm/i915: Implement HDCP2.2 link integrity check Ramalingam C
2018-03-08 11:58 ` [PATCH v2 30/42] drm/i915: Handle HDCP2.2 downstream topology change Ramalingam C
2018-03-08 11:58 ` [PATCH v2 31/42] drm/i915: Pullout the bksv read and validation Ramalingam C
2018-03-08 11:58 ` [PATCH v2 32/42] drm/i915: Initialize HDCP2.2 and its MEI interface Ramalingam C
2018-03-08 11:59 ` [PATCH v2 33/42] drm/i915: Schedule hdcp_check_link in _intel_hdcp_enable Ramalingam C
2018-03-08 11:59 ` [PATCH v2 34/42] drm/i915: Enable superior HDCP ver that is capable Ramalingam C
2018-03-08 11:59 ` [PATCH v2 35/42] drm/i915: Enable HDCP1.4 incase of HDCP2.2 failure Ramalingam C
2018-03-08 11:59 ` [PATCH v2 36/42] drm/i915: hdcp_check_link only on CP_IRQ Ramalingam C
2018-03-08 11:59 ` [PATCH v2 37/42] drm/i915: Check HDCP 1.4 and 2.2 link " Ramalingam C
2018-03-08 11:59 ` [PATCH v2 38/42] drm/i915: Implement gmbus burst read Ramalingam C
2018-03-08 11:59 ` [PATCH v2 39/42] drm/i915: Implement the HDCP2.2 support for DP Ramalingam C
2018-03-08 11:59 ` [PATCH v2 40/42] drm/i915: Implement the HDCP2.2 support for HDMI Ramalingam C
2018-03-08 11:59 ` [PATCH v2 41/42] drm/i915: Add HDCP2.2 support for DP connectors Ramalingam C
2018-03-08 11:59 ` [PATCH v2 42/42] drm/i915: Add HDCP2.2 support for HDMI connectors Ramalingam C
2018-03-08 12:30 ` [PATCH v2 00/42] drm/i915: Implement HDCP2.2 Winkler, Tomas
2018-03-08 12:33 ` Ramalingam C
2018-03-09 9:26 ` Daniel Vetter
2018-03-08 12:49 ` ✗ Fi.CI.BAT: failure for drm/i915: Implement HDCP2.2 (rev2) Patchwork
2018-03-12 11:46 ` [PATCH v2 00/42] drm/i915: Implement HDCP2.2 Ramalingam C
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=baf5643b-2c93-fb89-75cb-c0af07a9c782@intel.com \
--to=ramalingam.c@intel.com \
--cc=chris@chris-wilson.co.uk \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=rodrigo.vivi@intel.com \
--cc=seanpaul@chromium.org \
--cc=tomas.winkler@intel.com \
--cc=uma.shankar@intel.com \
/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