From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754149AbcDTGUv (ORCPT ); Wed, 20 Apr 2016 02:20:51 -0400 Received: from regular1.263xmail.com ([211.150.99.134]:53334 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750984AbcDTGTe (ORCPT ); Wed, 20 Apr 2016 02:19:34 -0400 X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-ABS-CHECKED: 4 X-ADDR-CHECKED: 0 X-KSVirus-check: 0 X-RL-SENDER: mark.yao@rock-chips.com X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: mark.yao@rock-chips.com X-UNIQUE-TAG: <9f919a561be083cef9e6e6e052b7813d> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 From: Mark Yao To: David Airlie , Heiko Stuebner , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Mark Yao Subject: [PATCH v2 1/5] drm/rockchip: sort registers define by chip's number Date: Wed, 20 Apr 2016 14:18:13 +0800 Message-Id: <1461133097-1478-2-git-send-email-mark.yao@rock-chips.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1461133097-1478-1-git-send-email-mark.yao@rock-chips.com> References: <1461133097-1478-1-git-send-email-mark.yao@rock-chips.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org No functional changes, sort the vop registers to make code more readable. Signed-off-by: Mark Yao --- drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 166 +++++++++++++-------------- drivers/gpu/drm/rockchip/rockchip_vop_reg.h | 88 +++++++------- 2 files changed, 127 insertions(+), 127 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c index 3166b46..e75b2b8 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c @@ -50,6 +50,87 @@ static const uint32_t formats_win_lite[] = { DRM_FORMAT_BGR565, }; +static const struct vop_scl_regs rk3066_win_scl = { + .scale_yrgb_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 0x0), + .scale_yrgb_y = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 16), + .scale_cbcr_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_CBR, 0xffff, 0x0), + .scale_cbcr_y = VOP_REG(RK3036_WIN0_SCL_FACTOR_CBR, 0xffff, 16), +}; + +static const struct vop_win_phy rk3036_win0_data = { + .scl = &rk3066_win_scl, + .data_formats = formats_win_full, + .nformats = ARRAY_SIZE(formats_win_full), + .enable = VOP_REG(RK3036_SYS_CTRL, 0x1, 0), + .format = VOP_REG(RK3036_SYS_CTRL, 0x7, 3), + .rb_swap = VOP_REG(RK3036_SYS_CTRL, 0x1, 15), + .act_info = VOP_REG(RK3036_WIN0_ACT_INFO, 0x1fff1fff, 0), + .dsp_info = VOP_REG(RK3036_WIN0_DSP_INFO, 0x0fff0fff, 0), + .dsp_st = VOP_REG(RK3036_WIN0_DSP_ST, 0x1fff1fff, 0), + .yrgb_mst = VOP_REG(RK3036_WIN0_YRGB_MST, 0xffffffff, 0), + .uv_mst = VOP_REG(RK3036_WIN0_CBR_MST, 0xffffffff, 0), + .yrgb_vir = VOP_REG(RK3036_WIN0_VIR, 0xffff, 0), +}; + +static const struct vop_win_phy rk3036_win1_data = { + .data_formats = formats_win_lite, + .nformats = ARRAY_SIZE(formats_win_lite), + .enable = VOP_REG(RK3036_SYS_CTRL, 0x1, 1), + .format = VOP_REG(RK3036_SYS_CTRL, 0x7, 6), + .rb_swap = VOP_REG(RK3036_SYS_CTRL, 0x1, 19), + .act_info = VOP_REG(RK3036_WIN1_ACT_INFO, 0x1fff1fff, 0), + .dsp_info = VOP_REG(RK3036_WIN1_DSP_INFO, 0x0fff0fff, 0), + .dsp_st = VOP_REG(RK3036_WIN1_DSP_ST, 0x1fff1fff, 0), + .yrgb_mst = VOP_REG(RK3036_WIN1_MST, 0xffffffff, 0), + .yrgb_vir = VOP_REG(RK3036_WIN1_VIR, 0xffff, 0), +}; + +static const struct vop_win_data rk3036_vop_win_data[] = { + { .base = 0x00, .phy = &rk3036_win0_data, + .type = DRM_PLANE_TYPE_PRIMARY }, + { .base = 0x00, .phy = &rk3036_win1_data, + .type = DRM_PLANE_TYPE_CURSOR }, +}; + +static const int rk3036_vop_intrs[] = { + DSP_HOLD_VALID_INTR, + FS_INTR, + LINE_FLAG_INTR, + BUS_ERROR_INTR, +}; + +static const struct vop_intr rk3036_intr = { + .intrs = rk3036_vop_intrs, + .nintrs = ARRAY_SIZE(rk3036_vop_intrs), + .status = VOP_REG(RK3036_INT_STATUS, 0xf, 0), + .enable = VOP_REG(RK3036_INT_STATUS, 0xf, 4), + .clear = VOP_REG(RK3036_INT_STATUS, 0xf, 8), +}; + +static const struct vop_ctrl rk3036_ctrl_data = { + .standby = VOP_REG(RK3036_SYS_CTRL, 0x1, 30), + .out_mode = VOP_REG(RK3036_DSP_CTRL0, 0xf, 0), + .pin_pol = VOP_REG(RK3036_DSP_CTRL0, 0xf, 4), + .htotal_pw = VOP_REG(RK3036_DSP_HTOTAL_HS_END, 0x1fff1fff, 0), + .hact_st_end = VOP_REG(RK3036_DSP_HACT_ST_END, 0x1fff1fff, 0), + .vtotal_pw = VOP_REG(RK3036_DSP_VTOTAL_VS_END, 0x1fff1fff, 0), + .vact_st_end = VOP_REG(RK3036_DSP_VACT_ST_END, 0x1fff1fff, 0), + .cfg_done = VOP_REG(RK3036_REG_CFG_DONE, 0x1, 0), +}; + +static const struct vop_reg_data rk3036_vop_init_reg_table[] = { + {RK3036_DSP_CTRL1, 0x00000000}, +}; + +static const struct vop_data rk3036_vop = { + .init_table = rk3036_vop_init_reg_table, + .table_size = ARRAY_SIZE(rk3036_vop_init_reg_table), + .ctrl = &rk3036_ctrl_data, + .intr = &rk3036_intr, + .win = rk3036_vop_win_data, + .win_size = ARRAY_SIZE(rk3036_vop_win_data), +}; + static const struct vop_scl_extension rk3288_win_full_scl_ext = { .cbcr_vsd_mode = VOP_REG(RK3288_WIN0_CTRL1, 0x1, 31), .cbcr_vsu_mode = VOP_REG(RK3288_WIN0_CTRL1, 0x1, 30), @@ -190,92 +271,11 @@ static const struct vop_data rk3288_vop = { .win_size = ARRAY_SIZE(rk3288_vop_win_data), }; -static const struct vop_scl_regs rk3066_win_scl = { - .scale_yrgb_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 0x0), - .scale_yrgb_y = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 16), - .scale_cbcr_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_CBR, 0xffff, 0x0), - .scale_cbcr_y = VOP_REG(RK3036_WIN0_SCL_FACTOR_CBR, 0xffff, 16), -}; - -static const struct vop_win_phy rk3036_win0_data = { - .scl = &rk3066_win_scl, - .data_formats = formats_win_full, - .nformats = ARRAY_SIZE(formats_win_full), - .enable = VOP_REG(RK3036_SYS_CTRL, 0x1, 0), - .format = VOP_REG(RK3036_SYS_CTRL, 0x7, 3), - .rb_swap = VOP_REG(RK3036_SYS_CTRL, 0x1, 15), - .act_info = VOP_REG(RK3036_WIN0_ACT_INFO, 0x1fff1fff, 0), - .dsp_info = VOP_REG(RK3036_WIN0_DSP_INFO, 0x0fff0fff, 0), - .dsp_st = VOP_REG(RK3036_WIN0_DSP_ST, 0x1fff1fff, 0), - .yrgb_mst = VOP_REG(RK3036_WIN0_YRGB_MST, 0xffffffff, 0), - .uv_mst = VOP_REG(RK3036_WIN0_CBR_MST, 0xffffffff, 0), - .yrgb_vir = VOP_REG(RK3036_WIN0_VIR, 0xffff, 0), -}; - -static const struct vop_win_phy rk3036_win1_data = { - .data_formats = formats_win_lite, - .nformats = ARRAY_SIZE(formats_win_lite), - .enable = VOP_REG(RK3036_SYS_CTRL, 0x1, 1), - .format = VOP_REG(RK3036_SYS_CTRL, 0x7, 6), - .rb_swap = VOP_REG(RK3036_SYS_CTRL, 0x1, 19), - .act_info = VOP_REG(RK3036_WIN1_ACT_INFO, 0x1fff1fff, 0), - .dsp_info = VOP_REG(RK3036_WIN1_DSP_INFO, 0x0fff0fff, 0), - .dsp_st = VOP_REG(RK3036_WIN1_DSP_ST, 0x1fff1fff, 0), - .yrgb_mst = VOP_REG(RK3036_WIN1_MST, 0xffffffff, 0), - .yrgb_vir = VOP_REG(RK3036_WIN1_VIR, 0xffff, 0), -}; - -static const struct vop_win_data rk3036_vop_win_data[] = { - { .base = 0x00, .phy = &rk3036_win0_data, - .type = DRM_PLANE_TYPE_PRIMARY }, - { .base = 0x00, .phy = &rk3036_win1_data, - .type = DRM_PLANE_TYPE_CURSOR }, -}; - -static const int rk3036_vop_intrs[] = { - DSP_HOLD_VALID_INTR, - FS_INTR, - LINE_FLAG_INTR, - BUS_ERROR_INTR, -}; - -static const struct vop_intr rk3036_intr = { - .intrs = rk3036_vop_intrs, - .nintrs = ARRAY_SIZE(rk3036_vop_intrs), - .status = VOP_REG(RK3036_INT_STATUS, 0xf, 0), - .enable = VOP_REG(RK3036_INT_STATUS, 0xf, 4), - .clear = VOP_REG(RK3036_INT_STATUS, 0xf, 8), -}; - -static const struct vop_ctrl rk3036_ctrl_data = { - .standby = VOP_REG(RK3036_SYS_CTRL, 0x1, 30), - .out_mode = VOP_REG(RK3036_DSP_CTRL0, 0xf, 0), - .pin_pol = VOP_REG(RK3036_DSP_CTRL0, 0xf, 4), - .htotal_pw = VOP_REG(RK3036_DSP_HTOTAL_HS_END, 0x1fff1fff, 0), - .hact_st_end = VOP_REG(RK3036_DSP_HACT_ST_END, 0x1fff1fff, 0), - .vtotal_pw = VOP_REG(RK3036_DSP_VTOTAL_VS_END, 0x1fff1fff, 0), - .vact_st_end = VOP_REG(RK3036_DSP_VACT_ST_END, 0x1fff1fff, 0), - .cfg_done = VOP_REG(RK3036_REG_CFG_DONE, 0x1, 0), -}; - -static const struct vop_reg_data rk3036_vop_init_reg_table[] = { - {RK3036_DSP_CTRL1, 0x00000000}, -}; - -static const struct vop_data rk3036_vop = { - .init_table = rk3036_vop_init_reg_table, - .table_size = ARRAY_SIZE(rk3036_vop_init_reg_table), - .ctrl = &rk3036_ctrl_data, - .intr = &rk3036_intr, - .win = rk3036_vop_win_data, - .win_size = ARRAY_SIZE(rk3036_vop_win_data), -}; - static const struct of_device_id vop_driver_dt_match[] = { - { .compatible = "rockchip,rk3288-vop", - .data = &rk3288_vop }, { .compatible = "rockchip,rk3036-vop", .data = &rk3036_vop }, + { .compatible = "rockchip,rk3288-vop", + .data = &rk3288_vop }, {}, }; MODULE_DEVICE_TABLE(of, vop_driver_dt_match); diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h index d4b46cb..43903e0 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h @@ -15,6 +15,50 @@ #ifndef _ROCKCHIP_VOP_REG_H #define _ROCKCHIP_VOP_REG_H +/* rk3036 register definition */ +#define RK3036_SYS_CTRL 0x00 +#define RK3036_DSP_CTRL0 0x04 +#define RK3036_DSP_CTRL1 0x08 +#define RK3036_INT_STATUS 0x10 +#define RK3036_ALPHA_CTRL 0x14 +#define RK3036_WIN0_COLOR_KEY 0x18 +#define RK3036_WIN1_COLOR_KEY 0x1c +#define RK3036_WIN0_YRGB_MST 0x20 +#define RK3036_WIN0_CBR_MST 0x24 +#define RK3036_WIN1_VIR 0x28 +#define RK3036_AXI_BUS_CTRL 0x2c +#define RK3036_WIN0_VIR 0x30 +#define RK3036_WIN0_ACT_INFO 0x34 +#define RK3036_WIN0_DSP_INFO 0x38 +#define RK3036_WIN0_DSP_ST 0x3c +#define RK3036_WIN0_SCL_FACTOR_YRGB 0x40 +#define RK3036_WIN0_SCL_FACTOR_CBR 0x44 +#define RK3036_WIN0_SCL_OFFSET 0x48 +#define RK3036_HWC_MST 0x58 +#define RK3036_HWC_DSP_ST 0x5c +#define RK3036_DSP_HTOTAL_HS_END 0x6c +#define RK3036_DSP_HACT_ST_END 0x70 +#define RK3036_DSP_VTOTAL_VS_END 0x74 +#define RK3036_DSP_VACT_ST_END 0x78 +#define RK3036_DSP_VS_ST_END_F1 0x7c +#define RK3036_DSP_VACT_ST_END_F1 0x80 +#define RK3036_GATHER_TRANSFER 0x84 +#define RK3036_VERSION_INFO 0x94 +#define RK3036_REG_CFG_DONE 0x90 +#define RK3036_WIN1_MST 0xa0 +#define RK3036_WIN1_ACT_INFO 0xb4 +#define RK3036_WIN1_DSP_INFO 0xb8 +#define RK3036_WIN1_DSP_ST 0xbc +#define RK3036_WIN1_SCL_FACTOR_YRGB 0xc0 +#define RK3036_WIN1_SCL_OFFSET 0xc8 +#define RK3036_BCSH_CTRL 0xd0 +#define RK3036_BCSH_COLOR_BAR 0xd4 +#define RK3036_BCSH_BCS 0xd8 +#define RK3036_BCSH_H 0xdc +#define RK3036_WIN1_LUT_ADDR 0x400 +#define RK3036_HWC_LUT_ADDR 0x800 +/* rk3036 register definition end */ + /* rk3288 register definition */ #define RK3288_REG_CFG_DONE 0x0000 #define RK3288_VERSION_INFO 0x0004 @@ -122,48 +166,4 @@ #define RK3288_DSP_VACT_ST_END_F1 0x019c /* register definition end */ -/* rk3036 register definition */ -#define RK3036_SYS_CTRL 0x00 -#define RK3036_DSP_CTRL0 0x04 -#define RK3036_DSP_CTRL1 0x08 -#define RK3036_INT_STATUS 0x10 -#define RK3036_ALPHA_CTRL 0x14 -#define RK3036_WIN0_COLOR_KEY 0x18 -#define RK3036_WIN1_COLOR_KEY 0x1c -#define RK3036_WIN0_YRGB_MST 0x20 -#define RK3036_WIN0_CBR_MST 0x24 -#define RK3036_WIN1_VIR 0x28 -#define RK3036_AXI_BUS_CTRL 0x2c -#define RK3036_WIN0_VIR 0x30 -#define RK3036_WIN0_ACT_INFO 0x34 -#define RK3036_WIN0_DSP_INFO 0x38 -#define RK3036_WIN0_DSP_ST 0x3c -#define RK3036_WIN0_SCL_FACTOR_YRGB 0x40 -#define RK3036_WIN0_SCL_FACTOR_CBR 0x44 -#define RK3036_WIN0_SCL_OFFSET 0x48 -#define RK3036_HWC_MST 0x58 -#define RK3036_HWC_DSP_ST 0x5c -#define RK3036_DSP_HTOTAL_HS_END 0x6c -#define RK3036_DSP_HACT_ST_END 0x70 -#define RK3036_DSP_VTOTAL_VS_END 0x74 -#define RK3036_DSP_VACT_ST_END 0x78 -#define RK3036_DSP_VS_ST_END_F1 0x7c -#define RK3036_DSP_VACT_ST_END_F1 0x80 -#define RK3036_GATHER_TRANSFER 0x84 -#define RK3036_VERSION_INFO 0x94 -#define RK3036_REG_CFG_DONE 0x90 -#define RK3036_WIN1_MST 0xa0 -#define RK3036_WIN1_ACT_INFO 0xb4 -#define RK3036_WIN1_DSP_INFO 0xb8 -#define RK3036_WIN1_DSP_ST 0xbc -#define RK3036_WIN1_SCL_FACTOR_YRGB 0xc0 -#define RK3036_WIN1_SCL_OFFSET 0xc8 -#define RK3036_BCSH_CTRL 0xd0 -#define RK3036_BCSH_COLOR_BAR 0xd4 -#define RK3036_BCSH_BCS 0xd8 -#define RK3036_BCSH_H 0xdc -#define RK3036_WIN1_LUT_ADDR 0x400 -#define RK3036_HWC_LUT_ADDR 0x800 -/* rk3036 register definition end */ - #endif /* _ROCKCHIP_VOP_REG_H */ -- 1.7.9.5 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark Yao Subject: [PATCH v2 1/5] drm/rockchip: sort registers define by chip's number Date: Wed, 20 Apr 2016 14:18:13 +0800 Message-ID: <1461133097-1478-2-git-send-email-mark.yao@rock-chips.com> References: <1461133097-1478-1-git-send-email-mark.yao@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1461133097-1478-1-git-send-email-mark.yao@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: David Airlie , Heiko Stuebner , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org List-Id: linux-rockchip.vger.kernel.org Tm8gZnVuY3Rpb25hbCBjaGFuZ2VzLCBzb3J0IHRoZSB2b3AgcmVnaXN0ZXJzIHRvIG1ha2UKY29k ZSBtb3JlIHJlYWRhYmxlLgoKU2lnbmVkLW9mZi1ieTogTWFyayBZYW8gPG1hcmsueWFvQHJvY2st Y2hpcHMuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVn LmMgfCAgMTY2ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuaCB8ICAgODggKysrKysrKy0tLS0tLS0KIDIgZmlsZXMg Y2hhbmdlZCwgMTI3IGluc2VydGlvbnMoKyksIDEyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9wX3JlZy5jIGIvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuYwppbmRleCAzMTY2YjQ2Li5lNzViMmI4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9wX3JlZy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmMKQEAgLTUw LDYgKzUwLDg3IEBAIHN0YXRpYyBjb25zdCB1aW50MzJfdCBmb3JtYXRzX3dpbl9saXRlW10gPSB7 CiAJRFJNX0ZPUk1BVF9CR1I1NjUsCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF9zY2xf cmVncyByazMwNjZfd2luX3NjbCA9IHsKKwkuc2NhbGVfeXJnYl94ID0gVk9QX1JFRyhSSzMwMzZf V0lOMF9TQ0xfRkFDVE9SX1lSR0IsIDB4ZmZmZiwgMHgwKSwKKwkuc2NhbGVfeXJnYl95ID0gVk9Q X1JFRyhSSzMwMzZfV0lOMF9TQ0xfRkFDVE9SX1lSR0IsIDB4ZmZmZiwgMTYpLAorCS5zY2FsZV9j YmNyX3ggPSBWT1BfUkVHKFJLMzAzNl9XSU4wX1NDTF9GQUNUT1JfQ0JSLCAweGZmZmYsIDB4MCks CisJLnNjYWxlX2NiY3JfeSA9IFZPUF9SRUcoUkszMDM2X1dJTjBfU0NMX0ZBQ1RPUl9DQlIsIDB4 ZmZmZiwgMTYpLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bfd2luX3BoeSByazMwMzZf d2luMF9kYXRhID0geworCS5zY2wgPSAmcmszMDY2X3dpbl9zY2wsCisJLmRhdGFfZm9ybWF0cyA9 IGZvcm1hdHNfd2luX2Z1bGwsCisJLm5mb3JtYXRzID0gQVJSQVlfU0laRShmb3JtYXRzX3dpbl9m dWxsKSwKKwkuZW5hYmxlID0gVk9QX1JFRyhSSzMwMzZfU1lTX0NUUkwsIDB4MSwgMCksCisJLmZv cm1hdCA9IFZPUF9SRUcoUkszMDM2X1NZU19DVFJMLCAweDcsIDMpLAorCS5yYl9zd2FwID0gVk9Q X1JFRyhSSzMwMzZfU1lTX0NUUkwsIDB4MSwgMTUpLAorCS5hY3RfaW5mbyA9IFZPUF9SRUcoUksz MDM2X1dJTjBfQUNUX0lORk8sIDB4MWZmZjFmZmYsIDApLAorCS5kc3BfaW5mbyA9IFZPUF9SRUco UkszMDM2X1dJTjBfRFNQX0lORk8sIDB4MGZmZjBmZmYsIDApLAorCS5kc3Bfc3QgPSBWT1BfUkVH KFJLMzAzNl9XSU4wX0RTUF9TVCwgMHgxZmZmMWZmZiwgMCksCisJLnlyZ2JfbXN0ID0gVk9QX1JF RyhSSzMwMzZfV0lOMF9ZUkdCX01TVCwgMHhmZmZmZmZmZiwgMCksCisJLnV2X21zdCA9IFZPUF9S RUcoUkszMDM2X1dJTjBfQ0JSX01TVCwgMHhmZmZmZmZmZiwgMCksCisJLnlyZ2JfdmlyID0gVk9Q X1JFRyhSSzMwMzZfV0lOMF9WSVIsIDB4ZmZmZiwgMCksCit9OworCitzdGF0aWMgY29uc3Qgc3Ry dWN0IHZvcF93aW5fcGh5IHJrMzAzNl93aW4xX2RhdGEgPSB7CisJLmRhdGFfZm9ybWF0cyA9IGZv cm1hdHNfd2luX2xpdGUsCisJLm5mb3JtYXRzID0gQVJSQVlfU0laRShmb3JtYXRzX3dpbl9saXRl KSwKKwkuZW5hYmxlID0gVk9QX1JFRyhSSzMwMzZfU1lTX0NUUkwsIDB4MSwgMSksCisJLmZvcm1h dCA9IFZPUF9SRUcoUkszMDM2X1NZU19DVFJMLCAweDcsIDYpLAorCS5yYl9zd2FwID0gVk9QX1JF RyhSSzMwMzZfU1lTX0NUUkwsIDB4MSwgMTkpLAorCS5hY3RfaW5mbyA9IFZPUF9SRUcoUkszMDM2 X1dJTjFfQUNUX0lORk8sIDB4MWZmZjFmZmYsIDApLAorCS5kc3BfaW5mbyA9IFZPUF9SRUcoUksz MDM2X1dJTjFfRFNQX0lORk8sIDB4MGZmZjBmZmYsIDApLAorCS5kc3Bfc3QgPSBWT1BfUkVHKFJL MzAzNl9XSU4xX0RTUF9TVCwgMHgxZmZmMWZmZiwgMCksCisJLnlyZ2JfbXN0ID0gVk9QX1JFRyhS SzMwMzZfV0lOMV9NU1QsIDB4ZmZmZmZmZmYsIDApLAorCS55cmdiX3ZpciA9IFZPUF9SRUcoUksz MDM2X1dJTjFfVklSLCAweGZmZmYsIDApLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bf d2luX2RhdGEgcmszMDM2X3ZvcF93aW5fZGF0YVtdID0geworCXsgLmJhc2UgPSAweDAwLCAucGh5 ID0gJnJrMzAzNl93aW4wX2RhdGEsCisJICAudHlwZSA9IERSTV9QTEFORV9UWVBFX1BSSU1BUlkg fSwKKwl7IC5iYXNlID0gMHgwMCwgLnBoeSA9ICZyazMwMzZfd2luMV9kYXRhLAorCSAgLnR5cGUg PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IgfSwKK307CisKK3N0YXRpYyBjb25zdCBpbnQgcmszMDM2 X3ZvcF9pbnRyc1tdID0geworCURTUF9IT0xEX1ZBTElEX0lOVFIsCisJRlNfSU5UUiwKKwlMSU5F X0ZMQUdfSU5UUiwKKwlCVVNfRVJST1JfSU5UUiwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg dm9wX2ludHIgcmszMDM2X2ludHIgPSB7CisJLmludHJzID0gcmszMDM2X3ZvcF9pbnRycywKKwku bmludHJzID0gQVJSQVlfU0laRShyazMwMzZfdm9wX2ludHJzKSwKKwkuc3RhdHVzID0gVk9QX1JF RyhSSzMwMzZfSU5UX1NUQVRVUywgMHhmLCAwKSwKKwkuZW5hYmxlID0gVk9QX1JFRyhSSzMwMzZf SU5UX1NUQVRVUywgMHhmLCA0KSwKKwkuY2xlYXIgPSBWT1BfUkVHKFJLMzAzNl9JTlRfU1RBVFVT LCAweGYsIDgpLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB2b3BfY3RybCByazMwMzZfY3Ry bF9kYXRhID0geworCS5zdGFuZGJ5ID0gVk9QX1JFRyhSSzMwMzZfU1lTX0NUUkwsIDB4MSwgMzAp LAorCS5vdXRfbW9kZSA9IFZPUF9SRUcoUkszMDM2X0RTUF9DVFJMMCwgMHhmLCAwKSwKKwkucGlu X3BvbCA9IFZPUF9SRUcoUkszMDM2X0RTUF9DVFJMMCwgMHhmLCA0KSwKKwkuaHRvdGFsX3B3ID0g Vk9QX1JFRyhSSzMwMzZfRFNQX0hUT1RBTF9IU19FTkQsIDB4MWZmZjFmZmYsIDApLAorCS5oYWN0 X3N0X2VuZCA9IFZPUF9SRUcoUkszMDM2X0RTUF9IQUNUX1NUX0VORCwgMHgxZmZmMWZmZiwgMCks CisJLnZ0b3RhbF9wdyA9IFZPUF9SRUcoUkszMDM2X0RTUF9WVE9UQUxfVlNfRU5ELCAweDFmZmYx ZmZmLCAwKSwKKwkudmFjdF9zdF9lbmQgPSBWT1BfUkVHKFJLMzAzNl9EU1BfVkFDVF9TVF9FTkQs IDB4MWZmZjFmZmYsIDApLAorCS5jZmdfZG9uZSA9IFZPUF9SRUcoUkszMDM2X1JFR19DRkdfRE9O RSwgMHgxLCAwKSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX3JlZ19kYXRhIHJrMzAz Nl92b3BfaW5pdF9yZWdfdGFibGVbXSA9IHsKKwl7UkszMDM2X0RTUF9DVFJMMSwgMHgwMDAwMDAw MH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF9kYXRhIHJrMzAzNl92b3AgPSB7CisJ LmluaXRfdGFibGUgPSByazMwMzZfdm9wX2luaXRfcmVnX3RhYmxlLAorCS50YWJsZV9zaXplID0g QVJSQVlfU0laRShyazMwMzZfdm9wX2luaXRfcmVnX3RhYmxlKSwKKwkuY3RybCA9ICZyazMwMzZf Y3RybF9kYXRhLAorCS5pbnRyID0gJnJrMzAzNl9pbnRyLAorCS53aW4gPSByazMwMzZfdm9wX3dp bl9kYXRhLAorCS53aW5fc2l6ZSA9IEFSUkFZX1NJWkUocmszMDM2X3ZvcF93aW5fZGF0YSksCit9 OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IHZvcF9zY2xfZXh0ZW5zaW9uIHJrMzI4OF93aW5fZnVs bF9zY2xfZXh0ID0gewogCS5jYmNyX3ZzZF9tb2RlID0gVk9QX1JFRyhSSzMyODhfV0lOMF9DVFJM MSwgMHgxLCAzMSksCiAJLmNiY3JfdnN1X21vZGUgPSBWT1BfUkVHKFJLMzI4OF9XSU4wX0NUUkwx LCAweDEsIDMwKSwKQEAgLTE5MCw5MiArMjcxLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9w X2RhdGEgcmszMjg4X3ZvcCA9IHsKIAkud2luX3NpemUgPSBBUlJBWV9TSVpFKHJrMzI4OF92b3Bf d2luX2RhdGEpLAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bfc2NsX3JlZ3MgcmszMDY2 X3dpbl9zY2wgPSB7Ci0JLnNjYWxlX3lyZ2JfeCA9IFZPUF9SRUcoUkszMDM2X1dJTjBfU0NMX0ZB Q1RPUl9ZUkdCLCAweGZmZmYsIDB4MCksCi0JLnNjYWxlX3lyZ2JfeSA9IFZPUF9SRUcoUkszMDM2 X1dJTjBfU0NMX0ZBQ1RPUl9ZUkdCLCAweGZmZmYsIDE2KSwKLQkuc2NhbGVfY2Jjcl94ID0gVk9Q X1JFRyhSSzMwMzZfV0lOMF9TQ0xfRkFDVE9SX0NCUiwgMHhmZmZmLCAweDApLAotCS5zY2FsZV9j YmNyX3kgPSBWT1BfUkVHKFJLMzAzNl9XSU4wX1NDTF9GQUNUT1JfQ0JSLCAweGZmZmYsIDE2KSwK LX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX3dpbl9waHkgcmszMDM2X3dpbjBfZGF0YSA9 IHsKLQkuc2NsID0gJnJrMzA2Nl93aW5fc2NsLAotCS5kYXRhX2Zvcm1hdHMgPSBmb3JtYXRzX3dp bl9mdWxsLAotCS5uZm9ybWF0cyA9IEFSUkFZX1NJWkUoZm9ybWF0c193aW5fZnVsbCksCi0JLmVu YWJsZSA9IFZPUF9SRUcoUkszMDM2X1NZU19DVFJMLCAweDEsIDApLAotCS5mb3JtYXQgPSBWT1Bf UkVHKFJLMzAzNl9TWVNfQ1RSTCwgMHg3LCAzKSwKLQkucmJfc3dhcCA9IFZPUF9SRUcoUkszMDM2 X1NZU19DVFJMLCAweDEsIDE1KSwKLQkuYWN0X2luZm8gPSBWT1BfUkVHKFJLMzAzNl9XSU4wX0FD VF9JTkZPLCAweDFmZmYxZmZmLCAwKSwKLQkuZHNwX2luZm8gPSBWT1BfUkVHKFJLMzAzNl9XSU4w X0RTUF9JTkZPLCAweDBmZmYwZmZmLCAwKSwKLQkuZHNwX3N0ID0gVk9QX1JFRyhSSzMwMzZfV0lO MF9EU1BfU1QsIDB4MWZmZjFmZmYsIDApLAotCS55cmdiX21zdCA9IFZPUF9SRUcoUkszMDM2X1dJ TjBfWVJHQl9NU1QsIDB4ZmZmZmZmZmYsIDApLAotCS51dl9tc3QgPSBWT1BfUkVHKFJLMzAzNl9X SU4wX0NCUl9NU1QsIDB4ZmZmZmZmZmYsIDApLAotCS55cmdiX3ZpciA9IFZPUF9SRUcoUkszMDM2 X1dJTjBfVklSLCAweGZmZmYsIDApLAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCB2b3Bfd2lu X3BoeSByazMwMzZfd2luMV9kYXRhID0gewotCS5kYXRhX2Zvcm1hdHMgPSBmb3JtYXRzX3dpbl9s aXRlLAotCS5uZm9ybWF0cyA9IEFSUkFZX1NJWkUoZm9ybWF0c193aW5fbGl0ZSksCi0JLmVuYWJs ZSA9IFZPUF9SRUcoUkszMDM2X1NZU19DVFJMLCAweDEsIDEpLAotCS5mb3JtYXQgPSBWT1BfUkVH KFJLMzAzNl9TWVNfQ1RSTCwgMHg3LCA2KSwKLQkucmJfc3dhcCA9IFZPUF9SRUcoUkszMDM2X1NZ U19DVFJMLCAweDEsIDE5KSwKLQkuYWN0X2luZm8gPSBWT1BfUkVHKFJLMzAzNl9XSU4xX0FDVF9J TkZPLCAweDFmZmYxZmZmLCAwKSwKLQkuZHNwX2luZm8gPSBWT1BfUkVHKFJLMzAzNl9XSU4xX0RT UF9JTkZPLCAweDBmZmYwZmZmLCAwKSwKLQkuZHNwX3N0ID0gVk9QX1JFRyhSSzMwMzZfV0lOMV9E U1BfU1QsIDB4MWZmZjFmZmYsIDApLAotCS55cmdiX21zdCA9IFZPUF9SRUcoUkszMDM2X1dJTjFf TVNULCAweGZmZmZmZmZmLCAwKSwKLQkueXJnYl92aXIgPSBWT1BfUkVHKFJLMzAzNl9XSU4xX1ZJ UiwgMHhmZmZmLCAwKSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX3dpbl9kYXRhIHJr MzAzNl92b3Bfd2luX2RhdGFbXSA9IHsKLQl7IC5iYXNlID0gMHgwMCwgLnBoeSA9ICZyazMwMzZf d2luMF9kYXRhLAotCSAgLnR5cGUgPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZIH0sCi0JeyAuYmFz ZSA9IDB4MDAsIC5waHkgPSAmcmszMDM2X3dpbjFfZGF0YSwKLQkgIC50eXBlID0gRFJNX1BMQU5F X1RZUEVfQ1VSU09SIH0sCi19OwotCi1zdGF0aWMgY29uc3QgaW50IHJrMzAzNl92b3BfaW50cnNb XSA9IHsKLQlEU1BfSE9MRF9WQUxJRF9JTlRSLAotCUZTX0lOVFIsCi0JTElORV9GTEFHX0lOVFIs Ci0JQlVTX0VSUk9SX0lOVFIsCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IHZvcF9pbnRyIHJr MzAzNl9pbnRyID0gewotCS5pbnRycyA9IHJrMzAzNl92b3BfaW50cnMsCi0JLm5pbnRycyA9IEFS UkFZX1NJWkUocmszMDM2X3ZvcF9pbnRycyksCi0JLnN0YXR1cyA9IFZPUF9SRUcoUkszMDM2X0lO VF9TVEFUVVMsIDB4ZiwgMCksCi0JLmVuYWJsZSA9IFZPUF9SRUcoUkszMDM2X0lOVF9TVEFUVVMs IDB4ZiwgNCksCi0JLmNsZWFyID0gVk9QX1JFRyhSSzMwMzZfSU5UX1NUQVRVUywgMHhmLCA4KSwK LX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm9wX2N0cmwgcmszMDM2X2N0cmxfZGF0YSA9IHsK LQkuc3RhbmRieSA9IFZPUF9SRUcoUkszMDM2X1NZU19DVFJMLCAweDEsIDMwKSwKLQkub3V0X21v ZGUgPSBWT1BfUkVHKFJLMzAzNl9EU1BfQ1RSTDAsIDB4ZiwgMCksCi0JLnBpbl9wb2wgPSBWT1Bf UkVHKFJLMzAzNl9EU1BfQ1RSTDAsIDB4ZiwgNCksCi0JLmh0b3RhbF9wdyA9IFZPUF9SRUcoUksz MDM2X0RTUF9IVE9UQUxfSFNfRU5ELCAweDFmZmYxZmZmLCAwKSwKLQkuaGFjdF9zdF9lbmQgPSBW T1BfUkVHKFJLMzAzNl9EU1BfSEFDVF9TVF9FTkQsIDB4MWZmZjFmZmYsIDApLAotCS52dG90YWxf cHcgPSBWT1BfUkVHKFJLMzAzNl9EU1BfVlRPVEFMX1ZTX0VORCwgMHgxZmZmMWZmZiwgMCksCi0J LnZhY3Rfc3RfZW5kID0gVk9QX1JFRyhSSzMwMzZfRFNQX1ZBQ1RfU1RfRU5ELCAweDFmZmYxZmZm LCAwKSwKLQkuY2ZnX2RvbmUgPSBWT1BfUkVHKFJLMzAzNl9SRUdfQ0ZHX0RPTkUsIDB4MSwgMCks Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IHZvcF9yZWdfZGF0YSByazMwMzZfdm9wX2luaXRf cmVnX3RhYmxlW10gPSB7Ci0Je1JLMzAzNl9EU1BfQ1RSTDEsIDB4MDAwMDAwMDB9LAotfTsKLQot c3RhdGljIGNvbnN0IHN0cnVjdCB2b3BfZGF0YSByazMwMzZfdm9wID0gewotCS5pbml0X3RhYmxl ID0gcmszMDM2X3ZvcF9pbml0X3JlZ190YWJsZSwKLQkudGFibGVfc2l6ZSA9IEFSUkFZX1NJWkUo cmszMDM2X3ZvcF9pbml0X3JlZ190YWJsZSksCi0JLmN0cmwgPSAmcmszMDM2X2N0cmxfZGF0YSwK LQkuaW50ciA9ICZyazMwMzZfaW50ciwKLQkud2luID0gcmszMDM2X3ZvcF93aW5fZGF0YSwKLQku d2luX3NpemUgPSBBUlJBWV9TSVpFKHJrMzAzNl92b3Bfd2luX2RhdGEpLAotfTsKLQogc3RhdGlj IGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdm9wX2RyaXZlcl9kdF9tYXRjaFtdID0gewotCXsg LmNvbXBhdGlibGUgPSAicm9ja2NoaXAscmszMjg4LXZvcCIsCi0JICAuZGF0YSA9ICZyazMyODhf dm9wIH0sCiAJeyAuY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMwMzYtdm9wIiwKIAkgIC5kYXRh ID0gJnJrMzAzNl92b3AgfSwKKwl7IC5jb21wYXRpYmxlID0gInJvY2tjaGlwLHJrMzI4OC12b3Ai LAorCSAgLmRhdGEgPSAmcmszMjg4X3ZvcCB9LAogCXt9LAogfTsKIE1PRFVMRV9ERVZJQ0VfVEFC TEUob2YsIHZvcF9kcml2ZXJfZHRfbWF0Y2gpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9y b2NrY2hpcF92b3BfcmVnLmgKaW5kZXggZDRiNDZjYi4uNDM5MDNlMCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9wX3JlZy5oCkBAIC0xNSw2ICsxNSw1MCBAQAogI2lm bmRlZiBfUk9DS0NISVBfVk9QX1JFR19ICiAjZGVmaW5lIF9ST0NLQ0hJUF9WT1BfUkVHX0gKIAor LyogcmszMDM2IHJlZ2lzdGVyIGRlZmluaXRpb24gKi8KKyNkZWZpbmUgUkszMDM2X1NZU19DVFJM CQkJMHgwMAorI2RlZmluZSBSSzMwMzZfRFNQX0NUUkwwCQkweDA0CisjZGVmaW5lIFJLMzAzNl9E U1BfQ1RSTDEJCTB4MDgKKyNkZWZpbmUgUkszMDM2X0lOVF9TVEFUVVMJCTB4MTAKKyNkZWZpbmUg UkszMDM2X0FMUEhBX0NUUkwJCTB4MTQKKyNkZWZpbmUgUkszMDM2X1dJTjBfQ09MT1JfS0VZCQkw eDE4CisjZGVmaW5lIFJLMzAzNl9XSU4xX0NPTE9SX0tFWQkJMHgxYworI2RlZmluZSBSSzMwMzZf V0lOMF9ZUkdCX01TVAkJMHgyMAorI2RlZmluZSBSSzMwMzZfV0lOMF9DQlJfTVNUCQkweDI0Cisj ZGVmaW5lIFJLMzAzNl9XSU4xX1ZJUgkJCTB4MjgKKyNkZWZpbmUgUkszMDM2X0FYSV9CVVNfQ1RS TAkJMHgyYworI2RlZmluZSBSSzMwMzZfV0lOMF9WSVIJCQkweDMwCisjZGVmaW5lIFJLMzAzNl9X SU4wX0FDVF9JTkZPCQkweDM0CisjZGVmaW5lIFJLMzAzNl9XSU4wX0RTUF9JTkZPCQkweDM4Cisj ZGVmaW5lIFJLMzAzNl9XSU4wX0RTUF9TVAkJMHgzYworI2RlZmluZSBSSzMwMzZfV0lOMF9TQ0xf RkFDVE9SX1lSR0IJMHg0MAorI2RlZmluZSBSSzMwMzZfV0lOMF9TQ0xfRkFDVE9SX0NCUgkweDQ0 CisjZGVmaW5lIFJLMzAzNl9XSU4wX1NDTF9PRkZTRVQJCTB4NDgKKyNkZWZpbmUgUkszMDM2X0hX Q19NU1QJCQkweDU4CisjZGVmaW5lIFJLMzAzNl9IV0NfRFNQX1NUCQkweDVjCisjZGVmaW5lIFJL MzAzNl9EU1BfSFRPVEFMX0hTX0VORAkweDZjCisjZGVmaW5lIFJLMzAzNl9EU1BfSEFDVF9TVF9F TkQJCTB4NzAKKyNkZWZpbmUgUkszMDM2X0RTUF9WVE9UQUxfVlNfRU5ECTB4NzQKKyNkZWZpbmUg UkszMDM2X0RTUF9WQUNUX1NUX0VORAkJMHg3OAorI2RlZmluZSBSSzMwMzZfRFNQX1ZTX1NUX0VO RF9GMQkJMHg3YworI2RlZmluZSBSSzMwMzZfRFNQX1ZBQ1RfU1RfRU5EX0YxCTB4ODAKKyNkZWZp bmUgUkszMDM2X0dBVEhFUl9UUkFOU0ZFUgkJMHg4NAorI2RlZmluZSBSSzMwMzZfVkVSU0lPTl9J TkZPCQkweDk0CisjZGVmaW5lIFJLMzAzNl9SRUdfQ0ZHX0RPTkUJCTB4OTAKKyNkZWZpbmUgUksz MDM2X1dJTjFfTVNUCQkJMHhhMAorI2RlZmluZSBSSzMwMzZfV0lOMV9BQ1RfSU5GTwkJMHhiNAor I2RlZmluZSBSSzMwMzZfV0lOMV9EU1BfSU5GTwkJMHhiOAorI2RlZmluZSBSSzMwMzZfV0lOMV9E U1BfU1QJCTB4YmMKKyNkZWZpbmUgUkszMDM2X1dJTjFfU0NMX0ZBQ1RPUl9ZUkdCCTB4YzAKKyNk ZWZpbmUgUkszMDM2X1dJTjFfU0NMX09GRlNFVAkJMHhjOAorI2RlZmluZSBSSzMwMzZfQkNTSF9D VFJMCQkweGQwCisjZGVmaW5lIFJLMzAzNl9CQ1NIX0NPTE9SX0JBUgkJMHhkNAorI2RlZmluZSBS SzMwMzZfQkNTSF9CQ1MJCQkweGQ4CisjZGVmaW5lIFJLMzAzNl9CQ1NIX0gJCQkweGRjCisjZGVm aW5lIFJLMzAzNl9XSU4xX0xVVF9BRERSCQkweDQwMAorI2RlZmluZSBSSzMwMzZfSFdDX0xVVF9B RERSCQkweDgwMAorLyogcmszMDM2IHJlZ2lzdGVyIGRlZmluaXRpb24gZW5kICovCisKIC8qIHJr MzI4OCByZWdpc3RlciBkZWZpbml0aW9uICovCiAjZGVmaW5lIFJLMzI4OF9SRUdfQ0ZHX0RPTkUJ CQkweDAwMDAKICNkZWZpbmUgUkszMjg4X1ZFUlNJT05fSU5GTwkJCTB4MDAwNApAQCAtMTIyLDQ4 ICsxNjYsNCBAQAogI2RlZmluZSBSSzMyODhfRFNQX1ZBQ1RfU1RfRU5EX0YxCQkweDAxOWMKIC8q IHJlZ2lzdGVyIGRlZmluaXRpb24gZW5kICovCiAKLS8qIHJrMzAzNiByZWdpc3RlciBkZWZpbml0 aW9uICovCi0jZGVmaW5lIFJLMzAzNl9TWVNfQ1RSTAkJCTB4MDAKLSNkZWZpbmUgUkszMDM2X0RT UF9DVFJMMAkJMHgwNAotI2RlZmluZSBSSzMwMzZfRFNQX0NUUkwxCQkweDA4Ci0jZGVmaW5lIFJL MzAzNl9JTlRfU1RBVFVTCQkweDEwCi0jZGVmaW5lIFJLMzAzNl9BTFBIQV9DVFJMCQkweDE0Ci0j ZGVmaW5lIFJLMzAzNl9XSU4wX0NPTE9SX0tFWQkJMHgxOAotI2RlZmluZSBSSzMwMzZfV0lOMV9D T0xPUl9LRVkJCTB4MWMKLSNkZWZpbmUgUkszMDM2X1dJTjBfWVJHQl9NU1QJCTB4MjAKLSNkZWZp bmUgUkszMDM2X1dJTjBfQ0JSX01TVAkJMHgyNAotI2RlZmluZSBSSzMwMzZfV0lOMV9WSVIJCQkw eDI4Ci0jZGVmaW5lIFJLMzAzNl9BWElfQlVTX0NUUkwJCTB4MmMKLSNkZWZpbmUgUkszMDM2X1dJ TjBfVklSCQkJMHgzMAotI2RlZmluZSBSSzMwMzZfV0lOMF9BQ1RfSU5GTwkJMHgzNAotI2RlZmlu ZSBSSzMwMzZfV0lOMF9EU1BfSU5GTwkJMHgzOAotI2RlZmluZSBSSzMwMzZfV0lOMF9EU1BfU1QJ CTB4M2MKLSNkZWZpbmUgUkszMDM2X1dJTjBfU0NMX0ZBQ1RPUl9ZUkdCCTB4NDAKLSNkZWZpbmUg UkszMDM2X1dJTjBfU0NMX0ZBQ1RPUl9DQlIJMHg0NAotI2RlZmluZSBSSzMwMzZfV0lOMF9TQ0xf T0ZGU0VUCQkweDQ4Ci0jZGVmaW5lIFJLMzAzNl9IV0NfTVNUCQkJMHg1OAotI2RlZmluZSBSSzMw MzZfSFdDX0RTUF9TVAkJMHg1YwotI2RlZmluZSBSSzMwMzZfRFNQX0hUT1RBTF9IU19FTkQJMHg2 YwotI2RlZmluZSBSSzMwMzZfRFNQX0hBQ1RfU1RfRU5ECQkweDcwCi0jZGVmaW5lIFJLMzAzNl9E U1BfVlRPVEFMX1ZTX0VORAkweDc0Ci0jZGVmaW5lIFJLMzAzNl9EU1BfVkFDVF9TVF9FTkQJCTB4 NzgKLSNkZWZpbmUgUkszMDM2X0RTUF9WU19TVF9FTkRfRjEJCTB4N2MKLSNkZWZpbmUgUkszMDM2 X0RTUF9WQUNUX1NUX0VORF9GMQkweDgwCi0jZGVmaW5lIFJLMzAzNl9HQVRIRVJfVFJBTlNGRVIJ CTB4ODQKLSNkZWZpbmUgUkszMDM2X1ZFUlNJT05fSU5GTwkJMHg5NAotI2RlZmluZSBSSzMwMzZf UkVHX0NGR19ET05FCQkweDkwCi0jZGVmaW5lIFJLMzAzNl9XSU4xX01TVAkJCTB4YTAKLSNkZWZp bmUgUkszMDM2X1dJTjFfQUNUX0lORk8JCTB4YjQKLSNkZWZpbmUgUkszMDM2X1dJTjFfRFNQX0lO Rk8JCTB4YjgKLSNkZWZpbmUgUkszMDM2X1dJTjFfRFNQX1NUCQkweGJjCi0jZGVmaW5lIFJLMzAz Nl9XSU4xX1NDTF9GQUNUT1JfWVJHQgkweGMwCi0jZGVmaW5lIFJLMzAzNl9XSU4xX1NDTF9PRkZT RVQJCTB4YzgKLSNkZWZpbmUgUkszMDM2X0JDU0hfQ1RSTAkJMHhkMAotI2RlZmluZSBSSzMwMzZf QkNTSF9DT0xPUl9CQVIJCTB4ZDQKLSNkZWZpbmUgUkszMDM2X0JDU0hfQkNTCQkJMHhkOAotI2Rl ZmluZSBSSzMwMzZfQkNTSF9ICQkJMHhkYwotI2RlZmluZSBSSzMwMzZfV0lOMV9MVVRfQUREUgkJ MHg0MDAKLSNkZWZpbmUgUkszMDM2X0hXQ19MVVRfQUREUgkJMHg4MDAKLS8qIHJrMzAzNiByZWdp c3RlciBkZWZpbml0aW9uIGVuZCAqLwotCiAjZW5kaWYgLyogX1JPQ0tDSElQX1ZPUF9SRUdfSCAq LwotLSAKMS43LjkuNQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: mark.yao@rock-chips.com (Mark Yao) Date: Wed, 20 Apr 2016 14:18:13 +0800 Subject: [PATCH v2 1/5] drm/rockchip: sort registers define by chip's number In-Reply-To: <1461133097-1478-1-git-send-email-mark.yao@rock-chips.com> References: <1461133097-1478-1-git-send-email-mark.yao@rock-chips.com> Message-ID: <1461133097-1478-2-git-send-email-mark.yao@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org No functional changes, sort the vop registers to make code more readable. Signed-off-by: Mark Yao --- drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 166 +++++++++++++-------------- drivers/gpu/drm/rockchip/rockchip_vop_reg.h | 88 +++++++------- 2 files changed, 127 insertions(+), 127 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c index 3166b46..e75b2b8 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c @@ -50,6 +50,87 @@ static const uint32_t formats_win_lite[] = { DRM_FORMAT_BGR565, }; +static const struct vop_scl_regs rk3066_win_scl = { + .scale_yrgb_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 0x0), + .scale_yrgb_y = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 16), + .scale_cbcr_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_CBR, 0xffff, 0x0), + .scale_cbcr_y = VOP_REG(RK3036_WIN0_SCL_FACTOR_CBR, 0xffff, 16), +}; + +static const struct vop_win_phy rk3036_win0_data = { + .scl = &rk3066_win_scl, + .data_formats = formats_win_full, + .nformats = ARRAY_SIZE(formats_win_full), + .enable = VOP_REG(RK3036_SYS_CTRL, 0x1, 0), + .format = VOP_REG(RK3036_SYS_CTRL, 0x7, 3), + .rb_swap = VOP_REG(RK3036_SYS_CTRL, 0x1, 15), + .act_info = VOP_REG(RK3036_WIN0_ACT_INFO, 0x1fff1fff, 0), + .dsp_info = VOP_REG(RK3036_WIN0_DSP_INFO, 0x0fff0fff, 0), + .dsp_st = VOP_REG(RK3036_WIN0_DSP_ST, 0x1fff1fff, 0), + .yrgb_mst = VOP_REG(RK3036_WIN0_YRGB_MST, 0xffffffff, 0), + .uv_mst = VOP_REG(RK3036_WIN0_CBR_MST, 0xffffffff, 0), + .yrgb_vir = VOP_REG(RK3036_WIN0_VIR, 0xffff, 0), +}; + +static const struct vop_win_phy rk3036_win1_data = { + .data_formats = formats_win_lite, + .nformats = ARRAY_SIZE(formats_win_lite), + .enable = VOP_REG(RK3036_SYS_CTRL, 0x1, 1), + .format = VOP_REG(RK3036_SYS_CTRL, 0x7, 6), + .rb_swap = VOP_REG(RK3036_SYS_CTRL, 0x1, 19), + .act_info = VOP_REG(RK3036_WIN1_ACT_INFO, 0x1fff1fff, 0), + .dsp_info = VOP_REG(RK3036_WIN1_DSP_INFO, 0x0fff0fff, 0), + .dsp_st = VOP_REG(RK3036_WIN1_DSP_ST, 0x1fff1fff, 0), + .yrgb_mst = VOP_REG(RK3036_WIN1_MST, 0xffffffff, 0), + .yrgb_vir = VOP_REG(RK3036_WIN1_VIR, 0xffff, 0), +}; + +static const struct vop_win_data rk3036_vop_win_data[] = { + { .base = 0x00, .phy = &rk3036_win0_data, + .type = DRM_PLANE_TYPE_PRIMARY }, + { .base = 0x00, .phy = &rk3036_win1_data, + .type = DRM_PLANE_TYPE_CURSOR }, +}; + +static const int rk3036_vop_intrs[] = { + DSP_HOLD_VALID_INTR, + FS_INTR, + LINE_FLAG_INTR, + BUS_ERROR_INTR, +}; + +static const struct vop_intr rk3036_intr = { + .intrs = rk3036_vop_intrs, + .nintrs = ARRAY_SIZE(rk3036_vop_intrs), + .status = VOP_REG(RK3036_INT_STATUS, 0xf, 0), + .enable = VOP_REG(RK3036_INT_STATUS, 0xf, 4), + .clear = VOP_REG(RK3036_INT_STATUS, 0xf, 8), +}; + +static const struct vop_ctrl rk3036_ctrl_data = { + .standby = VOP_REG(RK3036_SYS_CTRL, 0x1, 30), + .out_mode = VOP_REG(RK3036_DSP_CTRL0, 0xf, 0), + .pin_pol = VOP_REG(RK3036_DSP_CTRL0, 0xf, 4), + .htotal_pw = VOP_REG(RK3036_DSP_HTOTAL_HS_END, 0x1fff1fff, 0), + .hact_st_end = VOP_REG(RK3036_DSP_HACT_ST_END, 0x1fff1fff, 0), + .vtotal_pw = VOP_REG(RK3036_DSP_VTOTAL_VS_END, 0x1fff1fff, 0), + .vact_st_end = VOP_REG(RK3036_DSP_VACT_ST_END, 0x1fff1fff, 0), + .cfg_done = VOP_REG(RK3036_REG_CFG_DONE, 0x1, 0), +}; + +static const struct vop_reg_data rk3036_vop_init_reg_table[] = { + {RK3036_DSP_CTRL1, 0x00000000}, +}; + +static const struct vop_data rk3036_vop = { + .init_table = rk3036_vop_init_reg_table, + .table_size = ARRAY_SIZE(rk3036_vop_init_reg_table), + .ctrl = &rk3036_ctrl_data, + .intr = &rk3036_intr, + .win = rk3036_vop_win_data, + .win_size = ARRAY_SIZE(rk3036_vop_win_data), +}; + static const struct vop_scl_extension rk3288_win_full_scl_ext = { .cbcr_vsd_mode = VOP_REG(RK3288_WIN0_CTRL1, 0x1, 31), .cbcr_vsu_mode = VOP_REG(RK3288_WIN0_CTRL1, 0x1, 30), @@ -190,92 +271,11 @@ static const struct vop_data rk3288_vop = { .win_size = ARRAY_SIZE(rk3288_vop_win_data), }; -static const struct vop_scl_regs rk3066_win_scl = { - .scale_yrgb_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 0x0), - .scale_yrgb_y = VOP_REG(RK3036_WIN0_SCL_FACTOR_YRGB, 0xffff, 16), - .scale_cbcr_x = VOP_REG(RK3036_WIN0_SCL_FACTOR_CBR, 0xffff, 0x0), - .scale_cbcr_y = VOP_REG(RK3036_WIN0_SCL_FACTOR_CBR, 0xffff, 16), -}; - -static const struct vop_win_phy rk3036_win0_data = { - .scl = &rk3066_win_scl, - .data_formats = formats_win_full, - .nformats = ARRAY_SIZE(formats_win_full), - .enable = VOP_REG(RK3036_SYS_CTRL, 0x1, 0), - .format = VOP_REG(RK3036_SYS_CTRL, 0x7, 3), - .rb_swap = VOP_REG(RK3036_SYS_CTRL, 0x1, 15), - .act_info = VOP_REG(RK3036_WIN0_ACT_INFO, 0x1fff1fff, 0), - .dsp_info = VOP_REG(RK3036_WIN0_DSP_INFO, 0x0fff0fff, 0), - .dsp_st = VOP_REG(RK3036_WIN0_DSP_ST, 0x1fff1fff, 0), - .yrgb_mst = VOP_REG(RK3036_WIN0_YRGB_MST, 0xffffffff, 0), - .uv_mst = VOP_REG(RK3036_WIN0_CBR_MST, 0xffffffff, 0), - .yrgb_vir = VOP_REG(RK3036_WIN0_VIR, 0xffff, 0), -}; - -static const struct vop_win_phy rk3036_win1_data = { - .data_formats = formats_win_lite, - .nformats = ARRAY_SIZE(formats_win_lite), - .enable = VOP_REG(RK3036_SYS_CTRL, 0x1, 1), - .format = VOP_REG(RK3036_SYS_CTRL, 0x7, 6), - .rb_swap = VOP_REG(RK3036_SYS_CTRL, 0x1, 19), - .act_info = VOP_REG(RK3036_WIN1_ACT_INFO, 0x1fff1fff, 0), - .dsp_info = VOP_REG(RK3036_WIN1_DSP_INFO, 0x0fff0fff, 0), - .dsp_st = VOP_REG(RK3036_WIN1_DSP_ST, 0x1fff1fff, 0), - .yrgb_mst = VOP_REG(RK3036_WIN1_MST, 0xffffffff, 0), - .yrgb_vir = VOP_REG(RK3036_WIN1_VIR, 0xffff, 0), -}; - -static const struct vop_win_data rk3036_vop_win_data[] = { - { .base = 0x00, .phy = &rk3036_win0_data, - .type = DRM_PLANE_TYPE_PRIMARY }, - { .base = 0x00, .phy = &rk3036_win1_data, - .type = DRM_PLANE_TYPE_CURSOR }, -}; - -static const int rk3036_vop_intrs[] = { - DSP_HOLD_VALID_INTR, - FS_INTR, - LINE_FLAG_INTR, - BUS_ERROR_INTR, -}; - -static const struct vop_intr rk3036_intr = { - .intrs = rk3036_vop_intrs, - .nintrs = ARRAY_SIZE(rk3036_vop_intrs), - .status = VOP_REG(RK3036_INT_STATUS, 0xf, 0), - .enable = VOP_REG(RK3036_INT_STATUS, 0xf, 4), - .clear = VOP_REG(RK3036_INT_STATUS, 0xf, 8), -}; - -static const struct vop_ctrl rk3036_ctrl_data = { - .standby = VOP_REG(RK3036_SYS_CTRL, 0x1, 30), - .out_mode = VOP_REG(RK3036_DSP_CTRL0, 0xf, 0), - .pin_pol = VOP_REG(RK3036_DSP_CTRL0, 0xf, 4), - .htotal_pw = VOP_REG(RK3036_DSP_HTOTAL_HS_END, 0x1fff1fff, 0), - .hact_st_end = VOP_REG(RK3036_DSP_HACT_ST_END, 0x1fff1fff, 0), - .vtotal_pw = VOP_REG(RK3036_DSP_VTOTAL_VS_END, 0x1fff1fff, 0), - .vact_st_end = VOP_REG(RK3036_DSP_VACT_ST_END, 0x1fff1fff, 0), - .cfg_done = VOP_REG(RK3036_REG_CFG_DONE, 0x1, 0), -}; - -static const struct vop_reg_data rk3036_vop_init_reg_table[] = { - {RK3036_DSP_CTRL1, 0x00000000}, -}; - -static const struct vop_data rk3036_vop = { - .init_table = rk3036_vop_init_reg_table, - .table_size = ARRAY_SIZE(rk3036_vop_init_reg_table), - .ctrl = &rk3036_ctrl_data, - .intr = &rk3036_intr, - .win = rk3036_vop_win_data, - .win_size = ARRAY_SIZE(rk3036_vop_win_data), -}; - static const struct of_device_id vop_driver_dt_match[] = { - { .compatible = "rockchip,rk3288-vop", - .data = &rk3288_vop }, { .compatible = "rockchip,rk3036-vop", .data = &rk3036_vop }, + { .compatible = "rockchip,rk3288-vop", + .data = &rk3288_vop }, {}, }; MODULE_DEVICE_TABLE(of, vop_driver_dt_match); diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h index d4b46cb..43903e0 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.h +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.h @@ -15,6 +15,50 @@ #ifndef _ROCKCHIP_VOP_REG_H #define _ROCKCHIP_VOP_REG_H +/* rk3036 register definition */ +#define RK3036_SYS_CTRL 0x00 +#define RK3036_DSP_CTRL0 0x04 +#define RK3036_DSP_CTRL1 0x08 +#define RK3036_INT_STATUS 0x10 +#define RK3036_ALPHA_CTRL 0x14 +#define RK3036_WIN0_COLOR_KEY 0x18 +#define RK3036_WIN1_COLOR_KEY 0x1c +#define RK3036_WIN0_YRGB_MST 0x20 +#define RK3036_WIN0_CBR_MST 0x24 +#define RK3036_WIN1_VIR 0x28 +#define RK3036_AXI_BUS_CTRL 0x2c +#define RK3036_WIN0_VIR 0x30 +#define RK3036_WIN0_ACT_INFO 0x34 +#define RK3036_WIN0_DSP_INFO 0x38 +#define RK3036_WIN0_DSP_ST 0x3c +#define RK3036_WIN0_SCL_FACTOR_YRGB 0x40 +#define RK3036_WIN0_SCL_FACTOR_CBR 0x44 +#define RK3036_WIN0_SCL_OFFSET 0x48 +#define RK3036_HWC_MST 0x58 +#define RK3036_HWC_DSP_ST 0x5c +#define RK3036_DSP_HTOTAL_HS_END 0x6c +#define RK3036_DSP_HACT_ST_END 0x70 +#define RK3036_DSP_VTOTAL_VS_END 0x74 +#define RK3036_DSP_VACT_ST_END 0x78 +#define RK3036_DSP_VS_ST_END_F1 0x7c +#define RK3036_DSP_VACT_ST_END_F1 0x80 +#define RK3036_GATHER_TRANSFER 0x84 +#define RK3036_VERSION_INFO 0x94 +#define RK3036_REG_CFG_DONE 0x90 +#define RK3036_WIN1_MST 0xa0 +#define RK3036_WIN1_ACT_INFO 0xb4 +#define RK3036_WIN1_DSP_INFO 0xb8 +#define RK3036_WIN1_DSP_ST 0xbc +#define RK3036_WIN1_SCL_FACTOR_YRGB 0xc0 +#define RK3036_WIN1_SCL_OFFSET 0xc8 +#define RK3036_BCSH_CTRL 0xd0 +#define RK3036_BCSH_COLOR_BAR 0xd4 +#define RK3036_BCSH_BCS 0xd8 +#define RK3036_BCSH_H 0xdc +#define RK3036_WIN1_LUT_ADDR 0x400 +#define RK3036_HWC_LUT_ADDR 0x800 +/* rk3036 register definition end */ + /* rk3288 register definition */ #define RK3288_REG_CFG_DONE 0x0000 #define RK3288_VERSION_INFO 0x0004 @@ -122,48 +166,4 @@ #define RK3288_DSP_VACT_ST_END_F1 0x019c /* register definition end */ -/* rk3036 register definition */ -#define RK3036_SYS_CTRL 0x00 -#define RK3036_DSP_CTRL0 0x04 -#define RK3036_DSP_CTRL1 0x08 -#define RK3036_INT_STATUS 0x10 -#define RK3036_ALPHA_CTRL 0x14 -#define RK3036_WIN0_COLOR_KEY 0x18 -#define RK3036_WIN1_COLOR_KEY 0x1c -#define RK3036_WIN0_YRGB_MST 0x20 -#define RK3036_WIN0_CBR_MST 0x24 -#define RK3036_WIN1_VIR 0x28 -#define RK3036_AXI_BUS_CTRL 0x2c -#define RK3036_WIN0_VIR 0x30 -#define RK3036_WIN0_ACT_INFO 0x34 -#define RK3036_WIN0_DSP_INFO 0x38 -#define RK3036_WIN0_DSP_ST 0x3c -#define RK3036_WIN0_SCL_FACTOR_YRGB 0x40 -#define RK3036_WIN0_SCL_FACTOR_CBR 0x44 -#define RK3036_WIN0_SCL_OFFSET 0x48 -#define RK3036_HWC_MST 0x58 -#define RK3036_HWC_DSP_ST 0x5c -#define RK3036_DSP_HTOTAL_HS_END 0x6c -#define RK3036_DSP_HACT_ST_END 0x70 -#define RK3036_DSP_VTOTAL_VS_END 0x74 -#define RK3036_DSP_VACT_ST_END 0x78 -#define RK3036_DSP_VS_ST_END_F1 0x7c -#define RK3036_DSP_VACT_ST_END_F1 0x80 -#define RK3036_GATHER_TRANSFER 0x84 -#define RK3036_VERSION_INFO 0x94 -#define RK3036_REG_CFG_DONE 0x90 -#define RK3036_WIN1_MST 0xa0 -#define RK3036_WIN1_ACT_INFO 0xb4 -#define RK3036_WIN1_DSP_INFO 0xb8 -#define RK3036_WIN1_DSP_ST 0xbc -#define RK3036_WIN1_SCL_FACTOR_YRGB 0xc0 -#define RK3036_WIN1_SCL_OFFSET 0xc8 -#define RK3036_BCSH_CTRL 0xd0 -#define RK3036_BCSH_COLOR_BAR 0xd4 -#define RK3036_BCSH_BCS 0xd8 -#define RK3036_BCSH_H 0xdc -#define RK3036_WIN1_LUT_ADDR 0x400 -#define RK3036_HWC_LUT_ADDR 0x800 -/* rk3036 register definition end */ - #endif /* _ROCKCHIP_VOP_REG_H */ -- 1.7.9.5