From patchwork Mon Apr 14 10:05:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xin Ji X-Patchwork-Id: 14050084 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D641AC369B6 for ; Mon, 14 Apr 2025 10:05:32 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 16F4010E548; Mon, 14 Apr 2025 10:05:32 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=analogixsemi.com header.i=@analogixsemi.com header.b="SbJF7Gde"; dkim-atps=neutral Received: from SJ2PR03CU002.outbound.protection.outlook.com (mail-westusazon11023079.outbound.protection.outlook.com [52.101.44.79]) by gabe.freedesktop.org (Postfix) with ESMTPS id C4B2310E53F for ; Mon, 14 Apr 2025 10:05:27 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Swo2lC+J/2mH9TdDgysF7eO+fEB4bY03oao4uePI1shFax3hRoS4VyIstNmH6EEhGrEHFk0npL9FyKGnvdUM1IhrRIsDbkE5QLDPOj+b6xR+9FyQaI5AwaEQEsVvxfQwyx5gJ5NyBTboVvji8t4u+BoqSBOXx4rNlTIWomKF2NpXpqkjzShEedV72Hu0RdRc571lau+sFcRpJgG5N7oO3UmkHz+3JQVcoqx4lmK6esTfFJj/yBZd1ogt/bwGXUDXgsEzFbt5BaaUO9cp3Iehv27Ck4wYjiJHX8A7bX7pwFsfqNMZ30D6A9/ggZzrYpn89Q8FYogyb/nyjqreppUxmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=YkRnhUrcll5XUXgHCXDWnuT11ZtZt1YzJ2r2p0sx9/E=; b=HvPKbZPG4bloQ1SMM/6lBfV9IhcKQ2YUZu88H9d2sU87xCc/AfsdE23so8wCrJrI6oGtEZ+/i7FoHWMZxMKVBpJoCZyvrSyc1L6AVUjcESX6UG+TUP0Mt2R8cE0gDPKNQBzV8GDvABnWikGCQ2SNmjKVOHdLY9Bva7/zqMAWRUnYiD6tGBi+x/gQC38XTAdvCZp2Y3rTl5zOy9xdLLIyfp2HOFBn449UKFmEkvk9TZzstPJsGoqGOmKbOD8oiVU/gGycy+BlP5kjhnos1d42sHFBjqlMvaIIEQTVyZImfRAoSXCoLKt7lTanESNvNs6le92bq2dWA3nSUufApZoD7Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=analogixsemi.com; dmarc=pass action=none header.from=analogixsemi.com; dkim=pass header.d=analogixsemi.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analogixsemi.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YkRnhUrcll5XUXgHCXDWnuT11ZtZt1YzJ2r2p0sx9/E=; b=SbJF7GdeQfF4tBq7mUqCSbK/9bKHocd9T9+FuCCERPtSbmujcsGDX6+c0LrqT5L/2Cag9Yb4qQ0mVFFX1SW+DxMF28QKNmAMLyzwSxGuSHA2Btt6y79JA4EwEXS46a28YeSohldcr5JIvMDIH/ah74Gm7j6QgC9+H2z5hJRUl/k= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=analogixsemi.com; Received: from BY5PR04MB6739.namprd04.prod.outlook.com (2603:10b6:a03:229::8) by LV8PR04MB9268.namprd04.prod.outlook.com (2603:10b6:408:256::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.30; Mon, 14 Apr 2025 10:05:21 +0000 Received: from BY5PR04MB6739.namprd04.prod.outlook.com ([fe80::5a7e:9e8c:138f:1815]) by BY5PR04MB6739.namprd04.prod.outlook.com ([fe80::5a7e:9e8c:138f:1815%5]) with mapi id 15.20.8632.030; Mon, 14 Apr 2025 10:05:20 +0000 From: Xin Ji To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: bliang@analogixsemi.com, qwen@analogixsemi.com, treapking@chromium.org, Xin Ji , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 1/3] drm/bridge:anx7625: Refactoring timing programming Date: Mon, 14 Apr 2025 18:05:00 +0800 Message-Id: <20250414100502.1604717-1-xji@analogixsemi.com> X-Mailer: git-send-email 2.25.1 X-ClientProxiedBy: TP0P295CA0047.TWNP295.PROD.OUTLOOK.COM (2603:1096:910:3::13) To BY5PR04MB6739.namprd04.prod.outlook.com (2603:10b6:a03:229::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR04MB6739:EE_|LV8PR04MB9268:EE_ X-MS-Office365-Filtering-Correlation-Id: 1a7c743a-049d-4472-ed61-08dd7b3bdd30 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|52116014|1800799024|7416014|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: 1WEcDK2ridLgrhPuM/GdQAsnUha+DtBFUGQxqVbt4H/vdHlVeIvHLmcZ7Hcn6RFKDltg8ktss3H2orgGWV+ooypMZieSF5cHpBb6oxmraMJy8Ga81HBssxuz7am49oJRMjq1x2nlrfgNg9t0n9QYrNIVIaC+TlX41Tu0OMwXQo7dEyyQAq7A2PfAojEkgtqTDso+lPDpyVrEPWSL5wOgMiyVQpKAfYFXFTKUytm27glsiMWM8Nit4/WQngP6l8WI+jAgNZjYEssISjHzhM//sNQHHQq4YSa7goS4T1Z/8qn8xUP0BjJd5+8ULbH+EKHN9goOZSNlaS74ECJw2qNWQtF1WIbkX0ZFLM5WTzjnKxqqBNhEa0U//SOkHDVisuCY3jwPsnbpbJuTS1viYFWxzV9Ds1YIMbhdwxeWTc3IjWsacZ6XUP9OGp+eh+Y+2LzyNuBxVBiMyAC8LGcIK/IHVqi1Vey/Wig0KHCkfPqPJEJ5v2pNRC8o65GZxdMVlRu79g8sAAhXRWeNQGXtKnOwuzswb71EPCdRJW3Az5kEfHRLLWKM7GddPuD686sP/6AyYn1wsvuCfyvHKwxAlRG1VQ4F4s9YqyWrNVQwe8ULv80C9zfAYG0hWcGiWdX1VeqX0lpyE+la+4RC35WKGTJfm9eItyiP1yVlx+U23Xvxtlzj2BARFWhjvD3KJDYm3w/ZYq/4YTsemcDmIOV9GVUFWjibS6MhqEfGvoBPSsupKCEriJHMn2m3jhFuwsiZbCKwPAhjRd9SoB16k5U0telLe5LKl7IMeCtrKdVde4PDKFiVUYEn/FJGX9SlcI+0rR+A1v7x1rZ3Qkf5MLF9OfZ5ViW0a45fAgM8VGOUAIryRI7ogvjXldadKnpG+u32WQ23jY4a7bCcUmn2Qtr0jLFnHYJjxTzOcqlYvFbTYo6C8SRyBQCGP6q5UixfffbTlN+n8lER83A9LlKbgYjagKbJcR2NJxWViOwORNkxNjzU8uhKnKwzwpD+bAo0SUEG8g1aJSFUaTSIXCjVieg9h0fDjacBhTi/AtEUn7dcjxjQm8hnzY8psGs1XBMLRCdsYzmdO0vTrwLsJ2g21mB1q7BWxsX436yNUMKDXLHC9MAPeZh0GnHAkjXrOjpaUMrz3d7hGsIqFzP4s2jg/uQayEu+E1Ulix1a33s34ln9x5dZ+Ur98wkQB6YuJ2ta/8oA4CjSF7V6aJfYn6V0RsPo3fK2IJw6H3ovU+romOPr1x1g5wZYhoL/1poBoMubaFkhtNe5nVQkZa/4rAKGUDAiTuV3eQKc+IahreyrQ80zmTDEfZHt/vPbLljK+P+ccU/OtzMjw54Cm+xi1BgXU6ucqKoYviuU+5Ywxu52TI9A8s6+K59/ke15Ea5HzfQE8cvOKlZLI5V5XxHKvrnZSg1c1O/nlG+a2OwEph+AUqmeCbdgVcIOARIkWAXiaX51FeMjoqW4Y+X4rpWfvc9QSk+4XaTkY+ApqMPwjfPCM8h5YrLtCLs= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR04MB6739.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(52116014)(1800799024)(7416014)(366016)(38350700014)(921020); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: iRFnjuE+isoOuHoq0ZAG6hgBTj5Anp5aMa8ksc9es5SCoQurTr56hPjQncefDaWtOYcugN7z51MMoWEt4JycQdS+pZMpk1T2gC5zKMx4UlPLITwpnBZ3btLKldCopClx14Ma5HF1Bz3WlAG1R7R77a2SLcYCrQ2StJd3bedZ87KfbK/A0cW3TV60QPJyZif0H1us+BTs6589/uMxE5P1Jwiyg29cOmu81wU/OkzqfzEFeMc12uL7z159227ZRuVjB1jLARg2tems51uRWDsOTjWv3YujLyOin2E/c9OcRNSZttqsiuAPQq7GWp56BoTtuhxii/Cbt0A+XCABjkStMEVf4a5Jw8J4a+yZ18aDvQTSRosyYn6x3MyzJcFWuKCsQIjHcJza53I1ieedaNwue/Mwk8LNR7zr7bLINjZma2KuCn+bp7nILFDxk8bmPO3FA5695by+Nj8Trs70pZ5slszJFEZANS06utb7PL9fSP0uYRX9RXj768sIUNLQ1UAKP5CBsmspAuVPfiXwzf2bZkybTo/mXOT6Yy6kKwSO0RFLf1Mti6VP5m9l2UWv4MQjqJi7baYz0pv9OhjuKPze7SSMm22xqxQokPRKVlsTfyqCWjX3AqyD7nQIzEJRjCtN4tmLdEi2baD3SUHGhCccvzC8XUQ5CC1jfKJCc7MOfqb7Nxz8yovLBw+yFiQNJbAfF7/HuI9iYqCf07TasegBpeqp9VprjfwfycE4MfO32dSe9VwScKLo9IbfMCVk+YrpAYXPPZTZkxbkrJAcpnCpt04p2o+sgiRs5nNtboXMKSTRs9Zsw2BY060bLNLX9BGAHxwtmZzhU6o/slSOoR9t5ulHaxtSfHlU8OctwlGEyLwThilRkWru7tkb8RXYwrPP9zRqf1mFOQQ4FdgZijZ+8+bzReIEvJueYaJqoPDUfEsuiX82bWzs0AOyXQ679luQ+dqUNwvnTqB0plHfEFWD+1WlTUKeZmWgPwIAp8e/NFg9JObqmF0takCBbjkSM4mkonSrUS8arPAEUI04XCdhPx3lxVrDdy8YwO743Y3LJGUMMDYvJSkuYSMEvxLErboZ5xU+dyAjF7c+86lrx3JaG7p2N/dM/GYRbKNNA6n9h6Lhn2jaWGiLnlFkUBc1tZL+3Bm0kRjOlkN4zI5HnoAoFFYbw/TL54oED910I3zwkD74bBrku4cCfFXEMB4I250V5C+whYr75Uu9VcdiOr5kT9OvFGk72Fm/O/ckcFlrnSwldQxMu69x0lj1abxJuvnR/ot0jh63wGhBlkl8BxxgbXlwbpzTkfe/UI5/Ufv2Vxi6w+NTsfAHGD3t5G1Vd8zw0xPJDp/NS9pG8sC4siFqkQXBSNyLS59hLxLguSV0BfSliOhfnaBwOGGhDHuckuGRw9XBhYUr10o2i5MN3LpHw8E8lnhjhp712+PuHK0pLV1eWCxNB6mcGAzB4WuSZSWHGGP7N2/EtLcdj8rAcQx9oKnXNgoEX+uyI1iW0/NV4D2SSD4nNMpd7WTcb/o0T8JW+fSpKcc9gmDZ6wKiXD2uPanlGvfbyoOQeDsQUod/oinAowtwV/Y2KpeB8WR03n2CR7fQgyFFmzFwkVMJxgH3mQ== X-OriginatorOrg: analogixsemi.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1a7c743a-049d-4472-ed61-08dd7b3bdd30 X-MS-Exchange-CrossTenant-AuthSource: BY5PR04MB6739.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2025 10:05:20.2640 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b099b0b4-f26c-4cf5-9a0f-d5be9acab205 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Tf5P6VA6kewIQBh8S/+VdYFylYXnDf+LH+lJI/aI9/6hhTPX9rZ8HxtqDcd6yzAec/FxiafG/jO3gnpje0zoXw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR04MB9268 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Refactoring timing programming into two functions. Signed-off-by: Xin Ji --- drivers/gpu/drm/bridge/analogix/anx7625.c | 124 ++++++++++++++-------- drivers/gpu/drm/bridge/analogix/anx7625.h | 4 + 2 files changed, 85 insertions(+), 43 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c index 0b61e77c0398..8928971558d2 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.c +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c @@ -476,11 +476,85 @@ static int anx7625_set_k_value(struct anx7625_data *ctx) MIPI_DIGITAL_ADJ_1, 0x3D); } +static bool anx7625_dsc_check(struct anx7625_data *ctx) +{ + if (ctx->dt.pixelclock.min > DSC_PIXEL_CLOCK) + return true; + + return false; +} + +static inline int anx7625_h_timing_reg_write(struct anx7625_data *ctx, + struct i2c_client *client, + u8 reg_addr, u16 val, + bool dsc_check) +{ + int ret; + + if (dsc_check && anx7625_dsc_check(ctx)) + val = dsc_div(val); + + ret = anx7625_reg_write(ctx, client, reg_addr, val); + ret |= anx7625_reg_write(ctx, client, reg_addr + 1, val >> 8); + + return ret; +} + +static int anx7625_h_timing_write(struct anx7625_data *ctx, + struct i2c_client *client, + bool dsc_check) +{ + u16 htotal; + int ret; + + htotal = ctx->dt.hactive.min + ctx->dt.hfront_porch.min + + ctx->dt.hback_porch.min + ctx->dt.hsync_len.min; + /* Htotal */ + ret = anx7625_h_timing_reg_write(ctx, client, HORIZONTAL_TOTAL_PIXELS_L, + htotal, dsc_check); + /* Hactive */ + ret |= anx7625_h_timing_reg_write(ctx, client, HORIZONTAL_ACTIVE_PIXELS_L, + ctx->dt.hactive.min, dsc_check); + /* HFP */ + ret |= anx7625_h_timing_reg_write(ctx, client, HORIZONTAL_FRONT_PORCH_L, + ctx->dt.hfront_porch.min, dsc_check); + /* HWS */ + ret |= anx7625_h_timing_reg_write(ctx, client, HORIZONTAL_SYNC_WIDTH_L, + ctx->dt.hsync_len.min, dsc_check); + /* HBP */ + ret |= anx7625_h_timing_reg_write(ctx, client, HORIZONTAL_BACK_PORCH_L, + ctx->dt.hback_porch.min, dsc_check); + + return ret; +} + +static int anx7625_v_timing_write(struct anx7625_data *ctx, + struct i2c_client *client) +{ + int ret; + + /* Vactive */ + ret = anx7625_reg_write(ctx, client, ACTIVE_LINES_L, + ctx->dt.vactive.min); + ret |= anx7625_reg_write(ctx, client, ACTIVE_LINES_H, + ctx->dt.vactive.min >> 8); + /* VFP */ + ret |= anx7625_reg_write(ctx, client, VERTICAL_FRONT_PORCH, + ctx->dt.vfront_porch.min); + /* VWS */ + ret |= anx7625_reg_write(ctx, client, VERTICAL_SYNC_WIDTH, + ctx->dt.vsync_len.min); + /* VBP */ + ret |= anx7625_reg_write(ctx, client, VERTICAL_BACK_PORCH, + ctx->dt.vback_porch.min); + + return ret; +} + static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx) { struct device *dev = ctx->dev; unsigned long m, n; - u16 htotal; int ret; u8 post_divider = 0; @@ -506,48 +580,12 @@ static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx) ret |= anx7625_write_or(ctx, ctx->i2c.rx_p1_client, MIPI_LANE_CTRL_0, ctx->pdata.mipi_lanes - 1); - /* Htotal */ - htotal = ctx->dt.hactive.min + ctx->dt.hfront_porch.min + - ctx->dt.hback_porch.min + ctx->dt.hsync_len.min; - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - HORIZONTAL_TOTAL_PIXELS_L, htotal & 0xFF); - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - HORIZONTAL_TOTAL_PIXELS_H, htotal >> 8); - /* Hactive */ - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - HORIZONTAL_ACTIVE_PIXELS_L, ctx->dt.hactive.min & 0xFF); - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - HORIZONTAL_ACTIVE_PIXELS_H, ctx->dt.hactive.min >> 8); - /* HFP */ - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - HORIZONTAL_FRONT_PORCH_L, ctx->dt.hfront_porch.min); - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - HORIZONTAL_FRONT_PORCH_H, - ctx->dt.hfront_porch.min >> 8); - /* HWS */ - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - HORIZONTAL_SYNC_WIDTH_L, ctx->dt.hsync_len.min); - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - HORIZONTAL_SYNC_WIDTH_H, ctx->dt.hsync_len.min >> 8); - /* HBP */ - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - HORIZONTAL_BACK_PORCH_L, ctx->dt.hback_porch.min); - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - HORIZONTAL_BACK_PORCH_H, ctx->dt.hback_porch.min >> 8); - /* Vactive */ - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, ACTIVE_LINES_L, - ctx->dt.vactive.min); - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, ACTIVE_LINES_H, - ctx->dt.vactive.min >> 8); - /* VFP */ - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - VERTICAL_FRONT_PORCH, ctx->dt.vfront_porch.min); - /* VWS */ - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - VERTICAL_SYNC_WIDTH, ctx->dt.vsync_len.min); - /* VBP */ - ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p2_client, - VERTICAL_BACK_PORCH, ctx->dt.vback_porch.min); + /* Video Horizontal timing */ + ret |= anx7625_h_timing_write(ctx, ctx->i2c.rx_p2_client, true); + + /* Video Vertical timing */ + ret |= anx7625_v_timing_write(ctx, ctx->i2c.rx_p2_client); + /* M value */ ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client, MIPI_PLL_M_NUM_23_16, (m >> 16) & 0xff); diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h index eb5580f1ab2f..df9efecae55a 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.h +++ b/drivers/gpu/drm/bridge/analogix/anx7625.h @@ -166,6 +166,10 @@ #define HORIZONTAL_BACK_PORCH_L 0x21 #define HORIZONTAL_BACK_PORCH_H 0x22 /* Bit[7:4] are reserved */ +#define DSC_COMPRESS_RATIO 3 +#define dsc_div(X) ((X) / DSC_COMPRESS_RATIO) +#define DSC_PIXEL_CLOCK 250000 + /******** END of I2C Address 0x72 *********/ /***************************************************************/ From patchwork Mon Apr 14 10:05:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xin Ji X-Patchwork-Id: 14050085 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 56990C369B9 for ; Mon, 14 Apr 2025 10:05:37 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 72A5910E552; Mon, 14 Apr 2025 10:05:36 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=analogixsemi.com header.i=@analogixsemi.com header.b="SL8B8mMW"; dkim-atps=neutral Received: from BN8PR05CU002.outbound.protection.outlook.com (mail-eastus2azon11021081.outbound.protection.outlook.com [52.101.57.81]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2C9DA10E54C for ; Mon, 14 Apr 2025 10:05:34 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Y7KaGmDu7o7QBx1/KBicDARw1GYQ2xBpSoxf/GFvnZalzZ1H6LmxWO637DytqNDG5TJPyu/YQ5Bbr/m0d0fUyPEzrQbZNfkxL5JfvTS2Oo9l/Lso8imZb0B4nU1t2bqeIVU9umaGjdEONsJcUZknwakQVIDeilvAHfZZCt/dX5tNskb+wxlwhXItD1gOITXWjt3fNv5kWT6Pc+DqAzfA5dUNpRl7aQVxPNXaGS+7PKRBHVfh+ORJp0h8ir55HKfMG/70kFV1F+Z+NZXhk9PjUDcdaOc2kgH3CD8m6xW4/2WEw3GcOFY5t4vkDT4e19XrIKWd5Byn0LrKO+g1e27ZDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aWW+4HS8Bq7ek68/sjeROQYphEHzc1tpFcMSoiNnFRU=; b=a72E0I1sAjjejBvHhfdrQEmv34kEKU7re3imj/vG/gLDTG5kemCZkj86I4gqidnXPkBG/jfy4zvylejAnxzEv8vRma2lBPBm5qvkMqmBwWfYIAmSbELVYOMScbICivdBQGZWFnhW+La3eEkpXVVI3/FtjkpnpixQsh8o2CStEwg8OIOaNSuOe6ALxfl5/lV4xUI5eNbMXYG+mqaUBWMlhNcmtRxNVmWmq1umQSbXsB8hcOlJ7pDtemviaG2HRrCIJ6+BtE0K3PfRIDF2MvYP800gVgvnZy+7MALsl5IYSfsXarKKz8Y5x/D2unSKv6OCbG0i4Jyig/TL8BBHXJ9YPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=analogixsemi.com; dmarc=pass action=none header.from=analogixsemi.com; dkim=pass header.d=analogixsemi.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analogixsemi.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aWW+4HS8Bq7ek68/sjeROQYphEHzc1tpFcMSoiNnFRU=; b=SL8B8mMWH5RO+1aC9EZyDKcAxHX6zFJe/+1vuyFyD9q5bLEUwIVEKaidw01+KMhQAQ0ZXyj6MlXVSsxbQJssWXiPjQecZdE/6ZBZf5MuFC1fZlXv22OxdQYKbN/qhz6KLx63W1Yybi0WP8OEWLJx2CJnGiZnwi6x8HelKL5jKT8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=analogixsemi.com; Received: from BY5PR04MB6739.namprd04.prod.outlook.com (2603:10b6:a03:229::8) by LV8PR04MB9268.namprd04.prod.outlook.com (2603:10b6:408:256::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.30; Mon, 14 Apr 2025 10:05:30 +0000 Received: from BY5PR04MB6739.namprd04.prod.outlook.com ([fe80::5a7e:9e8c:138f:1815]) by BY5PR04MB6739.namprd04.prod.outlook.com ([fe80::5a7e:9e8c:138f:1815%5]) with mapi id 15.20.8632.030; Mon, 14 Apr 2025 10:05:30 +0000 From: Xin Ji To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: bliang@analogixsemi.com, qwen@analogixsemi.com, treapking@chromium.org, Xin Ji , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 2/3] drm/mipi-dsi: Add compression supported flag in drm_mipi_dsi Date: Mon, 14 Apr 2025 18:05:01 +0800 Message-Id: <20250414100502.1604717-2-xji@analogixsemi.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250414100502.1604717-1-xji@analogixsemi.com> References: <20250414100502.1604717-1-xji@analogixsemi.com> X-ClientProxiedBy: TP0P295CA0013.TWNP295.PROD.OUTLOOK.COM (2603:1096:910:2::18) To BY5PR04MB6739.namprd04.prod.outlook.com (2603:10b6:a03:229::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR04MB6739:EE_|LV8PR04MB9268:EE_ X-MS-Office365-Filtering-Correlation-Id: 017066d9-3af4-4b04-16bd-08dd7b3be369 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|52116014|1800799024|366016|38350700014; X-Microsoft-Antispam-Message-Info: b3ir4Be0Oo1pdmikRjXPd66NerGc7065n3LDJhKVLbFXITuINbtd418GJyeQ8hQmQ+OqmYaOYd45DxURW4QtRtpg5DqLqFiIEifNTQYvigpZR/V/tX5kZ5LDZgJyVqJysuGTGOAil65gK7RPKt8jBfK1sD7Yv5YRMGEF+6Hnrj+DSvG6g7B+5DYLq8/JFs5QTnMccY/2xFhIeQ/QjyNlWv7JyYXhJvoq+MAUjHSsdNXNahA3X/Jv1HT0Ty2kTbOq3JZ3y87/6MDUhLHgXuYPeJd32Bw97fpxRKLGWT06z6RMgejVPpFi5gDc00lVfbB+RZCZ2XtzR4AUOIEXlA4PwkNT/BF6CVbNZ+/Im0O0/seepdZ8a4mjQ2fGhqVaXnKITjPNftc87e1RTx6dGjCz2nXbssc0K/U4s1dQT5dmnEXVZQNQNW5rT4AR7W23VWFzzXnDtjvk1RRIw0eJAl4x2lQHAqVRpLQh9t2VpSnkwiG4jdtLLZ/eQjArGM9ypKOeZBoPs4vfIQyc8HymTNgbF0qITrWb3N6L2DlbJosIbuusVRZx78LtEMc3al1TUf9rNZgwcxK27OZi3fOihNvI4T3VLunHwoT/4RAN3CyFRXlHGOCb/B2hWEhwUY9duERdwaA/hRtW4VUiwsyODcTFKEn/BYpdis4fftv7dvn9OzwLlzdQMvwADG20VYy8YOra71CLNn+c3n5DDOs6uukhsW/ufk6dmxYSbKb9IXCZhPS0bXWbAbyjtFAbT/zj+eLWzTolUguDCVrUT5slCOsGa+a8j+R6YCRYF3oGRJW9ilpdHEInkYoz0/3K93gmgHwaDQiVU0878IWXFtLHB636gl1fRfMqeyKu55Q2N3psvrr2395G/Zr4/LqUU03aDZ7yCgYnAUddvlFv5seTHZEZFvRx9tjq/3khpN6eLe0x6AStbizFPKVGM9+FCkIakmKUxwVV5lBCQ56yosn8cWvPZuSeoDUNfqqBWgksc+X6l1MPPSp6dL20dqkx917ZL0oXkFxxNyVUUk31bV2OKr1FdTm7+GZguYGNWUTqQSFLa4sZ2laCVJmaenm2/EzdE73oj56s+/scwGYkhbZN8xo6PYyXc6xdXYK3at8knmaaYE6tc2q3ijWTd5HXBkSDfqMZ4XJGzSTjG4qSlBFmFKLCAGpvxvX75mlwgjIb9AScPXR6wxITCMk93NgLZpuKR/iPP9l58h9ybRy8+aJB83BmOgejxfcsQ5nMKHGoPFqFlehGwrXNXgzCPguJrRHmesEHeLRKOOQzj+tAjQHA7M/0JevsqIxnpRBKCM2y7FfhIXrcK7Z1AmPfbjc1yRyXL/HQtWIZVbaknL4Ce6Zwh7dXiRmu1jzE0uaLbBOm5BYcWZw0NIPGYsYMvyAQ3xae3GfoZN6gDJtC3rTjHaDnNEKeYy7iCh75szK5O9YdalCuEHMVVz8Ik+EomGPYRAryqPIRvqppVk9pfZUIVSf/HoZT2w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR04MB6739.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(52116014)(1800799024)(366016)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: RN/Kn+dAtOn89TvUVHhK0tDxJM0YynWPdxlKCqotEyF5zwVR+5UshD4Bs3YA6zuQ301mwinZt9R0Z+KpYPepB3eKi1FUspLyw0tS92BD5R2tb3ExkdOl66MbBoLWZhcxV/ciErDRUwrc9UERIKn8xBbW9M9+4NI9HJ7BDg4pvRCZHfhc2kD8IOCn7RHblcYrSYG1UyK7yP9YYAZ75jCBkrM+g9xWCWct1OB30rOFznfhwphWHoEkVBoxXQKwhA29cgTszHVTHTPLt6OZIE8/Vd0cVxOLfqul85tw4BgRwT1Vbh5+BD5efN074xZOGXukczunyjq4LU+wbDpxujXm4CVTLs5tVbs8Dd1Vza9ZJZae0XXGMw9w2QiuciEGpH7sl3k3tM50ZRYaNExaInV/aSCwG4N3NAaInzSGLw0P6yvM+LN6ZSG5aumAJJJmlJRhRk5V9lwRc6hVi+gM1kjcAy+mQLRHWvnJeczP42qWjZca/Sj7SAbjVvPeQKyzq1a2gJOnSGVxpHlYs0ji2M53d3HC+Boux0gemxQitNIvtm0odIMhIPfS5pCYCfMgkEb0vjhkO+xYJ2rBGUfQ2kkwaxU4a20JNYYVvjUkdbV6j6lWzRnoQteu3hHBfGZrya0HGDAv1MxO2UX3vf33leJeDLBP2qN8nf+84xvKtwyuIw9YaqJ+DcgsY1nQaUtRv4GqhLzr3iHTR7dYm4A1SJf//2/ZJQ6QjiuZPAQNAjKdAEurJ/rkVzAASMOo0gye+SKxyJSdfXeUCyd8AZ7xelrY3rra3K+h95R8ODvHpEv6EtkQm4Vsn6vGAhwm8Uq4+v/e4+iGf31oPeJFMVaKajSc9HqeAooJM5GxTAWENNIo60/KKG6jBpDuj1BIsR03j2cJQOtmlT3gNlPGKELVUF4kUC4wteINOE58xEN7SlCDStbe7Chft75ff/sbrACLS+1dZtu55f0869EbraR4JSKTmefIdcFiDkvjjmAXASznn8Z6OlXGleUEvII2PuYqqtI+931Ajlq8eRBRBQXoCOgZCUDFpMQDD0JJPnljVv3Bz3s/WA1QGGz66/7epcd5otcptAyWW3gmlz29zAe2FnXwvbsaRMP17hSfgDFAdSSrUW7fjvxGohGfbMjKA6w7N9kPtjDGlAGMsu5IXdJshUOVl4oGObWkGZFhKJMkBzrYD+KayrSGpaUa/3oDbb3mWLWos4bQjFb62C00L5q90fCP1256ip74hiqzuDE0BEQ4g+bjaeIrDmbQYhOOxIbGK1IuTqYr9Q5S5Z1qhIqt9atGe2Om7OzqSXzCZV4adQyK01vNC4DXM9RnAQ01Oq8ISvENABl8sdQZPE2e6yRCWYghGATW86Jocjvl/8jx81bL5FEsPQkO+0GdqCh06ESauzTrYDoq72VB/UgIP3hVtmvrkElHXykofOLmcdz/HLXxwBv+2mXlI/UYXYLEmkuUhnAgbG5NaskzxKTfiyJlY/0GFpJ9randxTs9DQX/+kYf9UGKVqFmh2Qrx+BSFi1MKvyR8NGGodoSaObfP8isE5YdZZ1f9lXtwdrhogJ7kU2sBGdtg5u/hAM1psEAmles6dN4USb+FC5l+EVAtFF5ffx+4A== X-OriginatorOrg: analogixsemi.com X-MS-Exchange-CrossTenant-Network-Message-Id: 017066d9-3af4-4b04-16bd-08dd7b3be369 X-MS-Exchange-CrossTenant-AuthSource: BY5PR04MB6739.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2025 10:05:30.6212 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b099b0b4-f26c-4cf5-9a0f-d5be9acab205 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KruITWiQ3F6P3P0iEhqTv0FKrPRizIg+xj2zEeUAcnQ8pdkce5wSrDwA6Mea2abeZKePYhnw3nPNXiULZRvHMA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR04MB9268 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Add compression_supported flag in struct drm_mipi_dsi to indicate whether DSI host supported DSC compression feature. Signed-off-by: Xin Ji --- include/drm/drm_mipi_dsi.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h index bd40a443385c..c5ffb48182ef 100644 --- a/include/drm/drm_mipi_dsi.h +++ b/include/drm/drm_mipi_dsi.h @@ -99,11 +99,13 @@ struct mipi_dsi_host_ops { /** * struct mipi_dsi_host - DSI host device * @dev: driver model device node for this DSI host + * @compression_supported: DSI host support DSC feature * @ops: DSI host operations * @list: list management */ struct mipi_dsi_host { struct device *dev; + bool compression_supported; const struct mipi_dsi_host_ops *ops; struct list_head list; }; From patchwork Mon Apr 14 10:05:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xin Ji X-Patchwork-Id: 14050086 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 22405C369B9 for ; Mon, 14 Apr 2025 10:05:44 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5E93C10E55D; Mon, 14 Apr 2025 10:05:43 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=analogixsemi.com header.i=@analogixsemi.com header.b="oH7IirTp"; dkim-atps=neutral Received: from CH1PR05CU001.outbound.protection.outlook.com (mail-northcentralusazon11020117.outbound.protection.outlook.com [52.101.193.117]) by gabe.freedesktop.org (Postfix) with ESMTPS id 859EA10E557 for ; Mon, 14 Apr 2025 10:05:41 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vfo/xt3SgI3u7OixAhIu91eAk7Gqn4OhLg2odPBo1770BfIIxLdmWuKjf8G9XFpQhOnGqW6RmbprCdnRty/FD6mhGQY9sfDBksG4n5pXWmToUBi6hXLCmLSga0fCTdfHLi3BqY+us4IOqO/9fcWZxUvffLXFJopfTH0z6W1Prg5iOlPVgr/lNwFub9F/f59gjh2sj/Bn+wjvHyfBWrmLwsE4Av5FeNBtOCQUJVXlKBUMWqxnW2cLQJi3/ORjmRQw23kPFJ0OjgUAxPkRPxjElpQ+YKzjw5akWPsSnDUDF+DegbSJqPPlrkqxYhAUh28hP4nzbSbbHVImwS664a4HZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nR2CrNP6BUcwt+XXMM1UChhg4BAQx9HjrhkmBCJMwlo=; b=Q+FksoyWcbxqgwtf1JvZvNnJaX8eyi/XntiH1+TECW0BVZBxzlRyKVT9IRHNbIhQoZE95tFHyFz2CDN4y6AODcB5wpSMA40Jt+Q9j9JBvGn/uZsqGXHWJG18a1lXadsLhYp0hwh6COba4ucZIIYdIOMPQknLgaEJy8BFmbdoE1snrcfwdhb6uxlK+a4uUFk136IplQ8CIbYrn0ERRQs2u7gTJCGmgjeYN3AjVFqk4yf+Runy00nLPRcjYMLkmGXpBN8OzpU24vgZzvvZl53n/8x7qGijr4Jsa0s89VnDadU87z0N+4WeXrTYlbmr8IN3XcDmGJ0VYxFH9zphHTd2/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=analogixsemi.com; dmarc=pass action=none header.from=analogixsemi.com; dkim=pass header.d=analogixsemi.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analogixsemi.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nR2CrNP6BUcwt+XXMM1UChhg4BAQx9HjrhkmBCJMwlo=; b=oH7IirTpDB971ZHwMZJATujWJp6w/IQk0dTf82n6OvdxIz4Wy1HjnXbD3bg5rMGKK7IlRDehgzoJ5itTPo5x/M6OuxFfq+sNJ6YoYi+IOQnrjtMmux591GEAGabqA7P2NzYVeYAkY0LSGBFD3THchfLjf5M0UzgFGInlr/HGq3c= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=analogixsemi.com; Received: from BY5PR04MB6739.namprd04.prod.outlook.com (2603:10b6:a03:229::8) by LV8PR04MB9268.namprd04.prod.outlook.com (2603:10b6:408:256::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.30; Mon, 14 Apr 2025 10:05:39 +0000 Received: from BY5PR04MB6739.namprd04.prod.outlook.com ([fe80::5a7e:9e8c:138f:1815]) by BY5PR04MB6739.namprd04.prod.outlook.com ([fe80::5a7e:9e8c:138f:1815%5]) with mapi id 15.20.8632.030; Mon, 14 Apr 2025 10:05:39 +0000 From: Xin Ji To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: bliang@analogixsemi.com, qwen@analogixsemi.com, treapking@chromium.org, Xin Ji , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 3/3] drm/bridge:anx7625: Enable DSC feature Date: Mon, 14 Apr 2025 18:05:02 +0800 Message-Id: <20250414100502.1604717-3-xji@analogixsemi.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250414100502.1604717-1-xji@analogixsemi.com> References: <20250414100502.1604717-1-xji@analogixsemi.com> X-ClientProxiedBy: PS2PR02CA0056.apcprd02.prod.outlook.com (2603:1096:300:5a::20) To BY5PR04MB6739.namprd04.prod.outlook.com (2603:10b6:a03:229::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR04MB6739:EE_|LV8PR04MB9268:EE_ X-MS-Office365-Filtering-Correlation-Id: fce591c9-647c-40d3-265b-08dd7b3be8ba X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|52116014|1800799024|7416014|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: S4oWqSkAAwQQ4V8mEsgoViUR9N5se04xwKNqNazJLPGcrBU8r3TVNZ8sKlzi4tqY4wmIqjiwusVBUijeqPEJGNRYMp3IRZvw9asTIqL0jttTl47UdlX4ScGCuOb0qSt0qbCCFRZ5S+MXpdPGgkEYcUzxHkPlHRKKqYfFPg4OcU5ynFOKjHp+Qzh3KTx1/1a5uSJ6wLQUQhyiJT5wcVMotoc9JSJ4kt3Euas9dr/IU4sC/Mh2PW7dQE4YLb83M4ORB623+ffnunkSrWIhb1wJ1GVPHDFzPMgxMDwf4gxUSRJfmQ5W4idz6TCcV7VgRyNaKffiEY3v4uMFgD3BNrrPUQLEFU/qMo/G6W3iZLyGvuXA1FE+PyvKnOwZv0sjg78FI44bbFyFwI18wlHS9pnpYFJk9fyLMSZVNXN74Ytww/N/RxRzeFS1G8oXgizHrI+wufBycm94OfJx7qiblK1ZhCmn3y6R6w9ug0Ep7W6nMnskrMKvpmPVhs+54H/EBFP/jutByx/+Qf/n2uP4ZmC0a2kfaLbErIvJGdrhF9hFw+ssAJI2ipdq6OXnaB8w2OvpblhJfqGjefGcz2c1JPsdGPV0A1HYQgaQd44Sfsy9RZBUeD8y/xQ1rNziUb9de0h+LNz60+T0X/HPTBOBF4Wky2KSaDxwkE8LxN/TmfFysHfzMzkGbJ3pnf9mcIVa7iNP/DjYHblp14jGp0/wx/WacApGyEkuF05/F6KN11J5V6Llbphs/X5b/feWWQT4tq/bG1etNSM2Z2qX7MJxY91mS3oBmUVlHMke6ij+7W+8VYrsedgP43VYrwRP/upsN67rNS9h+Hi4YNhOv7uV6xtqluSWLzePKywGN2EzMMsfB3ad8Xprd12scy9SVQP7Tn2zz4RO74SD0XdcvEiHKAeuZQ9MBSnTpjOr0Kbdedz+2fdyiiYskbnGNOk3BS5ixLkwqZewVroLXptTCTaowabm7e4Hd4NHOhsfOBUmnJAesy6pf4MQVxJJES7Eybzp7XkbnHzTBU4bJwiPLKFzsIdJzfo0/XIiJ0PBJDItg7weKG8JVLXaxcTJvuOcc//P6dGZQDhrWqi1uFGcw1N2jIq6LdM0IPVYR/baIpw5+5v+idkE62AJHIsLy7bVYB8DTMuaaF/hAj0FqJdMlxlq3J1nV9WXTrhPIQByYuYBiSz1/48elv+Ezs7DPU2mg0TPB5sHbrNJExE1o1ja/BgKAuirYi75spyCDvgraeZuaiD+Ag2qJW1lkzMpNBh1F4bEqBV4OdbbRoxvqxGIMVyrdemQiQtl+u2eJkq2FkfCJvBQbga9hcdQ0xYEE1+GzkVBeWN8wnMfo6FAiRZgmEMYlPbDNK8WBmnXv4+uMOa4VNgWoNeIu1xPWv1QMC9lM5LmQqiuEW+seHgO1nMDnEZimXJJlYnpxRJiNKLwUkvhkYTvVNhwMjFwVILdgsX4YK5h1frqPlxtDlTVN8SRpJgvifN9lo34wzQ6OZAEz7/AFGtXrbU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR04MB6739.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(52116014)(1800799024)(7416014)(366016)(38350700014)(921020); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1r6aTsZuYEttqplQmDPHNfk6vNPwC3WlYQcdA/WxmRRjbrZWi7hBpJGwxP0ZIGFC22bCqmRueCrJ/vJ7SvtPXLLVbz/cxc7icnvajGqx2HKYSm56UhdKscUHIMIpCYC4Jiny/Ln9gODYQ0Y2hm2IDjcZJWuZU/j7r2SrQ9LR8ulpTSvRkGq55wUutlIRrbzmyqsV9mVGaH3QfwjtM/7cUXQK/ysj3cAByZ2RYJs92hVAVxShbBamy94dyD/UuoB2wwU+OifFvkSxo3tjJ4504aU847XuCu7GBd1kXbXu6DvqVnNASmCOsiEstpVqTPcMi0EpKtvgRuGR9gP+Onx73bLA56h1FGvHgJ8W6s/u2fv7PYOGWuUBk380b0dQLNvGbIlJa5yWs/9V/7oKa1aBMon2jVRlSUnfXyPD3xMtt9FpvX6ntNCezMaN2hV9C0ORu6isw1PcvE20k8VxmVsqcvjhCcsRW0XLIJUNDy21VlN0UTFGhfpshxvAg71s7iPfgg1/3T0Y3xFsRN05BcdqllAZY5wi858FKrbsP6XC7822AwSuVvPS9YQeJdvLJCeNqzL6csROKe2zmZpHRl7T8epBMlwSw6zLrr93cbYA558PoJFNAZvWjelIfLn/K/sJryh4fbfrU3SB/qnxySIqWYlNlHV6cWBe2cueeGfVNjXoEIq1+rPQr3gpgaI24DfOCgLS9ZeUjJ2d/TAv5EONKAAc1VWEG3sXYOhdXdiA5pRKHltaWgUYL6Gr2NNHJerTn5DXvGbVeJVvTFP21kIizm4Fi+bUEx56hB4nJBwU0yWTUebFmDaFySwyutU9Oiqh8uapDPn2OByWhmwY1fO5XHs9CeJgyWp7fdrM3ocLxD4+gcF6+/us4evQta2JdI4TuM5m2F3DZ15bGqsbtgH3MoXX9Bln2c9eLnEHwZdceUFpUPshBQ1tkzUH+cz5dqNPdYi8dL7yczmgw5461pXSAjPWimQ5QMxlFonFdz8kGD5hR86DORMNxKSab1J1D/CtiP1Gu7vKhZHwqAkVaXFORPSashl1Uh9NmAYuzpqhL7gBFvNZh1elVC82G8xtEghaGsDyHLegW7t+I7f/Z63X9bZtlk48w4c8f1u7qrh2W7aYDxZmVr9SvcJr998ys7USKO8WrDxAT836Sykoh7R1c8wmVQ1gcIY0hYMYw79wXAyiDYUVgOHf1gGKZQqkzzo6XEYYWunO8AeuONyisC0qbKJEhDNX3nTaYTbasQd/tog2JwhRBFflFbR1qAsUP+OdGfmJkEg2uLzz8lfth1wZibLcqYZEqad4eI0ZWV6LCpE4J+N3Aop/m6c7CJZ2blx1QFZaKeYxoUDRavTSk3g8WPKtaPeYXEIz7A0XlKLVcTo61csMsI5bsBkOXWUMWuANg7O0D+frgT3GrZvt1twtaX7V61MUUx4gIpRuqCSFian9E9hWieX2dJKUmkQDbiQg2eoMGCiBXa0sX2dVSPhWwK0jRYY56pPblRKaZxxpUlfR/fuw9fOQZH/Qcc9S6muHTb0zWgR5ORJpVIM7TfMJRJuiu8E5v6OSmW8bJF6+k/1k3uWyDqHm+YbgYjzOTyCTFSVBvYwNfYPTgROkewXT6Q== X-OriginatorOrg: analogixsemi.com X-MS-Exchange-CrossTenant-Network-Message-Id: fce591c9-647c-40d3-265b-08dd7b3be8ba X-MS-Exchange-CrossTenant-AuthSource: BY5PR04MB6739.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2025 10:05:39.5962 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b099b0b4-f26c-4cf5-9a0f-d5be9acab205 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: q2CngNZ9BOjAROe20EMFkGzgtlk9zGN50/KYncLaOHausC6p5y4j1VrZCkNxNvVNaeGHxs/dX9i73O1Gj7OMZQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR04MB9268 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 4K30(3840x2160 30Hz) timing pixel clock around 297M, for 24bits RGB pixel data format, total transport bandwidth need 297M*24(at least 7.2Gbps) more than anx7625 mipi rx lane bandwidth(maximum 6Gbps, 4lanes, each lane 1.5Gbps). Without DSC function, anx7625 cannot receive 4K30 video timing. When display pixel clock exceed 250M, driver will enable DSC feature, and the compression ratio is 3:1, eg: 4K30's pixel clock around 297M, bandwidth 7.2G will be compressed to 7.2G/3 = 2.4G. Then anx7625 can receive 4K30 video timing and do decompress, then package video data and send to sink device through DP link. Anx7625 will check DSI host capability to make sure whether it support compression feature, if not, anx7625 driver will limit maximum pixel clock to 250M. Note: Anx7625 is bridge IC, sink monitor only receive normal DP signal from anx7625, sink device didn't know DSC information between SOC and anx7625 v2: 1. Remove dsc_en flag v3: 1. Split timing refactoring code to a individual patch. 2. Add drm_dsi_host compression_supported flag check. If DSI host not supported compression, anx7625 bridge driver will limit maximum pixel clock to 250M. Signed-off-by: Xin Ji --- drivers/gpu/drm/bridge/analogix/anx7625.c | 191 ++++++++++++++++++++-- drivers/gpu/drm/bridge/analogix/anx7625.h | 26 +++ 2 files changed, 203 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c index 8928971558d2..fe8ccd6bad96 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.c +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -22,6 +23,7 @@ #include #include +#include #include #include #include @@ -476,9 +478,14 @@ static int anx7625_set_k_value(struct anx7625_data *ctx) MIPI_DIGITAL_ADJ_1, 0x3D); } -static bool anx7625_dsc_check(struct anx7625_data *ctx) +static bool anx7625_dsc_check(struct anx7625_data *ctx, int pixelclock) { - if (ctx->dt.pixelclock.min > DSC_PIXEL_CLOCK) + struct mipi_dsi_host *host = ctx->host; + + if (!host) + return false; + + if (host->compression_supported && pixelclock > DSC_PIXEL_CLOCK) return true; return false; @@ -491,7 +498,7 @@ static inline int anx7625_h_timing_reg_write(struct anx7625_data *ctx, { int ret; - if (dsc_check && anx7625_dsc_check(ctx)) + if (dsc_check && anx7625_dsc_check(ctx, ctx->dt.pixelclock.min)) val = dsc_div(val); ret = anx7625_reg_write(ctx, client, reg_addr, val); @@ -551,6 +558,79 @@ static int anx7625_v_timing_write(struct anx7625_data *ctx, return ret; } +static int anx7625_set_dsc_params(struct anx7625_data *ctx) +{ + int ret, i; + u16 htotal, vtotal; + + /* Video Horizontal timing */ + ret = anx7625_h_timing_write(ctx, ctx->i2c.tx_p2_client, false); + + /* Video Vertical timing */ + ret |= anx7625_v_timing_write(ctx, ctx->i2c.tx_p2_client); + + /* Vtotal */ + vtotal = ctx->dt.vactive.min + ctx->dt.vfront_porch.min + + ctx->dt.vback_porch.min + ctx->dt.vsync_len.min; + ret |= anx7625_reg_write(ctx, ctx->i2c.tx_p2_client, TOTAL_LINES_L, + vtotal); + ret |= anx7625_reg_write(ctx, ctx->i2c.tx_p2_client, TOTAL_LINES_H, + vtotal >> 8); + /* Htotal */ + htotal = ctx->dt.hactive.min + ctx->dt.hfront_porch.min + + ctx->dt.hback_porch.min + ctx->dt.hsync_len.min; + ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p0_client, TOTAL_PIXEL_L_7E, + htotal); + ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p0_client, TOTAL_PIXEL_H_7E, + htotal >> 8); + /* Hactive */ + ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p0_client, + ACTIVE_PIXEL_L_7E, ctx->dt.hactive.min); + ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p0_client, + ACTIVE_PIXEL_H_7E, ctx->dt.hactive.min >> 8); + /* HFP */ + ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p0_client, + HORIZON_FRONT_PORCH_L_7E, + ctx->dt.hfront_porch.min); + ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p0_client, + HORIZON_FRONT_PORCH_H_7E, + ctx->dt.hfront_porch.min >> 8); + /* HWS */ + ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p0_client, + HORIZON_SYNC_WIDTH_L_7E, + ctx->dt.hsync_len.min); + ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p0_client, + HORIZON_SYNC_WIDTH_H_7E, + ctx->dt.hsync_len.min >> 8); + /* HBP */ + ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p0_client, + HORIZON_BACK_PORCH_L_7E, + ctx->dt.hback_porch.min); + ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p0_client, + HORIZON_BACK_PORCH_H_7E, + ctx->dt.hback_porch.min >> 8); + + /* Config DSC decoder internal blank timing for decoder to start */ + ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client, + H_BLANK_L, + dsc_div(htotal - ctx->dt.hactive.min)); + ret |= anx7625_reg_write(ctx, ctx->i2c.rx_p1_client, + H_BLANK_H, + dsc_div(htotal - ctx->dt.hactive.min) >> 8); + + /* Compress ratio RATIO bit[7:6] */ + ret |= anx7625_write_and(ctx, ctx->i2c.rx_p0_client, R_I2C_1, 0x3F); + ret |= anx7625_write_or(ctx, ctx->i2c.rx_p0_client, R_I2C_1, + (5 - DSC_COMPRESS_RATIO) << 6); + /*PPS table*/ + for (i = 0; i < PPS_SIZE; i += PPS_BLOCK_SIZE) + ret |= anx7625_reg_block_write(ctx, ctx->i2c.rx_p2_client, + R_PPS_REG_0 + i, PPS_BLOCK_SIZE, + &ctx->pps_table[i]); + + return ret; +} + static int anx7625_dsi_video_timing_config(struct anx7625_data *ctx) { struct device *dev = ctx->dev; @@ -697,13 +777,20 @@ static int anx7625_api_dsi_config(struct anx7625_data *ctx) static int anx7625_dsi_config(struct anx7625_data *ctx) { struct device *dev = ctx->dev; - int ret; + int ret = 0; DRM_DEV_DEBUG_DRIVER(dev, "config dsi.\n"); - /* DSC disable */ - ret = anx7625_write_and(ctx, ctx->i2c.rx_p0_client, - R_DSC_CTRL_0, ~DSC_EN); + if (anx7625_dsc_check(ctx, ctx->dt.pixelclock.min)) { + ret = anx7625_set_dsc_params(ctx); + /* DSC enable */ + ret |= anx7625_write_or(ctx, ctx->i2c.rx_p0_client, + R_DSC_CTRL_0, DSC_EN); + } else { + /* DSC disable */ + ret = anx7625_write_and(ctx, ctx->i2c.rx_p0_client, + R_DSC_CTRL_0, ~DSC_EN); + } ret |= anx7625_api_dsi_config(ctx); @@ -2121,6 +2208,8 @@ static int anx7625_setup_dsi_device(struct anx7625_data *ctx) MIPI_DSI_MODE_VIDEO_HSE | MIPI_DSI_HS_PKT_END_ALIGNED; + dsi->host = host; + dsi->dsc = &ctx->dsc; ctx->dsi = dsi; return 0; @@ -2224,21 +2313,79 @@ anx7625_bridge_mode_valid(struct drm_bridge *bridge, { struct anx7625_data *ctx = bridge_to_anx7625(bridge); struct device *dev = ctx->dev; + int maximum_pixelclock = SUPPORT_PIXEL_CLOCK; DRM_DEV_DEBUG_DRIVER(dev, "drm mode checking\n"); + if (!ctx->host->compression_supported) { + DRM_DEV_DEBUG_DRIVER(dev, "host not support DSC"); + maximum_pixelclock = DSC_PIXEL_CLOCK; + } - /* Max 1200p at 5.4 Ghz, one lane, pixel clock 300M */ - if (mode->clock > SUPPORT_PIXEL_CLOCK) { + if (mode->clock > maximum_pixelclock) { DRM_DEV_DEBUG_DRIVER(dev, "drm mode invalid, pixelclock too high.\n"); return MODE_CLOCK_HIGH; } + if (mode->clock < SUPPORT_MIN_PIXEL_CLOCK) + return MODE_CLOCK_LOW; + + /* + * If hdisplay cannot be divided by DSC compress ratio, then display + * will have overlap/shift issue + */ + if (mode->clock > DSC_PIXEL_CLOCK && + (mode->hdisplay % DSC_COMPRESS_RATIO != 0)) + return MODE_CLOCK_HIGH; + DRM_DEV_DEBUG_DRIVER(dev, "drm mode valid.\n"); return MODE_OK; } +static void anx7625_dsc_enable(struct anx7625_data *ctx, bool en) +{ + int ret; + struct device *dev = ctx->dev; + + if (en) { + ctx->dsc.dsc_version_major = 1; + ctx->dsc.dsc_version_minor = 1; + ctx->dsc.slice_height = 8; + ctx->dsc.slice_width = ctx->dt.hactive.min / DSC_SLICE_NUM; + ctx->dsc.slice_count = DSC_SLICE_NUM; + ctx->dsc.bits_per_component = 8; + ctx->dsc.bits_per_pixel = 8 << 4; /* 4 fractional bits */ + ctx->dsc.block_pred_enable = true; + ctx->dsc.native_420 = false; + ctx->dsc.native_422 = false; + ctx->dsc.simple_422 = false; + ctx->dsc.vbr_enable = false; + ctx->dsc.convert_rgb = 1; + + drm_dsc_set_rc_buf_thresh(&ctx->dsc); + drm_dsc_set_const_params(&ctx->dsc); + + ctx->dsc.initial_scale_value = drm_dsc_initial_scale_value(&ctx->dsc); + ctx->dsc.line_buf_depth = ctx->dsc.bits_per_component + 1; + ret = drm_dsc_setup_rc_params(&ctx->dsc, DRM_DSC_1_2_444); + if (ret < 0) + dev_warn(dev, "drm_dsc_setup_rc_params ret %d\n", ret); + + ret = drm_dsc_compute_rc_parameters(&ctx->dsc); + if (ret) + dev_warn(dev, "drm dsc compute rc parameters failed ret %d\n", ret); + + drm_dsc_pps_payload_pack((struct drm_dsc_picture_parameter_set *)&ctx->pps_table, + &ctx->dsc); + dev_dbg(dev, "anx7625 enable dsc\n"); + } else { + ctx->dsc.dsc_version_major = 0; + ctx->dsc.dsc_version_minor = 0; + dev_dbg(dev, "anx7625 disable dsc\n"); + } +} + static void anx7625_bridge_mode_set(struct drm_bridge *bridge, const struct drm_display_mode *old_mode, const struct drm_display_mode *mode) @@ -2283,6 +2430,8 @@ static void anx7625_bridge_mode_set(struct drm_bridge *bridge, DRM_DEV_DEBUG_DRIVER(dev, "vsync_end(%d),vtotal(%d).\n", mode->vsync_end, mode->vtotal); + + anx7625_dsc_enable(ctx, anx7625_dsc_check(ctx, ctx->dt.pixelclock.min)); } static bool anx7625_bridge_mode_fixup(struct drm_bridge *bridge, @@ -2297,10 +2446,6 @@ static bool anx7625_bridge_mode_fixup(struct drm_bridge *bridge, DRM_DEV_DEBUG_DRIVER(dev, "drm mode fixup set\n"); - /* No need fixup for external monitor */ - if (!ctx->pdata.panel_bridge) - return true; - hsync = mode->hsync_end - mode->hsync_start; hfp = mode->hsync_start - mode->hdisplay; hbp = mode->htotal - mode->hsync_end; @@ -2311,12 +2456,24 @@ static bool anx7625_bridge_mode_fixup(struct drm_bridge *bridge, hsync, hfp, hbp, adj->clock); DRM_DEV_DEBUG_DRIVER(dev, "hsync_start(%d), hsync_end(%d), htot(%d)\n", adj->hsync_start, adj->hsync_end, adj->htotal); - adj_hfp = hfp; adj_hsync = hsync; adj_hbp = hbp; adj_hblanking = hblanking; + if (anx7625_dsc_check(ctx, mode->clock)) { + adj_hsync = DSC_HSYNC_LEN; + adj_hfp = DSC_HFP_LEN; + adj_hbp = DSC_HBP_LEN; + vref = (u32)div_u64((u64)adj->clock * 1000 * 1000, + adj->htotal * adj->vtotal); + goto calculate_timing; + } + + /* No need fixup for external monitor */ + if (!ctx->pdata.panel_bridge) + return true; + /* HFP needs to be even */ if (hfp & 0x1) { adj_hfp += 1; @@ -2388,6 +2545,8 @@ static bool anx7625_bridge_mode_fixup(struct drm_bridge *bridge, adj_hfp -= delta_adj; } +calculate_timing: + DRM_DEV_DEBUG_DRIVER(dev, "after mode fixup\n"); DRM_DEV_DEBUG_DRIVER(dev, "hsync(%d), hfp(%d), hbp(%d), clock(%d)\n", adj_hsync, adj_hfp, adj_hbp, adj->clock); @@ -2396,6 +2555,10 @@ static bool anx7625_bridge_mode_fixup(struct drm_bridge *bridge, adj->hsync_start = adj->hdisplay + adj_hfp; adj->hsync_end = adj->hsync_start + adj_hsync; adj->htotal = adj->hsync_end + adj_hbp; + if (anx7625_dsc_check(ctx, mode->clock)) + adj->clock = (u32)div_u64((u64)vref * adj->htotal * adj->vtotal, + 1000 * 1000); + DRM_DEV_DEBUG_DRIVER(dev, "hsync_start(%d), hsync_end(%d), htot(%d)\n", adj->hsync_start, adj->hsync_end, adj->htotal); diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h index df9efecae55a..e0953864062a 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.h +++ b/drivers/gpu/drm/bridge/analogix/anx7625.h @@ -149,6 +149,8 @@ #define HFP_HBP_DEF ((HBLANKING_MIN - SYNC_LEN_DEF) / 2) #define VIDEO_CONTROL_0 0x08 +#define TOTAL_LINES_L 0x12 +#define TOTAL_LINES_H 0x13 #define ACTIVE_LINES_L 0x14 #define ACTIVE_LINES_H 0x15 /* Bit[7:6] are reserved */ #define VERTICAL_FRONT_PORCH 0x16 @@ -168,7 +170,27 @@ #define DSC_COMPRESS_RATIO 3 #define dsc_div(X) ((X) / DSC_COMPRESS_RATIO) +#define DSC_SLICE_NUM 2 #define DSC_PIXEL_CLOCK 250000 +#define DSC_HSYNC_LEN 90 +#define DSC_HFP_LEN 177 +#define DSC_HBP_LEN 297 + +#define TOTAL_PIXEL_L_7E 0x50 +#define TOTAL_PIXEL_H_7E 0x51 /* bit[7:6] are reserved */ +#define ACTIVE_PIXEL_L_7E 0x52 +#define ACTIVE_PIXEL_H_7E 0x53 /* bit[7:6] are reserved */ +#define HORIZON_FRONT_PORCH_L_7E 0x54 +#define HORIZON_FRONT_PORCH_H_7E 0x55 +#define HORIZON_SYNC_WIDTH_L_7E 0x56 +#define HORIZON_SYNC_WIDTH_H_7E 0x57 +#define HORIZON_BACK_PORCH_L_7E 0x58 +#define HORIZON_BACK_PORCH_H_7E 0x59 + +#define PPS_SIZE 128 +#define PPS_BLOCK_SIZE 32 +#define R_PPS_REG_0 0x80 +#define R_I2C_1 0x81 /******** END of I2C Address 0x72 *********/ @@ -419,6 +441,7 @@ enum audio_wd_len { #define MAX_EDID_BLOCK 3 #define EDID_TRY_CNT 3 #define SUPPORT_PIXEL_CLOCK 300000 +#define SUPPORT_MIN_PIXEL_CLOCK 38000 /***************** Display End *****************/ @@ -482,7 +505,10 @@ struct anx7625_data { u8 bridge_attached; struct drm_connector *connector; struct mipi_dsi_device *dsi; + struct mipi_dsi_host *host; struct drm_dp_aux aux; + struct drm_dsc_config dsc; + char pps_table[PPS_SIZE]; }; #endif /* __ANX7625_H__ */