Re: [Freedreno] [PATCH 00/14] drm/hdcp: Pull HDCP auth/exchange/check into
On 2021-09-13 3:26 p.m., Sean Paul wrote: > On Mon, Sep 13, 2021 at 2:05 PM Alex Deucher wrote: >> >> On Mon, Sep 13, 2021 at 1:57 PM Sean Paul wrote: >>> >>> From: Sean Paul >>> >>> Hello, >>> This patchset pulls the HDCP protocol auth/exchange/check logic out from >>> i915 into a HDCP helper library which drivers can use to implement the >>> proper protocol and UAPI interactions for achieving HDCP. >>> >>> Originally this was all stuffed into i915 since it was the only driver >>> supporting HDCP. Over the last while I've been working on HDCP support >>> in the msm driver and have identified the parts which can/should be >>> shared between drivers and the parts which are hw-specific. >>> >>> We can generalize all of the sink interactions in the helper as well as >>> state handling and link checks. This tends to be the trickiest part of >>> adding HDCP support, since the property state and locking is a bit of a >>> nightmare. The driver need only implement the more mechanical display >>> controller register accesses. >>> >>> The first third of the pachset is establishing the helpers, the next >>> third is converting the i915 driver to use the helpers, and the last >>> third is the msm driver implementation. >>> >>> I've left out HDCP 2.x support, since we still only have i915 as the >>> reference implementation and I'm not super comfortable speculating on >>> which parts are platform independent. >> >> FWIW, amdgpu has support for both HDCP 1.x and 2.x >> > > Thanks Alex, I knew this and neglected to mention it, apologies for > the omission. > > IIRC amdgpu is much less hands-on than i915/msm, with PSP doing most > of the heavy lifting. There's probably some value in using the helpers > since it'll handle the state transitions in a consistent manner, do > you think this is something you can use? > We might be able to use drm_hdcp_atomic_check but the HDCP protocol stuff is sitting in our hdcp module and shared with other OSes so sharing it would be difficult. Harry > Sean > > >> Alex >> >>> >>> Please take a look, >>> >>> Sean >>> >>> Sean Paul (14): >>> drm/hdcp: Add drm_hdcp_atomic_check() >>> drm/hdcp: Avoid changing crtc state in hdcp atomic check >>> drm/hdcp: Update property value on content type and user changes >>> drm/hdcp: Expand HDCP helper library for enable/disable/check >>> drm/i915/hdcp: Consolidate HDCP setup/state cache >>> drm/i915/hdcp: Retain hdcp_capable return codes >>> drm/i915/hdcp: Use HDCP helpers for i915 >>> drm/msm/dpu_kms: Re-order dpu includes >>> drm/msm/dpu: Remove useless checks in dpu_encoder >>> drm/msm/dpu: Remove encoder->enable() hack >>> drm/msm/dp: Re-order dp_audio_put in deinit_sub_modules >>> dt-bindings: msm/dp: Add bindings for HDCP registers >>> drm/msm: Add hdcp register ranges to sc7180 device tree >>> drm/msm: Implement HDCP 1.x using the new drm HDCP helpers >>> >>> .../bindings/display/msm/dp-controller.yaml | 11 +- >>> drivers/gpu/drm/drm_hdcp.c| 1198 - >>> drivers/gpu/drm/i915/display/intel_atomic.c |7 +- >>> drivers/gpu/drm/i915/display/intel_ddi.c | 29 +- >>> .../drm/i915/display/intel_display_debugfs.c | 11 +- >>> .../drm/i915/display/intel_display_types.h| 58 +- >>> drivers/gpu/drm/i915/display/intel_dp_hdcp.c | 341 ++--- >>> drivers/gpu/drm/i915/display/intel_dp_mst.c | 17 +- >>> drivers/gpu/drm/i915/display/intel_hdcp.c | 1011 +++--- >>> drivers/gpu/drm/i915/display/intel_hdcp.h | 35 +- >>> drivers/gpu/drm/i915/display/intel_hdmi.c | 256 ++-- >>> drivers/gpu/drm/msm/Makefile |1 + >>> drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 17 +- >>> drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 30 +- >>> drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h |2 - >>> drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h |4 - >>> drivers/gpu/drm/msm/dp/dp_debug.c | 49 +- >>> drivers/gpu/drm/msm/dp/dp_debug.h |6 +- >>> drivers/gpu/drm/msm/dp/dp_display.c | 47 +- >>> drivers/gpu/drm/msm/dp/dp_display.h |5 + >>> drivers/gpu/drm/msm/dp/dp_drm.c | 68 +- >>> drivers/gpu/drm/msm/dp/dp_drm.h |5 + >>> drivers/gpu/drm/msm/dp/dp_hdcp.c | 433 ++ >>> drivers/gpu/drm/msm/dp/dp_hdcp.h | 27 + >>> drivers/gpu/drm/msm/dp/dp_parser.c| 30 +- >>> drivers/gpu/drm/msm/dp/dp_parser.h|4 + >>> drivers/gpu/drm/msm/dp/dp_reg.h | 44 +- >>> drivers/gpu/drm/msm/msm_atomic.c | 15 + >>> include/drm/drm_hdcp.h| 194 +++ >>> 29 files changed, 2570 insertions(+), 1385 deletions(-) >>> create mode 100644 drivers/gpu/drm/msm/dp/dp_hdcp.c >>> create mode 100644 drivers/gpu/drm/msm/dp/dp_hdcp.h >>> >>> -- >>> Sean Paul, Software Engineer, Google / Chromium OS >>>
Re: [Freedreno] [PATCH 00/14] drm/hdcp: Pull HDCP auth/exchange/check into
On Mon, Sep 13, 2021 at 2:05 PM Alex Deucher wrote: > > On Mon, Sep 13, 2021 at 1:57 PM Sean Paul wrote: > > > > From: Sean Paul > > > > Hello, > > This patchset pulls the HDCP protocol auth/exchange/check logic out from > > i915 into a HDCP helper library which drivers can use to implement the > > proper protocol and UAPI interactions for achieving HDCP. > > > > Originally this was all stuffed into i915 since it was the only driver > > supporting HDCP. Over the last while I've been working on HDCP support > > in the msm driver and have identified the parts which can/should be > > shared between drivers and the parts which are hw-specific. > > > > We can generalize all of the sink interactions in the helper as well as > > state handling and link checks. This tends to be the trickiest part of > > adding HDCP support, since the property state and locking is a bit of a > > nightmare. The driver need only implement the more mechanical display > > controller register accesses. > > > > The first third of the pachset is establishing the helpers, the next > > third is converting the i915 driver to use the helpers, and the last > > third is the msm driver implementation. > > > > I've left out HDCP 2.x support, since we still only have i915 as the > > reference implementation and I'm not super comfortable speculating on > > which parts are platform independent. > > FWIW, amdgpu has support for both HDCP 1.x and 2.x > Thanks Alex, I knew this and neglected to mention it, apologies for the omission. IIRC amdgpu is much less hands-on than i915/msm, with PSP doing most of the heavy lifting. There's probably some value in using the helpers since it'll handle the state transitions in a consistent manner, do you think this is something you can use? Sean > Alex > > > > > Please take a look, > > > > Sean > > > > Sean Paul (14): > > drm/hdcp: Add drm_hdcp_atomic_check() > > drm/hdcp: Avoid changing crtc state in hdcp atomic check > > drm/hdcp: Update property value on content type and user changes > > drm/hdcp: Expand HDCP helper library for enable/disable/check > > drm/i915/hdcp: Consolidate HDCP setup/state cache > > drm/i915/hdcp: Retain hdcp_capable return codes > > drm/i915/hdcp: Use HDCP helpers for i915 > > drm/msm/dpu_kms: Re-order dpu includes > > drm/msm/dpu: Remove useless checks in dpu_encoder > > drm/msm/dpu: Remove encoder->enable() hack > > drm/msm/dp: Re-order dp_audio_put in deinit_sub_modules > > dt-bindings: msm/dp: Add bindings for HDCP registers > > drm/msm: Add hdcp register ranges to sc7180 device tree > > drm/msm: Implement HDCP 1.x using the new drm HDCP helpers > > > > .../bindings/display/msm/dp-controller.yaml | 11 +- > > drivers/gpu/drm/drm_hdcp.c| 1198 - > > drivers/gpu/drm/i915/display/intel_atomic.c |7 +- > > drivers/gpu/drm/i915/display/intel_ddi.c | 29 +- > > .../drm/i915/display/intel_display_debugfs.c | 11 +- > > .../drm/i915/display/intel_display_types.h| 58 +- > > drivers/gpu/drm/i915/display/intel_dp_hdcp.c | 341 ++--- > > drivers/gpu/drm/i915/display/intel_dp_mst.c | 17 +- > > drivers/gpu/drm/i915/display/intel_hdcp.c | 1011 +++--- > > drivers/gpu/drm/i915/display/intel_hdcp.h | 35 +- > > drivers/gpu/drm/i915/display/intel_hdmi.c | 256 ++-- > > drivers/gpu/drm/msm/Makefile |1 + > > drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 17 +- > > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 30 +- > > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h |2 - > > drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h |4 - > > drivers/gpu/drm/msm/dp/dp_debug.c | 49 +- > > drivers/gpu/drm/msm/dp/dp_debug.h |6 +- > > drivers/gpu/drm/msm/dp/dp_display.c | 47 +- > > drivers/gpu/drm/msm/dp/dp_display.h |5 + > > drivers/gpu/drm/msm/dp/dp_drm.c | 68 +- > > drivers/gpu/drm/msm/dp/dp_drm.h |5 + > > drivers/gpu/drm/msm/dp/dp_hdcp.c | 433 ++ > > drivers/gpu/drm/msm/dp/dp_hdcp.h | 27 + > > drivers/gpu/drm/msm/dp/dp_parser.c| 30 +- > > drivers/gpu/drm/msm/dp/dp_parser.h|4 + > > drivers/gpu/drm/msm/dp/dp_reg.h | 44 +- > > drivers/gpu/drm/msm/msm_atomic.c | 15 + > > include/drm/drm_hdcp.h| 194 +++ > > 29 files changed, 2570 insertions(+), 1385 deletions(-) > > create mode 100644 drivers/gpu/drm/msm/dp/dp_hdcp.c > > create mode 100644 drivers/gpu/drm/msm/dp/dp_hdcp.h > > > > -- > > Sean Paul, Software Engineer, Google / Chromium OS > >
Re: [Freedreno] [PATCH 00/14] drm/hdcp: Pull HDCP auth/exchange/check into
On Mon, Sep 13, 2021 at 1:57 PM Sean Paul wrote: > > From: Sean Paul > > Hello, > This patchset pulls the HDCP protocol auth/exchange/check logic out from > i915 into a HDCP helper library which drivers can use to implement the > proper protocol and UAPI interactions for achieving HDCP. > > Originally this was all stuffed into i915 since it was the only driver > supporting HDCP. Over the last while I've been working on HDCP support > in the msm driver and have identified the parts which can/should be > shared between drivers and the parts which are hw-specific. > > We can generalize all of the sink interactions in the helper as well as > state handling and link checks. This tends to be the trickiest part of > adding HDCP support, since the property state and locking is a bit of a > nightmare. The driver need only implement the more mechanical display > controller register accesses. > > The first third of the pachset is establishing the helpers, the next > third is converting the i915 driver to use the helpers, and the last > third is the msm driver implementation. > > I've left out HDCP 2.x support, since we still only have i915 as the > reference implementation and I'm not super comfortable speculating on > which parts are platform independent. FWIW, amdgpu has support for both HDCP 1.x and 2.x Alex > > Please take a look, > > Sean > > Sean Paul (14): > drm/hdcp: Add drm_hdcp_atomic_check() > drm/hdcp: Avoid changing crtc state in hdcp atomic check > drm/hdcp: Update property value on content type and user changes > drm/hdcp: Expand HDCP helper library for enable/disable/check > drm/i915/hdcp: Consolidate HDCP setup/state cache > drm/i915/hdcp: Retain hdcp_capable return codes > drm/i915/hdcp: Use HDCP helpers for i915 > drm/msm/dpu_kms: Re-order dpu includes > drm/msm/dpu: Remove useless checks in dpu_encoder > drm/msm/dpu: Remove encoder->enable() hack > drm/msm/dp: Re-order dp_audio_put in deinit_sub_modules > dt-bindings: msm/dp: Add bindings for HDCP registers > drm/msm: Add hdcp register ranges to sc7180 device tree > drm/msm: Implement HDCP 1.x using the new drm HDCP helpers > > .../bindings/display/msm/dp-controller.yaml | 11 +- > drivers/gpu/drm/drm_hdcp.c| 1198 - > drivers/gpu/drm/i915/display/intel_atomic.c |7 +- > drivers/gpu/drm/i915/display/intel_ddi.c | 29 +- > .../drm/i915/display/intel_display_debugfs.c | 11 +- > .../drm/i915/display/intel_display_types.h| 58 +- > drivers/gpu/drm/i915/display/intel_dp_hdcp.c | 341 ++--- > drivers/gpu/drm/i915/display/intel_dp_mst.c | 17 +- > drivers/gpu/drm/i915/display/intel_hdcp.c | 1011 +++--- > drivers/gpu/drm/i915/display/intel_hdcp.h | 35 +- > drivers/gpu/drm/i915/display/intel_hdmi.c | 256 ++-- > drivers/gpu/drm/msm/Makefile |1 + > drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 17 +- > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 30 +- > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h |2 - > drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h |4 - > drivers/gpu/drm/msm/dp/dp_debug.c | 49 +- > drivers/gpu/drm/msm/dp/dp_debug.h |6 +- > drivers/gpu/drm/msm/dp/dp_display.c | 47 +- > drivers/gpu/drm/msm/dp/dp_display.h |5 + > drivers/gpu/drm/msm/dp/dp_drm.c | 68 +- > drivers/gpu/drm/msm/dp/dp_drm.h |5 + > drivers/gpu/drm/msm/dp/dp_hdcp.c | 433 ++ > drivers/gpu/drm/msm/dp/dp_hdcp.h | 27 + > drivers/gpu/drm/msm/dp/dp_parser.c| 30 +- > drivers/gpu/drm/msm/dp/dp_parser.h|4 + > drivers/gpu/drm/msm/dp/dp_reg.h | 44 +- > drivers/gpu/drm/msm/msm_atomic.c | 15 + > include/drm/drm_hdcp.h| 194 +++ > 29 files changed, 2570 insertions(+), 1385 deletions(-) > create mode 100644 drivers/gpu/drm/msm/dp/dp_hdcp.c > create mode 100644 drivers/gpu/drm/msm/dp/dp_hdcp.h > > -- > Sean Paul, Software Engineer, Google / Chromium OS >