This series enables the HDCP2.2 Type 0 for I915. The sequence for
HDCP2.2 authentication and encryption is implemented as a generic flow
between HDMI and DP. Encoder specific implementations are moved
into hdcp_shim.
Intel HWs supports HDCP2.2 through ME FW. Hence this series
introduces a client driver for mei bus, so that for HDCP2.2
authentication, HDCP2.2 stack in I915 can avail the services from
ME FW. To enable this client driver set the config variable
CONFIG_INTEL_MEI_HDCP.
Userspace …
[View More]interface remains unchanged as version agnostic. When
userspace request for HDCP enable, Kernel will detect the HDCP source
and sink's HDCP version(1.4/2.2)capability and enable the best capable
version for that combination.
This series enables the HDCP2.2 for Type0 content streams.
Test-with: <1549566452-30175-1-git-send-email-ramalingam.c(a)intel.com>
Major changes in v12
- hdcp disable from unbind is removed.
- hdcp component init and del are moved away from conenctor ops.
- Review comemnts from Tomas are addressed. [Tomas]
- Collected the r-bs and Acks given for v11.
- ICL mei dev id patch is cherry-picked from
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git char-misc-linus
- Changes for component framework are merged into drm-tip already.
To ease the review process, series is hosted at
https://github.com/ramalingampc2008/drm-tip.git hdcp2_2_v12
Daniel Vetter (1):
drm/doc: document recommended component helper usage
Ramalingam C (34):
drm/i915: Gathering the HDCP1.4 routines together
drm: header for i915 - MEI_HDCP interface
drm/i915: Initialize HDCP2.2
drm/i915: MEI interface definition
drm/i915: hdcp1.4 CP_IRQ handling and SW encryption tracking
drm/i915: Enable and Disable of HDCP2.2
drm/i915: Implement HDCP2.2 receiver authentication
drm: helper functions for hdcp2 seq_num to from u32
drm/i915: Implement HDCP2.2 repeater authentication
drm: HDCP2.2 link check period
drm/i915: Implement HDCP2.2 link integrity check
drm/i915: Handle HDCP2.2 downstream topology change
drm: removing the DP Errata msg and its msg id
drm/i915: Implement the HDCP2.2 support for DP
drm/i915: Implement the HDCP2.2 support for HDMI
drm/i915: CP_IRQ handling for DP HDCP2.2 msgs
drm/i915: Fix KBL HDCP2.2 encrypt status signalling
misc/mei/hdcp: Client driver for HDCP application
misc/mei/hdcp: Define ME FW interface for HDCP2.2
misc/mei/hdcp: Initiate Wired HDCP2.2 Tx Session
misc/mei/hdcp: Verify Receiver Cert and prepare km
misc/mei/hdcp: Verify H_prime
misc/mei/hdcp: Store the HDCP Pairing info
misc/mei/hdcp: Initiate Locality check
misc/mei/hdcp: Verify L_prime
misc/mei/hdcp: Prepare Session Key
misc/mei/hdcp: Repeater topology verification and ack
misc/mei/hdcp: Verify M_prime
misc/mei/hdcp: Enabling the HDCP authentication
misc/mei/hdcp: Closing wired HDCP2.2 Tx Session
misc/mei/hdcp: Component framework for I915 Interface
FOR_TEST_ONLY: i915/Kconfig: Select mei_hdcp by I915
FOR_TESTING_ONLY: debugfs: Excluding the LSPCon for HDCP1.4
FOR_TESTING_ONLY: ICL: Limit clk to <= 340MHz
Tomas Winkler (3):
mei: bus: whitelist hdcp client
mei: bus: export to_mei_cl_device for mei client device drivers
mei: me: add ice lake point device id.
Documentation/driver-api/component.rst | 2 +
Documentation/gpu/drm-internals.rst | 5 +
drivers/gpu/drm/drm_drv.c | 14 +
drivers/gpu/drm/i915/i915_debugfs.c | 10 +-
drivers/gpu/drm/i915/i915_drv.c | 1 +
drivers/gpu/drm/i915/i915_drv.h | 7 +
drivers/gpu/drm/i915/intel_connector.c | 2 +
drivers/gpu/drm/i915/intel_display.c | 4 +
drivers/gpu/drm/i915/intel_dp.c | 350 ++++++++-
drivers/gpu/drm/i915/intel_drv.h | 83 ++-
drivers/gpu/drm/i915/intel_hdcp.c | 1242 +++++++++++++++++++++++++++++---
drivers/gpu/drm/i915/intel_hdmi.c | 240 +++++-
drivers/misc/mei/Kconfig | 8 +
drivers/misc/mei/Makefile | 2 +
drivers/misc/mei/bus-fixup.c | 16 +
drivers/misc/mei/bus.c | 1 -
drivers/misc/mei/hdcp/Makefile | 7 +
drivers/misc/mei/hdcp/mei_hdcp.c | 842 ++++++++++++++++++++++
drivers/misc/mei/hdcp/mei_hdcp.h | 389 ++++++++++
drivers/misc/mei/hw-me-regs.h | 2 +
drivers/misc/mei/pci-me.c | 2 +
include/drm/drm_hdcp.h | 25 +-
include/drm/i915_component.h | 3 +
include/drm/i915_mei_hdcp_interface.h | 148 ++++
include/linux/mei_cl_bus.h | 2 +
25 files changed, 3280 insertions(+), 127 deletions(-)
create mode 100644 drivers/misc/mei/hdcp/Makefile
create mode 100644 drivers/misc/mei/hdcp/mei_hdcp.c
create mode 100644 drivers/misc/mei/hdcp/mei_hdcp.h
create mode 100644 include/drm/i915_mei_hdcp_interface.h
--
2.7.4
[View Less]
tree: git://people.freedesktop.org/~agd5f/linux.git amd-staging-drm-next
head: 0bf64b0a9f7850809c4da2fafce36d1504cc28d9
commit: 65631c9dcd427612004c1f10e4c12fcb67587db3 [332/333] drm/amdgpu: cleanup amdgpu_ih_process a bit more
reproduce: make htmldocs
All warnings (new ones prefixed by >>):
include/net/mac80211.h:1004: warning: Function parameter or member 'status.status_driver_data' not described in 'ieee80211_tx_info'
include/net/mac80211.h:1004: warning: Function parameter …
[View More]or member 'driver_rates' not described in 'ieee80211_tx_info'
include/net/mac80211.h:1004: warning: Function parameter or member 'pad' not described in 'ieee80211_tx_info'
include/net/mac80211.h:1004: warning: Function parameter or member 'rate_driver_data' not described in 'ieee80211_tx_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'rx_stats_avg' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'rx_stats_avg.signal' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'rx_stats_avg.chain_signal' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'status_stats.filtered' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'status_stats.retry_failed' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'status_stats.retry_count' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'status_stats.lost_packets' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'status_stats.last_tdls_pkt_time' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'status_stats.msdu_retries' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'status_stats.msdu_failed' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'status_stats.last_ack' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'status_stats.last_ack_signal' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'status_stats.ack_signal_filled' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'status_stats.avg_ack_signal' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'tx_stats.packets' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'tx_stats.bytes' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'tx_stats.last_rate' not described in 'sta_info'
net/mac80211/sta_info.h:590: warning: Function parameter or member 'tx_stats.msdu' not described in 'sta_info'
kernel/rcu/tree.c:711: warning: Excess function parameter 'irq' description in 'rcu_nmi_exit'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.cb' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.poll' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.active' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.cb' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.poll' not described in 'dma_buf'
include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.active' not described in 'dma_buf'
include/linux/dma-fence-array.h:54: warning: Function parameter or member 'work' not described in 'dma_fence_array'
include/linux/firmware/intel/stratix10-svc-client.h:1: warning: no structured comments found
include/linux/gpio/driver.h:371: warning: Function parameter or member 'init_valid_mask' not described in 'gpio_chip'
include/linux/iio/hw-consumer.h:1: warning: no structured comments found
include/linux/input/sparse-keymap.h:46: warning: Function parameter or member 'sw' not described in 'key_entry'
drivers/mtd/nand/raw/nand_base.c:420: warning: Function parameter or member 'chip' not described in 'nand_fill_oob'
drivers/mtd/nand/raw/nand_bbt.c:173: warning: Function parameter or member 'this' not described in 'read_bbt'
drivers/mtd/nand/raw/nand_bbt.c:173: warning: Excess function parameter 'chip' description in 'read_bbt'
include/linux/regulator/machine.h:199: warning: Function parameter or member 'max_uV_step' not described in 'regulation_constraints'
include/linux/regulator/driver.h:228: warning: Function parameter or member 'resume' not described in 'regulator_ops'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw0' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw1' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw2' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw3' not described in 'irb'
arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.eadm' not described in 'irb'
drivers/slimbus/stream.c:1: warning: no structured comments found
include/linux/spi/spi.h:180: warning: Function parameter or member 'driver_override' not described in 'spi_device'
drivers/target/target_core_device.c:1: warning: no structured comments found
drivers/usb/typec/bus.c:1: warning: no structured comments found
drivers/usb/typec/class.c:1: warning: no structured comments found
include/linux/w1.h:281: warning: Function parameter or member 'of_match_table' not described in 'w1_family'
fs/direct-io.c:257: warning: Excess function parameter 'offset' description in 'dio_complete'
fs/file_table.c:1: warning: no structured comments found
fs/libfs.c:477: warning: Excess function parameter 'available' description in 'simple_write_end'
fs/posix_acl.c:646: warning: Function parameter or member 'inode' not described in 'posix_acl_update_mode'
fs/posix_acl.c:646: warning: Function parameter or member 'mode_p' not described in 'posix_acl_update_mode'
fs/posix_acl.c:646: warning: Function parameter or member 'acl' not described in 'posix_acl_update_mode'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:294: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:294: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:294: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:343: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:343: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:343: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:183: warning: Function parameter or member 'blockable' not described in 'amdgpu_mn_read_lock'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Function parameter or member 'range' not described in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Function parameter or member 'range' not described in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_end'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:374: warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor '
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:375: warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor '
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:547: warning: Function parameter or member 'adev' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:547: warning: Function parameter or member 'vm' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:547: warning: Function parameter or member 'start' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:547: warning: Function parameter or member 'end' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:547: warning: Function parameter or member 'cursor' not described in 'for_each_amdgpu_vm_pt_leaf'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:595: warning: Function parameter or member 'adev' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:595: warning: Function parameter or member 'vm' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:595: warning: Function parameter or member 'cursor' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:595: warning: Function parameter or member 'entry' not described in 'for_each_amdgpu_vm_pt_dfs_safe'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:864: warning: Function parameter or member 'level' not described in 'amdgpu_vm_bo_param'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1369: warning: Function parameter or member 'params' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1369: warning: Function parameter or member 'bo' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1369: warning: Function parameter or member 'pe' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1369: warning: Function parameter or member 'addr' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1369: warning: Function parameter or member 'count' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1369: warning: Function parameter or member 'incr' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1369: warning: Function parameter or member 'flags' not described in 'amdgpu_vm_update_func'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1536: warning: Function parameter or member 'params' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1536: warning: Function parameter or member 'bo' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1536: warning: Function parameter or member 'level' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1536: warning: Function parameter or member 'pe' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1536: warning: Function parameter or member 'addr' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1536: warning: Function parameter or member 'count' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1536: warning: Function parameter or member 'incr' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1536: warning: Function parameter or member 'flags' not described in 'amdgpu_vm_update_flags'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:3126: warning: Function parameter or member 'pasid' not described in 'amdgpu_vm_make_compute'
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:375: warning: Excess function parameter 'entry' description in 'amdgpu_irq_dispatch'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:376: warning: Function parameter or member 'ih' not described in 'amdgpu_irq_dispatch'
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c:376: warning: Excess function parameter 'entry' description in 'amdgpu_irq_dispatch'
drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c:1: warning: no structured comments found
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:128: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source @atomic_obj
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'atomic_obj' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'atomic_obj_lock' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'backlight_link' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'backlight_caps' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'freesync_module' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'fw_dmcu' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'dmcu_fw_version' not described in 'amdgpu_display_manager'
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:1: warning: no structured comments found
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_pin' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_unpin' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_res_obj' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_get_sg_table' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_import_sg_table' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_vmap' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_vunmap' not described in 'drm_driver'
include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_mmap' not described in 'drm_driver'
include/drm/drm_atomic_state_helper.h:1: warning: no structured comments found
drivers/gpu/drm/drm_dp_helper.c:1362: warning: Function parameter or member 'dsc_dpcd' not described in 'drm_dp_dsc_sink_max_slice_count'
drivers/gpu/drm/drm_dp_helper.c:1362: warning: Function parameter or member 'is_edp' not described in 'drm_dp_dsc_sink_max_slice_count'
drivers/gpu/drm/scheduler/sched_main.c:376: warning: Excess function parameter 'bad' description in 'drm_sched_stop'
drivers/gpu/drm/scheduler/sched_main.c:377: warning: Excess function parameter 'bad' description in 'drm_sched_stop'
drivers/gpu/drm/scheduler/sched_main.c:420: warning: Function parameter or member 'full_recovery' not described in 'drm_sched_start'
drivers/gpu/drm/i915/i915_vma.h:49: warning: cannot understand function prototype: 'struct i915_vma '
drivers/gpu/drm/i915/i915_vma.h:1: warning: no structured comments found
drivers/gpu/drm/i915/intel_guc_fwif.h:536: warning: cannot understand function prototype: 'struct guc_log_buffer_state '
drivers/gpu/drm/i915/i915_trace.h:1: warning: no structured comments found
include/linux/skbuff.h:876: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'list' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'ip_defrag_offset' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'skb_mstamp_ns' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member '__cloned_offset' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'head_frag' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member '__pkt_type_offset' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'encapsulation' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'encap_hdr_csum' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'csum_valid' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member '__pkt_vlan_present_offset' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'vlan_present' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'csum_complete_sw' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'csum_level' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'inner_protocol_type' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'remcsum_offload' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'sender_cpu' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'reserved_tailroom' not described in 'sk_buff'
include/linux/skbuff.h:876: warning: Function parameter or member 'inner_ipproto' not described in 'sk_buff'
include/net/sock.h:238: warning: Function parameter or member 'skc_addrpair' not described in 'sock_common'
include/net/sock.h:238: warning: Function parameter or member 'skc_portpair' not described in 'sock_common'
include/net/sock.h:238: warning: Function parameter or member 'skc_ipv6only' not described in 'sock_common'
include/net/sock.h:238: warning: Function parameter or member 'skc_net_refcnt' not described in 'sock_common'
include/net/sock.h:238: warning: Function parameter or member 'skc_v6_daddr' not described in 'sock_common'
include/net/sock.h:238: warning: Function parameter or member 'skc_v6_rcv_saddr' not described in 'sock_common'
include/net/sock.h:238: warning: Function parameter or member 'skc_cookie' not described in 'sock_common'
include/net/sock.h:238: warning: Function parameter or member 'skc_listener' not described in 'sock_common'
include/net/sock.h:238: warning: Function parameter or member 'skc_tw_dr' not described in 'sock_common'
include/net/sock.h:238: warning: Function parameter or member 'skc_rcv_wnd' not described in 'sock_common'
include/net/sock.h:238: warning: Function parameter or member 'skc_tw_rcv_nxt' not described in 'sock_common'
include/net/sock.h:513: warning: Function parameter or member 'sk_backlog.rmem_alloc' not described in 'sock'
include/net/sock.h:513: warning: Function parameter or member 'sk_backlog.len' not described in 'sock'
include/net/sock.h:513: warning: Function parameter or member 'sk_backlog.head' not described in 'sock'
include/net/sock.h:513: warning: Function parameter or member 'sk_backlog.tail' not described in 'sock'
include/net/sock.h:513: warning: Function parameter or member 'sk_wq_raw' not described in 'sock'
include/net/sock.h:513: warning: Function parameter or member 'tcp_rtx_queue' not described in 'sock'
include/net/sock.h:513: warning: Function parameter or member 'sk_route_forced_caps' not described in 'sock'
include/net/sock.h:513: warning: Function parameter or member 'sk_txtime_report_errors' not described in 'sock'
include/net/sock.h:513: warning: Function parameter or member 'sk_validate_xmit_skb' not described in 'sock'
include/linux/netdevice.h:2048: warning: Function parameter or member 'adj_list.upper' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'adj_list.lower' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'gso_partial_features' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'switchdev_ops' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'l3mdev_ops' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'xfrmdev_ops' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'tlsdev_ops' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'name_assign_type' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'ieee802154_ptr' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'mpls_ptr' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'xdp_prog' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'gro_flush_timeout' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'nf_hooks_ingress' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member '____cacheline_aligned_in_smp' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'qdisc_hash' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'xps_cpus_map' not described in 'net_device'
include/linux/netdevice.h:2048: warning: Function parameter or member 'xps_rxqs_map' not described in 'net_device'
include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(advertising' not described in 'phylink_link_state'
include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(lp_advertising' not described in 'phylink_link_state'
Documentation/admin-guide/cgroup-v2.rst:1509: WARNING: Block quote ends without a blank line; unexpected unindent.
Documentation/admin-guide/cgroup-v2.rst:1511: WARNING: Block quote ends without a blank line; unexpected unindent.
Documentation/admin-guide/cgroup-v2.rst:1512: WARNING: Block quote ends without a blank line; unexpected unindent.
include/linux/interrupt.h:252: WARNING: Inline emphasis start-string without end-string.
include/net/mac80211.h:1214: ERROR: Unexpected indentation.
include/net/mac80211.h:1221: WARNING: Block quote ends without a blank line; unexpected unindent.
include/linux/wait.h:110: WARNING: Block quote ends without a blank line; unexpected unindent.
include/linux/wait.h:113: ERROR: Unexpected indentation.
include/linux/wait.h:115: WARNING: Block quote ends without a blank line; unexpected unindent.
kernel/time/hrtimer.c:1120: WARNING: Block quote ends without a blank line; unexpected unindent.
kernel/signal.c:344: WARNING: Inline literal start-string without end-string.
include/linux/kernel.h:137: WARNING: Inline interpreted text or phrase reference start-string without end-string.
Documentation/driver-api/dmaengine/dmatest.rst:63: ERROR: Unexpected indentation.
vim +376 drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
364
365 /**
366 * amdgpu_irq_dispatch - dispatch IRQ to IP blocks
367 *
368 * @adev: amdgpu device pointer
369 * @entry: interrupt vector pointer
370 *
371 * Dispatches IRQ to IP blocks.
372 */
373 void amdgpu_irq_dispatch(struct amdgpu_device *adev,
374 struct amdgpu_ih_ring *ih)
> 375 {
> 376 u32 ring_index = ih->rptr >> 2;
377 struct amdgpu_iv_entry entry;
378 unsigned client_id, src_id;
379 struct amdgpu_irq_src *src;
380 bool handled = false;
381 int r;
382
383 entry.iv_entry = (const uint32_t *)&ih->ring[ring_index];
384 amdgpu_ih_decode_iv(adev, &entry);
385
386 trace_amdgpu_iv(ih - &adev->irq.ih, &entry);
387
388 client_id = entry.client_id;
389 src_id = entry.src_id;
390
391 if (client_id >= AMDGPU_IRQ_CLIENTID_MAX) {
392 DRM_DEBUG("Invalid client_id in IV: %d\n", client_id);
393
394 } else if (src_id >= AMDGPU_MAX_IRQ_SRC_ID) {
395 DRM_DEBUG("Invalid src_id in IV: %d\n", src_id);
396
397 } else if (adev->irq.virq[src_id]) {
398 generic_handle_irq(irq_find_mapping(adev->irq.domain, src_id));
399
400 } else if (!adev->irq.client[client_id].sources) {
401 DRM_DEBUG("Unregistered interrupt client_id: %d src_id: %d\n",
402 client_id, src_id);
403
404 } else if ((src = adev->irq.client[client_id].sources[src_id])) {
405 r = src->funcs->process(adev, src, &entry);
406 if (r < 0)
407 DRM_ERROR("error processing interrupt (%d)\n", r);
408 else if (r)
409 handled = true;
410
411 } else {
412 DRM_DEBUG("Unhandled interrupt src_id: %d\n", src_id);
413 }
414
415 /* Send it to amdkfd as well if it isn't already handled */
416 if (!handled)
417 amdgpu_amdkfd_interrupt(adev, entry.iv_entry);
418 }
419
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[View Less]
tree: git://anongit.freedesktop.org/drm/drm-tip drm-tip
head: d4794b009ccd1ef8816e15c833f07ab696911a8d
commit: bd6ee5d2d2032416ba36ec6c24bf513f4ff0d338 [2/8] Merge remote-tracking branch 'drm-misc/drm-misc-next' into drm-tip
config: i386-randconfig-h0-02082357 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
reproduce:
git checkout bd6ee5d2d2032416ba36ec6c24bf513f4ff0d338
# save the attached .config to linux build tree
make ARCH=i386
All errors (new …
[View More]ones prefixed by >>):
drivers/gpu/drm//arm/display/komeda/komeda_dev.c: In function 'komeda_parse_pipe_dt':
drivers/gpu/drm//arm/display/komeda/komeda_dev.c:27:3: error: implicit declaration of function 'DRM_ERROR' [-Werror=implicit-function-declaration]
DRM_ERROR("get aclk for pipeline %d failed!\n", pipe_id);
^
drivers/gpu/drm//arm/display/komeda/komeda_dev.c: In function 'komeda_dev_create':
drivers/gpu/drm//arm/display/komeda/komeda_dev.c:127:2: error: implicit declaration of function 'DRM_INFO' [-Werror=implicit-function-declaration]
DRM_INFO("Found ARM Mali-D%x version r%dp%d\n",
^
drivers/gpu/drm//arm/display/komeda/komeda_dev.c: In function 'komeda_dev_destroy':
>> drivers/gpu/drm//arm/display/komeda/komeda_dev.c:170:3: error: implicit declaration of function 'devm_iounmap' [-Werror=implicit-function-declaration]
devm_iounmap(dev, mdev->reg_base);
^
cc1: some warnings being treated as errors
--
drivers/gpu/drm//arm/display/komeda/komeda_framebuffer.c: In function 'komeda_fb_create':
>> drivers/gpu/drm//arm/display/komeda/komeda_framebuffer.c:99:31: error: dereferencing pointer to incomplete type
struct komeda_dev *mdev = dev->dev_private;
^
--
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:32:15: error: variable 'komeda_kms_driver' has initializer but incomplete type
static struct drm_driver komeda_kms_driver = {
^
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:33:2: error: unknown field 'driver_features' specified in initializer
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC |
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:33:21: error: 'DRIVER_GEM' undeclared here (not in a function)
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC |
^
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:33:34: error: 'DRIVER_MODESET' undeclared here (not in a function)
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC |
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:33:51: error: 'DRIVER_ATOMIC' undeclared here (not in a function)
.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC |
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:34:7: error: 'DRIVER_PRIME' undeclared here (not in a function)
DRIVER_PRIME,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:34:7: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:34:7: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:35:2: error: unknown field 'lastclose' specified in initializer
.lastclose = drm_fb_helper_lastclose,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:35:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:35:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:36:2: error: unknown field 'gem_free_object_unlocked' specified in initializer
.gem_free_object_unlocked = drm_gem_cma_free_object,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:36:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:36:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:37:2: error: unknown field 'gem_vm_ops' specified in initializer
.gem_vm_ops = &drm_gem_cma_vm_ops,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:37:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:37:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:38:2: error: unknown field 'dumb_create' specified in initializer
.dumb_create = komeda_gem_cma_dumb_create,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:38:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:38:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:39:2: error: unknown field 'prime_handle_to_fd' specified in initializer
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:39:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:39:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:40:2: error: unknown field 'prime_fd_to_handle' specified in initializer
.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:40:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:40:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:41:2: error: unknown field 'gem_prime_export' specified in initializer
.gem_prime_export = drm_gem_prime_export,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:41:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:41:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:42:2: error: unknown field 'gem_prime_import' specified in initializer
.gem_prime_import = drm_gem_prime_import,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:42:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:42:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:43:2: error: unknown field 'gem_prime_get_sg_table' specified in initializer
.gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:43:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:43:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:44:2: error: unknown field 'gem_prime_import_sg_table' specified in initializer
.gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:44:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:44:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:45:2: error: unknown field 'gem_prime_vmap' specified in initializer
.gem_prime_vmap = drm_gem_cma_prime_vmap,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:45:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:45:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:46:2: error: unknown field 'gem_prime_vunmap' specified in initializer
.gem_prime_vunmap = drm_gem_cma_prime_vunmap,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:46:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:46:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:47:2: error: unknown field 'gem_prime_mmap' specified in initializer
.gem_prime_mmap = drm_gem_cma_prime_mmap,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:47:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:47:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:48:2: error: unknown field 'fops' specified in initializer
.fops = &komeda_cma_fops,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:48:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:48:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:49:2: error: unknown field 'name' specified in initializer
.name = "komeda",
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:49:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:49:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:50:2: error: unknown field 'desc' specified in initializer
.desc = "Arm Komeda Display Processor driver",
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:50:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:50:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:51:2: error: unknown field 'date' specified in initializer
.date = "20181101",
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:51:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:51:2: warning: (near initialization for 'komeda_kms_driver')
>> drivers/gpu/drm//arm/display/komeda/komeda_kms.c:52:2: error: unknown field 'major' specified in initializer
.major = 0,
^
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:52:2: warning: excess elements in struct initializer
drivers/gpu/drm//arm/display/komeda/komeda_kms.c:52:2: warning: (near initialization for 'komeda_kms_driver')
--
In file included from drivers/gpu/drm//arm/display/komeda/komeda_crtc.c:15:0:
drivers/gpu/drm//arm/display/komeda/komeda_kms.h:87:20: error: field 'base' has incomplete type
struct drm_device base;
^
drivers/gpu/drm//arm/display/komeda/komeda_crtc.c: In function 'komeda_kms_setup_crtcs':
drivers/gpu/drm//arm/display/komeda/komeda_crtc.c:45:3: error: implicit declaration of function 'DRM_INFO' [-Werror=implicit-function-declaration]
DRM_INFO("crtc%d: master(pipe-%d) slave(%s) output: %s.\n",
^
drivers/gpu/drm//arm/display/komeda/komeda_crtc.c: In function 'komeda_crtc_add':
>> drivers/gpu/drm//arm/display/komeda/komeda_crtc.c:88:2: error: implicit declaration of function 'drm_crtc_vblank_reset' [-Werror=implicit-function-declaration]
drm_crtc_vblank_reset(crtc);
^
cc1: some warnings being treated as errors
vim +/driver_features +33 drivers/gpu/drm//arm/display/komeda/komeda_kms.c
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 31)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @32) static struct drm_driver komeda_kms_driver = {
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @33) .driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC |
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @34) DRIVER_PRIME,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @35) .lastclose = drm_fb_helper_lastclose,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @36) .gem_free_object_unlocked = drm_gem_cma_free_object,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @37) .gem_vm_ops = &drm_gem_cma_vm_ops,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @38) .dumb_create = komeda_gem_cma_dumb_create,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @39) .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @40) .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @41) .gem_prime_export = drm_gem_prime_export,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @42) .gem_prime_import = drm_gem_prime_import,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @43) .gem_prime_get_sg_table = drm_gem_cma_prime_get_sg_table,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @44) .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @45) .gem_prime_vmap = drm_gem_cma_prime_vmap,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @46) .gem_prime_vunmap = drm_gem_cma_prime_vunmap,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @47) .gem_prime_mmap = drm_gem_cma_prime_mmap,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @48) .fops = &komeda_cma_fops,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @49) .name = "komeda",
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @50) .desc = "Arm Komeda Display Processor driver",
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @51) .date = "20181101",
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @52) .major = 0,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @53) .minor = 1,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 54) };
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 55)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 56) static void komeda_kms_commit_tail(struct drm_atomic_state *old_state)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 57) {
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 58) struct drm_device *dev = old_state->dev;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 59)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 60) drm_atomic_helper_commit_modeset_disables(dev, old_state);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 61)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 62) drm_atomic_helper_commit_planes(dev, old_state, 0);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 63)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 64) drm_atomic_helper_commit_modeset_enables(dev, old_state);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 65)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 66) drm_atomic_helper_wait_for_flip_done(dev, old_state);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 67)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 68) drm_atomic_helper_commit_hw_done(old_state);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 69)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 70) drm_atomic_helper_cleanup_planes(dev, old_state);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 71) }
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 72)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 73) static const struct drm_mode_config_helper_funcs komeda_mode_config_helpers = {
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 74) .atomic_commit_tail = komeda_kms_commit_tail,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 75) };
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 76)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 77) static const struct drm_mode_config_funcs komeda_mode_config_funcs = {
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 78) .fb_create = komeda_fb_create,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 79) .atomic_check = drm_atomic_helper_check,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 80) .atomic_commit = drm_atomic_helper_commit,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 81) };
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 82)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 83) static void komeda_kms_mode_config_init(struct komeda_kms_dev *kms,
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 84) struct komeda_dev *mdev)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 85) {
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 86) struct drm_mode_config *config = &kms->base.mode_config;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 87)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 88) drm_mode_config_init(&kms->base);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 89)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 90) komeda_kms_setup_crtcs(kms, mdev);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 91)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 92) /* Get value from dev */
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 93) config->min_width = 0;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 94) config->min_height = 0;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 95) config->max_width = 4096;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 96) config->max_height = 4096;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 97) config->allow_fb_modifiers = false;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 98)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 99) config->funcs = &komeda_mode_config_funcs;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 100) config->helper_private = &komeda_mode_config_helpers;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 101) }
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 102)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 103) struct komeda_kms_dev *komeda_kms_attach(struct komeda_dev *mdev)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 104) {
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 105) struct komeda_kms_dev *kms = kzalloc(sizeof(*kms), GFP_KERNEL);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 106) struct drm_device *drm;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 107) int err;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 108)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 109) if (!kms)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 110) return ERR_PTR(-ENOMEM);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 111)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 112) drm = &kms->base;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @113) err = drm_dev_init(drm, &komeda_kms_driver, mdev->dev);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 114) if (err)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 115) goto free_kms;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 116)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 117) drm->dev_private = mdev;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 118)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 119) komeda_kms_mode_config_init(kms, mdev);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 120)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 121) err = komeda_kms_add_private_objs(kms, mdev);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 122) if (err)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 123) goto cleanup_mode_config;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 124)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 125) err = komeda_kms_add_planes(kms, mdev);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 126) if (err)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 127) goto cleanup_mode_config;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 128)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @129) err = drm_vblank_init(drm, kms->n_crtcs);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 130) if (err)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 131) goto cleanup_mode_config;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 132)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 133) err = komeda_kms_add_crtcs(kms, mdev);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 134) if (err)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 135) goto cleanup_mode_config;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 136)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 137) err = component_bind_all(mdev->dev, kms);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 138) if (err)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 139) goto cleanup_mode_config;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 140)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 141) drm_mode_config_reset(drm);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 142)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @143) err = drm_dev_register(drm, 0);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 144) if (err)
874cf192 Liviu Dudau 2019-01-15 145 goto cleanup_mode_config;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 146)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 147) return kms;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 148)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 149) cleanup_mode_config:
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 150) drm_mode_config_cleanup(drm);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 151) free_kms:
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 152) kfree(kms);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 153) return ERR_PTR(err);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 154) }
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 155)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 156) void komeda_kms_detach(struct komeda_kms_dev *kms)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 157) {
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 158) struct drm_device *drm = &kms->base;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 159) struct komeda_dev *mdev = drm->dev_private;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 160)
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @161) drm_dev_unregister(drm);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 162) component_unbind_all(mdev->dev, drm);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 163) komeda_kms_cleanup_private_objs(mdev);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 164) drm_mode_config_cleanup(drm);
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 165) drm->dev_private = NULL;
61f1c4a8 james qian wang (Arm Technology China 2019-01-03 @166) drm_dev_put(drm);
:::::: The code at line 33 was first introduced by commit
:::::: 61f1c4a8ab7575c0147ae6c0d220f9719fdc741e drm/komeda: Attach komeda_dev to DRM-KMS
:::::: TO: james qian wang (Arm Technology China) <james.qian.wang(a)arm.com>
:::::: CC: Liviu Dudau <Liviu.Dudau(a)arm.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[View Less]
On Tue, Dec 11, 2018 at 9:02 AM Anton Ivanov
<anton.ivanov(a)cambridgegreys.com> wrote:
>
>
> On 12/11/18 2:41 PM, Steven Rostedt wrote:
> > On Tue, 11 Dec 2018 15:09:26 +0100
> > Petr Mladek <pmladek(a)suse.com> wrote:
> >
> >>> We have liburcu already, which is good. The main sticking points are:
> >>>
> >>> - printk has started adding a lot of %pX enhancements which printf
> >>> obviously doesn't …
[View More]know about.
> >> I wonder how big problem it is and if it is worth using another
> >> approach.
> > No, please do not change the %pX approach.
> >
> >> An alternative would be to replace them with helper functions
> >> the would produce the same string. The meaning would be easier
> >> to understand. But concatenating with the surrounding text
> >> would be less elegant. People might start using pr_cont()
> >> that is problematic (mixed lines).
> >>
> >> Also the %pX formats are mostly used to print context of some
> >> structures. Even the helper functions would need some maintenance
> >> to keep them compatible.
> >>
> >> BTW: The printk() feature has been introduced 10 years ago by
> >> the commit 4d8a743cdd2690c0bc8 ("vsprintf: add infrastructure
> >> support for extended '%p' specifiers").
> > trace-cmd and perf know about most of the %pX data and how to read it.
> > Perhaps we can extend the libtraceevent library to export a generic way
> > to read data from printk() output for other tools to use.
>
> Going back for a second to using UML for this. UML console at present is
> interrupt driven - it emulates serial IO using several different
> back-ends (file descriptors, xterm or actual tty/ptys). Epoll events on
> the host side are used to trigger the UML interrupts - both read and write.
>
> This works OK for normal use, but may result in all kinds of interesting
> false positives/false negatives when UML is used to run unit tests
> against a change which changes interrupt behavior.
>
> IMO it may be useful to consider some alternatives specifically for unit
> test coverage purposes where printk and/or the whole console output
> altogether bypass some of the IRQ driven semantics.
Whoops, sorry, didn't see your comment before I went on vacation.
I completely agree. It is also annoying when trying to test other
really low level parts of the kernel. I would really like to get KUnit
to the point where it does not have any dependencies on anything in
the kernel, but that is very challenging for many reasons. This
loosely relates to what Luis, myself, and others have talked about in
other threads about having a stricter notion of code dependencies in
the kernel. Thinking about it now, I suspect it might be easier to
limit KUnit's dependency on kernel infrastructure first; that could
kind of motivate the later work.
[View Less]
Hi all,
After merging the drm-misc tree, today's linux-next build (x86_64
allmodconfig) failed like this:
In file included from drivers/gpu/drm/arm/display/komeda/komeda_drv.c:13:
drivers/gpu/drm/arm/display/komeda/komeda_kms.h:87:20: error: field 'base' has incomplete type
struct drm_device base;
^~~~
drivers/gpu/drm/arm/display/komeda/komeda_dev.c: In function 'komeda_parse_pipe_dt':
drivers/gpu/drm/arm/display/komeda/komeda_dev.c:27:3: error: implicit declaration of …
[View More]function 'DRM_ERROR'; did you mean 'DRM_IOR'? [-Werror=implicit-function-declaration]
DRM_ERROR("get aclk for pipeline %d failed!\n", pipe_id);
^~~~~~~~~
DRM_IOR
drivers/gpu/drm/arm/display/komeda/komeda_dev.c: In function 'komeda_dev_create':
drivers/gpu/drm/arm/display/komeda/komeda_dev.c:127:2: error: implicit declaration of function 'DRM_INFO'; did you mean 'DRM_IO'? [-Werror=implicit-function-declaration]
DRM_INFO("Found ARM Mali-D%x version r%dp%d\n",
^~~~~~~~
DRM_IO
drivers/gpu/drm/arm/display/komeda/komeda_dev.c: In function 'komeda_dev_destroy':
drivers/gpu/drm/arm/display/komeda/komeda_dev.c:170:3: error: implicit declaration of function 'devm_iounmap'; did you mean 'pci_iounmap'? [-Werror=implicit-function-declaration]
devm_iounmap(dev, mdev->reg_base);
^~~~~~~~~~~~
pci_iounmap
and lots more ...
Probably caused by commit
e3b01f0d576a ("drm: remove drmP.h from drm_modeset_helper.h")
I have used the drm-misc tree from next-20190207 for today.
--
Cheers,
Stephen Rothwell
[View Less]
This patch adds appropiate kernel documentation for DRM DP helpers
used for enabling Display Stream compression functionality in
drm_dp_helper.h and drm_dp_helper.c as well as for the DSC spec
related structure definitions and helpers in drm_dsc.c and drm_dsc.h
Also add links between the functions and structures in the documentation.
Suggested-by: Daniel Vetter <daniel.vetter(a)intel.com>
Suggested-by: Sean Paul <sean(a)poorly.run>
Cc: Daniel Vetter <daniel.vetter(a)intel.com…
[View More]>
Cc: Sean Paul <sean(a)poorly.run>
Signed-off-by: Manasi Navare <manasi.d.navare(a)intel.com>
---
drivers/gpu/drm/drm_dp_helper.c | 42 +++++++++-
drivers/gpu/drm/drm_dsc.c | 13 ++-
include/drm/drm_dp_helper.h | 15 +++-
include/drm/drm_dsc.h | 138 ++++++++++++++++++--------------
4 files changed, 142 insertions(+), 66 deletions(-)
diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index 54120b6319e7..e9e0233f5b2f 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -1360,7 +1360,20 @@ int drm_dp_read_desc(struct drm_dp_aux *aux, struct drm_dp_desc *desc,
EXPORT_SYMBOL(drm_dp_read_desc);
/**
- * DRM DP Helpers for DSC
+ * drm_dp_dsc_sink_max_slice_count() - Get the max slice count
+ * supported by the DSC sink.
+ * @dsc_dpcd: DSC capabilities from DPCD
+ * @is_edp: true if its eDP, false for DP
+ *
+ * Read the slice capabilities DPCD register from DSC sink to get
+ * the maximum slice count supported. This is used to populate
+ * the DSC parameters in the &struct drm_dsc_config by the driver.
+ * Driver creates an infoframe using these parameters to populate
+ * &struct drm_dsc_pps_infoframe. These are sent to the sink using DSC
+ * infoframe using the helper function drm_dsc_pps_infoframe_pack()
+ *
+ * Returns:
+ * Maximum slice count supported by DSC sink or 0 its invalid
*/
u8 drm_dp_dsc_sink_max_slice_count(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE],
bool is_edp)
@@ -1405,6 +1418,19 @@ u8 drm_dp_dsc_sink_max_slice_count(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE],
}
EXPORT_SYMBOL(drm_dp_dsc_sink_max_slice_count);
+/**
+ * drm_dp_dsc_sink_line_buf_depth() - Get the line buffer depth in bits which is
+ * number of bits of precision within the decoder line buffer supported by
+ * the DSC sink. This is used to populate the DSC parameters in the
+ * &struct drm_dsc_config by the driver.
+ * Driver creates an infoframe using these parameters to populate
+ * &struct drm_dsc_pps_infoframe. These are sent to the sink using DSC
+ * infoframe using the helper function drm_dsc_pps_infoframe_pack()
+ * @dsc_dpcd: DSC capabilities from DPCD
+ *
+ * Returns:
+ * Line buffer depth supported by DSC panel or 0 its invalid
+ */
u8 drm_dp_dsc_sink_line_buf_depth(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])
{
u8 line_buf_depth = dsc_dpcd[DP_DSC_LINE_BUF_BIT_DEPTH - DP_DSC_SUPPORT];
@@ -1434,6 +1460,20 @@ u8 drm_dp_dsc_sink_line_buf_depth(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])
}
EXPORT_SYMBOL(drm_dp_dsc_sink_line_buf_depth);
+/**
+ * drm_dp_dsc_sink_supported_input_bpcs() - Get all the input bits per component
+ * values supported by the DSC sink. This is used to populate the DSC parameters
+ * in the &struct drm_dsc_config by the driver.
+ * Driver creates an infoframe using these parameters to populate
+ * &struct drm_dsc_pps_infoframe. These are sent to the sink using DSC
+ * infoframe using the helper function drm_dsc_pps_infoframe_pack()
+ * @dsc_dpcd: DSC capabilities from DPCD
+ * @dsc_bpc: An array to be filled by this helper with supported
+ * input bpcs.
+ *
+ * Returns:
+ * Number of input BPC values parsed from the DPCD
+ */
int drm_dp_dsc_sink_supported_input_bpcs(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE],
u8 dsc_bpc[3])
{
diff --git a/drivers/gpu/drm/drm_dsc.c b/drivers/gpu/drm/drm_dsc.c
index bc2b23adb072..0fd56fbdf9b4 100644
--- a/drivers/gpu/drm/drm_dsc.c
+++ b/drivers/gpu/drm/drm_dsc.c
@@ -17,6 +17,12 @@
/**
* DOC: dsc helpers
*
+ * VESA specification for DP 1.4 adds a new feature called Display Stream
+ * Compression (DSC) used to compress the pixel bits before sending it on
+ * DP/eDP/MIPI DSI interface. DSC is required to be enabled so that the existing
+ * display interfaces can support high resolutions at higher frames rates uisng
+ * the maximum available link capacity of these interfaces.
+ *
* These functions contain some common logic and helpers to deal with VESA
* Display Stream Compression standard required for DSC on Display Port/eDP or
* MIPI display interfaces.
@@ -26,6 +32,7 @@
* drm_dsc_dp_pps_header_init() - Initializes the PPS Header
* for DisplayPort as per the DP 1.4 spec.
* @pps_sdp: Secondary data packet for DSC Picture Parameter Set
+ * as defined in &struct drm_dsc_pps_infoframe
*/
void drm_dsc_dp_pps_header_init(struct drm_dsc_pps_infoframe *pps_sdp)
{
@@ -44,9 +51,11 @@ EXPORT_SYMBOL(drm_dsc_dp_pps_header_init);
* that span more than 1 byte.
*
* @pps_sdp:
- * Secondary data packet for DSC Picture Parameter Set
+ * Secondary data packet for DSC Picture Parameter Set. This is defined
+ * by &struct drm_dsc_pps_infoframe
* @dsc_cfg:
- * DSC Configuration data filled by driver
+ * DSC Configuration data filled by driver as defined by
+ * &struct drm_dsc_config
*/
void drm_dsc_pps_infoframe_pack(struct drm_dsc_pps_infoframe *pps_sdp,
const struct drm_dsc_config *dsc_cfg)
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index 5db7fb8c8b50..2711cdfa0c13 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -1052,11 +1052,18 @@ int drm_dp_bw_code_to_link_rate(u8 link_bw);
#define DP_SDP_VSC_EXT_CEA 0x21 /* DP 1.4 */
/* 0x80+ CEA-861 infoframe types */
+/**
+ * struct dp_sdp_header - DP secondary data packet header
+ * @HB0: Secondary Data Packet ID
+ * @HB1: Secondary Data Packet Type
+ * @HB2: Secondary Data Packet Specific header, Byte 0
+ * @HB3: Secondary Data packet Specific header, Byte 1
+ */
struct dp_sdp_header {
- u8 HB0; /* Secondary Data Packet ID */
- u8 HB1; /* Secondary Data Packet Type */
- u8 HB2; /* Secondary Data Packet Specific header, Byte 0 */
- u8 HB3; /* Secondary Data packet Specific header, Byte 1 */
+ u8 HB0;
+ u8 HB1;
+ u8 HB2;
+ u8 HB3;
} __packed;
#define EDP_SDP_HEADER_REVISION_MASK 0x1F
diff --git a/include/drm/drm_dsc.h b/include/drm/drm_dsc.h
index d03f1b83421a..f50d265a97e2 100644
--- a/include/drm/drm_dsc.h
+++ b/include/drm/drm_dsc.h
@@ -44,111 +44,128 @@
#define DSC_1_2_MAX_LINEBUF_DEPTH_VAL 0
#define DSC_1_1_MAX_LINEBUF_DEPTH_BITS 13
-/* Configuration for a single Rate Control model range */
+/**
+ * struct drm_dsc_rc_range_parameters - DSC Rate Control range parameters
+ *
+ * @range_min_qp: Min Quantization Parameters allowed for this range
+ * @range_max_qp: Max Quantization Parameters allowed for this range
+ * @range_bpg_offset: Bits/group offset to apply to target for this group
+ */
struct drm_dsc_rc_range_parameters {
- /* Min Quantization Parameters allowed for this range */
u8 range_min_qp;
- /* Max Quantization Parameters allowed for this range */
u8 range_max_qp;
- /* Bits/group offset to apply to target for this group */
u8 range_bpg_offset;
};
+/**
+ * struct drm_dsc_config - Parameters required to configure DSC
+ *
+ * @line_buf_depth: Bits / component for previous reconstructed line buffer
+ * @bits_per_component: Bits per component to code (8/10/12)
+ * @convert_rgb: Flag to indicate if RGB - YCoCg conversion is needed
+ * True if RGB input, False if YCoCg input
+ * @slice_count: Number fo slices per line used by the DSC encoder
+ * @slice_width: Width of each slice in pixels
+ * @slice_height: Slice height in pixels
+ * @enable422: True for 4_2_2 sampling, false for 4_4_4 sampling
+ * @pic_width: Width of the input display frame in pixels
+ * @pic_height: Vertical height of the input display frame
+ * @rc_tgt_offset_high: Offset to bits/group used by RC to determine QP
+ * adjustment
+ * @rc_tgt_offset_low: Offset to bits/group used by RC to determine QP
+ * adjustment
+ * @bits_per_pixel: Target bits per pixel with 4 fractional bits.
+ * bits_per_pixel << 4
+ * @rc_edge_factor: Factor to determine if an edge is present based on the
+ * bits produced
+ * @rc_quant_incr_limit1: Slow down incrementing once the range reaches this
+ * value
+ * @rc_quant_incr_limit0: Slow down incrementing once the range reaches this
+ * value
+ * @initial_xmit_delay: Number of pixels to delay the initial transmission
+ * @initial_dec_delay: Initial decoder delay, number of pixel times that the
+ * decoer accumulates data in its rate buffer before
+ * starting to decode and output pixels.
+ * @block_pred_enable: True if block prediction is used to code any groups
+ * within the picture.
+ * False if BP not used
+ * @first_line_bpg_offset: Number of additional bits allocated for each group on
+ * the first line of slice.
+ * @initial_offset: Value to use for RC model offset at slice start
+ * @rc_buf_thresh: Thresholds defining each of the buffer ranges
+ * @rc_range_params: Parameters for each of the RC ranges defined in
+ * &struct drm_dsc_rc_range_parameters
+ * @rc_model_size: Total size of RC model
+ * @flatness_min_qp: Minimum QP where flatness information is sent
+ * @flatness_max_qp: Maximum QP where flatness information is sent
+ * @initial_scale_value: Initial value for the scale factor
+ * @scale_decrement_interval: Specifies number of group times between
+ * decrementing the scale factor at beginning
+ * of a slice.
+ * @scale_increment_interval: Number of group times between incrementing
+ * the scale factor value used at the beginning
+ * of a slice.
+ * @nfl_bpg_offset: Non first line BPG offset to be used
+ * @slice_bpg_offset: BPG offset used to enforce slice bit
+ * @final_offset: Final RC linear transformation offset value
+ * @vbr_enable: True if VBR mode is enabled, false if disabled
+ * @mux_word_size: Mux word size (in bits) for SSM mode
+ * @slice_chunk_size: The (max) size in bytes of the "chunks" that are
+ * used in slice multiplexing.
+ * @rc_bits: Rate control buffer size in bits
+ * @dsc_version_minor: DSC minor version
+ * @dsc_version_major: DSC major version
+ * @native_422: True if Native 4:2:2 supported, else false
+ * @native_420: True if Native 4:2:0 supported else false.
+ * @second_line_bpg_offset: Additional bits/grp for seconnd line of slice for
+ * native 4:2:0
+ * @nsl_bpg_offset: Num of bits deallocated for each grp that is not in second
+ * line of slice
+ * @second_line_offset_adj: Offset adjustment for second line in Native 4:2:0
+ * mode
+ */
struct drm_dsc_config {
- /* Bits / component for previous reconstructed line buffer */
u8 line_buf_depth;
- /* Bits per component to code (must be 8, 10, or 12) */
u8 bits_per_component;
- /*
- * Flag indicating to do RGB - YCoCg conversion
- * and back (should be 1 for RGB input)
- */
bool convert_rgb;
u8 slice_count;
- /* Slice Width */
u16 slice_width;
- /* Slice Height */
u16 slice_height;
- /*
- * 4:2:2 enable mode (from PPS, 4:2:2 conversion happens
- * outside of DSC encode/decode algorithm)
- */
bool enable422;
- /* Picture Width */
u16 pic_width;
- /* Picture Height */
u16 pic_height;
- /* Offset to bits/group used by RC to determine QP adjustment */
u8 rc_tgt_offset_high;
- /* Offset to bits/group used by RC to determine QP adjustment */
u8 rc_tgt_offset_low;
- /* Bits/pixel target << 4 (ie., 4 fractional bits) */
u16 bits_per_pixel;
- /*
- * Factor to determine if an edge is present based
- * on the bits produced
- */
u8 rc_edge_factor;
- /* Slow down incrementing once the range reaches this value */
u8 rc_quant_incr_limit1;
- /* Slow down incrementing once the range reaches this value */
u8 rc_quant_incr_limit0;
- /* Number of pixels to delay the initial transmission */
u16 initial_xmit_delay;
- /* Number of pixels to delay the VLD on the decoder,not including SSM */
u16 initial_dec_delay;
- /* Block prediction enable */
bool block_pred_enable;
- /* Bits/group offset to use for first line of the slice */
u8 first_line_bpg_offset;
- /* Value to use for RC model offset at slice start */
u16 initial_offset;
- /* Thresholds defining each of the buffer ranges */
u16 rc_buf_thresh[DSC_NUM_BUF_RANGES - 1];
- /* Parameters for each of the RC ranges */
struct drm_dsc_rc_range_parameters rc_range_params[DSC_NUM_BUF_RANGES];
- /* Total size of RC model */
u16 rc_model_size;
- /* Minimum QP where flatness information is sent */
u8 flatness_min_qp;
- /* Maximum QP where flatness information is sent */
u8 flatness_max_qp;
- /* Initial value for scale factor */
u8 initial_scale_value;
- /* Decrement scale factor every scale_decrement_interval groups */
u16 scale_decrement_interval;
- /* Increment scale factor every scale_increment_interval groups */
u16 scale_increment_interval;
- /* Non-first line BPG offset to use */
u16 nfl_bpg_offset;
- /* BPG offset used to enforce slice bit */
u16 slice_bpg_offset;
- /* Final RC linear transformation offset value */
u16 final_offset;
- /* Enable on-off VBR (ie., disable stuffing bits) */
bool vbr_enable;
- /* Mux word size (in bits) for SSM mode */
u8 mux_word_size;
- /*
- * The (max) size in bytes of the "chunks" that are
- * used in slice multiplexing
- */
u16 slice_chunk_size;
- /* Rate Control buffer siz in bits */
u16 rc_bits;
- /* DSC Minor Version */
u8 dsc_version_minor;
- /* DSC Major version */
u8 dsc_version_major;
- /* Native 4:2:2 support */
bool native_422;
- /* Native 4:2:0 support */
bool native_420;
- /* Additional bits/grp for seconnd line of slice for native 4:2:0 */
u8 second_line_bpg_offset;
- /* Num of bits deallocated for each grp that is not in second line of slice */
u16 nsl_bpg_offset;
- /* Offset adj fr second line in Native 4:2:0 mode */
u16 second_line_offset_adj;
};
@@ -468,10 +485,13 @@ struct drm_dsc_picture_parameter_set {
* This structure represents the DSC PPS infoframe required to send the Picture
* Parameter Set metadata required before enabling VESA Display Stream
* Compression. This is based on the DP Secondary Data Packet structure and
- * comprises of SDP Header as defined in drm_dp_helper.h and PPS payload.
+ * comprises of SDP Header as defined &struct struct dp_sdp_header in drm_dp_helper.h
+ * and PPS payload defined in &struct drm_dsc_picture_parameter_set.
*
- * @pps_header: Header for PPS as per DP SDP header format
+ * @pps_header: Header for PPS as per DP SDP header format of type
+ * &struct dp_sdp_header
* @pps_payload: PPS payload fields as per DSC specification Table 4-1
+ * as represented in &struct drm_dsc_picture_parameter_set
*/
struct drm_dsc_pps_infoframe {
struct dp_sdp_header pps_header;
--
2.19.1
[View Less]