Centos-kernel-stream-9/include/linux/hdmi.h

446 lines
12 KiB
C
Raw Normal View History

/*
* Copyright (C) 2012 Avionic Design GmbH
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sub license,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#ifndef __LINUX_HDMI_H_
#define __LINUX_HDMI_H_
#include <linux/types.h>
#include <linux/device.h>
enum hdmi_packet_type {
HDMI_PACKET_TYPE_NULL = 0x00,
HDMI_PACKET_TYPE_AUDIO_CLOCK_REGEN = 0x01,
HDMI_PACKET_TYPE_AUDIO_SAMPLE = 0x02,
HDMI_PACKET_TYPE_GENERAL_CONTROL = 0x03,
HDMI_PACKET_TYPE_ACP = 0x04,
HDMI_PACKET_TYPE_ISRC1 = 0x05,
HDMI_PACKET_TYPE_ISRC2 = 0x06,
HDMI_PACKET_TYPE_ONE_BIT_AUDIO_SAMPLE = 0x07,
HDMI_PACKET_TYPE_DST_AUDIO = 0x08,
HDMI_PACKET_TYPE_HBR_AUDIO_STREAM = 0x09,
HDMI_PACKET_TYPE_GAMUT_METADATA = 0x0a,
/* + enum hdmi_infoframe_type */
};
enum hdmi_infoframe_type {
HDMI_INFOFRAME_TYPE_VENDOR = 0x81,
HDMI_INFOFRAME_TYPE_AVI = 0x82,
HDMI_INFOFRAME_TYPE_SPD = 0x83,
HDMI_INFOFRAME_TYPE_AUDIO = 0x84,
HDMI_INFOFRAME_TYPE_DRM = 0x87,
};
#define HDMI_IEEE_OUI 0x000c03
#define HDMI_FORUM_IEEE_OUI 0xc45dd8
#define HDMI_INFOFRAME_HEADER_SIZE 4
#define HDMI_AVI_INFOFRAME_SIZE 13
#define HDMI_SPD_INFOFRAME_SIZE 25
#define HDMI_AUDIO_INFOFRAME_SIZE 10
#define HDMI_DRM_INFOFRAME_SIZE 26
#define HDMI_VENDOR_INFOFRAME_SIZE 4
#define HDMI_INFOFRAME_SIZE(type) \
(HDMI_INFOFRAME_HEADER_SIZE + HDMI_ ## type ## _INFOFRAME_SIZE)
struct hdmi_any_infoframe {
enum hdmi_infoframe_type type;
unsigned char version;
unsigned char length;
};
enum hdmi_colorspace {
HDMI_COLORSPACE_RGB,
HDMI_COLORSPACE_YUV422,
HDMI_COLORSPACE_YUV444,
HDMI_COLORSPACE_YUV420,
HDMI_COLORSPACE_RESERVED4,
HDMI_COLORSPACE_RESERVED5,
HDMI_COLORSPACE_RESERVED6,
HDMI_COLORSPACE_IDO_DEFINED,
};
enum hdmi_scan_mode {
HDMI_SCAN_MODE_NONE,
HDMI_SCAN_MODE_OVERSCAN,
HDMI_SCAN_MODE_UNDERSCAN,
HDMI_SCAN_MODE_RESERVED,
};
enum hdmi_colorimetry {
HDMI_COLORIMETRY_NONE,
HDMI_COLORIMETRY_ITU_601,
HDMI_COLORIMETRY_ITU_709,
HDMI_COLORIMETRY_EXTENDED,
};
enum hdmi_picture_aspect {
HDMI_PICTURE_ASPECT_NONE,
HDMI_PICTURE_ASPECT_4_3,
HDMI_PICTURE_ASPECT_16_9,
HDMI_PICTURE_ASPECT_64_27,
HDMI_PICTURE_ASPECT_256_135,
HDMI_PICTURE_ASPECT_RESERVED,
};
enum hdmi_active_aspect {
HDMI_ACTIVE_ASPECT_16_9_TOP = 2,
HDMI_ACTIVE_ASPECT_14_9_TOP = 3,
HDMI_ACTIVE_ASPECT_16_9_CENTER = 4,
HDMI_ACTIVE_ASPECT_PICTURE = 8,
HDMI_ACTIVE_ASPECT_4_3 = 9,
HDMI_ACTIVE_ASPECT_16_9 = 10,
HDMI_ACTIVE_ASPECT_14_9 = 11,
HDMI_ACTIVE_ASPECT_4_3_SP_14_9 = 13,
HDMI_ACTIVE_ASPECT_16_9_SP_14_9 = 14,
HDMI_ACTIVE_ASPECT_16_9_SP_4_3 = 15,
};
enum hdmi_extended_colorimetry {
HDMI_EXTENDED_COLORIMETRY_XV_YCC_601,
HDMI_EXTENDED_COLORIMETRY_XV_YCC_709,
HDMI_EXTENDED_COLORIMETRY_S_YCC_601,
HDMI_EXTENDED_COLORIMETRY_OPYCC_601,
HDMI_EXTENDED_COLORIMETRY_OPRGB,
/* The following EC values are only defined in CEA-861-F. */
HDMI_EXTENDED_COLORIMETRY_BT2020_CONST_LUM,
HDMI_EXTENDED_COLORIMETRY_BT2020,
HDMI_EXTENDED_COLORIMETRY_RESERVED,
};
enum hdmi_quantization_range {
HDMI_QUANTIZATION_RANGE_DEFAULT,
HDMI_QUANTIZATION_RANGE_LIMITED,
HDMI_QUANTIZATION_RANGE_FULL,
HDMI_QUANTIZATION_RANGE_RESERVED,
};
/* non-uniform picture scaling */
enum hdmi_nups {
HDMI_NUPS_UNKNOWN,
HDMI_NUPS_HORIZONTAL,
HDMI_NUPS_VERTICAL,
HDMI_NUPS_BOTH,
};
enum hdmi_ycc_quantization_range {
HDMI_YCC_QUANTIZATION_RANGE_LIMITED,
HDMI_YCC_QUANTIZATION_RANGE_FULL,
};
enum hdmi_content_type {
HDMI_CONTENT_TYPE_GRAPHICS,
HDMI_CONTENT_TYPE_PHOTO,
HDMI_CONTENT_TYPE_CINEMA,
HDMI_CONTENT_TYPE_GAME,
};
enum hdmi_metadata_type {
HDMI_STATIC_METADATA_TYPE1 = 0,
};
enum hdmi_eotf {
HDMI_EOTF_TRADITIONAL_GAMMA_SDR,
HDMI_EOTF_TRADITIONAL_GAMMA_HDR,
HDMI_EOTF_SMPTE_ST2084,
HDMI_EOTF_BT_2100_HLG,
};
struct hdmi_avi_infoframe {
enum hdmi_infoframe_type type;
unsigned char version;
unsigned char length;
enum hdmi_colorspace colorspace;
enum hdmi_scan_mode scan_mode;
enum hdmi_colorimetry colorimetry;
enum hdmi_picture_aspect picture_aspect;
enum hdmi_active_aspect active_aspect;
bool itc;
enum hdmi_extended_colorimetry extended_colorimetry;
enum hdmi_quantization_range quantization_range;
enum hdmi_nups nups;
unsigned char video_code;
enum hdmi_ycc_quantization_range ycc_quantization_range;
enum hdmi_content_type content_type;
unsigned char pixel_repeat;
unsigned short top_bar;
unsigned short bottom_bar;
unsigned short left_bar;
unsigned short right_bar;
};
/* DRM Infoframe as per CTA 861.G spec */
struct hdmi_drm_infoframe {
enum hdmi_infoframe_type type;
unsigned char version;
unsigned char length;
enum hdmi_eotf eotf;
enum hdmi_metadata_type metadata_type;
struct {
u16 x, y;
} display_primaries[3];
struct {
u16 x, y;
} white_point;
u16 max_display_mastering_luminance;
u16 min_display_mastering_luminance;
u16 max_cll;
u16 max_fall;
};
void hdmi_avi_infoframe_init(struct hdmi_avi_infoframe *frame);
ssize_t hdmi_avi_infoframe_pack(struct hdmi_avi_infoframe *frame, void *buffer,
size_t size);
ssize_t hdmi_avi_infoframe_pack_only(const struct hdmi_avi_infoframe *frame,
void *buffer, size_t size);
int hdmi_avi_infoframe_check(struct hdmi_avi_infoframe *frame);
int hdmi_drm_infoframe_init(struct hdmi_drm_infoframe *frame);
ssize_t hdmi_drm_infoframe_pack(struct hdmi_drm_infoframe *frame, void *buffer,
size_t size);
ssize_t hdmi_drm_infoframe_pack_only(const struct hdmi_drm_infoframe *frame,
void *buffer, size_t size);
int hdmi_drm_infoframe_check(struct hdmi_drm_infoframe *frame);
int hdmi_drm_infoframe_unpack_only(struct hdmi_drm_infoframe *frame,
const void *buffer, size_t size);
enum hdmi_spd_sdi {
HDMI_SPD_SDI_UNKNOWN,
HDMI_SPD_SDI_DSTB,
HDMI_SPD_SDI_DVDP,
HDMI_SPD_SDI_DVHS,
HDMI_SPD_SDI_HDDVR,
HDMI_SPD_SDI_DVC,
HDMI_SPD_SDI_DSC,
HDMI_SPD_SDI_VCD,
HDMI_SPD_SDI_GAME,
HDMI_SPD_SDI_PC,
HDMI_SPD_SDI_BD,
HDMI_SPD_SDI_SACD,
HDMI_SPD_SDI_HDDVD,
HDMI_SPD_SDI_PMP,
};
struct hdmi_spd_infoframe {
enum hdmi_infoframe_type type;
unsigned char version;
unsigned char length;
char vendor[8];
char product[16];
enum hdmi_spd_sdi sdi;
};
int hdmi_spd_infoframe_init(struct hdmi_spd_infoframe *frame,
const char *vendor, const char *product);
ssize_t hdmi_spd_infoframe_pack(struct hdmi_spd_infoframe *frame, void *buffer,
size_t size);
ssize_t hdmi_spd_infoframe_pack_only(const struct hdmi_spd_infoframe *frame,
void *buffer, size_t size);
int hdmi_spd_infoframe_check(struct hdmi_spd_infoframe *frame);
enum hdmi_audio_coding_type {
HDMI_AUDIO_CODING_TYPE_STREAM,
HDMI_AUDIO_CODING_TYPE_PCM,
HDMI_AUDIO_CODING_TYPE_AC3,
HDMI_AUDIO_CODING_TYPE_MPEG1,
HDMI_AUDIO_CODING_TYPE_MP3,
HDMI_AUDIO_CODING_TYPE_MPEG2,
HDMI_AUDIO_CODING_TYPE_AAC_LC,
HDMI_AUDIO_CODING_TYPE_DTS,
HDMI_AUDIO_CODING_TYPE_ATRAC,
HDMI_AUDIO_CODING_TYPE_DSD,
HDMI_AUDIO_CODING_TYPE_EAC3,
HDMI_AUDIO_CODING_TYPE_DTS_HD,
HDMI_AUDIO_CODING_TYPE_MLP,
HDMI_AUDIO_CODING_TYPE_DST,
HDMI_AUDIO_CODING_TYPE_WMA_PRO,
HDMI_AUDIO_CODING_TYPE_CXT,
};
enum hdmi_audio_sample_size {
HDMI_AUDIO_SAMPLE_SIZE_STREAM,
HDMI_AUDIO_SAMPLE_SIZE_16,
HDMI_AUDIO_SAMPLE_SIZE_20,
HDMI_AUDIO_SAMPLE_SIZE_24,
};
enum hdmi_audio_sample_frequency {
HDMI_AUDIO_SAMPLE_FREQUENCY_STREAM,
HDMI_AUDIO_SAMPLE_FREQUENCY_32000,
HDMI_AUDIO_SAMPLE_FREQUENCY_44100,
HDMI_AUDIO_SAMPLE_FREQUENCY_48000,
HDMI_AUDIO_SAMPLE_FREQUENCY_88200,
HDMI_AUDIO_SAMPLE_FREQUENCY_96000,
HDMI_AUDIO_SAMPLE_FREQUENCY_176400,
HDMI_AUDIO_SAMPLE_FREQUENCY_192000,
};
enum hdmi_audio_coding_type_ext {
/* Refer to Audio Coding Type (CT) field in Data Byte 1 */
HDMI_AUDIO_CODING_TYPE_EXT_CT,
/*
* The next three CXT values are defined in CEA-861-E only.
* They do not exist in older versions, and in CEA-861-F they are
* defined as 'Not in use'.
*/
HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC,
HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC_V2,
HDMI_AUDIO_CODING_TYPE_EXT_MPEG_SURROUND,
/* The following CXT values are only defined in CEA-861-F. */
HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC,
HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_V2,
HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC,
HDMI_AUDIO_CODING_TYPE_EXT_DRA,
HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_SURROUND,
HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC_SURROUND = 10,
};
struct hdmi_audio_infoframe {
enum hdmi_infoframe_type type;
unsigned char version;
unsigned char length;
unsigned char channels;
enum hdmi_audio_coding_type coding_type;
enum hdmi_audio_sample_size sample_size;
enum hdmi_audio_sample_frequency sample_frequency;
enum hdmi_audio_coding_type_ext coding_type_ext;
unsigned char channel_allocation;
unsigned char level_shift_value;
bool downmix_inhibit;
};
int hdmi_audio_infoframe_init(struct hdmi_audio_infoframe *frame);
ssize_t hdmi_audio_infoframe_pack(struct hdmi_audio_infoframe *frame,
void *buffer, size_t size);
ssize_t hdmi_audio_infoframe_pack_only(const struct hdmi_audio_infoframe *frame,
void *buffer, size_t size);
Merge DRM changes from upstream v6.0.8..v6.1 NOTE: This commit does not compile due to missing RHEL-specific fix-ups, which are split out into separate Git commits following this one. If git bisect selected this commit, run "git bisect skip" and try again. Repeat this until it selects a commit which compiles. This commit was generated using: rhdrm-merge-drm v6.1 2160457 Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2160457 Conflicts: drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c drivers/gpu/drm/amd/amdgpu/amdgpu_job.c drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c drivers/gpu/drm/amd/amdkfd/kfd_migrate.c drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c drivers/gpu/drm/amd/display/dc/dcn321/dcn321_resource.c drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c drivers/gpu/drm/ast/ast_mode.c drivers/gpu/drm/i915/display/intel_display.c drivers/gpu/drm/i915/gt/intel_gt_sysfs.c drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c drivers/gpu/drm/i915/gt/intel_workarounds.c drivers/gpu/drm/i915/gt/uc/intel_guc.c drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c drivers/gpu/drm/i915/gt/uc/intel_guc_log.c drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c drivers/gpu/drm/i915/gvt/kvmgt.c drivers/gpu/drm/mgag200/mgag200_pll.c Conflict resolution: diff --cc drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h index ecb8db731081,253ea6b159df..6ebed4d58ced --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h @@@ -162,6 -162,7 +162,8 @@@ #define AMDGPU_VCN_FW_LOGGING_FLAG (1 << 10) #define AMDGPU_VCN_SMU_VERSION_INFO_FLAG (1 << 11) #define AMDGPU_VCN_SMU_DPM_INTERFACE_FLAG (1 << 11) ++#define AMDGPU_VCN_SMU_DPM_INTERFACE_FLAG (1 << 11) + #define AMDGPU_VCN_VF_RB_SETUP_FLAG (1 << 14) #define AMDGPU_VCN_IB_FLAG_DECODE_BUFFER 0x00000001 #define AMDGPU_VCN_CMD_FLAG_MSG_BUFFER 0x00000001 diff --cc drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c index 3128c111c619,d0b46a3e0155..6f6f6e5ad14b --- a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c +++ b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c @@@ -206,8 -206,7 +206,8 @@@ static bool dcn32_check_no_memory_reque */ static uint32_t dcn32_calculate_cab_allocation(struct dc *dc, struct dc_state *ctx) { - uint8_t i; - int j; ++ + int i, j; struct dc_stream_state *stream = NULL; struct dc_plane_state *plane = NULL; uint32_t cursor_size = 0; @@@ -237,24 -236,24 +237,27 @@@ mblk_width = DCN3_2_MBLK_WIDTH; mblk_height = bytes_per_pixel == 4 ? DCN3_2_MBLK_HEIGHT_4BPE : DCN3_2_MBLK_HEIGHT_8BPE; ++ /* full_vp_width_blk_aligned = FLOOR(vp_x_start + full_vp_width + blk_width - 1, blk_width) - * FLOOR(vp_x_start, blk_width) * * mall_alloc_width_blk_aligned_l/c = full_vp_width_blk_aligned_l/c */ mall_alloc_width_blk_aligned = ((pipe->plane_res.scl_data.viewport.x + - pipe->plane_res.scl_data.viewport.width + mblk_width - 1) / mblk_width * mblk_width) + + pipe->plane_res.scl_data.viewport.width + mblk_width - 1) / mblk_width * mblk_width) - (pipe->plane_res.scl_data.viewport.x / mblk_width * mblk_width); ++ /* full_vp_height_blk_aligned = FLOOR(vp_y_start + full_vp_height + blk_height - 1, blk_height) - * FLOOR(vp_y_start, blk_height) * * mall_alloc_height_blk_aligned_l/c = full_vp_height_blk_aligned_l/c */ mall_alloc_height_blk_aligned = ((pipe->plane_res.scl_data.viewport.y + - pipe->plane_res.scl_data.viewport.height + mblk_height - 1) / mblk_height * mblk_height) + + pipe->plane_res.scl_data.viewport.height + mblk_height - 1) / mblk_height * mblk_height) - (pipe->plane_res.scl_data.viewport.y / mblk_height * mblk_height); ++ num_mblks = ((mall_alloc_width_blk_aligned + mblk_width - 1) / mblk_width) * ((mall_alloc_height_blk_aligned + mblk_height - 1) / mblk_height); diff --cc drivers/gpu/drm/ast/ast_mode.c index b93181a42048,1bc0220e6783..ae5a4cce972f --- a/drivers/gpu/drm/ast/ast_mode.c +++ b/drivers/gpu/drm/ast/ast_mode.c @@@ -42,9 -40,8 +42,8 @@@ #include <drm/drm_fourcc.h> #include <drm/drm_gem_atomic_helper.h> #include <drm/drm_gem_framebuffer_helper.h> -#include <drm/drm_gem_vram_helper.h> +#include <drm/drm_gem_shmem_helper.h> #include <drm/drm_managed.h> - #include <drm/drm_plane_helper.h> #include <drm/drm_probe_helper.h> #include <drm/drm_simple_kms_helper.h> @@@ -604,31 -550,31 +603,31 @@@ static const uint32_t ast_primary_plane static int ast_primary_plane_helper_atomic_check(struct drm_plane *plane, struct drm_atomic_state *state) { - struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state, - plane); - struct drm_crtc_state *crtc_state; - struct ast_crtc_state *ast_crtc_state; + struct drm_device *dev = plane->dev; + struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state, plane); + struct drm_crtc_state *new_crtc_state = NULL; + struct ast_crtc_state *new_ast_crtc_state; int ret; - if (!new_plane_state->crtc) - return 0; - - crtc_state = drm_atomic_get_new_crtc_state(state, - new_plane_state->crtc); + if (new_plane_state->crtc) + new_crtc_state = drm_atomic_get_new_crtc_state(state, new_plane_state->crtc); - ret = drm_atomic_helper_check_plane_state(new_plane_state, crtc_state, + ret = drm_atomic_helper_check_plane_state(new_plane_state, new_crtc_state, - DRM_PLANE_HELPER_NO_SCALING, - DRM_PLANE_HELPER_NO_SCALING, + DRM_PLANE_NO_SCALING, + DRM_PLANE_NO_SCALING, false, true); - if (ret) + if (ret) { return ret; + } else if (!new_plane_state->visible) { + if (drm_WARN_ON(dev, new_plane_state->crtc)) /* cannot legally happen */ + return -EINVAL; + else + return 0; + } - if (!new_plane_state->visible) - return 0; - - ast_crtc_state = to_ast_crtc_state(crtc_state); + new_ast_crtc_state = to_ast_crtc_state(new_crtc_state); - ast_crtc_state->format = new_plane_state->fb->format; + new_ast_crtc_state->format = new_plane_state->fb->format; return 0; } @@@ -850,22 -774,29 +849,22 @@@ static const uint32_t ast_cursor_plane_ static int ast_cursor_plane_helper_atomic_check(struct drm_plane *plane, struct drm_atomic_state *state) { - struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state, - plane); - struct drm_framebuffer *fb = new_plane_state->fb; - struct drm_crtc_state *crtc_state; + struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state, plane); + struct drm_framebuffer *new_fb = new_plane_state->fb; + struct drm_crtc_state *new_crtc_state = NULL; int ret; - if (!new_plane_state->crtc) - return 0; - - crtc_state = drm_atomic_get_new_crtc_state(state, - new_plane_state->crtc); + if (new_plane_state->crtc) + new_crtc_state = drm_atomic_get_new_crtc_state(state, new_plane_state->crtc); - ret = drm_atomic_helper_check_plane_state(new_plane_state, crtc_state, + ret = drm_atomic_helper_check_plane_state(new_plane_state, new_crtc_state, - DRM_PLANE_HELPER_NO_SCALING, - DRM_PLANE_HELPER_NO_SCALING, + DRM_PLANE_NO_SCALING, + DRM_PLANE_NO_SCALING, true, true); - if (ret) + if (ret || !new_plane_state->visible) return ret; - if (!new_plane_state->visible) - return 0; - - if (fb->width > AST_MAX_HWC_WIDTH || fb->height > AST_MAX_HWC_HEIGHT) + if (new_fb->width > AST_MAX_HWC_WIDTH || new_fb->height > AST_MAX_HWC_HEIGHT) return -EINVAL; return 0; diff --cc drivers/gpu/drm/i915/display/intel_display.c index bd629f2da6eb,de77054195c6..d3bfa2a675b8 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@@ -3724,9 -3730,9 +3730,10 @@@ static u8 bigjoiner_pipes(struct drm_i9 else if (DISPLAY_VER(i915) >= 11) pipes = BIT(PIPE_B) | BIT(PIPE_C); else ++ pipes = 0; - return pipes & RUNTIME_INFO(i915)->pipe_mask; + return pipes & INTEL_INFO(i915)->display.pipe_mask; } static bool transcoder_ddi_func_is_enabled(struct drm_i915_private *dev_priv, diff --cc drivers/gpu/drm/i915/gt/intel_gt_sysfs.c index 1e52ea387dc5,d651ccd0ab20..fb733fa8a491 --- a/drivers/gpu/drm/i915/gt/intel_gt_sysfs.c +++ b/drivers/gpu/drm/i915/gt/intel_gt_sysfs.c @@@ -22,14 -22,11 +22,9 @@@ bool is_object_gt(struct kobject *kobj return !strncmp(kobj->name, "gt", 2); } - static struct intel_gt *kobj_to_gt(struct kobject *kobj) - { - return container_of(kobj, struct intel_gt, sysfs_gt); - } - -struct intel_gt *intel_gt_sysfs_get_drvdata(struct device *dev, +struct intel_gt *intel_gt_sysfs_get_drvdata(struct kobject *kobj, const char *name) { - struct kobject *kobj = &dev->kobj; - /* * We are interested at knowing from where the interface * has been called, whether it's called from gt/ or from diff --cc drivers/gpu/drm/i915/gt/intel_gt_sysfs.h index 6bee2c6a894d,6232923a420d..c3a123faee98 --- a/drivers/gpu/drm/i915/gt/intel_gt_sysfs.h +++ b/drivers/gpu/drm/i915/gt/intel_gt_sysfs.h @@@ -22,9 -23,14 +23,14 @@@ intel_gt_create_kobj(struct intel_gt *g struct kobject *dir, const char *name); + static inline struct intel_gt *kobj_to_gt(struct kobject *kobj) + { + return container_of(kobj, struct intel_gt, sysfs_gt); + } + void intel_gt_sysfs_register(struct intel_gt *gt); void intel_gt_sysfs_unregister(struct intel_gt *gt); -struct intel_gt *intel_gt_sysfs_get_drvdata(struct device *dev, +struct intel_gt *intel_gt_sysfs_get_drvdata(struct kobject *kobj, const char *name); #endif /* SYSFS_GT_H */ diff --cc drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c index 1fef52e7c2c8,180dd6f3ef57..426da98a96ed --- a/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c +++ b/drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.c @@@ -682,10 -726,37 +682,39 @@@ static const struct attribute *media_pe NULL }; + static ssize_t + default_min_freq_mhz_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) + { + struct intel_gt *gt = kobj_to_gt(kobj->parent); + + return sysfs_emit(buf, "%u\n", gt->defaults.min_freq); + } + + static struct kobj_attribute default_min_freq_mhz = + __ATTR(rps_min_freq_mhz, 0444, default_min_freq_mhz_show, NULL); + + static ssize_t + default_max_freq_mhz_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) + { + struct intel_gt *gt = kobj_to_gt(kobj->parent); + + return sysfs_emit(buf, "%u\n", gt->defaults.max_freq); + } + + static struct kobj_attribute default_max_freq_mhz = + __ATTR(rps_max_freq_mhz, 0444, default_max_freq_mhz_show, NULL); + + static const struct attribute * const rps_defaults_attrs[] = { + &default_min_freq_mhz.attr, + &default_max_freq_mhz.attr, + NULL + }; + -static int intel_sysfs_rps_init(struct intel_gt *gt, struct kobject *kobj, - const struct attribute * const *attrs) +static int intel_sysfs_rps_init(struct intel_gt *gt, struct kobject *kobj) { + const struct attribute * const *attrs; + struct attribute *vlv_attr; int ret; if (GRAPHICS_VER(gt->i915) < 6) diff --cc drivers/gpu/drm/i915/gt/intel_lrc.c index 070cec4ff8a4,3955292483a6..d3ac73c3559f --- a/drivers/gpu/drm/i915/gt/intel_lrc.c +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c @@@ -1278,12 -1298,13 +1298,17 @@@ gen12_emit_indirect_ctx_rcs(const struc /* hsdes: 1809175790 */ if (!HAS_FLAT_CCS(ce->engine->i915)) - cs = gen12_emit_aux_table_inv(cs, GEN12_GFX_CCS_AUX_NV); + cs = gen12_emit_aux_table_inv(ce->engine->gt, + cs, GEN12_GFX_CCS_AUX_NV); + + /* Wa_16014892111 */ + if (IS_DG2(ce->engine->i915)) + cs = dg2_emit_draw_watermark_setting(cs); + /* Wa_16014892111 */ + if (IS_DG2(ce->engine->i915)) + cs = dg2_emit_draw_watermark_setting(cs); + return cs; } diff --cc drivers/gpu/drm/i915/gt/intel_workarounds.c index 1b6479b5bd32,a821e3d405db..21cd1a4e1823 --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c @@@ -2108,15 -2108,18 +2108,22 @@@ rcs_engine_wa_init(struct intel_engine_ if (IS_DG2_GRAPHICS_STEP(i915, G11, STEP_A0, STEP_B0)) { /* Wa_14013392000:dg2_g11 */ wa_masked_en(wal, GEN7_ROW_CHICKEN2, GEN12_ENABLE_LARGE_GRF_MODE); + } - /* Wa_16011620976:dg2_g11 */ - wa_write_or(wal, LSC_CHICKEN_BIT_0_UDW, DIS_CHAIN_2XSIMD8); + if (IS_DG2_GRAPHICS_STEP(i915, G10, STEP_B0, STEP_FOREVER) || + IS_DG2_G11(i915) || IS_DG2_G12(i915)) { + /* Wa_1509727124:dg2 */ + wa_masked_en(wal, GEN10_SAMPLER_MODE, + SC_DISABLE_POWER_OPTIMIZATION_EBB); } + if (IS_DG2_GRAPHICS_STEP(i915, G10, STEP_B0, STEP_FOREVER) || + IS_DG2_G11(i915) || IS_DG2_G12(i915)) { + /* Wa_1509727124:dg2 */ + wa_masked_en(wal, GEN10_SAMPLER_MODE, + SC_DISABLE_POWER_OPTIMIZATION_EBB); + } + if (IS_DG2_GRAPHICS_STEP(i915, G10, STEP_A0, STEP_B0) || IS_DG2_GRAPHICS_STEP(i915, G11, STEP_A0, STEP_B0)) { /* Wa_14012419201:dg2 */ diff --cc drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c index 844dee09a321,1db59eeb34db..1ac0e66d39e5 --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c @@@ -4209,103 -4177,18 +4185,111 @@@ int intel_guc_submission_setup(struct i return 0; } +struct scheduling_policy { + /* internal data */ + u32 max_words, num_words; + u32 count; + /* API data */ + struct guc_update_scheduling_policy h2g; +}; + +static u32 __guc_scheduling_policy_action_size(struct scheduling_policy *policy) +{ + u32 *start = (void *)&policy->h2g; + u32 *end = policy->h2g.data + policy->num_words; + size_t delta = end - start; + + return delta; +} + +static struct scheduling_policy *__guc_scheduling_policy_start_klv(struct scheduling_policy *policy) +{ + policy->h2g.header.action = INTEL_GUC_ACTION_UPDATE_SCHEDULING_POLICIES_KLV; + policy->max_words = ARRAY_SIZE(policy->h2g.data); + policy->num_words = 0; + policy->count = 0; + + return policy; +} + +static void __guc_scheduling_policy_add_klv(struct scheduling_policy *policy, + u32 action, u32 *data, u32 len) +{ + u32 *klv_ptr = policy->h2g.data + policy->num_words; + + GEM_BUG_ON((policy->num_words + 1 + len) > policy->max_words); + *(klv_ptr++) = FIELD_PREP(GUC_KLV_0_KEY, action) | + FIELD_PREP(GUC_KLV_0_LEN, len); + memcpy(klv_ptr, data, sizeof(u32) * len); + policy->num_words += 1 + len; + policy->count++; +} + +static int __guc_action_set_scheduling_policies(struct intel_guc *guc, + struct scheduling_policy *policy) +{ + int ret; + + ret = intel_guc_send(guc, (u32 *)&policy->h2g, + __guc_scheduling_policy_action_size(policy)); + if (ret < 0) + return ret; + + if (ret != policy->count) { + drm_warn(&guc_to_gt(guc)->i915->drm, "GuC global scheduler policy processed %d of %d KLVs!", + ret, policy->count); + if (ret > policy->count) + return -EPROTO; + } + + return 0; +} + +static int guc_init_global_schedule_policy(struct intel_guc *guc) +{ + struct scheduling_policy policy; + struct intel_gt *gt = guc_to_gt(guc); + intel_wakeref_t wakeref; + int ret = 0; + + if (GET_UC_VER(guc) < MAKE_UC_VER(70, 3, 0)) + return 0; + + __guc_scheduling_policy_start_klv(&policy); + + with_intel_runtime_pm(&gt->i915->runtime_pm, wakeref) { + u32 yield[] = { + GLOBAL_SCHEDULE_POLICY_RC_YIELD_DURATION, + GLOBAL_SCHEDULE_POLICY_RC_YIELD_RATIO, + }; + + __guc_scheduling_policy_add_klv(&policy, + GUC_SCHEDULING_POLICIES_KLV_ID_RENDER_COMPUTE_YIELD, + yield, ARRAY_SIZE(yield)); + + ret = __guc_action_set_scheduling_policies(guc, &policy); + if (ret) + i915_probe_error(gt->i915, + "Failed to configure global scheduling policies: %pe!\n", + ERR_PTR(ret)); + } + + return ret; +} + void intel_guc_submission_enable(struct intel_guc *guc) { + struct intel_gt *gt = guc_to_gt(guc); + + /* Enable and route to GuC */ + if (GRAPHICS_VER(gt->i915) >= 12) + intel_uncore_write(gt->uncore, GEN12_GUC_SEM_INTR_ENABLES, + GUC_SEM_INTR_ROUTE_TO_GUC | + GUC_SEM_INTR_ENABLE_ALL); + guc_init_lrc_mapping(guc); guc_init_engine_stats(guc); + guc_init_global_schedule_policy(guc); } void intel_guc_submission_disable(struct intel_guc *guc) diff --cc drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c index fb309ae43001,b91ad4aede1f..24aac2f32dd1 --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c @@@ -339,6 -347,6 +347,7 @@@ bad fw_blobs[i].blob.patch); uc_fw->file_selected.path = NULL; ++ } } } diff --cc drivers/gpu/drm/panel/panel-sitronix-st7701.c index 098955526b68,c481daa4bbce..38a0ba4a1b3f --- a/drivers/gpu/drm/panel/panel-sitronix-st7701.c +++ b/drivers/gpu/drm/panel/panel-sitronix-st7701.c @@@ -384,18 -762,10 +762,18 @@@ static int st7701_dsi_probe(struct mipi st7701->dsi = dsi; st7701->desc = desc; - return mipi_dsi_attach(dsi); + ret = mipi_dsi_attach(dsi); + if (ret) + goto err_attach; + + return 0; + +err_attach: + drm_panel_remove(&st7701->panel); + return ret; } - static int st7701_dsi_remove(struct mipi_dsi_device *dsi) + static void st7701_dsi_remove(struct mipi_dsi_device *dsi) { struct st7701 *st7701 = mipi_dsi_get_drvdata(dsi); Commit list: commit 40cdb02cb9f965732eb543d47f15bef8d10f0f5f commit 6dc548745d5b5102e3c53dc5097296ac270b6c69 commit 859161b952a453b86362f168fadef72a8ba31a05 commit d72ac4bbf4cc8f6b50526ce400861f176659884f commit 1fd452c403ca2cd9dcbd8465f9f72be52e15ac1a commit 79abca2b399009eb8d12c652d0f0f7a9c7a06289 commit 96dc635d5538055cb6ccd7b6e9290dfcfc385f97 commit dc1dc76bd9a48c6aba3efae5eadb9a884043966e commit 356d2c8e76ebb1134a0685ce4b923d8201337475 commit 4c59b0805e9bf873fd3f5dca4fc53d8c220e39b4 commit e5bd7e3e4a68f0befe53f59954b25eec9a792d60 commit ba71593217b5b03c9e3385b268ff8613a71fc6ce commit 0a2486f85e0cfa6439116abb9078ab888a619746 commit 8aba4d30520ed656065eb36f0628109bdea385ee commit d093100b425df6fe400881f2e62c3f0be7bf18cf commit b92db7e4fe740daab858366faff1f992d53d3ff4 commit 0c05fcd3b45d6769c496fc6e2b88d18fc78ebe11 commit a6aa679a70e9d8fa4ad3f519c060db9bb186e21c commit 6de745238aa30529778a26622a430dfcb171b089 commit d395fb1999abb7eaa3fb5fd2107cae0f1e41e6d0 commit 20529e260ff2fb4a00b54a1e625ebebe5d1a6210 commit 347987a2cf0d146484d1c586951ef10028bb1674 commit 63af82cf5e36b6ba3f3ebcdd1edd9f91934bfa59 commit 64e257f187a5c76ec5766f50204462c0c483e418 commit 4d8f68548e982e2c9b9ca3b47aea49c47da93a3d commit ba8f16cd081902350e2d2a00afcc6b77b1815d50 commit 9f0527d22a52ff3470d8bf0dc79cf42c0677c23c commit 93de485cd822d429e91f197a820f02ee57d38fd5 commit 0421bb0baa84fc93bbb659fe682e19266730f9f1 commit 913b1e7ca77e0d04b74921e7328e3446f3a481be commit 848b3c0be2b944f633fe9beb28ad28f15c39f7a1 commit 9eb11f52a6285c0516046e11d45fa4be8714a1f7 commit 932da861956ac425ba4e65f7696458f96d833883 commit fc8d29e298cf47e07c2764ec1c340c1df8e50431 commit 75f664903d8672897333b86bb450335ec6486ad5 commit 81cb44274c654e49f55e6690079540b0bd177db0 commit 4de395f2c632c31c575f72d49d4f4389c99dab68 commit 668a8f17b5290d04ef7343636a5588a0692731a1 commit 917dd05418148f05d8860b8106da8dcd1d258aaf commit f134c9cd9ce829cc66d4d32c57b76de1aab54fe9 commit d71d8a4b8d10e4e2002d21940a768b389d594637 commit 00ec947c144b374ceb3fe1b4bd2e9ea7454dd630 commit d87fbea50b819b76f180bc8420c5f9efa0670deb commit b11af8a25b576cad006411fd904f88199ff9b5ff commit a961b197d72601b0363fd7614f9b98d5721f9c6c commit 35a3b82f1bdd60e454de34f984a3f09b38f64b61 commit abea75e9207e7744f524a5373e9c149226e17a5d commit ae9f1f2ca093906f06311ade42772eeb021af39f commit 55b3d6a63fb58e154f0a1ab3930cdd003a39ba9b commit 59dad4a0d1862dcd15405f3217a59b1fac01daf0 commit 1dab4561a341afdbaafe0ce6091106d0c63c79e0 commit bd8408e69a47f8e9f5d95c5d919413fafecc1e73 commit 53618649ca6ded3222b24e8d25a09be30a197577 commit 6fc20a8592f569395aadc9fd97336facdee84f0d commit fbc1fdaa8338ec4ebd862d918a0ce3e12033e8a3 commit 899e90cf20a9d0eaec8cbc8e1ca1d05278afb6d7 commit 86088f88a25c76baac304b6f887e5da2c30c4e07 commit 1a217205bd2643272e32ec38926250aa6c29a854 commit c19491894d4baf2155387e48aa326e1b52d7b986 commit ad444123a4a1d2944bd72fc877af9aabef01b889 commit 031a2fea0482965175ad20adea44bdfe6ed817aa commit 2b066860a4f855babd2a22f98364ff6546d85f88 commit 0b8613a21d9c52ccde18264b69de9f46faa362df commit 71eed8a9ba8609e9c97171525c28846b9bde9a4f commit 3475b50873e4a68302822d91ab5cb031c1a92d50 commit 9899834ae5f26649da09e0cae72d8d9eb8a07aab commit 6f481afe220d36ad7790526a2164d7fd3d5b0487 commit a6c225be3da7edec46f96781ae07a873b2fbaa17 commit 7fa8e07128ed660c97c4a8fe615967e654b84f32 commit 779c84fea3dbd658d3c4b72937732193cb01bf15 commit 1ba85119afb5e45c699bf074dcdc894bfbf1c614 commit 82f9cee25598a1cb06529df8e7e1f86f61e786e9 commit de2b4917843cd433d0f1c279123f75801dcd0c1e commit 83b7a8e7e88e7a201facc9c33833330485f5ec12 commit 42542c7904cf2e6fb795dc7ffd1903ab7d6e53fb commit 5dca122f8388695b1048a48a69d3cf9210036d9a commit fdff0a852ec8b8ddba6fc193f187d5d85717ab2e commit 64b88afbd92fbf434759d1896a7cf705e1c00e79 commit e473216b42aa1fd9fc6b94b608b42c210c655908 commit fdf0ff4d12cbcd76b53f27c96ce51ddca400884a commit 4656b3a26a9e9fe5f04bfd2ab55b066266ba7f4d commit e7fef092330321ff311e8c06338ce1b4b608ba05 commit b5c9ed70d1a94c59dad7b1ecfc928863c0fe6ac0 commit a9d2e8b5f1e5caa3cb038d7bb7bab530bcce5af1 commit 4c703f5d6f776eaa6a98611c9b5dfe800fbeb0c8 commit 7847628862a808ff3802df96f54e5eab3ff448b6 commit 90caf42527a40d09e0eed9fcbca08d757f4fd493 commit 8f48dbd6deaf5a14c924c1de08bf7e36526bf3e7 commit 1d43a5120ab49f22ba6c5901ad3994e254510303 commit 14e7157afb055248ed34901fcd6fbf54201cfea1 commit 4d9db10576ff51afa8cf7727fbad55ada299359b commit fa2a87e4c5cea2beba9deabcbaf54d1979fff419 commit 6d602e031103fb78dbe50dbf57a5f29737494c6f commit 2dbeef82d14fda3b15d40c94522bdf83f9c33ae8 commit 6e2dc7ac71411eaf6363d63c333519e1d353d6b0 commit 774ce1510e6ccb9c0752d4aa7a9ff3624b3db3f3 commit f6ff4570e567b687b851a2cf52c7e300c399d925 commit b68735e8ef58be6df7a6f511c60186e6051d9fb6 commit a4a4307003307220321f946892829a5364433809 commit 2be1959ecefd9f655e6262144a1b970bc2f34054 commit b25c377a5b26f107ea831af05919fc3782aabebc commit ac991b874b098ecde2c5eb81da48d52b6b22851b commit 2b8428a10fd3763819eabf1acef6b5b2c7875520 commit fc94224c2e0ae8d83ac511a3ef4962178505469d commit bbb6f93f51a19787f455768015e9a77a4d83c4c8 commit 97216fefed6d9782c7208cca33a5465212f533f3 commit 382fc1f681324bb38bedfe763107a60256c4ddc8 commit cce32e4e38c63f040ffe1966117d364ecf9a28b8 commit 254e5e8829a97bdbaf86b83ef704ac45a30c3867 commit 30c637151cfac8da3588f3773462e705a4ff2f59 commit 3565c7219c169ab6c6ef34ba9187c1b7bc6dbfa5 commit b320c7b7343885a346949abb56ea20528d611148 commit 57b2efce45ef5429e8d050190242849890b1fd96 commit ace98ffc8acbe7e8f886f2048436a0438663b153 commit ddcf980f4d724dbcf6a99be58bd07cd5cc68bb0e commit a8c18bec83a82a90d5e35a080bc465581459313e commit f5dfbfc0ae00c2c2c0518da9e1f9a8cca50ae544 commit 353819d85f87be46aeb9c1dd929d445a006fc6ec commit c4cf059d9c2c4849c65b481c6853bb93c8b33f3b commit 4bedceaed1ae1172cfe72d3ff752b3a1d32fe4d9 commit 4d87d36247e7fb9419b25331051c0746d09e57bb commit dfc83de118ff7930acc9a4c8dfdba7c153aa44d6 commit be0366f168033374a93e4c43fdaa1a90ab905184 commit 5d36acb7198b0e5eb88e6b701f9ad7b9448f8df9 commit d1051db85f6496ed9c825802bef3709f2e7d816f commit fa6a4cdeafa0ab674d0f72067304c5408c89964f commit f31bccd3989d504a0c90b4562908ea18162d7662 commit 2ddd1e6ccb139b9e7f1fed2883e34add832cbd77 commit c4f306e31632e997c01f3e5ff3298ffc3a127999 commit a49afeb4165361819b92b7991b97457bac4c674c commit 3a6acb7dd69f9d8960009ed1ceb77dc5e532391a commit 1765378dfb10d4feedfc71cd721c4140d927c488 commit 1d4f70a65fafb484064b9c7caa7318e9fd2ab737 commit bf8afc2090795b8640bf1842529627e69f673df4 commit 18c8485236a5e3f491b670c018ae391c9cb84dfa commit 696560d43b4b07b58cf8604a9b186b32159164d9 commit 4d09017aec4f2aa5f6109b32f9a037f35c17a9e0 commit 5d2f2e8b3a36328a3981996bb20c32d8a0e53b46 commit 22645976ae4c0e7eebc8cee7942692280457551e commit 2ac6cdd581f48c8f68747156fde5868486a44985 commit cf1e6a90315a3f5b8ecbb3cf6a4badf8978e9075 commit 44373151ab429cca53fae53d9eed374aef64afad commit 1ee181fe958a11d023fd992b8eabe6d4287661ee commit 9382ec27acb2f5a43dc3c3b77036f898a498ba60 commit 2d70b9a1482e09f8465452c4655ffe20c605d526 commit ed2ef21f1089ef9b3b943b4e365600e615ce827d commit 4f4dc37e374c957b2bbcd3b1f3dad73afeb647a5 commit 1baf9127c482a3a58aef81d92ae751798e2db202 commit 5cd062e31d352e33284d08a52ddb2b9ed1a5caa8 commit f639f74a789570fff9fb093a603bda550b53f3d9 commit 8aeeb3144fe27b2b8aa30db262de2f654f2edb9a commit 877507bb954e7d0a4f2d3ba9957127a83c03e447 commit bc8350409ca5147d432f869209ee13fa079625df commit 828369f2829e5415e61a2c25b2cfb0bad48d72b4 commit d4a3e50ffd9084e3eafb318e95ca91b5895a6e62 commit 9fb3473732908ff0f8d8f8763318c407489ae955 commit 15c5401dee76e03a1b4e30b7ba8fcec972e5bebd commit 69142c0a5f9a0afa6ec31d5f9a4ebf293d3b5029 commit a96d8f052205d92c2fa934f72dd39229c8b75d79 commit 52d4cfdc2460cb7f0528e27cdc9fb808f299d325 commit dd9d3cbe9efcdb2a0d88c80d0e492ccae54a5b63 commit 9cf26c8968b358bb14cc078f8153300a493613d4 commit 6c82c75230b87d986283189a58e8cb18ea0c519c commit 2775e2016179331f1b8dcc24bb63e898d64d49e3 commit 8eb403671e3886adcd939223442d49ff3ba52846 commit ae5a3d2c75a82c65564d32c42152ef7623ccf673 commit 7dd5c56531eb03696acdb17774721de5ef481c0b commit 5e8bf00ea915a0f290bf5ee544b91aad5eaab4bc commit 6bcfe8eaeef01fb389e951e7c648b934dfd62f15 commit 4a83c26a1d8702c516db77fc4423ae896ee904f1 commit 8c30eecc6769bee1e3acb485ad5f086a4d8a04b6 commit 37c7c23a6420f56a66d70e30ed54ae8f77349f90 commit fc30eea1542dd787c6aa46e970014e97e390c5b2 commit ffb6260be81f5f4c97b34430072bf50380b42478 commit 05436815fdb47539269387c10285c088a8ba33e7 commit 7fbee3eb9ab82c4b8c240617a1b3878c6981dd73 commit 01224faa36e86a2b9d423fe851c05feb288ae83d commit f9929f69de94212f98b3ad72a3e81c3bd3d333e0 commit 03d38605cee7762d020dc14cfdefa6cef77b5811 commit c25b69604fc4455228329c6c522a87974246e40f commit 802fd5750faca181cade177642e0e5233ff25f85 commit fd9e3169e42b7b9e3a5c58ca2bc95a15f9de1d6c commit de40c281fe0b6babf3d1a25e034525a23e125d0c commit ef8886f321c5dab8124b9153d25afa2a71d05323 commit 730c2bf4ad395acf0aa0820535fdb8ea6abe5df1 commit 3d037d99e61a1e7a3ae3d214146d88db349dd19f commit dba4d442be8c4d41d3e1ee4f72a2cd8fa524b8cb commit 8676145eb2f53a9940ff70910caf0125bd8a4bc2 commit 71bf55872cbe035820a87b2aa5fc1dc60678abfa commit edbe262acf92c986ad9a1f594ae3b4f3d3373133 commit ce582859ca7b33e5c0d9432da9f7b54ced802100 commit e13140a06283141318319aaae7dfa348b06bdd6c commit ab298c29d414a5a94ed3039b0e97bc325bf45272 commit c4863ce0f4aa17d88f4bf5fbd92ae9400f6e6d28 commit cb7fffbd26dd6eadfe6591c0e14fb43e1ba2f70e commit cfe637c4d6fcaffa655405e682f99a3d88e5fad0 commit ce73f456744ca763ab6a9753104caf843d30fd8b commit 7bef64490f9bb04731d3cf46bc8f7f46e55b2e0e commit b3aca563d69bcbb49343196b4265a8cb7db91bfa commit f241b064426943a1591c9e9121a175d5ed1edb42 commit 504a51d70f86e3b989ca8834691bbac4033b6f48 commit 9e6a82b9fcecb11b84d010108874f923c1e648f1 commit 1ed88a816d0037ea6fec1be18dfa9db8ee7196a7 commit acd45c56790a3b558b0b0081678a20b0a0d89b0f commit 0f7dc324b2e9e55db9323302f944fd952dbed967 commit e25d5954264d1871ab2792c7ca2298b811462500 commit 7350b2a3fbc6956b2b2234f6d27d030c70b451bb commit 6bba2b30d29cbba78ba0f935210108e74dbe7ab3 commit 1bba7323c79b169d855ecb4a1eba410f18a38674 commit bcfa6be2ee21b8ff85fa8f51493c8e585e3ab265 commit 5fa9e16191204b6ead0c31e8f3b6ef92ddd8183e commit ea6490b02240bd7939a3a13bc8d3f25046c01585 commit 8759464d7b6309e23df95f12064a120422d6f780 commit 82068edeb5090b6f999457483623b39b6546ef74 commit a61bb3422e8d6ec002dbe288356470540eb5662c commit 3bd86801c84f66b4abedde4078e5237937b7576b commit 36e599e179db51d61d2b30ea63bead7abfae8506 commit e99ba96247764e2963bcabf2fe2d91b4455c6bc7 commit a9b4c16d886cf6911d69fe3c68f5c7b2112f0141 commit eb09882d64807c24228ed1d005dbbae70860ca3f commit ed5c2f5fd10dda07263f79f338a512c0f49f76f5 commit 8ba9249396bef37cb68be9e8dee7847f1737db9d commit 672c0218e3e22ccaeb2911da8d3b784d3b6cc1d8 commit dac6b80818ac2353631c5a33d140d8d5508e2957 commit 5bd8d53f6fa53eab5433698d1362dae2aa53c1cc commit bfaced6ee77484d8b9c6baf86a8e9406f80108c5 commit 72fadb13674f807f10a168fb7d020dde58ce6b0b commit 194eb174cbe4fe2b3376ac30acca2dc8c8beca00 commit 60c9353139a0770e6057b3ed2e115deb95964e49 commit fdf17f1084c1d3fa0a2fb38fa0625b13b7bb0fff commit c620e79bb695b866b2cefa0135f7eddd0d5bc9d7 commit ea76895ffab1a610fa162ca56f99048cc161c293 commit bf0dec4604979e09be60b7dc41066e3d07d29bf9 commit db910f10d5f4b7e6c9997e370f586eca54c22430 commit cdeec9a11c3c95f33a3e2be36ef3fabd60b8ebf2 commit 78e16ac1e764def96f4c89b433d379acd68881c7 commit 43d61f6d8f4d2da7df116eac4f83106ab1a29090 commit 34f667634a0dcee26d9873ab1c819bdd6cdf485a commit 8350bb59e63d0909b0d65af2d9710026e0f902ce commit a4d3230353e493d98263c5d7f03ee6403ed82d71 commit 0a8c91d7b694d122afe513e95908e8497cddc195 commit 1d32af4facd075542b26550e679ab53b5b8b5c5f commit 01b537eeb049b98d7efc8f9c93c2608ef26ec338 commit 52a3859fd0b85e8dce32b6aac4f8fd18a25626c5 commit b34e44bc6156717543b784b50f4d2fd23f299700 commit 6ae0632d17759852c07e2d1e0a31c728eb6ba246 commit 30f2d2e49e826c2dda35153d2e108d06f6d7d9dc commit 0ad7347a64ac4baec1786810709eebedc5f823d5 commit 1ed5a845c7c87aa79cef2f96e4165c8fad38837f commit a021e2aa4dc203f58f5dabf55aefe5b8891a97e6 commit 7e55536c9c488febfeedacebae0831c070e72c36 commit 6dc85721df748385cfb011326ead52c01840b461 commit 78f48aa6f50b662bd74607f7415d68171339b2eb commit 5ce27d6210018e972197ff7e5da6309f919fd61b commit 56c7f0e2026328e56106b54cb0e2fe3a7e70ce4f commit 368d179adbac212a5adf5fa492397a593d52547a commit c5de70f6e14ce02c3e604972f8fd46ffcdc184d9 commit 5ece208ab05e4042c80ed1e6fe6d7ce236eee89b commit 8ad0152afb1bb3878bba282308f037d73a87ace5 commit b092e4a9d3e3335fdc5aa23a9444eeebfa81da34 commit b0f2eb942b8a449432267571d045613e35ada2de commit f922fbb0f2ad1fd3e3186f39c46673419e6d9281 commit 47091e4ed9af648d6cfa3a5f0809ece371294ecb commit f4a6c7a454a6e71c5ccf25af82694213a9784013 commit ab55165d73a444606af1530cd0d6448b04370f68 commit 75217c2fcc88e77bea40ef1153d84ff31fa99112 commit 61faec5fa66cbd1afcd5074f168f09529f8119bf commit 6a079903847cce1dd06345127d2a32f26d2cd9c6 commit f386832509b85e567acc849cdef22843ed33a525 commit 4cf05a4d7125854800a0e88eb3e1dbd74368e9af commit 8869fa666a9e6782c3c896c1fa57d65adca23249 commit 0f60d28828dd94779c6527440289e1c36a05115a commit 54c204c522fd2a887b52c7672b9238903ba59a8b commit 4234ea30051200fc6016de10e4d58369e60b38f1 commit 20052deeb558e34e04655076a3b3403c3d289912 commit 48bc9d5245a43486559935da5439700ce4fe4a3e commit 544432703b2fe73a07f387c0b883da03ffa5671e commit 75ba3121acd58b71ee1d2f6e30ab44748d4397de commit ded910f368a52b64a3c0eb12da085058b55f61a1 commit 92b2b55e68c8cb88588073434ff3e3240e98504c commit 73b984d8722e3ee077a8591b27d8c4d1a2d72020 commit 6d3c900c12d72667341bcff338c252e22728b942 commit ee50b00244086453dfb7076e4b80214948cd0507 commit 95a72fb73c5900f1b8f00b2559179760ddb729ac commit d8adafc7feb86b61fc483bb58b30028e6fb919d7 commit 9dfa4860efb8cf20c12b9b65ec66cafa6e93f3a6 commit 4bb5fed16991e6c1be6b8b4c1305dcf08ac58ecd commit 947f63f17e1d91cee19f1bc071e825b28ce4da98 commit a0f7e7f759cf299ee6f6d8723c596af9a1a86b10 commit ddeaf487464af315ef7af02b37830a14fb5452e5 commit 441b12bcae736c20a6b8bf6978f90426ab1719a1 commit f9bc6142cd8deb953f0d9fa6bc6e1833402739e4 commit d6c770d2050b26fc90c80c13df1d6ae4682b2e3f commit 9407feacd2e19b66bed0762c454b1654807a626c commit 7ac32451193d20fbcddfb5b2623838ae98cb3c17 commit c10c55cf49fe9060720d67575c301dd452e0fab3 commit 008973fcbce429a2b0929108b6f9495d885bb1a3 commit 361c6e35d3831750af3c308e5ac056ab2971f199 commit 869e3bb7acb59d88c1226892136661810e8223a4 commit 83ebec7e0b4c2847d9cff2bcf1324cfc5287dfcb commit 0f9fa5f58c78426a93983a2cc0127fd98b020403 commit 8c5e9bbb3662b09fb9b5353dc48d2f871f13127f commit dbaadb3cebaad49c37e3fec937e73e6e41054404 commit 48b6b3726fb7c189410959d2b8915c209fbf9e7c commit df78f7f660cdd5974b68649a95dbb34da4d4dfa7 commit 946c701407c33867573767db7a23e2b6696b5d9b commit 0bee2ae29eb4bdeaf5fb80b4ef48877bc448485a commit 0b4e477e08a14ef852d5a633cee10e4187730005 commit a5c2c0d164e96d24f73faffcd3b7bbb607e701a9 commit ffac9721939dca3f0ac7bfa90f3dc484b19c2706 commit 083351e963865a7eab55158042b81b8f8c0316b6 commit 11d2738940ebeb3fd3abc78d44684d5edb400a6e commit 21167510605470d53c94e7162ae886c8fb67d93d commit a76eb4297f90301fa9e4c888fb06749ef1be1c86 commit 2482fceed27b6951287e92e9f733533a657c2923 commit 6366fc70deb9aaf1db4a46916af14fa3c5a115ab commit 01ad1d9c2888d51f2fb5b5ac88af8bd47d76937e commit 4d07b0bc403403438d9cf88450506240c5faf92f commit f0c70d41e4e8341651db7b75374bbff0b14dd310 commit c7d3c8447b262d177e0e83154841d64cde521e70 commit 2c93e7b7f545d2cca0e9e220ad7e6e1ac793ed39 commit 43ba44a176a420137d5acd93a61fbeec4ce70191 commit e6f1964818cdf5ce64a05898e53b2d081c682819 commit 9d0bad177af9fd31ea14e580a34e34d02edd26a0 commit 268c67e5bd8611f0835839957e77f92bc589b7d0 commit 39a445bb2787aac5ed929587a2e13ea5dc4ed0a6 commit f81f30b305d2c73c23d60b12b104d3f191c5687d commit 488e29fedc1f2b771b37896da853bc4b493e4b3a commit 00c6cbfd4e8a3279876babbac2f4a3f811d93b1f commit 7578fc4d59e2e9ac5dd762019db77481511ec436 commit e26700fcf961c99dd5d0a416c4814cdd69e6695d commit 3a9313d80e276cef87355305720a5e37e7ad4b46 commit 95ccf312a1e4f5a1150dd1a0a2d81c1043e33fb6 commit 11c7faa61d136cef92506e4e77d0e6c6e01428bc commit c247cd03898c4c43c3bce6d4014730403bc13032 commit b1d36e73cc1c68d28f63cbd14767d0d0861147e0 commit da11ef832972e311475fcba802398e720ed36c54 commit 1eb67781117ca2095f0dbede79f22f6b2ffa3189 commit d9c04a1b7a15b5e74b2977461d9511e497f05d8f commit 08e9505fa8f9aa00072a47b6f234d89b6b27a89c commit 345c0bc0a3cdd3273de5338b7313afe733692296 commit 7c55b598b32936e506a699698fbe37c891ad1873 commit 0acc5b06b5b450b351aa006c70264baf3062e988 commit 7930f58a7e62e52e96636dafc2c4beb3b76b321e commit d61e4ba33e254ef8df33c355ba1b2865e3885693 commit f577c7c76bf9f0e0a6dd3daf5b9a3d3f2b3880cc commit 9f92c20279ee0f5256499d9fe55b6d6c4c414276 commit 95bbbb88ed49f6d4f46c9a23be0ba94db2fa65e9 commit f7fbcf4637fe8f54acb18d88488ae901b3d7a4dc commit 99c957fedfc6678ded0b53afdcb832cd8446cec8 commit 28c042707bf23436d4fa3ecc1eab1a62dd1f6d7d commit e6cf22ef5fae493a99e162c3f2e7233448d2b970 commit b68ea8af4ae005df5ca4f547f22b3824d0fcb3a4 commit 594b237b9a07e28d524b35a59dbff5bdc8de6b78 commit 74f4e84dc42bc80478ed15c221280e45e4fdfc5f commit c8b1d0fef1b652c65dc09a0fae6ef0504bb2f349 commit 42900348bfb41cbfced62060c9cf4b735119394c commit 8243df477845cdcf558226bbd24321ee85f82c73 commit 16f0013157bf8c95d10b9360491e3c920f85641e commit 2724efa389c0dc4d686935b980832cbb87956968 commit d3ef9d57f24eba16cbce8f304c9190528e842227 commit 720102391060792bcb5697af640f3a4f09acf360 commit a79f56d191c4f621eee85979d6e77435fb8383b5 commit 638bc30f8579bf4e0fda42a0c271149c6ab9c893 commit 2387e21243ba8a2734322610daaf1eeaf1a146b4 commit 61ebd2fe6f793306ab6c05db8872931026dc1b8d commit 6160216fd2c97107e8a9ab39863b056d677fcd85 commit d200a64305f7072db918e68b8caef0b33e55ef05 commit b2243cef56befeaa45a30e783265caf0c8e01ba1 commit a9c5e9c82039cf9f12bcb427160a2163df299b1f commit 6509dd1111928a351204af1fc8e6aa61e0c59002 commit da30390b93c377545fdf5ecec34aee018f90485b commit 068a0f5c8260dcc4ccbaefd2dbf21ea84162ac17 commit b078c16bde6d7eac1eac4be0dff07e3b77fe4cdf commit 612dc414458ff439d90a6c491fa5d064a6412713 commit 61c86578229d2f0a71296663027bd774002f1506 commit dc35583ba9eccf2052c1eb26a0893399a79a5916 commit a2b4cefafa26e6e4dc550366b2caa87a916c179a commit c41aa0204d1c05edadc42e50fdba62784f5841bd commit 3eb4ad9325f1f959dbdf443176818ae3aa934aac commit 3d46edeec211bcaf006bdd40aa73d2c4d3a4753d commit f02c7d5a8fa3ecf7a20f25815bb30a967fa18885 commit 6127b3bcd33299cdebb79ffcc9c9ca135eaf763e commit 2c2d7a67defa198a8b8148dbaddc9e5554efebc8 commit b183db8f4783ca2efc9b47734f15aad9477a108a commit eb7de496451bd969e203f02f66585131228ba4ae commit 4d054ca9ad01004901f3ba988d77f7d298819c12 commit 378e0f9f0b3e03a84db5ed5d3da3850871e9209e commit 6215a7c8f55243779a44bc257af0e1b1bb928e76 commit 25bcc828d237cda65d34c736d70e4467fffb80b9 commit e7c2af13f811d0c23340154b7b2795876c71e4be commit a7c7d23649f1fc3a73507d2aab3a5010a7b6745d commit 291f269a49916a8494526edca92afed69270241f commit 3b10f8517648d6bbfbe4c3019aa2759c463e546a commit 986531bd0e72e74190c217523ff212c9bafa409b commit ae611d171ec02f067b36a1658f29a2f3a9eb2a91 commit 5a04eb5be8e4da3b3574fbd56b6c43fa1f749cdf commit 103472c13f0afedab818a2c6469d78c2fb29ad8c commit 06a50913d96ed0f2e9ecd1ee3f224af72b03af6b commit 34dc3cc5017f08df21a8afc9ddec2f622a5f04ed commit 203eb5a98edbe40e64fbc794011ff7261eb55d8b commit 12dc50823845e3a90d137ee09598e1984c6ec3b2 commit 6c77055aa674b6726f8ee57d1c20e950323dbadc commit 4be1c12c880e03e6d174e7e7f9e0dc36bdaf9597 commit 36d225f365e737019a5c774682fba99ba7ae851a commit b3d81dafdc48405ed061f3ad0bb75d7ef7d09936 commit a30a6fe9e56c401307d534b2c224002f9b2d33ff commit 5a4dd6f0e846541e57a58f97fce86da1f3ab3a88 commit 304ebaeb3fed122e99d21653eb8ee679872b3031 commit c3704f1938e76654ebf5c9de220d08cab5d437de commit 44eba1b85119a8f2d44a47bb3e8c5c608a05eba4 commit df22d67e5f3d91ce6f0b0f64ccc14d016c89d956 commit 95086cb969b2cb8abe4984457f219ec70d24052e commit f54e515c91806288126f64b37da0c78baa2d8c1f commit 917bda9ab155032a02be1a57ebd4d949ae9e1528 commit f8e1fa0fc8bd13122324da7d1e80d66641220680 commit d688f6b5525d5bc1b88c198959274d53a1a24204 commit da09daf881082266e4075657fac53c7966de8e4d commit 2aefa9a38f236481f41b117e21ffdf38f40830f6 commit 1d5d1947778cbbc9b469e57b9e1a56871250afa9 commit 45a92f45f4578ff89da7dc5ef50bab4ef870f3b7 commit 6b11af6d1c8f5d4135332bb932baaa06e511173d commit 62f6b0dcdf42ecbdf25205c77c9297d3977ed690 commit 572200db77ecbd3a178c68d469790a11cf07a20e commit a3c9b4c7a75a66b65b62900e2e9d140e0470cd85 commit 9af611f29034dd6c9329de06dc98232a5b89b939 commit 6ebdaf20fc4dd98e7573dc2a926c81afc8ac7870 commit cfa1e7f8a75927e55cce1300c8fbda2e1d1e0abe commit 2581c5d85e31c96dee352a751dbce17c1b71b417 commit 29bec1c43d7de6af60a34e08205db3b7c6048cef commit d84f5d6562b2f068ec7011f50e702e8a60ec7932 commit 55453c0914d9b81e75c5c83adb2dd9382da2c79d commit e990bd60716d64d18e8c5785865e15783a90cee8 commit 36ad2ec9802f9613f5d2a4fce10c9452f0a28492 commit 280f1884892f3825d2060df43dd1d452c585cd0e commit 4e65878de0db0a2f6778b78e10fd3b71eda4e4a5 commit 6ccdf067206ee82a596fb89a28ace18b4e8b239d commit 36527db318080d36138c802ca9e03a09e5a5fef2 commit b09c1fff5a9350a65b16af44e74c9f9335d9ef09 commit 7857825ba4671d053eb3724c7098bc759bf01a75 commit c17a34e0526fafc0e1e7f707c634d7e49dd08197 commit 8606cb1e68d17e24de660110d7042eb82df7a70d commit 847939e3eda39f98de6ae95a5c5e0e1f437a274c commit f6f76233bf506d03f3567fa229c7ad2ce6a768d6 commit a3cdb5d2c89c8005f50cd4c80c1dc75690e5fc96 commit b1bdb5ebb06ead49456ae9f23a12c7028076f9cb commit 4b91ac9e389d177e8f1af5d4499c6025e866c850 commit 4bfd688e6508ac6f1cdf81c1ea91e3091fa93853 commit 9f6f6be163dfc4b912ff1b20be1841cce306b621 commit 0991f44c90f64c4e4d97982d5702ab18449c99d4 commit 94adb9933609bb3846261a688b28c2ba428f8805 commit 64e32c91fbb88a2f3f4ab697f538fd8f3f62d99d commit f9a48ed7067734624c13077f5de16365d7bddac2 commit 606db591bf32a46a7dc3d107e13ba7ed2cf9079c commit 093fc6110c7240def7717aa466192c2227d84649 commit ab23c5b9c74d682d81b0903247817b2bb20528bb commit 6420f4ca68fb9dc3f7f5c1c27eb9a60f4b751bf8 commit e0b859cf7c099dbb6bd4b769268baf5b0a51dcfa commit 93844fe7651c1f12206ac8ed8dc7d2eca72d90b9 commit 67ec7195747888e2ef307010541fd07304d57ed6 commit 9d84c7ef8a872253a9e8a9865ad5efaa0f8c05d5 commit 74d834044e2849aea1a75c4b3cdaf38917ed3c5e commit f4f5e50761fd7a8b8ad8a4d6f2ac0ffe76ccd396 commit 6ec128c3fffcac8b05ed187e11386afdff4bacdb commit 6b46251c5067990651bdbfc3edf07c2e16850a0c commit 0f05a2e52862107aff6f4ffe8e8926ada4432c9f commit fc968efdf0fc71bbd0e031b9ec071062fe469e7b commit 7ab47ba22ed35e030cf67ac8756767228c591d17 commit 10f8927d74473a56862edd94390cbe534cb539b9 commit a60d2191371b4157c56eb502bd3f8d1038a5e35c commit 92f050436637099db7cfa6e9fe28018d17d9ade6 commit 8e039cd176c61a9770e1956038c93738efc800f7 commit d9ec10c30e65df832180159217939918383e6b5f commit 773562364ad9184a31e3192b268395560dbf2dca commit f66f48471ba2f721695694c400cfcda3136ee736 commit 5bb71735668263403d560b48e8fd1dc1215bdeb6 commit de2b2ae34ddb5cd4a9c840f557b175b4c3c64f65 commit bbc9f072117efd5a81d81ca787855da63e7e7252 commit 6234bf13913fb7f62bb4ce2ced42fb81c524e851 commit 33100f10e2fb847954e80e356df3ef9e5941819f commit b3235e8635e1dd7ac1a27a73330e9880dfe05154 commit 5b04aab6d49578eacd6d341e281c70a769f96126 commit 1ff673333d46d2c1b053ebd0c1c7c7c79e36943e commit 7c1dceaffd99247bf443606730515b54d6285969 commit 13cc5123e9530c5895799b4185fb7a1a2e1b7f88 commit d9927abb4594ba940b3ed1dd86fa0447faf13a7b commit 73c7a8a871dc9aa6b7876c1a30bdbe0f899eb4f6 commit d5f476edc5b58916d05a7a5b87fa8ecc9d847f71 commit a40a92af46113e200b9110c4040a465771d28b35 commit 9436ac31c73526b1e070c050ee83c3870125bf82 commit fe09f343d58333f5e761bbdf4871092c6c867ffa commit 94ac32338e4f5372ff0bf956f069581096717885 commit c6329e255d06fa908321ddd5077b804b9b3275fd commit 701a4ad97db690395237218f30875436f2a4b461 commit a3813175c4b50a0cdf3e72fba3d560f43b4c9ecc commit 5ddb5fe9e5a5c7f518a29df22c2f5af62cc74826 commit f926464e59b7029b02d731a9f8a31419ff973ed3 commit 2b5692345fc18b959ac7bc11550eee3a6fed04f1 commit a4d002d7d0747b76c5cb8934c25aa745d91926c2 commit e7c69a27cb94a86c3ab467fd297918494605859e commit 91a95887891f1ab791171f32de99e9d9ed34c888 commit eb11eabc5f26f876c514bb294dfdb0484bad28a6 commit f0acaf9d6912240cf1a27f0f75d04cf149086da9 commit 7249dfcb6fc0950eb1d7e0bfb8b642cf40f089e7 commit d51309b4e9aa79653b8343101def9ba99ba2cb57 commit 2fee35fc07462b900dc7730a92857d1f1350c621 commit 90b87cf2430490d9aa0ba0c2a14b4db8da0c4942 commit a434689c0adbf8986024e82767fd26b0e142dba6 commit 80b3842f21f8af1bac5750105f557b29af854291 commit e3e8148f43fb6d4347211ea2160e7de9b8ddde81 commit 20478b88071349ad3d7340dd1e3e714fb1e9b98a commit 5da6d6c79297832277b34b38628991cec07bc664 commit b7d1559038b6c949b5a4eec77db77f3a78edddc9 commit b202ab6173af66a78c95a6acaca26f74d0c8a464 commit 0c82118b0aaa5113e39d875c296a416fa8ac6fc1 commit deb141510f6e55c6d5fe3b5b77fe3df8e57dce61 commit 6493d4a96fc3d16ae946c886f51b74ddfc58f204 commit a71e7d77fb03f61211d035afaf033a01dc443195 commit fe28c7c120d6c620283eeb6537c38b9902f850d5 commit 51b072de8e0f2d5bb562474efd81f1cef77e496e commit 3047d7060e4db3b4d8f6f915db50a089662caf65 commit 4567084c305154b5abd427f568132432c41f13ef commit 6d737d9bff5fe98e01bedb39ab9f5be3a39b5ddf commit 3721d4fb763ed9f580d942f95b366c252c01633c commit 0514b50cf79b22decce0dd2cfccb5671322e9bf7 commit 99f37216b36622343b8f1eb625921a9888054a9b commit b801a98f81bf72884de2e6c8409fd3fea5cc3f67 commit 8482af4bd28b74853bfbba9feab1a28ce868c747 commit 6f10c4d62377c8a0b013ba98230abdae71cd7723 commit 03e067bc731c7cf8fba403ecfe4e2a85b49a11c0 commit 06bfa86eee805e49875a64a23f083aeeb5e39daa commit a06289f3f72431f3777af95ea1226b5b0abdc426 commit a5810f551d0a8c83b4817b53a446bd115e7182ce commit ff4e0cafe845110c9b7fe26eb8a6b49d60a1288c commit 9aa320341e9a86c684ccf8c2e75ff07486d9bf46 commit 0538fa09bb1073b19b197509c51c55496091d125 commit 0af02a0e52030ca0b5acc4da6d3ee3303077277c commit 169a32b76842c10fbe532cde6cc25e89bbf54341 commit 018a7bdbb090b9155a6509a0d1a684db4afaa5b1 commit 68fb37bc2c8ad05be55c1aedccd6cf0778b1442c commit 41ee1f18ef52390518ed14b8be98640955d8f767 commit 09872b1c24220985c17e2d46737e1bb300f49ba0 commit 119dc6c50eb9974e9dc0e6a17d8207592309c940 commit ca4ba3394e2aebcee123055a1275980940f21598 commit afb50906cf029a40b713c60d8800d3ee25ebe03d commit d9d86d085fbc104ea73a7f6da0b1a6c4086b709a commit dc5f3829a752bb579f709c604fa2f362959ca2b4 commit f8bd73213a13b695594fac76cae67105bcfc7706 commit 425fede6e849df5676a41a520e0064fadc98a6b9 commit 5818eae501c57e003de9e4f52a6001827e123a88 commit 40ad3e545b3da75f107450d32bcad8346fce5dcc commit 08c8442c4a032194d6956a266810bf109cdfc138 commit bbb860d46fcbde5881c93ed549445a85f2434a64 commit 828418259254863e0af5805bd712284e2bd88e3b commit 72be7316587835e0c76dad472569453e902b562e commit c322b422ab0f7b3b15c0cdd3f2c534094eaefcef commit 60e9c7ee3fec7e4f40b1bb8e4e58be03a12c9eb1 commit aa44beb5f0155d13a24edc0ae94fc8ad1196132b commit 63127922e15565861a0868561c1479c2e490b8e2 commit 922710a82d267b785fbc892081c01e68148afe3b commit 32d1ffcd3979b75b6d7271a3028f4df2ef181a88 commit ff58105a47ede2e9f3fe6f45e9b1185dcfde7762 commit 7f908d332dc48a12436725ae326d6143a1a02c1c commit e06a46087d8bbde7ca31361789edfe026b08fdce commit 4e78d6023c15c6acce8fbe42e13027c460395522 commit d3a7051841f0a4bcb1ee26a1b721c6150cc4c2b1 commit 3fc307dcec8b9aeecae8c1bf2c97f770805daf4e commit e43d5864f36ab32f831b1af7bc2171031e58e2ac commit c312b0df3b13e4c533743bb2c37fd1bc237368e5 commit ce9564cfc9aea65e68eb343c599317633bc2321a commit 25899c590cb5ba9b9f284c6ca8e7e9086793d641 commit 3c8b6a399e0eaa6ab839bba2ce9a2bc57e6708d6 commit c053383813fd17296db99cea78e058ed4d53019c commit c0f50c5de93b8afb2281009a33c124e82973e457 commit 5e0e33f92ea5d891ea37fbc5119031024c154805 commit fe7aebb40d42bf8e830019d6f57c47cf7d85aa61 commit 483e3d87a37e804588ac8224aadd20a84593cafd commit f89aa0b6db18dea3c3c8ef266cc6c9fd8dff2d72 commit f9feb882744f8dd3d7b52c3548bb6471ef3adea6 commit c2a6502f36248e9e17806d1342e4617d895960b0 commit 981f09295687f856d5345e19c7084aca481c1395 commit 0aedc880025ffed5be6736bca61ace31f591b92d commit 8fe444eb326869823f3788a4b4da5dca03339d10 commit 5a1ae03fe5b7905b2913ada57629a2ef255629f5 commit 46d4eedab5a1fbadfd5dfc915a92cd13fb3bf325 commit f04b1d91aeec5f981b3a8f10b7321fed544d68d6 commit d48596f3ef2c0aa2ce7a106dd5ed99045d4ae377 commit ed1b4369fc550416b54de7ed78ee39ba8b64f88e commit 5fe9eea5eda09a5b02398671def156e16162eeb4 commit 490d95c70e9d2debd2be0f7bda524c28fc009da1 commit 3064d01976cc88f9ab0625bb4f729ba5e5986584 commit 5a856cc22841d6f3202aa91fa5d4ad07e3c0a9db commit ac7af83ae08b2789a828add74c01ed2e7b78e21f commit 4182a311fbd83f17b276d94c44539aa97d381959 commit 22055eddd4fb33ef475f2daf700fbc7dd0f42389 commit f8cc091e05305231c8f747ca253a90ff0cea60b9 commit f1ee74afc1e303e69f4485ae677686e95a8bcbe5 commit 2a37630d0ddb8a0612b700635cf4827aeafe4142 commit 1645e7b9667f14a37f9ac8c49568b8f979227d20 commit 254fe9c106ed69245fbe0beac582054c98a91482 commit 2eef1ef6e22b241f26d7bf0f1554a9863277e526 commit bbdf7b2a0b0e69e4e18b5722341dfa6266d19390 commit 8ba1648567e289c90fa4f65b4204d0f160e22ac3 commit bc0d7fdefec62e0cb83c1bcd3c7bd033f5e826e0 commit 3675d8a1726337bd1e839a185e0a7ce0bc459b6b commit 396369d6754993e40f1c84b2e22e40e92dfa4c49 commit 797e2c3f2762c356aadcdb53dd6bb8b8d966f7b5 commit c6266862de1665b8c8006f58612db2dea66a29f6 commit 7ae5ab441402b8165de4658ba9398d8378f7dd1e commit e1a84ba850128b3984973786829e610ae4ee0e2e commit 873fef8833ea794526b7f4179088e565078fe0e8 commit 8284bae723f025cb6a8431566757a3854a3c53eb commit 8e3d857c70dd317cb71301d9b49f0506ce409a1e commit 90f9617ab86063a5d7da628137f0b19826648cfd commit c1bdf4aabc093f7741f6fc6f1a6e942b946283b2 commit 230bb131a6143b19a78031c64fb8f3b9320dc122 commit 5aea37bf4112896437176704049db2559efcb8a9 commit 5fd5cc73e449286bc54209a4cdc7db888fb022e1 commit cc6b2ba27506781acc0890ac1ce3bb2be154a21a commit 831a277ef0010e6599af6b300140ca61a97afff9 commit 7fe194b2d1bdb9d17eabf1c5e485518a82c7aeab commit 78c67d5fc371c82f890f5de7a20d7451735bde41 commit f8ad757e40c9c776a13eaa56d73e8e62381517b6 commit 68eb42b3f3b30df1a335b3139b21c32187c0efaa commit 07d50b8222d0d6fcbb281393048e36e797334ac6 commit e6643298aac0d9d77696513722c85d7808e4c84a commit e740ceb53e4579a7a4063712cebecac3c343b189 commit 4da7aad41c8f6fcccb37e2c95a07c84835effd7d commit 580c00e64f121ad2d99e6f43796a49ea2cb4439d commit 665ae9c9ca79bdfc83def0981e015e181ea463b7 commit 65332a5b9fbd5c72c0db009b17ef4304d4c242dd commit 340b515c1b172e43ea47d5f823f876307854b46a commit c61ede87b08c56cead5814ef92f0d5eda9759f0c commit 9988db59b1d000c6ac7e91144f550603626593a4 commit e06f1c6022673245a68b22f72ba40250aaa7255e commit e72df53dcb01ec58e0410da353551adf94c8d0f1 commit fac53471d0ea9693d314aa2df08d62b2e7e3a0f8 commit ba6d29e885e856f2d9222861e61c370e25f0d2fe commit 6d9b523dac1491a87bb3f15375e153de34a481d2 commit 17048d89913c1713f0549aa47d63f2a4940545e8 commit fb0a0625f8516345f888d67bcbb96ade19a8f20f commit 096e33f8ce4f4c82035edb532e8cb0883831e14b commit 780244a2fe8a82424c85f4cb15e45d0bbeec8f26 commit 622113b9f11fdaeff2cc17f684fb7e4968fd8a4e commit 3bb6a44251b4d066d73faf43dc17bad05963ae16 commit 04f7eb3d4582a0a4da67c86e55fda7de2df86d91 commit b000abd3b3d2f06e9cc60c19dd4c893cb3531d76 commit e95132ef5d458b3e9d75acfbf4770e8b34de5315 commit 665a7b04092c5671f3a6c34302aa1538948b4666 commit 0ff0e219d9b8db047d3e800553f238136ed53ed7 commit 27d06077d6e064ab5c02988d14bca4748045d002 commit 5a72df3a3290137f6fdf34f23ac617ca35262c76 commit daf195faa5a13972493d3a434e4d2e86ece722a5 commit f7ba838cf75b348a3a8b0d11d347c964fdf870f3 commit 3917c9d3b2171dc838b486f7be6869525c6eee02 commit 74d6f31fa427b87616bc65987a8aff460da1e670 commit e6f29923c0489b6fec1ac000f2c045df43ec081c commit c46af5621adc766cf1a7cac300d577a39849862f commit f2c9df101095bfef7682caec8a5fa7d4f3b29182 commit 758d7b3483b6eae4e0d52dc18ed6b4ed8fc1330e commit 5d832b6694e094b176627ed9918a1b21c56fb742 commit e2a5c05de6753781d69245da871f58fcae6d0bb0 commit 55544b2811a6c2cac9a823b1bfda53344322dda2 commit 42a0d256496f4526046b9779ea6e49018b58f779 commit 3fecf93c86087d1e1a9db28d3423db276639e776 commit 6da75526fc9edf940c12a785cc2fdeaf22101cad commit 0173ce114dc4df73e0ee3e1eafea156b7b26e719 commit 6d6e732835db92e66c28dbcf258a7e3d3c71420d commit 1ceef996c99f1e8a44df8714fcf12822353ac488 commit 0a80005d3c5fea0a21fa6553724c171495ece9b5 commit ed9605a66b62f27513aba1d95f7d470c4abda29f commit 53593515ec1a4a5afaaa88fd4522bc4c2d7f5d9b commit 2a07a5ddb135e4bd15bf6468b7d2daa4deeaf07d commit aeb76f97fcf5bf6c094c62ac5cc22a1949751236 commit b13fa27a4b72caebe99bd483092479c3767453be commit 046f4f0af7fd1fad06793d863d288c6b2cd84e99 commit c5c354a3a4728045e1342166394c615d75d45377 commit 2c2705bd09730dba6017b26897a2bcd3c5d21557 commit fa47573b04a35078953be5f81a78f22c96358817 commit aaa65520280e96dc47fa5065b74bddff30279abe commit fb34d8a04e5876552cd0d4f9e14400ee13f116fb commit 89b03aeaef16f8ab48c10c399f97c836bdbae838 commit d25654b3fad9906ca80912701fd4bd6e2419f54d commit 216b9bbaeaea96b7f05c220f61855d174be972d8 commit 385d1bba890f9b94322ca7fdfa778311f1ea0813 commit 4a85b0b51e211fba03c081e1e47f8871e4b3088f commit f2912237eb922bf2d4ebf13f3f5f1b25070f1e52 commit 6f3562b3bca078b40aa198db8fdc68439b7b0399 commit 47519d8224babc9dee489ea96dfeac726fe544cc commit 213cb76ddc8b875e772f9f4d173feefa122716af commit e3d8d54cd6c5b29f3437f1f00b393267b84d650e commit 5c4d2536cfe105694b7045a8d7581631f44f391d commit d67287769e93da7fd4b0ea1a5ef14f68c2cf527c commit 2d427248aac4e4c8daeb1a4e021f9e22eb0c8e6f commit b5917a109f1630379e83a37bbfa55a9198d50c66 commit 31335aa8e08be3fe10c50aecd2f11aba77544a78 commit 68d46e52092d9a94370d44cf23db58cfdcc4fbaf commit 60017f34fc334d1bb25476b0b0996b4073e76c90 commit f16bfc1d5de082f50ecf87eaa98c357226ea06f1 commit 639e30ee3950dd77606d91719ba85df27b882f0e commit 45474ca4814f0e8d70a390b47afd607cd682b976 commit 9ebb80e80e471fa314b9bbf0a031b3bbc7b511b8 commit 70fff19a570d4c9f73ccf0ca8c8b261b467d2491 commit 4ecd56fdad5681c7c89483c26b5130977ace9fa2 commit 6438452de4412785636e803aff58fa2e857dc6f2 commit cfb0fa4241257b73f2a074f2563af9a8704b1b08 commit 1c66a12ab431cda82a1dc53fc0bcd54370014755 commit eefac38ac4a38ad93f136126227dbcd35dd3225a commit 29063c6a6a57b8e6ea932ad50728b382ec1ddb59 commit f0e2f00c49db0cba1feff7ce5a5f163d2152056f commit 03d2c54d30901916addd50abb0a2cf871965b8e3 commit 51aec8bf16338e5d7f34ebc33b173b0b9ce20973 commit 8c9c40ec83445b188fb6b59e119bf5c2de81b02d commit a791dc135325862fdf491ac088f54993710e2515 commit ff21ed39ca68257aebf42b23afcbc2db66dfecde commit 0b3ed50eee5df65e3200c89db7f32f31c6210333 commit f9e932a83ac0bb18ff71014d912af9c8e4d8eab0 commit e5d464d02f0681c4677c0bb5f6c0a70c8be78ab6 commit 40151be79668232187b1ba7e00983be76a7f5845 commit 85d53200507916955be64b1e2cbca713b8ebe3bc commit 825477e779121342d12e3c871a5e7487530b5a5d commit 7573e6577f7744fa6c5f48e5f521b780c97991ef commit ab30464cf0616d0aee00df899115e19051471281 commit 758b018aa28342b5c54646987f8f6ce675cd7bae commit 1bba5543e4fe7f60480fee370eb260618ee98282 commit eccfba1785b52887d0aa4d2940a396afd53f0054 commit cae5cb0cabc4847781fb359d98f7e1d9c7a7909e commit f4a2f273033e059de2266aa10b6459bd36b92223 commit 4ff0856db045e1b18074127cc7222c481a99657e commit dd9b18e76f0434e47ee8f5243727c79a66a85243 commit b78e5d830f0db8e6d998cdc5a2b7b807cf463f99 commit 68ded02cb2c23f1aebf026196a793959bd0463dc commit 7bb91228291aa95bfee3b9d5710887673711c74c commit a4a3798f0077a1584491574027b0067c13396d12 commit 1ed1f6be6eb3daa8097d6419dde516c9854a8790 commit 46c676600c715f833b066581247cd5a461e03441 commit 7a3f8b7c4cdb9d678d6311ca93e6b793e8957295 commit e1f84eef313f4820cca068a238c645d0a38c6a9b commit c969c5fd21fd700b126aa139ec57875697946474 commit 23fbdb07d6a729dd6a1df8e0cdd5772a5935c053 commit dde01ed5b07808be13d4469f90e578ff83774c25 commit 62a21a7c6a1cb7030eab8d64427d93b97cdeedec commit 70296670f672e470a5b42f72468a9fe631264070 commit c73cdd12de96ac4ae175b5095b5bdab6af96fcf4 commit 9dea5dd0e9dc65c9f5fd9390062381b17ef242b2 commit d27ec594b48d9d2842af9e3fdf3159bfdac1b1f8 commit 34dfca890835ca9f4a59c8a2ff6be8c0513637c7 commit cd3a49af58c23dd5ffa1d4d5a120ee2354d2e8d8 commit 0c89abb25d682f34582ddc766e7e3629dc8e168c commit 3a876060892ba52dd67d197c78b955e62657d906 commit 2efc30f0161b064f6918316ecd486a8e3feee10e commit fc0cd4cd1f7fbe6b0cbe651a8b6db6ec5476c949 commit 02bcbd6bfc5932d4300b017dcd2ba7e7bbbffe79 commit a92bfda8783729ac684a0f005a1680602ed1096d commit 8a948b1b2f2bef2444c403a2884134d46100ec26 commit d4242216dd792b2af6f3e6738dfa71cd50bcd791 commit 79c0d7ddcbb84b2a714620a2abc5016529fcc38c commit 556bdae320b2b6db124738eb97f2624e92cceff7 commit 826f03b8ac7a9c4660de9b65a81e8926c60b3b97 commit 2f4ca1ba6c9e7a4c2eea2ed8a378817ec1946f4f commit e7c94bfb747fcec57528f89e53a1461b48ab06dc commit 65529fa32c60ea15514e99b6ea12304aea732b67 commit 49791b988ac78531ece312043d0113ad1ff9cf0f commit c3db1b9065d08dac7dd602301c42641dbbe89990 commit 158225294683310566445f8477336e747b74f03f commit 6da15a236c8c80d9f87e4c5216e00ad8f1cace2d commit 17529ea2acfa3e2118f5a9ee911e0daf2d88c13f commit 4f76da231826190658d19ec8d89ea8cd46fdfb7d commit 615268d4935082ea64729fcc8a35af394ff90e7c commit 41c81dcf599918c53e08933a0b0a522508eb6019 commit c7783a6ed4fcfad9acd353a087384d31d4cf42b2 commit d3d4211050665442ce50c7b5e837b9031ee85b33 commit fe77d95f7a7f2f567205ce747124efa465fb01be commit 94caa423e2b5658626382ba9d98f989a47bd2b8a commit 827e3c9caa77d358a824c3f302032ad6c9d2ba46 commit 34e205112ec078ed1b24e30d90af81e43bc12f4e commit b8e13105b7fe9a0adf1dc7dd3d5d0647962adfc0 commit d56e38d51cbc902a27f8b2ba244bb6a8950e8a7c commit e7dbdfa226ce621931a84f60e885d42c232fb990 commit 247a94a627dbd9fed370b575288b874ef4a01991 commit 39fc82b7e031dbf5145de485d66f4a23ef711786 commit 43080c9b7536c5cbc53c5d8c74027c92c7e0110a commit 5c1a431aaf52bbba8b6e2c4e9b4037a09509c0e3 commit 3b304bced035fa4e1144d657b4687238be931806 commit 61e4de65b99c616d5e074a9e2a4a1a9f821a964b commit 4bd09d7481047500fcad389251e13946c083b9fb commit 34955a1e797d074e72d0ac6a514d934d8fe80da1 commit b04fa59a51e80eae9883a419e41b1bf8179e5a42 commit 410e747401a3121cffba6ecb932f5df596799550 commit 70c04ad8441a60ee65ca2e1c40fac04882ba09f8 commit 419c14521e0b090e82353556008833d58c2efde1 commit 1df7e569522486e58307929a726ec8f303c5abf4 commit 3b4e83a232244e2fe911bd39b322e0dc19b22434 commit ab2ac59c32dbec068954de30eda741d012be3c74 commit 1dbec5b4b0ef319d6961d3ecb7384b4f9ef9d358 commit b0f4b23fc3dbd8c5398e9ea9cf1f16a00d9006a2 commit 9b94c609cc1757d5cd4621dc15ba73faa492b99e commit 736ec9fadd7a1fde8480df7e5cfac465c07ff6f3 commit dd80d9c8eecac8c516da5b240d01a35660ba6cb6 commit 4247084057cffcd8f9897110d8d827d550858dc6 commit 88c98d54b220dfec0b8e4a4400f6822aea5a383d commit d4e8ad908b2095388a300b19d76b78c170052a8a commit 221bb3a9c34f8004c10ebcd0eda9d74354d519d1 commit 7136f956c73c4ba50bfeb61653dfd6a9669ea915 commit 1e0301e127cfc708c852278539e0bbd4c77ccb09 commit 1a468dd88a13b39dace8b5eb87a274782a56cece commit 7f0eac6564dc0967fcd430e0b729068afb70d60e commit 0cdbffd55f11ab39e5f8902860cc48ae967cd1b9 commit bd7352332b60a5d2fff625332acfa2ad96e0ca1c commit ee10818362d81ca1796cacdfb8a6c6f857cdb34a commit a2224f2d458a093486ede49e319a32f02d99ef16 commit b779e4b973b7001555efc9120a7f07e4ae554d9e commit 2b61e16a3c875f65e341c3769ef2c80b87cf45be commit 04e6fcc1b374c28e53c1b3f8b60b935a056c369f commit 75cebd664d57a78af3e46c14bd2659df0a08847b commit 69a3738ba57f4837a7632064b2f8c567282e03b3 commit 95589cec1cbfe260ab03281c310e4c3a5947c84d commit c9424fa1f856eaf09e09a3381fe998dd6f905bfc commit a062b8cf811d49b7ba7203d0ec5bd9fe0b61c66e commit 25e4b26672a0908078e10733eb20efa20800e534 commit 42b2bdc8c478a705a9642c85d8b3802f5516447d commit a108772d03d8bdb43258218b00bfe43bbe1e8800 commit 3f1a3a28e9e00a84705b62f0fdc5e31d0f935615 commit f5e92d23f51ced4f366b3193822f705a08beb3b1 commit ad74457a6b5a967641c80798aceb71503dc2bfd2 commit 0d6516efff2cf275591c57faadce249257d58980 commit 59c43748c7c82de9fb537fe790cbfc71734333ad commit c1c39032a0748be08f6bc33a8dad70b83ef311a6 commit e0f1d483b85bd35ed10985e7d3e64386e4e14e50 commit 668562f49dc67a16e3649432cef341d1649c1109 commit d67927e4483811a23bca1a5508de53d289df3209 commit b70cfd91a980fb423299d1c48f4127d4b7fe79c4 commit 9e33e951ecafea581a5d346c56cbdd00f58814ca commit c1e48e36c120df7e3a3cb39d17d64c753485f225 commit 73258e916a4e7e8adc9402da68ad9bc40dd38686 commit 04206ff06a849834e1feb21b51735fe673a3e484 commit dacd2d2d9d800b7ab2ee2734578112532cba8105 commit b167259a12f2c49e82cbd077499df85117177a39 commit 961bcdf956a4645745407a5d919be8757549b062 commit 851d635a0bf2a741d0e57889b5defcdf9ebfc70e commit 4aaa1a98331c9f9fd31f4b80b913c8f0c556c90a commit 5d53f4c22d367b214f6f737db5cbe6f4a86db747 commit 29a051bd468cba31c227af579a7c57f250570cfa commit 1416b5473d34d89a85c02889b724f32b56ef12ea commit 542110f21d811f0fbc661bcc9365e45e23e8d422 commit 21f0b7dabf9c358e75a539b5554c0375bf1abe0a commit d1e2d6b78ffc0317b41e1465b47e325e2765e5e0 commit 8adc718881e0a70127f8843dd70e69a80de39352 commit 6ad9aa476ce23be45de9dcb03edcdbfdf6117c25 commit c85d00d4fd8b98ea4d16817f397a4de5e177afd6 commit d62c43a953ce02d54521ec06217d0c2ed6d489af commit b96fb1e724ae6839d5bffcf42dd3503db7cc7df5 commit e4dc45b1848bc6bcac31eb1b4ccdd7f6718b3c86 commit d819524d3144f4703f45f473fdc85ad7579ae94c commit 8401bd361f5991ccfe9377e502fa37203ad70320 commit 770e19076065e079a32f33eb11be2057c87f1cde commit 2830ca9e5b98bee82f1d1e284ce23fe7fb244ea8 commit 9b6a16575ebf23a98a9ff84aedde9f3b25731714 commit 49da26d7b418cfc99ad2473a2e3dee2e08c5ba4a commit f3b173e9094f5b02fb92d641e3e71fee0bcda73a commit d35a4bf66079b92e232ac85b08f19312be9b7eca commit 672c473576ca5c9f5a40ac848c938e6898a5aac8 commit 74f481f187ce8b37ec5143cee19147da5243009c commit e10ea7b9b90219da305a16b3c1252169715a807b commit 02c830b3719280be4c43fe78f24fbf5db4192f91 commit 549eae27743116da08a7846e09f1e910992af655 commit 1f90b1232773249d924868bec3c31525a69fd482 commit dec4ddbe1d4a4414092309611cc97e6b9dc7ec3f commit fbf3093466d05461e3f307ffe6b1150daa4b065b commit a7b98d4dfe68654641d56cdc7eace2c36be93a2d commit c989a62484ad75e0a06f2ffe67886e7cb6d41659 commit f47f537cbaa48427039f61256f68ce08986d8eb4 commit ed712d30a9d0b8a59d6ed001cc7711d7b9c5ce54 commit 3cc3dd73c420dc70cd366f91a680035ef47edf4f commit 3913f0179ba366f7d7d160c506ce00de1602bbc4 commit 876552e5d50178cabaad015a464f116c1944739f commit b98451dc7a0fc4cf235dc09483d7cece362d9ac8 commit ed2eee42d36267bf9e084d7a13fe5c0100d1c64b commit d5c6ad72966aff6df9d969095b95478efebaa770 commit 2f9d510f810cad1042c6857a516177295eb3b42a commit 670c6edfbb73fa94026650691ba23842ef282a6b commit e6a7746ef9a6e11c271935292e381acdad607c9a commit 6ad045856f7d7d538dd4904a10470989c8f6081f commit 7f89f9973cbe7c11338f69bcf134de157747d20f commit 8886200073ee037027d727c2828d881257e28e04 commit 40e0110a85674ea93614a5863b852d5b3bb6e445 commit 822a9778289b9be9f29b02ccaae81d36c979f40b commit db62b2b7893f724e5032229443b03e0494856aef commit 16e5859d9faee7b839531e7cb8f4e98954108c75 commit 710080a3794bed269533093f5d2d9e37908962f0 commit 064841347d75e094fa2bcb5b997639ec9e5f9a5a commit fcd3e58f09952d836d2f491444292be2d8bcf7c5 commit 7ef414375fcc001b6d0745d2931d91c9c736e18d commit 82bf0f18ce99edfae2e5b4f753e6b2e774ee6226 commit 22c42b0ec225c92db33e4b3045ad15baf1427cff commit 62f0576c42993a442ae722fe2e67a140e4669945 commit 47c2790ad69d1f072e7e26dc16bb91e99dd4c946 commit 10faf07871b257c46baea0d39df585bade6e9266 commit 9c75891feef0f9f67cf1c8f8038371006e25d23f commit cc67aae1e3a330e18ead512b525b8721a3b05a6c commit 6349c73859cba2fabd77494230306ae8a7e45b33 commit 6eef37460584269b240f45aa47ebb61aae848082 commit b0d6de32e30c635aac22e52357b090982d94df52 commit b0f5b1004ef8fbdd7cb314fe0bbbc115beae057a commit b81fafb9360f8577f660eb996602a7a58106bb7e commit 1591a6478fbc61a0b30765a3c2b222fc50db849e commit ba5c07129896faa2a261d57ea2176841fcff8723 commit eccff6cdde6f47dcd88fca8c638e0d651f0e09f8 commit 441595baa55ac7b60fc9a344228faafa275f3354 commit c4c3d87be5cbab46039633731d8c5fb203c7a95e commit 5fb78600ec1504d30a7af7b0fdf2f2e6870ddea7 commit e7f2f4cd67443ce308480ca461806fcc3456e0ba commit 796d6a37ff5ffaf9f2dc0f3f4bf9f4a1034c00de commit db25e5d51f58add0740b17d8ea5cfd4cb051e3ce commit fb579c4229d10b0d98c37ebfc5087863574a2524 commit 0c41021cb812d1492b426fe8d0435cd529771ebf commit f57da8c04f183f90cd450a5d5142109fba340417 commit abffd871d4862f9e77979708d1df45152becf8b4 commit c1143ca2d523dee0f6012638068abd202a50a42b commit 2447ba5bee91527d3d49c5271b6c34a84fc67bdc commit ed2770038bbc67abc60aea0108b698be3bc93e65 commit 63423cf109d8308faf5d5946b1f57f5b0d6ae8f6 commit ca86bbdd9b47464d78ae6af565a6e78c6e4e2fbd commit deed8ec482a6e7e84dd5bcaac5f77c75bd8093b3 commit 6e602264b9a8adb3133faafdd06ba0f70716a2c2 commit e294bf36bd9b000defa9f80f054ae355a4914b0b commit d1a4ae582448a4afe38b7f117523fa2ac2e96599 commit 9680810f91f2591b16b76f73d1e0d49af874be0a commit 8bc14183988849e99046595785ceadbe0b88f7a7 commit 4aecd050a825c1bace2a35326b4c8faacc9ecadd commit 66990450e3a0b6dc7baeea8f69684aa5d3ec2ba2 commit 8434f8180216a9c6ad498c5f50e05a2cdbf81e03 commit 41da5fd2d93fa44946cd7d202178f982cdb587d0 commit c09a9bee6459eb6976b6db3f33d2776243760d3f commit e4cf73fdfa420eb73507cf95c165d5d538d70d76 commit f5c7e7797060255dbc8160734ccc5ad6183c5e04 commit 83d29a5f8a5a8ac76fdf8b8ccca65899345e6a9e commit a6ad27cec585fe715b95fcc930cbc460c678080f commit f4b92fcd740d7c90eb7b011f22deab6192ffe44c commit 4953b6b22ab9d7f64706631a027b1ed1130ce4c8 commit c2b08e7a6d270d25e8041510adf82b4a657142d4 commit d4423feeb7d316f1a31a5865a21b195940d4d7e9 commit ee34b77f681e9656d229b1df48ea67f019bb6335 commit 7221941c4f3249f6e67090820c827326e2e4459f commit e71def057252c0b5189618ecbc7141b56db4a74b commit fa0706e9775c10a9028e0b8d74c274cd4a179fda commit 02d6f9a13ef3316da5c64540c5a376f07781c853 commit 71dee0361bd04f31c37525e69817654c6e23c97a commit d6cbe630f3e9a5b11ba4082ff980ccc094224610 commit 110ae8a21bbe779a133c1672a1463105c9d50590 commit 16fb4dca95daa9d8e037201166a58de8284f4268 commit c05d789fed948ed6a45963ae0d5d79c67b87aebf commit 68ce8b242242651eb3cb4ff29b79c44d02f752c9 commit 4624459c84d71e0d5f94ea6a7b2c4eec4f1d122b commit 8522b42aade9dd0a0659c94095094a41e9664309 commit 0b844b6ee28cb99ca387880435044cb55a51d73d commit b091fc6f8e5bb27577ffb71087f06730f33a8908 commit 6974340554d227ab6b8ecd933581857b227f632b commit ca07f4f5a98b96211a2a8fe51b35c039720be888 commit 25ea501ed85dc3c224db73fb79d38b6109c1ad99 commit 4bb71fce58f30df3f251118291d6b0187ce531e6 commit fe6f695d8d03f98a04f6ce6f6e8eb8e4d0c450fc commit 48c35c428c7feb06761dbc398139eb7e697c6608 commit 72ca70acc7658b99ec39b75971002fb1c8d48c1a commit 47cd3af67de0bef9d50e37197dc307ce83768142 commit 849b1f33437e223c0933b4aa803356542386a989 commit a40c7f61d12fbd1e785e59140b9efd57127c0c33 commit 0479956c94b1cfa6a1ab9206eff76072944ece8b commit b38e77cb7bebd341090f99021cefe6cf81604971 commit c1806d78eca8df6e9c6d07652e1a0bf1c4669984 commit 998debbdc8f49bea4ea8bff9852faa170e996bb0 commit 757eb2bedd08a1dde6dbb67abfdddef8d8a2e882 commit c2dbd69e7b3a02b39ebac262c8c6c7f53df584c7 commit 3e43b760c9e14fc0b7bd553efb01d9ca825cf338 commit 0641dbefd4a14eb262583a595074431ff1ffd270 commit f3e6173b4bbdd9116c9a085998d237e1c2724a2e commit a97d0ec8bb7cb044d3d7d496a12704daa17dc636 commit a0d9084d7f6f5ae911b40d13ce33055b6c7aaddc commit 435d6e6f02234ca0f2df88f4bdc2297da1529379 commit a5ddd2a99a7a393ceb023b83d7e78fbb3284bcfd commit 39dd0cc2e5bd0d5188dd69f27e18783cea7ff06a commit fc44f3636a4db6544fd1532280e8adcd1ef13ba2 commit 19b5e6659eaf537ebeac90ae30c7df0296fe5ab9 commit 461a4df2a833bc6d83139ecf117e2f844f38f655 commit 9f4a57148120bc9178922445409836d9fb102aea commit 43bee41415a6e70719dfabfa52a413064c3cad51 commit 9d6b59478cc57469f57c57a492aee732d5ef094c commit a70abdd994cb0e799c131d3db2821c02f85422cd commit ec9c88070debd8d87335f2468481a41d6bc2d0c6 commit 0406faf25fb12d29cb1823e641c6f3f3e2037735 commit f158936b60a7874f29cf8de8d83191ad69119c11 commit e820f52577b14c63f7a15f534e17088d3c6afa6c commit 84ec67288c10fbf136aa050d00b0fe7a89655da0 commit ee7d633f2dfb12bac90898edf2ceb5f43a4957eb commit 95a77b6331c2d2313aa843fa77ec91cd092ab0e4 commit 6ce6fae8453687e39e564dc15b6142fe79d76ad5 commit ccc2b496324c13e917ef05f563626f4e7826bef1 commit 16deeb8e18cafd30e70d8dc2b12a753b28298d8a commit 4aef2085613106d0a3ce868a45f080babb4e3478 commit d6d36cf2f8efd78455286050d6d8f9a8969d63b3 commit c7bcc1056cff6d99d173d4707057f3dba94d32d9 commit f683b9d613193362ceb954c216f663a43c027302 commit 7bfa5c7b28d66d89daf0808bf36ab7fe0e9e93a1 commit 0055e45d837483d644b868755eff6091b5b51ce0 commit 7fcf19301ef745adfa9fa1baa7b829c77dec5e22 commit 52a504e868e78d866ed204be59be96abd62dc69c commit 4b5a51e45f296f0477485cadd1fb7e03295cc455 commit 25bbfb930716390405770bb79f0d348ef93c5a7c commit aa17e57e5c67330c36d915da2925ca27099c096a commit 86a4e84a9d5247daa2eafef05078ae9f3e003bf1 commit 47c3d0752bb6b412b8d1c08a1e88738fe5b9829f commit a50ab1bbab26b26fa070e83c47687e6a0bd52302 commit 30b1a0797e0bad14f95d349b43e3df3a157b83b6 commit 09d6838f377e273e112bb20eba1e569c62e1ceb4 commit 8397d2984528b838bd4a04af3173049426d2ba28 commit 43113fd4c5f562b47da68927b9ec2369e1e76358 commit 2f24fe8c54cc8d7e3432c17988ded0fffb192c1f commit f3f716ae5d827fbbdf994c9d5b05d05fe33c8ced commit 453114319699b6bec2f2ab9bd87617ba25f6215e commit 45eb009f8d1d3cc38de9c3b5be20301a2aa9cec0 commit 85f17d677f6c40069287617630f202eb20fcfe36 commit 5b415212686a0fa03f9f906a0c8ad2410590230a commit f6f8bb5989a362d1c5f613c4487dc7adb8627dfe commit 95d8c67187bcfaa519bafcdef9091cd906505454 commit 907cc346ff6a69a08b4786c4ed2a78ac0120b9da commit e8573000f4bbb7bfe48da5de5981e5dca048c433 commit 019d157e5b0355b4da957f262b3eeb3b7a948f8b commit 7b4d8db657192066bc6f1f6635d348413dac1e18 commit e3e7f178d4d82743786d5a002b714b5d516f5870 commit d25404a359b24a887db56b52064b754f79921bb7 commit 2ab69739209c843a47af82c0620036b233c83688 commit 88b61e3bff93f99712718db785b4aa0c1165f35c commit 39a35d52d48402957ba915a9d50b2d77dac45bb3 commit 7c32d4e37ff3595ce947e4e0a2f098fdd05ae7d4 commit 642c0401135d9877d6888fdd2b0fbbee3b134409 commit d0fa84f174770679ea22076f4f754bfde2f3f0e1 commit bb66ecbf122cc5ca52c569f0f84b5d1b2c00f6b9 commit 629c30db7c6812fe82d2dcc0110c9e994a831182 commit 74365388999386d8becd147945a714be2c36228d commit ce754eb9392ecdf1e843b209a643c4d5fcb2d7f3 commit 425ad8a5d3b09f09256e44cb6b55959b18c15618 commit ec71b250170f60986ea1d2feba6d3b6a63bb1ac2 commit 93cad722d3fe546744bcc484c5945d09d5f22d45 commit 5993e4c68add76bdec1efff1c534b8610f69ac05 commit e268df1d20b89d1d448277e16ce1720887e8bdbb commit 15aa13056d11dad1e54d65acd854184f3f74a5b7 commit a2d3b4b81fd49b14782ce0ff68ca74e40f16609a commit 108db8decf0e5ac5f7b64967f434a32125b75bb0 commit 52642d13d600e7580fbf4c09dfaf15e187ab1625 commit b077656b8c5ec9ac238782e20fad42f6d6d299d4 commit 167be8522821fd38636410103e1c154b589cb1d9 commit 82806c25d5e9d927ecb68c0c3679dd41187c9af6 commit 585a82618bc422508c0c8ae0dfe2f76f22c28361 commit 7971b5c253cb1b3293dd1479f4912899021451d1 commit 3e9cf23428701f055765d66951b01286f94df056 commit 202c1e3dbc882c9040208223c12d158286475084 commit c054375159802704d099986f03d0b7d21b590fac commit 97d8d6f075bd8f988589be02b91f6fa644d0b0b8 commit d3d61281edc0ab0c3d566e760d5bd4db5a9c217a commit 7712b0a7df76447515752afcf8ec470b17ea30ef commit 936675464b1f481ad432d6a4fb75405c0abc71c7 commit ec55a1c0813efcc8629f4af8e17b6da5265642e3 commit c55bf690fe79f04cb8ebfe34144079777021cd7c commit 567df29f51a582ced8d2f56c7f531757496fe7f4 commit 1f21390ec6026da538a71ac254295461be7ee0c4 commit 3267b7c05bb76f8eb6da90ae0f5b0d523b9f611e commit c02e6444117f112bea468d3615ad6293cc7de64e commit a6135ddec2258cd52b5c8d20b45bbaa29b80c5a0 commit 5d4b5914607803407c1bd3fc8483f93a67cafd0d commit 17caab0f0b47d53ad02e20673b51f30a6a16025a commit cc8dee689a6bced98c8bd83ffbf4b2041641a860 commit e18d9839b174d6bfa0d620293098b3c6a441cc4b commit 3141d6cb64e7a76af0b87e1f28c54d67963db871 commit c08978577a7b17736d9680aaa7e0d22dc775c326 commit 525a65c77db51cf5d6c6d8e3f8d07efeb2270416 commit 5caa63c7b7e1cbffd5095b7c884752aa7228b7ef commit e32df0c7ecead95d70ca89f39b1b2b02a59ff691 commit 1e939ea1bf4917095575fe4ff1a42578ff234605 commit 047783cdd5f604d87398236beb4971abb4d43293 commit 18b85e98e10d9cea5c23b710e78c5f68897fb3a7 commit ce438e99015871b9226c27066fe72fc05f18e8bf commit e844cc250f33d207077d0af9337484d6c94048f0 commit 415be17fb2f4a70afc827332c936955b801085ad commit 940d4dd402e97941aa0a92436cc3d4c2d7c13157 commit 9e447c811ab31cd69d8fff18283fb695e1ff59a5 commit 2d89e2ddfd00ca569dd73883c7c70badbd57f4ac commit d7274ec723cd0c2359ef75f84deca462a60c5025 commit 5d8c3e836fc224dfe633e41f7f2856753b39a905 commit baf28cc10ade932cec707e3fd723e6c2850efe3a commit c19a5f325a7fb5b353976d66d6a92b35c0322138 commit 1014bd1cb32552b732fd0f6ff4e68f32188d59e7 commit cd4c99f103af5a85fcae5d31a9e85361679ab979 commit 5e1fdf76cf9b1b764d6061d78c29901d774fc061 commit 3ff4ccc3e938159c47c4dc3ed8e2b964c3604b50 commit e67135571e4073e1ee252f839d7a1ccf10f89410 commit f61a825aa86115dbdcaba25bba78e007b5e8e1b1 commit a79852a39332614d30a0f81785803ba72877a575 commit b55002b9b575770fc0619dee8f6203697054c861 commit 4c3386f64a432b3697fede579d06f9c1058043ad commit b28d204a7c19231c0a37359f82dc8c4b234d1d16 commit c9b48b91e2fbb74fb981aa616a6ef3c78194077f commit 0bda8d828f3af92c37d7667d598dee77a64cc46b commit 0b37f47494099e74b3cc11d71a763b36b70ea2b7 commit 730548ba023113a15e5233deebd49ffbb02b7322 commit 8a7c3ce108544334a9c7906f61d2701f433e44ee commit f423fa1bc9fe1978e6b9f54927411b62cb43eb04 commit 54b978e03a3ce7aa3b40deeb1b4c0c9dd6660aa1 commit fb443f36f3b9af6a4590b6e65e2d7affdfe0da18 commit af4e20d335d4414814030ba26f1689884c831269 commit 1de2e7e08e8cd0f281ba9f079a25e72543fe82f6 commit c56453a00f19ccddee302f5f9fe96b80e0b47fd3 commit 484b2b9281000274ef7c5cb0a9ebc5da6f5c281c commit 070a2855900de17b1e11a0dc35af9794e80f1a28 commit ccfa6d35f9233702c924316cdf40c05b6ce88113 commit b2e3a1af8cce4117de06ff1a4eab0749753ede27 commit cdf6428dd518435a05739abf7659589de30970f4 commit 4ae9f874dc1d662ce7bfdb8144903608bcc3706b commit 65898687cf7392c372ea8d04a88617e2cb794465 commit 98828955971363e838149105c268b1fad905f15b commit 1aa3834f510c9d9206ce4d40aff4903b0c016761 commit bdef2b7896df293736330eb6eb0f43947049b828 commit 89345d5177aa0f6d678251e1e0870b0eeb1ab510 commit da44c340c4fe9d9653ae84fa6a60f406bafcffce commit 062e720cd209d8091c4f3d118d93973f02209aca commit 290aac5df88a83e264b3a73ec146e5e5b3c45793 commit 0bc79069ccbdbe26492493dd0c4e38b7cadf8ad5 commit f2fbc72e6da4f8e01fe5fe3d6871a791e76271c3 commit 685a1537f4c603cfcaf4b9be56ff6a571f7ddd08 commit b86406d42ae3c41ae0ce332ea24350829b88af51 commit 7fb68b6c821be7165d5be5d8801d909912af9159 commit 7e6739b9336e61fe23ca4e2c8d1fda8f19f979bf commit 91954c6c904b515baafaee6a1f35c94409a3bb68 commit 8ab1d7a27eff87001ebd0977db600e4187f63f78 commit d37f379ad04dcc21ebd1d2380c3bc979d54f7c46 commit 8abbc4f768ddc5c2190ab8966e529cec42b4b2d4 commit f7367b5fe0e38af02d6915a355f2ee63b172c9ac commit c1969fbaa57d88ddef626bb8ae313d38478d8631 commit ab5220bb5a910246c61512a9e29a4e2406cb1ecd commit d35e8b7ae01430b1e722547b2ef40f42dc30520f commit 96ab3cb3b0f862308a03046d01d66c7b4154846b commit dfb3367bd082ccf52d3c13ff62257f08407dffcf commit 40169e2f37127b7fe60736045b1f9fc04f76b471 commit 283e0a673cdf59fe103707ac0466492b315c81a2 commit 749b6c2ac9d9a7a4d8f4c2e4dc6fa830fd6c6ac7 commit 7aeb2e47e43d5acd4638c64b4c0c01ad90feea51 commit 1178ac68dc2869a2f4192600b701de3d853272d2 commit 380202c84454e89d29a9abc670f09b9145617d58 commit 345d6493476615494bd79a8fe77661918ea7c61a commit e4e481e4d838f30985dd46d43ed195110ed265f5 commit 4931ce22eca6ed5f8a3a3820fd13e586011ac219 commit 8cab4ef0ad9521030e1ae4bd294a1e2e6a04659f commit b808a7eb30b02e05023b505fe6db590ba799683f commit baec651f4160f4c3f029edf84bbc18b4fcba9cf5 commit 51619c671316e96d7adaf2b6ea94ce245b81b6dd commit 2d550a159c55ac836a554fd605545b0feb5f7266 commit a2909ff460a8e02168b3658372ebc897f7ab2315 commit 47b7dd9f68c12e7d33a0dfd3d9a5bed755097de0 commit 9114b55fabae5522b7124af4f16ea6ce6378aa19 commit b33cd65df18f1cf60b066a02c09df92b4763bb31 commit f1b47f0004cfff051441aa93b7115d756d5eebb7 commit 3f4dee59253a6882acde98a2a027e55f1330ae86 commit fe674c0b6f5382b7c377ca2c418c26dd78b428b4 commit f638fe27b817c755e017b8a6ae4b9b4224461941 commit 46c87432e3d4cea8e1a7ac6e9e3ebd2462f47617 commit e626d9b9c6e038a6918aad1b5affd38f6b9deaed commit 11895d32ffddb50152f0a1e671d36b7f60e4daba commit 54fae65ff469a79fc0ca46f480c4e7fce50f3963 commit 36939c94689ae7e6aaa9a0fa37e5c41616f76665 commit 9691a7a776302c85c10294f1a92c15c7f57a5947 commit 07ebc18c047adcd72905619e72ae7c48db28ab48 commit a3daede47576037ff7bbbe9cbd36e52a71d92bc8 commit 7e6d5cf8e3e3f8050de52a28236d5a172caf2da9 commit 95c985ffc63e2a7d8f6aa18f9351f5010a8d1adb commit 8c39634d28fa460869702b9801d2efe06671b342 commit 525530ad9a7ec9aa34266e1429cc5ef9acb58e6c commit 21a550de5faf9f54013334c9a6a7643b8fd80b36 commit f6aa84b83aee629fbbbc4ea16c2c142caf920d5a commit 8799c0be89ebb99a16098bdf618f49f817bef76a commit 7d30ccc7761cfcd6756aa0b760c5f5493038d30a commit 5e69732d4a89928b7daaa651ad869cebee28bfff commit 7e4ab9fb2b9449ef01977e79157d06c8900f73fd commit 312b4dc11d4f74bfe03ea25ffe04c1f2fdd13cb9 commit 9a3c6067bd2ee2ca2652fbb0679f422f3c9109f9 commit 2302d507149f0ae7cc697089ab5675a2d4cf9d2a commit 70df64d6c6c2f76be47311fa6630d6edbefa711e commit 7a3353c5c441175582cf0d17f855b2ffd83fb9db commit ab296221579715fb8f36a27c374ebabe5bfb7e9e commit bafaf67c42f4b547bf4fb329ac6dcb28b05de15e commit 9d84bb40bcb30a7fa16f33baa967aeb9953dda78 commit e8bc52cb8df80c31c73c726ab58ea9746e9ff734 commit 7023472834a39341460dae5c9b506c76c5940cad commit c5e595e752b3a1c68cca57c3559521237332fbec commit 8afc66e8d43be8edcf442165b70d50dd33091e68 commit 0e0073eb1b60f4ec6faecea034a6772fe1409a88 commit 4f5bdde386d3b8e9317df5562950e1b4fa177599 commit 99243fd1f3ca40d487209ac76241de0478962a9d commit eae2331899f9dcc923d37d1d753f2de847c92359 commit 5ff32b52995155f91de582124485d0f0f8881363 commit 2fd23d467d4fb4e9bb3c3758ee49799f690f5f72 commit c19d3eace484ca5627817a1de85af1de06d538b6 commit e50f67cf5e168d92e24cfb61fb11f2f0a35708cd commit fa28030a83a6302f8724cdbf0c477536b2101033 commit 20dad3813b3c15d118bda0496711eb7dff98e74a commit 876fcc4222e1d0e5b73343f4010a8b66be058f48 commit d6170e418d1d3ae7e98cb6d96d1444e880131bbf commit 3867bbd44f2894a4e2b01286b3b378c058992cd7 commit b73353f7f3d434e90da9f0e127bba1fe26cb1287 commit 6f4f8ff567c48823f8279206e236643e8e8f377e commit ba30b223c93ec5af63993b6397cd7316e5acb6c1 commit 1298d9ab848653fc35431581d6e36662c7b6935a commit 15e8b368981e1e8420f08b35bb12b794b200f4a0 commit c8588697aa4ec1f3b7fc09277cf2a5a662d40834 commit 9799702360d51a714e888fef4ab5fb9123dfb41f commit e5da651985be20616a9e0662032e0ea2ee4dd468 commit 571c053658926df3321633b7133f574d3e656c81 commit a98cec220aa4b2502704aa0196da1bdc9eb455b4 commit 2cc4a5914ce952d6fc83b0f8089a23095ad4f677 commit d2bd0831b51d1123fc86c019db3452d6a1ce5029 commit faf4d8e07f5b67bece91723ad3e8b3f88a3dbf23 commit 27bc50fc90647bbf7b734c3fc306a5e61350da53 commit 6c482c62a635aa4f534d2439fbf8afa37452b986 commit cdbb816b5bfeb69ad925805d99b2ec312b241f1c commit 44420ac5f855f5704d8f939926ed145f99e49e55 commit fb4d5891cee6d1c14b8d8f1b65c9d061ed3a495c commit 38dbbfa57c08b29ef8cf1d3fb3ad639ae819754e commit 6dddc1eb9632b0eb6098d1dc849e8acb2408c1b6 commit 832e72dd0d705bfcb4236bb2d561d82afe253e63 commit 09f1ef99ce900dbc3659d478f006081c96cc977f commit 1ba25b6ff24303fac890d657ffdebf3e8db3bc25 commit eff4ccd11313ecc8ec94c0f39961ffbf227a406d commit 9f30bf9917612b3a85cc28dc8ef98667ad5c07f8 commit e1e6889fc7b3e5152218db7d9f03c2f81569d54c commit b1d1666276cce28743e2cf90be07182ceac14f1e commit f00844daa5212aac609d9cb97ce5e0a74c67890a commit a895014853ea6df2778533e2a0bb7a0d53f02ec2 commit 1f768ba469002d2dcad5c3d667151977417df7d9 commit 695ddc9318ad45b6a32f902b7c6998c65d575f26 commit ea19684afb545605bbcb690c49a91ce2c8e596dd commit 81895a65ec63ee1daec3255dc1a06675d2fbe915 commit a251c17aa558d8e3128a528af5cf8b9d7caae4fd commit d6fe5887ca891f5a7a3998bcbeccd6ec2e215132 commit 0811b9e4530d7c46542a8993ce6b725d042c6154 commit d3cf40513330752238ae585fdb0e46ec6baa588b commit 16ce101db85db694a91380aa4c89b25530871d33 commit ef233450898f8893dafa193a9f3211fa077a3d05 commit d9b719394a1147614351961ac454589111c76e76 commit 249881232e1471d28b68f9a3829acc14d150cf5d commit e55978a4f264676dfbbd5d955c88a60c6eb3aa7a commit fc3523a833c9c109e68209f1ecdd15864373e66a commit 9c9155a3509a2ebdb06d77c7a621e9685c802eac commit 2130b87b2273389cafe6765bf09ef564cda01407 commit 5e714bf1713b4b096d20ec75c13880b7086964bd commit f1947d7c8a61db1cb0ef909a6512ede0b1f2115b commit 65f8682b9aaae20c2cdee993e6fe52374ad513c9 commit afbaa15501125ae0b7de9dd16c6f00c85de14218 commit a340847b0214aa9b8fd9839f7b2822ccc607edab commit a31e62873f11dff12cbeb8e6f864d0c8e5be0869 commit 4545ae2ed3f2f7c3f615a53399c9c8460ee5bca7 commit 4d72a4e4fb5d870be52ce38e5672e4b71ee1162f commit 4c7f9a3c15344ccc682c77495fddea7dcb64027c commit 657e07221ce046132dd78f6e19c04b32a78b1d25 commit f700486cd1f2bf381671d1c2c7dc9000db10c50e commit b7a76a29140810807fd85d15470d91b7992b6acf commit 7cd3f6c3ace44ae9a9950a8c02ebcb8069278aab commit 001ebcf5b903646b40697d9b1dc9b24daae82b4f commit 3bd026c3e3317e4490595848261fe74d76e74126 commit 528c0e66e0c01a8c078d2d94431db80f9c75d2a0 commit ba2f09960e75accf757ed12b4ef61409dcc97df8 commit 3059cd8c5f797ad83d2b194ae66339f5c007ca43 commit 5fa993737b29bffe931cc5d0feb87ebc34cd5bb3 commit 31c261a7ffb8d5bba8144e2d43db304f2bc7e81a commit 8a70b2d89ea3f2dc1449f0634ca6befb41472f24 commit 97a3d6090f5c2a165dc88bda05c1dcf9f08bf886 commit 5ce4726a1376bd0673d7b8edd243e76fbb4476d1 commit 2abe92c7adc9c0397ba51bf74909b85bc0fff84b commit 8273b4048664fff356fd10059033f0e2f5a422a1 commit 7b476affcccfc7e644541a0a719f53fc7bd34c53 commit 01f2cf53844b01e691516b465df1b6ab01b03230 commit 1aca5ce036e3499336d1a2ace3070f908381c055 commit 7089003304c67658caead22f841840fc4a26b198 commit a91e5e3e2216354e27ee6adf9cb2d5d9548cad8c commit 7228d9d79248bd0c8af56a7667a88a875c674e0c commit 72655fb942c1e3d9e71e48e87ee439abe52f3a90 commit 50b0e4d4da09fa501e722af886f97e60a4f820d6 commit cbc543c59e8e7c8bc8604d6ac3e18a029e3d5118 commit 97061d441110528dc02972818f2f1dad485107f9 commit cb8e30ddb7e345867f6f2da8a08291d7d9e037db commit 440b7895c990a63869a9d55e5c2502dd501a124e commit 79610d3041338dc1ef554d6fd8b3b3e23be527f5 commit 09aef0258a327409bb2279a5ba8f82ad2ca099ca commit 226dcfad349f23f7744d02b24f8ec3bc4f6198ac commit 1a3abd12a394f5c66943fee75cef533069e831fb commit 63720a561b3c98199adf0c73e152807f15cc3b7f commit 5349fad8f8a4b001557633d149850a14b2e1a3f0 commit 90bfee142af0f0e9d3bec80e7acd5f49b230acf7 commit 08841950db932dc3ba8bbd4c0f1f7f27ccfbae42 commit ca08a1725d0d78efca8d2dbdbce5ea70355da0f2 commit abe4d9f03fae76c9650b0d942faf6990b35c377b commit 68bc147363bd9769a07d1cbf5cbe2bb4573f4e3c commit e105b6212f1f90c56c04439279d0ef0f8dd1c308 commit 9656db1b933caf6ffaaef10322093fe018359090 commit 969758bbf5e9360b63bbb2328ac3fda46bbbc9f5 commit 809734c110548dca410fb0cca52e6b1540319f5e commit b3af84383e7abdc5e63435817bb73a268e7c3637 commit d61e1d1d5225a9baeb995bcbdb904f66f70ed87e commit 200ec44ab7f9499a1f703aea0d7ba7d33e012d2f commit 9520b1d09ecea64c5ed9b90d6f01e10fb3f3ccdd commit b2196401949ed2517bec676928f837e6bbd01a65 commit 6fdaed8c79887680bc46cb0a51775bd7c8645528 commit d7164a5048e8a6afe2cc4aaf7f12643c14e7f241 commit d3f6bacfca86f6cf6bf85be1e8b54083d68d8195 commit 3e206b6aa6df7eed4297577e0cf8403169b800a2 commit e79762512120f11c51317570519a1553c70805d8 commit d372ec94a018c3a19dad71e2ee3478126394d9fc commit 12caf46cf4fc92b1c3884cb363ace2e12732fd2f commit 341421084d705475817f7f0d68e130370d10b20d commit 14aed119942f6c2f1286022323139f7404db5d2b commit e59843c4cdd68a369591630088171eeacce9859f commit c580d758ba1b79de9ea7a475d95a6278736ae462 commit 6cb5cec16c380be4cf9776a8c23b72e9fe742fd1 commit c3d3f35b725bf9c93bec6d3c056f6bb7cfd27403 commit 9cb0dc6ccb7df9abe1407574ed4ad84895822d11 commit 89b3554782e6b65894f0551e9e0a82ad02dac94d commit e542ca6e3e554bad53b2ea5741873b67f4585ea9 commit 5b994354af3cab770bf13386469c5725713679af commit 8d4de331f1b24a22d18e3c6116aa25228cf54854 commit a3e5ce56f3d260f2ec8e5242c33f57e60ae9eba7 commit 8fe8ce896c1cc29d6bfebb3c7b3cc948f72cd32c commit bad610c97c08eef3ed1fa769a8b08b94f95b451e commit ab007e5db5d3b8b8975c7eec69992ff38fe2a46c commit 8dc323133d74518e3b5b07242e2b2f088799ea6e commit d5e0fb0d9dea545defb963ec1073bd9a1a8b5395 commit 7461016c5706eb8c477752bf69e5c9f5a38f502b commit 6640f8e5adb69a0550fe1d224d3ac64c10f00eef commit c941ffc39e27ae46c5fb6a33e81d89c9f78d373d commit 980a2ff2cb987e2177a1bd02633f4259a0d1daab commit 6295f1d8b4503ad8a18519b781dd2d1fe5e88c52 commit f90daa975911961b65070ec72bd7dd8d448f9ef7 commit 4ff4ebac3f1378f4ba6e11fe5ad4a4ac590bb8a4 commit 19b168136395150a4a6e011f944eb30d3d85094b commit 178e31ce82d0308a9e5f2f15bfb4493160136729 commit c4299907c09a638c0a30f029338d07941c049d73 commit 308451d9c7fece33d9551230cb8e5eb7f3914988 commit 653f2d94fcda200b02bd79cea2e0307b26c1b747 commit e0b26b9482461e9528552f54fa662c2269f75b3f commit bc66c9ab162d2a633ee3eb864d7bc2369e79c1e4 commit 66f7903779fbbc620bf1040017e4833ef6a0b541 commit b91c23e099f0b65d62159da13458c5eefa76083f commit 77c092e054262b594614bad5e5f47e57c5d29639 commit 632d06985235d988c9d7e6eec8fa655be0761fd0 commit ab4b35008db9b7ae747679250e5c26d7c3a90cea commit 0d5c5c210a4d4e655feb93b379647f0b179cdafe commit ce62198d8b62734a985d22652e75a649be052390 commit c0b2753f5db281b07013899c79b5f06a614055f9 commit ce902d987a8caa5c9a96080e280ecc992414a127 commit 30b8e7b8ee3be003e0df85c857c5cd0e0bd58b82 commit 64f65135c41a75f933d3bca236417ad8e9eb75de commit e034a0d9aaee5c9129d5dfdfdfcab988a953412d commit 0c85c067c9d9d7a1b2cc2e01a236d5d0d4a872b5 commit 675d84621a24490e1de3d59a4992a17fa9ff92b5 commit 876153ab068b2507a19aa3ef481f5b00a2cc780f commit 2e4b294576e32fb02562ad6839d6888ab7b45102 commit ff963634f7b2e0dc011349abb3fb81a0d074f443 commit 4979524f5a2a8210e87fde2f642b0dc060860821 commit b7ffd9d9ee13de2c5ad88046a5149de4cfb2a74b commit 9ed1fdee9ee324f3505ff066287ee53143caaaa2 commit 3c9fd44b9330adc5006653566f3d386784b2080e commit 4f68332b2f89ab84285e5b6cb3d30e8b9894bef1 commit eca13f3c67b6ddfcc61fdb9bb1c5f9a7724e2359 commit 5428672d39b7750310cf4e328e9f94a7668b5565 commit 0d502ef8898b3983eef9e40f50dfe100a0de5d93 commit 7af87fc1ba136143314c870059b8f60180247cbd commit 2c2911e09f19eac85df83b3201b38e69b8117059 commit 8d8494c3467d366eb0f7c8198dab80be8bdc47d2 commit 7e952a18eb978a3e51fc1704b752378be66226b2 commit 0a3e0fb8cfee4f45f1b1f3d4d028a4519c89d577 commit 4d285241230676ba8b888701b89684b4e0360fcc commit e7e4f77c991c9abf90924929a9d55f90b0bb78de commit 246e667079e8d0fc85f842bceca8c5a3c5da5905 commit c149947b188c651b943c1d8ca1494d1a98a3e27f commit f8d7edb0cda6ea1cba89d6f8aac74613e9cdc075 commit 0e444a4de6b38c4593a07e4cfb5bf54c40cc79b6 commit 192039f12233c9063d040266e7c98188c7c89dec commit 6f9eea4392a178af19360694b1db64f985d0b459 commit f8794f31abf33a3b22c72002783670a95e6efc51 commit 8652da45d09abe1b3174dbb80dc5176b8c3fa08e commit df7c013efc1a0da8861099802b2d6ab2aacaeb1b commit 4b14841c9a820e484bc8c4c3f5a6fed1bc528cbc commit 5954acbacbd1946b96ce8ee799d309cb0cd3cb9d commit 5fa8813878d45bf6961fd22c8deee53f6a2791df commit a73b603f918f1425293b0b5c6f54d7168cb86221 commit 585f2bc8fe692d31593633df99090a1039e789bb commit b09d6acba1d9a23963fedf96b4191502a4fec25d commit c19083c72ea72a1c12037bb3d708014632df80e4 commit 00a6c36cca760d0b659f894dee728555b193c5e1 commit ebbaa4392e36521fb893973d8a0fcb32f3b6d5eb commit 3ca682389435681e2d660428be2187fbae0effbb commit ba891436c2d2b2a6d6c1bc3733bab3b72f07e87f commit 2f3a1273862cb82cca227630cc7f04ce0c94b6bb commit dfbc00410c48a9896d4a65600be7137202517780 commit d60b82aa4d67b2e6cf0364947a008bb7255ca4da commit 85ef1679a190a9740f6b72217cb139a0d9c58706 commit b39df63b16b64a3af42695acb9bc567aad144776 commit 4458da0bb09d4435956b4377685e8836935e9b9d commit b9ab82da8804ec22c7e91ffd9d56c7a3abff0c8e commit 91abf28a636291135ea5cab9af40f017cff6afce commit 14af5d385878d22546914d37f13a314b14825a42 commit 432e25902b9651622578c6248e549297d03caf66 commit 4f2bea62cf3874c5a58e987b0b472f9fb57117a2 commit 44035ec2fde1114254ee465f9ba3bb246b0b6283 commit 5d82c82f1dbee264f7a94587adbbfee607706902 commit dd2c028c1395d622df7ddd6837f8ab2dc94008ee commit 2a5dd86a69ea5435f1a837bdb7fafcda609a7c91 commit e667ee3b0c049bf0c69426879586a2572bb28d26 commit a26a54fbe32b564ff868710d59fbe1a387a2cc7c commit f2e1aa267f12b82e03927d1e918d2844ddd3eea5 commit 3cb93f390453cde4d6afda1587aaa00e75e09617 commit a6e1775da04ab042bc9e2e42399fa25714c253da commit 602ad43c3cd8f15cbb25ce9bb494129edb2024ed commit ecb41b71ef90cf4741bcc3286b769dda746b67e6 commit 9e2c5c651a63baaa39005070481d39dcf5b0893a commit b65a648865c4a1e717c4f56f5025546b9553189a commit e57702069b26b8601a33fdc0c9bbe40c6bb9c72f commit ed14d225cc7c842f6d4d5a3009f71a44f5852d09 commit 2f3830544a89af2e72e7fd3d6ca44dd9cffec197 commit 3c1ea6a5f4f55d4e376675dda16945eb5d9bb4de commit a8899b8728013c7b2456f0bfa20e5fea85ee0fd1 commit 12b8b046e4c9de40fa59b6f067d6826f4e688f68 commit 8c115864501fc09932cdfec53d9ec1cde82b4a28 commit 04aa64375f48a5d430b5550d9271f8428883e550 commit 6f6cb1714365a07dbc66851879538df9f6969288 commit d3d6b1bf85aefe0ebc0624574b3bb62f0693914c commit 9a8cc8cabc1e351614fd7f9e774757a5143b6fe8 commit c082fbd687ad70a92e0a8be486a7555a66f03079 commit bdaa78c6aa861f0e8c612a0b2272423d92f0071c commit c290db013742e98fe5b64073bc2dd8c8a2ac9e4c commit 24013314be6ee4ee456114a671e9fa3461323de8 commit 09bf649a74573cb596e211418a4f8008f265c5a9 commit 6e90293618ed476d6b11f82ce724efbb9e9a071b commit bc21fe9a5844c5bc8f7ec319b11d2671a94eb867 commit aeffc8fb2174f017a10df114bc312f899904dc68 commit c4252650a8c4770b669398fe7270ed8c94fc0eba Signed-off-by: Mika Penttilä <mpenttil@redhat.com>
2023-04-27 13:56:29 +00:00
int hdmi_audio_infoframe_check(const struct hdmi_audio_infoframe *frame);
struct dp_sdp;
ssize_t
hdmi_audio_infoframe_pack_for_dp(const struct hdmi_audio_infoframe *frame,
struct dp_sdp *sdp, u8 dp_version);
enum hdmi_3d_structure {
HDMI_3D_STRUCTURE_INVALID = -1,
HDMI_3D_STRUCTURE_FRAME_PACKING = 0,
HDMI_3D_STRUCTURE_FIELD_ALTERNATIVE,
HDMI_3D_STRUCTURE_LINE_ALTERNATIVE,
HDMI_3D_STRUCTURE_SIDE_BY_SIDE_FULL,
HDMI_3D_STRUCTURE_L_DEPTH,
HDMI_3D_STRUCTURE_L_DEPTH_GFX_GFX_DEPTH,
HDMI_3D_STRUCTURE_TOP_AND_BOTTOM,
HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF = 8,
};
struct hdmi_vendor_infoframe {
enum hdmi_infoframe_type type;
unsigned char version;
unsigned char length;
unsigned int oui;
u8 vic;
enum hdmi_3d_structure s3d_struct;
unsigned int s3d_ext_data;
};
/* HDR Metadata as per 861.G spec */
struct hdr_static_metadata {
__u8 eotf;
__u8 metadata_type;
__u16 max_cll;
__u16 max_fall;
__u16 min_cll;
};
drm: Fix docbook warnings in hdr metadata helper structures Fixes the following warnings: ./include/drm/drm_mode_config.h:841: warning: Incorrect use of kernel-doc format: * hdr_output_metadata_property: Connector property containing hdr ./include/drm/drm_mode_config.h:918: warning: Function parameter or member 'hdr_output_metadata_property' not described in 'drm_mode_config' ./include/drm/drm_connector.h:1251: warning: Function parameter or member 'hdr_output_metadata' not described in 'drm_connector' ./include/drm/drm_connector.h:1251: warning: Function parameter or member 'hdr_sink_metadata' not described in 'drm_connector' Also adds some property documentation for HDR Metadata Connector Property in connector property create function. v2: Fixed Sean Paul's review comments. v3: Fixed Daniel Vetter's review comments, added the UAPI structure definition section in kernel docs. v4: Fixed Daniel Vetter's review comments. v5: Added structure member references as per Daniel's suggestion. Cc: Shashank Sharma <shashank.sharma@intel.com> Cc: Ville Syrjä <ville.syrjala@linux.intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <maxime.ripard@bootlin.com> Cc: Sean Paul <sean@poorly.run> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Cc: "Ville Syrjä" <ville.syrjala@linux.intel.com> Cc: Hans Verkuil <hansverk@cisco.com> Cc: dri-devel@lists.freedesktop.org Cc: linux-fbdev@vger.kernel.org Reviewed-by: Sean Paul <sean@poorly.run> (v1) Signed-off-by: Uma Shankar <uma.shankar@intel.com> [danvet: Fix up markup: () for functions, & for structs. Style guide also recommends to prepend struct for structures.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/1559647022-7336-1-git-send-email-uma.shankar@intel.com
2019-06-04 11:17:02 +00:00
/**
* struct hdr_sink_metadata - HDR sink metadata
*
* Metadata Information read from Sink's EDID
*/
struct hdr_sink_metadata {
drm: Fix docbook warnings in hdr metadata helper structures Fixes the following warnings: ./include/drm/drm_mode_config.h:841: warning: Incorrect use of kernel-doc format: * hdr_output_metadata_property: Connector property containing hdr ./include/drm/drm_mode_config.h:918: warning: Function parameter or member 'hdr_output_metadata_property' not described in 'drm_mode_config' ./include/drm/drm_connector.h:1251: warning: Function parameter or member 'hdr_output_metadata' not described in 'drm_connector' ./include/drm/drm_connector.h:1251: warning: Function parameter or member 'hdr_sink_metadata' not described in 'drm_connector' Also adds some property documentation for HDR Metadata Connector Property in connector property create function. v2: Fixed Sean Paul's review comments. v3: Fixed Daniel Vetter's review comments, added the UAPI structure definition section in kernel docs. v4: Fixed Daniel Vetter's review comments. v5: Added structure member references as per Daniel's suggestion. Cc: Shashank Sharma <shashank.sharma@intel.com> Cc: Ville Syrjä <ville.syrjala@linux.intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <maxime.ripard@bootlin.com> Cc: Sean Paul <sean@poorly.run> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Cc: "Ville Syrjä" <ville.syrjala@linux.intel.com> Cc: Hans Verkuil <hansverk@cisco.com> Cc: dri-devel@lists.freedesktop.org Cc: linux-fbdev@vger.kernel.org Reviewed-by: Sean Paul <sean@poorly.run> (v1) Signed-off-by: Uma Shankar <uma.shankar@intel.com> [danvet: Fix up markup: () for functions, & for structs. Style guide also recommends to prepend struct for structures.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/1559647022-7336-1-git-send-email-uma.shankar@intel.com
2019-06-04 11:17:02 +00:00
/**
* @metadata_type: Static_Metadata_Descriptor_ID.
*/
__u32 metadata_type;
drm: Fix docbook warnings in hdr metadata helper structures Fixes the following warnings: ./include/drm/drm_mode_config.h:841: warning: Incorrect use of kernel-doc format: * hdr_output_metadata_property: Connector property containing hdr ./include/drm/drm_mode_config.h:918: warning: Function parameter or member 'hdr_output_metadata_property' not described in 'drm_mode_config' ./include/drm/drm_connector.h:1251: warning: Function parameter or member 'hdr_output_metadata' not described in 'drm_connector' ./include/drm/drm_connector.h:1251: warning: Function parameter or member 'hdr_sink_metadata' not described in 'drm_connector' Also adds some property documentation for HDR Metadata Connector Property in connector property create function. v2: Fixed Sean Paul's review comments. v3: Fixed Daniel Vetter's review comments, added the UAPI structure definition section in kernel docs. v4: Fixed Daniel Vetter's review comments. v5: Added structure member references as per Daniel's suggestion. Cc: Shashank Sharma <shashank.sharma@intel.com> Cc: Ville Syrjä <ville.syrjala@linux.intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <maxime.ripard@bootlin.com> Cc: Sean Paul <sean@poorly.run> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Cc: "Ville Syrjä" <ville.syrjala@linux.intel.com> Cc: Hans Verkuil <hansverk@cisco.com> Cc: dri-devel@lists.freedesktop.org Cc: linux-fbdev@vger.kernel.org Reviewed-by: Sean Paul <sean@poorly.run> (v1) Signed-off-by: Uma Shankar <uma.shankar@intel.com> [danvet: Fix up markup: () for functions, & for structs. Style guide also recommends to prepend struct for structures.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/1559647022-7336-1-git-send-email-uma.shankar@intel.com
2019-06-04 11:17:02 +00:00
/**
* @hdmi_type1: HDR Metadata Infoframe.
*/
union {
struct hdr_static_metadata hdmi_type1;
};
};
int hdmi_vendor_infoframe_init(struct hdmi_vendor_infoframe *frame);
ssize_t hdmi_vendor_infoframe_pack(struct hdmi_vendor_infoframe *frame,
void *buffer, size_t size);
ssize_t hdmi_vendor_infoframe_pack_only(const struct hdmi_vendor_infoframe *frame,
void *buffer, size_t size);
int hdmi_vendor_infoframe_check(struct hdmi_vendor_infoframe *frame);
union hdmi_vendor_any_infoframe {
struct {
enum hdmi_infoframe_type type;
unsigned char version;
unsigned char length;
unsigned int oui;
} any;
struct hdmi_vendor_infoframe hdmi;
};
/**
* union hdmi_infoframe - overall union of all abstract infoframe representations
* @any: generic infoframe
* @avi: avi infoframe
* @spd: spd infoframe
* @vendor: union of all vendor infoframes
* @audio: audio infoframe
drm: Fix docbook warnings in hdr metadata helper structures Fixes the following warnings: ./include/drm/drm_mode_config.h:841: warning: Incorrect use of kernel-doc format: * hdr_output_metadata_property: Connector property containing hdr ./include/drm/drm_mode_config.h:918: warning: Function parameter or member 'hdr_output_metadata_property' not described in 'drm_mode_config' ./include/drm/drm_connector.h:1251: warning: Function parameter or member 'hdr_output_metadata' not described in 'drm_connector' ./include/drm/drm_connector.h:1251: warning: Function parameter or member 'hdr_sink_metadata' not described in 'drm_connector' Also adds some property documentation for HDR Metadata Connector Property in connector property create function. v2: Fixed Sean Paul's review comments. v3: Fixed Daniel Vetter's review comments, added the UAPI structure definition section in kernel docs. v4: Fixed Daniel Vetter's review comments. v5: Added structure member references as per Daniel's suggestion. Cc: Shashank Sharma <shashank.sharma@intel.com> Cc: Ville Syrjä <ville.syrjala@linux.intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard <maxime.ripard@bootlin.com> Cc: Sean Paul <sean@poorly.run> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Cc: "Ville Syrjä" <ville.syrjala@linux.intel.com> Cc: Hans Verkuil <hansverk@cisco.com> Cc: dri-devel@lists.freedesktop.org Cc: linux-fbdev@vger.kernel.org Reviewed-by: Sean Paul <sean@poorly.run> (v1) Signed-off-by: Uma Shankar <uma.shankar@intel.com> [danvet: Fix up markup: () for functions, & for structs. Style guide also recommends to prepend struct for structures.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/1559647022-7336-1-git-send-email-uma.shankar@intel.com
2019-06-04 11:17:02 +00:00
* @drm: Dynamic Range and Mastering infoframe
*
* This is used by the generic pack function. This works since all infoframes
* have the same header which also indicates which type of infoframe should be
* packed.
*/
union hdmi_infoframe {
struct hdmi_any_infoframe any;
struct hdmi_avi_infoframe avi;
struct hdmi_spd_infoframe spd;
union hdmi_vendor_any_infoframe vendor;
struct hdmi_audio_infoframe audio;
struct hdmi_drm_infoframe drm;
};
ssize_t hdmi_infoframe_pack(union hdmi_infoframe *frame, void *buffer,
size_t size);
ssize_t hdmi_infoframe_pack_only(const union hdmi_infoframe *frame,
void *buffer, size_t size);
int hdmi_infoframe_check(union hdmi_infoframe *frame);
int hdmi_infoframe_unpack(union hdmi_infoframe *frame,
const void *buffer, size_t size);
void hdmi_infoframe_log(const char *level, struct device *dev,
const union hdmi_infoframe *frame);
#endif /* _DRM_HDMI_H */