From nobody Fri Dec 26 05:27:35 2025 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2048.outbound.protection.partner.outlook.cn [139.219.17.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F04449455; Tue, 9 Jan 2024 07:40:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QmqOsLopXDhHml/katI6kHEtsB01GPi66IRM81JnTNuqfRJi7FR+Aos/BEWH9BK0wzAJgup3rQSMOSDMnziNywv4irGctsNMlCW4o8ArGVyozaOrmM7L1fTu/V9kCVNGFbNbfsuCF88scphiycWbUrLQG6vzw/1hrP5tfXWZR+tr0Z+KMrj1t0wvAyVbNIXW7QnmbTpZdNHnPvjNr1xU8BMX4+/HEXQl3q7ealuMLabjilr1QCN1QdCypvLi0ZdlNYWPN0fDwudjKpyQv0SO5bqYbs6lj+F6NAvCgSeEpiUjVTKjkNcsjbxYZ4UGjt/uP4kfk5opxiDscIio7n0Lrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=3kqumkryVSdpbCjG5y2mqCPrbAy3Pxz8ya7rERp6Oxk=; b=V2SsxW0ey8JBlfkv+GGzcP9ZqZBwkPSC9YzaRsTqeAVFtBcHu8Mt3gt8EPHoZkqB73sywy9Z+2cYmip8isqZ31FxX2SVNeona78TDKlBAEiz8K5+DQEYiGaEFHKY4I5ZWY4++EhwNCLUqmBHJX/w36K1Ye55wVprsjAg5tr2kWmx4ya9QdmBF33GTc1RQOgx4CBPTgUoAXIXQdg4kxR4keJVbHYzpSNi6SpDu8Jfe7thSLkXqFiREOzunug8dHQPsLPCROKqdMMxRgquf/jzOpKv27b8I1lQ2xuN/YAwhIQwq79MtB3YdUQB7b+5kdAkg/sh7w9N007qClJiO7RRJA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from NT0PR01MB1070.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:3::6) by NT0PR01MB1231.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.32; Tue, 9 Jan 2024 07:25:25 +0000 Received: from NT0PR01MB1070.CHNPR01.prod.partner.outlook.cn ([fe80::85fc:7fb9:8b00:dd88]) by NT0PR01MB1070.CHNPR01.prod.partner.outlook.cn ([fe80::85fc:7fb9:8b00:dd88%3]) with mapi id 15.20.7135.019; Tue, 9 Jan 2024 07:25:25 +0000 From: Shengyang Chen To: devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, p.zabel@pengutronix.de, tomi.valkeinen@ideasonboard.com, r-ravikumar@ti.com, aford173@gmail.com, rdunlap@infradead.org, u.kleine-koenig@pengutronix.de, bbrezillon@kernel.org, changhuang.liang@starfivetech.com, keith.zhao@starfivetech.com, shengyang.chen@starfivetech.com, jack.zhu@starfivetech.com, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/2] dt-bindings: display: bridge: cdns: Add properties to support StarFive JH7110 SoC Date: Tue, 9 Jan 2024 15:25:15 +0800 Message-Id: <20240109072516.24328-2-shengyang.chen@starfivetech.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240109072516.24328-1-shengyang.chen@starfivetech.com> References: <20240109072516.24328-1-shengyang.chen@starfivetech.com> X-ClientProxiedBy: NT0PR01CA0008.CHNPR01.prod.partner.outlook.cn (2406:e500:c510::13) To NT0PR01MB1070.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:3::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: NT0PR01MB1070:EE_|NT0PR01MB1231:EE_ X-MS-Office365-Filtering-Correlation-Id: 789af601-4a03-44f1-e12b-08dc10e42607 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +lbkfvI1/eraylV/9bDmX9pXTaYVJbKwldc22CQ5yniXYV1xgM0Z52uuP0hKNpddrZ+3vKTE3fn+U2pbp/W5pLJqGWaXoEiuc/UHBsyUeUCDZkTiEEsOaf7r4MeTo6+uRR4mb2UAxTLRoPZAPZXe89zdpw/mHLwh6IkMWSpDe1PhJje9AgDtnlIWA08DcHcZrF8Ukks4Q3U+f23e+Nn6Z7n3CDnu1q+4+sNaLfAox2c+8DVvYb91/wdcO+2ZfRosuzHj78UQ8rrKy3NqipFI9RETN1yVs5E3BcFSP4vy52vb0UxzH+kmyU4cSEK+OM1GhdXW/2e7SqCf651ob7/RGd15Wz+sQ2YhdmdwRCTNTV0vhASQxXndYr1auMpSA9dONsnGjk4z1qq7KCjydbUULSzJmBeE/t1uCukBVeRinzW5brAej0q+ERxt7ZfKwVsMOjEILpIIsfJWLV83lNAH0uQzP0JnOYwxgWmrrn5ZaTVaLeQ7Q/mA0e4Gd1wQCQzqv459zIZCNaXUUSnAvwBl4aCftAqg+XcHLnXYbzpKO/byIpM81rv6UcFbnAI/tFe5 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:NT0PR01MB1070.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(396003)(136003)(366004)(39830400003)(346002)(230922051799003)(186009)(451199024)(1800799012)(64100799003)(86362001)(66946007)(40160700002)(36756003)(40180700001)(38100700002)(83380400001)(1076003)(38350700005)(508600001)(52116002)(6666004)(7416002)(8676002)(8936002)(2906002)(66556008)(4326008)(44832011)(5660300002)(66476007)(26005)(41300700001)(2616005)(41320700001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?sxXojW9gpMPwVen4lpTUSyyZmtQXcislezjqx2ws0JA21CeFWKnWNRztGpRL?= =?us-ascii?Q?EK9Pjgk3vv5kd0nZ12z9nFFV4kGnraRrxiVn1GzM0Rik2myIinjSUpORXcyu?= =?us-ascii?Q?WIy7+j+PyOlksV2lsNj6dvrX4nkR0e2DSSltqRoQYQEnnr2dQYBxYAi9VT9N?= =?us-ascii?Q?Scj7w51ZatPx7clACD5bvDVpgbuFy9Flm1uNmqpIifChNV9AlYFF3W325it9?= =?us-ascii?Q?fVkejgA+csRKApUWIDMbF//7sbTl00ETUeYefjeffTUJXTKs3VOAzECWZEQg?= =?us-ascii?Q?x/419IhP97x5d7bsYNJLCxjs7tEdmhGBn33uREdbvgcQncis1kzjn0BHG1M/?= =?us-ascii?Q?HsqiyC5ZonTDBLTNxaDwiUdmb5pU49QbJX7kPQFAoXBLnhdyt5g5vPyXRaZa?= =?us-ascii?Q?09Ahc9RRVKi9fPpHXpYNGbzIGpBNjm9nPch/r7uR3NChVCCvxVWQWQflnVFJ?= =?us-ascii?Q?W4AvbHKmSun6+N8PfeXIoIiomM4Ma14GWPdD3sHH9r0oCr1ej45sS/xxfy0g?= =?us-ascii?Q?ZjF8+UfwgO7H6nGf+9/+4mHJhgHBX3UyaNLT2d8FK2QkC+kj28q9hFy/6IS7?= =?us-ascii?Q?/qU1a/UCCcMI489yRb8YMqpJkallDY4IGdnwU27phneE4ZmnrGnsxhh04xUq?= =?us-ascii?Q?wDkuJOLa7fXLwMM0EfW5hOhkgcgRrdvv9NmGju0z+c8mdR/mBSDNZQ6E9s2D?= =?us-ascii?Q?tkUveR7+MVXPqMnbAfF1/lM9Xfi2SGwugaHgdDedG4obL1mis7OwKwyM7CEt?= =?us-ascii?Q?DajVkvRgT2YxauU/Gzb65P/AUnGbY5FKPm6WLctJJRQkzCNQQaaBX6BoRoCu?= =?us-ascii?Q?GuKAgJqPbWSXB/DKHVPpOG86Np35F7t8YjyHzwSS2JXNa8NMrqKxvyg0f0N6?= =?us-ascii?Q?qhuyEUmLa6kCsW9OgF8k9rwOMAWnvqi0X3O8PfqoOqExjshiwYUXfseQfiUe?= =?us-ascii?Q?zGu0fKzLHveclv6WiuuernOQrFR+QQTd/BFWKA9bw5PtxCzaZFSx1azcwJ/x?= =?us-ascii?Q?/W1rl/7iI84aIfVHVTE/iE3vDvFvFqbZNBRtsORJRygM8voveDzqpYz87lPC?= =?us-ascii?Q?sEDX5BF0K2T+3G4f63zPoXmISC7DoO53eYEVQVR/7dmRfWuAe5PncrYEUlhv?= =?us-ascii?Q?DJbQYj+Szi4waEKH6GpDYe2sOOOBdB5WZ7/Xt+IiZwt2DfnFeaPF8IjYWU89?= =?us-ascii?Q?z+4K/L97UvyB8dN0/90KFhaMoiDNOC4infoZNY6Mg4XnPOfdcUAv5YB5vTwp?= =?us-ascii?Q?lk/O0KV3b1S4b0oUsszOkuf0OQiXz80HQ3p0YTbxjj2OJ+IYVaNJThrr+/2r?= =?us-ascii?Q?OxR1Gxn7J9t5ui4jTYnx8qA8FvD7azB7t4V8cgCgaoHONzWf1Gxa+N63UJD6?= =?us-ascii?Q?ZnHSP6953m+ABp9mjATGllxUyebNrxWtCx2pvM8U9KMGry9PRi89tvRokB2y?= =?us-ascii?Q?fZwwF04KB2aRark+zxUoSY8Vlnm5C5Sg1I/TKwGUiYm4rGJti2FewoHzk4/z?= =?us-ascii?Q?lfpgx407p+/uGvYeBzoBsdy3EdptqEBc9JuVWnLbBLvvz4FPsObG8/QlSu2s?= =?us-ascii?Q?styTsfFhN9rnmF/ifUcdbDsRDpKT9nCjw64mhLD2sadWh4hfZ702tGrm6gx0?= =?us-ascii?Q?jDyTQeG+hEheFz98Pyo5f6g=3D?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 789af601-4a03-44f1-e12b-08dc10e42607 X-MS-Exchange-CrossTenant-AuthSource: NT0PR01MB1070.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 07:25:25.7523 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mg6fOvHskeakmtW8bD39pRJCu3acbR00qYuNpzNMJedMvB9InCkCcNxOk6XapFspiLzH+vSbO/PZl8B/Rfp3aXs4X47pEQiDkDeH963aAeM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: NT0PR01MB1231 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Keith Zhao Add properties in CDNS DSI yaml file to match with CDNS DSI module in StarFive JH7110 SoC. Signed-off-by: Keith Zhao --- .../bindings/display/bridge/cdns,dsi.yaml | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/display/bridge/cdns,dsi.yaml= b/Documentation/devicetree/bindings/display/bridge/cdns,dsi.yaml index 23060324d16e..da091e105794 100644 --- a/Documentation/devicetree/bindings/display/bridge/cdns,dsi.yaml +++ b/Documentation/devicetree/bindings/display/bridge/cdns,dsi.yaml @@ -16,6 +16,7 @@ properties: compatible: enum: - cdns,dsi + - starfve,jh7110-dsi - ti,j721e-dsi =20 reg: @@ -27,14 +28,20 @@ properties: Register block for wrapper settings registers in case of TI J7 S= oCs. =20 clocks: + minItems: 2 items: - description: PSM clock, used by the IP - description: sys clock, used by the IP + - description: apb clock, used by the IP + - description: txesc clock, used by the IP =20 clock-names: + minItems: 2 items: - const: dsi_p_clk - const: dsi_sys_clk + - const: apb + - const: txesc =20 phys: maxItems: 1 @@ -46,10 +53,21 @@ properties: maxItems: 1 =20 resets: - maxItems: 1 + minItems: 1 + items: + - description: dsi sys reset line + - description: dsi dpi reset line + - description: dsi apb reset line + - description: dsi txesc reset line + - description: dsi txbytehs reset line =20 reset-names: - const: dsi_p_rst + items: + - const: dsi_p_rst + - const: dpi + - const: apb + - const: txesc + - const: txbytehs =20 ports: $ref: /schemas/graph.yaml#/properties/ports @@ -90,6 +108,28 @@ allOf: reg: maxItems: 1 =20 + - if: + properties: + compatible: + contains: + const: starfive,jh7110-dsi + then: + properties: + clocks: + minItems: 4 + maxItems: 4 + resets: + minItems: 5 + maxItems: 5 + required: + - reset-names + else: + properties: + clocks: + maxItems: 2 + resets: + maxItems: 1 + required: - compatible - reg --=20 2.17.1 From nobody Fri Dec 26 05:27:35 2025 Received: from CHN02-BJS-obe.outbound.protection.partner.outlook.cn (mail-bjschn02on2048.outbound.protection.partner.outlook.cn [139.219.17.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D94D09477; Tue, 9 Jan 2024 07:40:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=starfivetech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IisVBVwVCo/++08g3i5VHvwbDtOWZUMHLKjyf+J8VH+WedNbIx9nziC0zuiaC5bDu0e2ZO1VmffJ51VuBFctonJ4gPOWcWsKqcFXzYK9ExQR1mk4SNxRb8m0ovaQAodgN3mxCE6NduIQutxRJ0Dm/T2UtoclSbwr1m78d4X5OFmYNh+fVofswcMVa+xEbraCyPoiL7pGvbe/ID38Dq5X4QTa5MFR+obukVAfwB7TR5GYMqgw9DKKlTtdk1SpN+3KG8wnttBK0DHicQr+d0Xvx1kCO97F4A31WND2it97Pkl4ANm2tAzwBfViTGDyCyANMKWsyEs0SoHoLvPNReKKRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=RyBNE/c5ohK97c6vvQAsxO3Nu5hkH4bde+VEnNwEOa0=; b=BPpzzxH8SxYpCW4xQ0qx6K13BrqMZS98wdSWYDp2eL3YkpDDkONgg2EiqH2AHoRytE6jl3MSIusK91YxTNmd9jSCosaQt9OppTrCNtQexuQmxo0HVqG0EqXsHyCU4jiVv817mfufzDvR417wx5Xo1RGbLX3aR8NbK9QEP95+zK9OusJZqaNYpEDMfMfWQ6RoEj5zgnfm7vK4wFuw0M1ZvCti4COol5SgnyQcKxKu0GT41AnSZ0CE62o9KIBBb/ZB7Gr+Os3QbOShshcJ86xJs0YQGXpGNTA2ScGbFrRqrt1Yld+9CQ2mSUOg2GkgnD4vXWL185LL3k5zaxuUJPVZbw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from NT0PR01MB1070.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:3::6) by NT0PR01MB1231.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.32; Tue, 9 Jan 2024 07:25:27 +0000 Received: from NT0PR01MB1070.CHNPR01.prod.partner.outlook.cn ([fe80::85fc:7fb9:8b00:dd88]) by NT0PR01MB1070.CHNPR01.prod.partner.outlook.cn ([fe80::85fc:7fb9:8b00:dd88%3]) with mapi id 15.20.7135.019; Tue, 9 Jan 2024 07:25:27 +0000 From: Shengyang Chen To: devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, p.zabel@pengutronix.de, tomi.valkeinen@ideasonboard.com, r-ravikumar@ti.com, aford173@gmail.com, rdunlap@infradead.org, u.kleine-koenig@pengutronix.de, bbrezillon@kernel.org, changhuang.liang@starfivetech.com, keith.zhao@starfivetech.com, shengyang.chen@starfivetech.com, jack.zhu@starfivetech.com, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/2] gpu: drm: bridge: cadence: Add a driver and platform ops for StarFive JH7110 SoC Date: Tue, 9 Jan 2024 15:25:16 +0800 Message-Id: <20240109072516.24328-3-shengyang.chen@starfivetech.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240109072516.24328-1-shengyang.chen@starfivetech.com> References: <20240109072516.24328-1-shengyang.chen@starfivetech.com> X-ClientProxiedBy: NT0PR01CA0008.CHNPR01.prod.partner.outlook.cn (2406:e500:c510::13) To NT0PR01MB1070.CHNPR01.prod.partner.outlook.cn (2406:e500:c510:3::6) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: NT0PR01MB1070:EE_|NT0PR01MB1231:EE_ X-MS-Office365-Filtering-Correlation-Id: 1871c946-213e-4eb4-f41f-08dc10e426c8 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bCm187VP5pnl8t5Sc7ONQN24ZH1BIN8sUUTYcK1oIXwraQxYK9evC76lUv3nPSyjxvhq040lYuIkO/giBNc8ZNq1ajSpCpPeWlddA/tLM9LjI4SNLMhfJxA8GCqQOpCnfXnQ2b0+anbRSa4wX63NdE4wN3HDWnpv0XqDpy3yomZJ374iKQyCOak5MwL2NMMXR+nxPzPJ9dOoGpHWGWiayEgVV7mtyFyVPLzPA7hbBMqqb5uzkF0TV3M7sWSXiFAxe+JJ/1gLL267yacUXRTqk767CuojXBP4+N2vqLjcsZqExD2Ywrt6H+KQhu390+VEpt3Yj3cPj6gJROpIHxaKmvJTZ6YAoiNhKE/bjqHRbT6g6OiOLEN01Ugwl0DeE1MauNnmifkRL6+y3EkQuHgwZQiZWkvKMhj6+9GgnZuXlNmOtTY52IHyc8YE+/oXnWwra+5Ypgec/c6QSTkjurhqeEY+o+sJvp9Xmea/VCWo9whH5egPFHkKW7cmf3biCZudnj2tyHEdaHOYLRBfNb3eVj+uVSI69PYYmG1wx9GhDeviLUZ8dFH7SiLA6VLHATLg X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:NT0PR01MB1070.CHNPR01.prod.partner.outlook.cn;PTR:;CAT:NONE;SFS:(13230031)(396003)(136003)(366004)(39830400003)(346002)(230922051799003)(186009)(451199024)(1800799012)(64100799003)(86362001)(66946007)(40160700002)(36756003)(40180700001)(38100700002)(83380400001)(1076003)(38350700005)(508600001)(52116002)(6666004)(7416002)(8676002)(8936002)(2906002)(66556008)(4326008)(44832011)(5660300002)(66476007)(30864003)(26005)(41300700001)(2616005)(41320700001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?CrJE1grbSG18oq9ytGs0xx4cX2ufDljgJkpUfGDKkImcy/bYJhwh8s6bn4zU?= =?us-ascii?Q?BjSeQqUztZejbw9XpPQJVA5re2ctoJx//e9ONUh7VaCrfxoHZSL9WJ/wVke9?= =?us-ascii?Q?ddVzJ1JqG+GrFpSgUMVTLwWOuSzC4G+4otBFZJizILd0H1Gke4En3f7Wf20D?= =?us-ascii?Q?TtqfX6Bi3ZTJVh8TLF5oD+Oq3Y6J/bSrrH14cv+yCeRO3+QS7hSb04qytOy0?= =?us-ascii?Q?frp5mIxtLUKuWrEO/hnIh7SpFQ9V9gPI/3KtvtUsYzjTMg4pvFykKtWG1CIP?= =?us-ascii?Q?vGKcUVZu08ZMifs4dUAajYlXJQ1SJx7X3b1Oi/5IcDWge2kDRYyUDB5yUvP1?= =?us-ascii?Q?a0JhZQ6Yea9BF+k1Tzdu4kdqy9eEJCTRsVjrNcE7kVa7U0k06L21455G/SlY?= =?us-ascii?Q?NxapKFQZkoiVsqu1e9aDr981O78T+c+TqVfoQ1Ktnc3f2vWXNKM0SUu/G6qB?= =?us-ascii?Q?v2djMK/RvfQUNwS6qkS9b/H9SdWBZYgGVSwN6qhOX3A1lGCTdcPCrCrvtUYY?= =?us-ascii?Q?MZ7MxbcAbpJuT9N28LbjhEzAPs0n8XKJYTO2SOiKnTuCIS4atSdaHdk2kIAF?= =?us-ascii?Q?pykzEF1PVVm8d23ZNU4LgS5vu1efp+7BPxzI6OPjBsEr1BHj/c4GlXsT5fPG?= =?us-ascii?Q?+j4fCfM58btEgtMFMy7/8+rQGjqPHu7hXRM8g+ocXgUFf8ZB031CO8/LaOa9?= =?us-ascii?Q?V9iKPVz3FQfN/kPpwhMXGaJYJCsoMM21omwhLkYhqzse05L7fGsI9dQwOFWL?= =?us-ascii?Q?ImqfBDIHDnDL0TZsMsTfnRIxTrZxoUdWA8AJvsM6R1jXYaVIWJ37H6rS5S83?= =?us-ascii?Q?Eaq1Nkqw2c9Pt0wK+NVC6YtZf2gyQY1BZvuxr5KAM/xFUIOU5zn91gAIacEl?= =?us-ascii?Q?QhuRNm0jTl7m2k8VD3l68R7ju1NYdV26DqlVRP807KHVEuuHU2X/ucORDCJf?= =?us-ascii?Q?vbQT+Ss0uyWE1L+3IZBXFDJpiYmySFNFNLbLSB2oXoB5FzQLJdJXNbrkOYdg?= =?us-ascii?Q?kthJkbr9zyeduX7z5gLVQMHoiS//bULJikl/MV8m2eonqFRqFa3jkHu+/555?= =?us-ascii?Q?oeF4Mcx6LOXlOXCLwVT65MwUAsFmYJaKlKKNBZCxJxChm/0YxJxYcmLsbl41?= =?us-ascii?Q?4pcPQM2jLFHfRad0IIlsEZouxySG9dt4TUwrDdqEcd571FxM2HBAYQrgWDI6?= =?us-ascii?Q?Oe1FB4BKVYNzIhKVTxM+Aosw+w3Izz38qG1E3q0OZonxXctEmPjkWIUjmOFM?= =?us-ascii?Q?r1Q9PFqwxkjTj4O+bAN/kvHDlhS9dj1bUGgwGaSXIC2For0QSTAnOqfhol2J?= =?us-ascii?Q?kKfrkl6+aRV3VYInK83o3qii4KDixcvoHiVB+WZ+ZrOScDxBOe+wQ8vQDlC7?= =?us-ascii?Q?mRukx304Plo2MbOfohu0jn4Weto2QTTbmtqjNGwvr16XimF9bQj9Bw9WV+wp?= =?us-ascii?Q?7Z/XNEaPdZD6XbAmhf4qSKk5pnzF9LpzlZAHd+62ZMwiKyPhhmARW1DGWZvO?= =?us-ascii?Q?iPVLh/o0NhI2Nze2cOjvXzfHTh1PDH2pPZDhU5kz9raPZgKm6PQzBsYrLBMI?= =?us-ascii?Q?3Vvt3GtyDMK4GCeEoyPJ+r+QRRJFghV92TyaqQ/b2zFHn1vn9g/4d7SoU/bG?= =?us-ascii?Q?NDnvbnriZ+tGEHsPwphSGIM=3D?= X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1871c946-213e-4eb4-f41f-08dc10e426c8 X-MS-Exchange-CrossTenant-AuthSource: NT0PR01MB1070.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 07:25:27.0750 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: yMFlPADzGlDKts0BLOrlrxw8sLPImz+TpPVawgTso3xBNCWPeJpGlRVdF+6yCpDO4GZScIEnIQGQ9NP4tpkb+rVa7zapBI1NUQOj9qC8tJA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: NT0PR01MB1231 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Keith Zhao In order to fit CDNS DSI module in StarFive JH7110 SoC, The mainly modification is followed: 1.Add driver for StarFive JH7110 SoC to drive its CDNS DSI module. 2.Add platform ops in cdns-dsi.c for StarFive JH7110 SoC probing. Signed-off-by: Keith Zhao --- MAINTAINERS | 8 + drivers/gpu/drm/bridge/cadence/Kconfig | 7 + drivers/gpu/drm/bridge/cadence/Makefile | 1 + .../gpu/drm/bridge/cadence/cdns-dsi-core.c | 29 ++- .../gpu/drm/bridge/cadence/cdns-dsi-core.h | 21 ++ .../gpu/drm/bridge/cadence/cdns-dsi-jh7110.c | 193 ++++++++++++++++++ .../gpu/drm/bridge/cadence/cdns-dsi-jh7110.h | 16 ++ 7 files changed, 274 insertions(+), 1 deletion(-) create mode 100644 drivers/gpu/drm/bridge/cadence/cdns-dsi-jh7110.c create mode 100644 drivers/gpu/drm/bridge/cadence/cdns-dsi-jh7110.h diff --git a/MAINTAINERS b/MAINTAINERS index d32920dd943f..a220ea04f5c4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6847,6 +6847,14 @@ F: Documentation/devicetree/bindings/display/solomon= ,ssd-common.yaml F: Documentation/devicetree/bindings/display/solomon,ssd13*.yaml F: drivers/gpu/drm/solomon/ssd130x* =20 +DRM DRIVERS FOR STARFIVE +M: Keith Zhao +M: Shengyang Chen +L: dri-devel@lists.freedesktop.org +S: Maintained +T: git git://anongit.freedesktop.org/drm/drm-misc +F: drivers/gpu/drm/bridge/cadence/cdns-dsi-jh7110* + DRM DRIVER FOR ST-ERICSSON MCDE M: Linus Walleij S: Maintained diff --git a/drivers/gpu/drm/bridge/cadence/Kconfig b/drivers/gpu/drm/bridg= e/cadence/Kconfig index cced81633ddc..ad9f572f4720 100644 --- a/drivers/gpu/drm/bridge/cadence/Kconfig +++ b/drivers/gpu/drm/bridge/cadence/Kconfig @@ -19,6 +19,13 @@ config DRM_CDNS_DSI_J721E help Support J721E Cadence DSI wrapper. The wrapper manages the routing of the DSS DPI signal to the Cadence DSI. + +config DRM_CDNS_DSI_JH7110 + bool "JH7110 SOC Cadence DSI support" + default n + help + Cadence DPI to DSI bridge which is embedded in the + StarFive JH7110 SoC. endif =20 config DRM_CDNS_MHDP8546 diff --git a/drivers/gpu/drm/bridge/cadence/Makefile b/drivers/gpu/drm/brid= ge/cadence/Makefile index c95fd5b81d13..87f603a9f4ad 100644 --- a/drivers/gpu/drm/bridge/cadence/Makefile +++ b/drivers/gpu/drm/bridge/cadence/Makefile @@ -2,6 +2,7 @@ obj-$(CONFIG_DRM_CDNS_DSI) +=3D cdns-dsi.o cdns-dsi-y :=3D cdns-dsi-core.o cdns-dsi-$(CONFIG_DRM_CDNS_DSI_J721E) +=3D cdns-dsi-j721e.o +cdns-dsi-$(CONFIG_DRM_CDNS_DSI_JH7110) +=3D cdns-dsi-jh7110.o obj-$(CONFIG_DRM_CDNS_MHDP8546) +=3D cdns-mhdp8546.o cdns-mhdp8546-y :=3D cdns-mhdp8546-core.o cdns-mhdp8546-hdcp.o cdns-mhdp8546-$(CONFIG_DRM_CDNS_MHDP8546_J721E) +=3D cdns-mhdp8546-j721e.o diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 7457d38622b0..a8f976f9eeed 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -27,6 +27,10 @@ #include "cdns-dsi-j721e.h" #endif =20 +#ifdef CONFIG_DRM_CDNS_DSI_JH7110 +#include "cdns-dsi-jh7110.h" +#endif + #define IP_CONF 0x0 #define SP_HS_FIFO_DEPTH(x) (((x) & GENMASK(30, 26)) >> 26) #define SP_LP_FIFO_DEPTH(x) (((x) & GENMASK(25, 21)) >> 21) @@ -552,6 +556,10 @@ static int cdns_dsi_adjust_phy_config(struct cdns_dsi = *dsi, /* data rate was in bytes/sec, convert to bits/sec. */ phy_cfg->hs_clk_rate =3D dlane_bps * 8; =20 + if (dsi->platform_ops && dsi->platform_ops->update) + adj_dsi_htotal =3D dsi->platform_ops->update(dsi, dsi_cfg, phy_cfg, + dpi_hz, dpi_htotal, dsi_htotal); + dsi_hfp_ext =3D adj_dsi_htotal - dsi_htotal; dsi_cfg->hfp +=3D dsi_hfp_ext; dsi_cfg->htotal =3D dsi_htotal + dsi_hfp_ext; @@ -683,7 +691,7 @@ static void cdns_dsi_bridge_post_disable(struct drm_bri= dge *bridge) pm_runtime_put(dsi->base.dev); } =20 -static void cdns_dsi_hs_init(struct cdns_dsi *dsi) +void cdns_dsi_hs_init(struct cdns_dsi *dsi) { struct cdns_dsi_output *output =3D &dsi->output; u32 status; @@ -1026,6 +1034,14 @@ static ssize_t cdns_dsi_transfer(struct mipi_dsi_hos= t *host, =20 cdns_dsi_init_link(dsi); =20 + /* + * on JH7110 SoC , when transfer dsi command , + * cdns_dsi_hs_init is needed. + * or the final ret will be error value. + */ + if (dsi->platform_ops && dsi->platform_ops->transfer) + dsi->platform_ops->transfer(dsi); + ret =3D mipi_dsi_create_packet(&packet, msg); if (ret) goto out; @@ -1142,6 +1158,9 @@ static int __maybe_unused cdns_dsi_resume(struct devi= ce *dev) clk_prepare_enable(dsi->dsi_p_clk); clk_prepare_enable(dsi->dsi_sys_clk); =20 + if (dsi->platform_ops && dsi->platform_ops->resume) + dsi->platform_ops->resume(dsi); + return 0; } =20 @@ -1152,6 +1171,10 @@ static int __maybe_unused cdns_dsi_suspend(struct de= vice *dev) clk_disable_unprepare(dsi->dsi_sys_clk); clk_disable_unprepare(dsi->dsi_p_clk); reset_control_assert(dsi->dsi_p_rst); + + if (dsi->platform_ops && dsi->platform_ops->suspend) + dsi->platform_ops->suspend(dsi); + dsi->link_initialized =3D false; return 0; } @@ -1294,6 +1317,10 @@ static const struct of_device_id cdns_dsi_of_match[]= =3D { #ifdef CONFIG_DRM_CDNS_DSI_J721E { .compatible =3D "ti,j721e-dsi", .data =3D &dsi_ti_j721e_ops, }, #endif +#ifdef CONFIG_DRM_CDNS_DSI_JH7110 + { .compatible =3D "starfive,jh7110-dsi", .data =3D &dsi_ti_jh7110_ops, }, +#endif + { }, }; MODULE_DEVICE_TABLE(of, cdns_dsi_of_match); diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.h b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.h index ca7ea2da635c..f4491009c977 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.h +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.h @@ -53,12 +53,22 @@ struct cdns_dsi; * @deinit: Called in the CDNS DSI remove * @enable: Called at the beginning of CDNS DSI bridge enable * @disable: Called at the end of CDNS DSI bridge disable + * @resume: Called at the resume of CDNS DSI + * @suspend: Called at the suspend of CDNS DSI + * @update: Called at the middle of CDNS DSI bridge enable */ struct cdns_dsi_platform_ops { int (*init)(struct cdns_dsi *dsi); void (*deinit)(struct cdns_dsi *dsi); void (*enable)(struct cdns_dsi *dsi); void (*disable)(struct cdns_dsi *dsi); + void (*resume)(struct cdns_dsi *dsi); + void (*suspend)(struct cdns_dsi *dsi); + int (*update)(struct cdns_dsi *dsi, struct cdns_dsi_cfg *dsi_cfg, + struct phy_configure_opts_mipi_dphy *phy_cfg, + unsigned long dpi_hz, unsigned long dpi_htotal, + unsigned long dsi_htotal); + void (*transfer)(struct cdns_dsi *dsi); }; =20 struct cdns_dsi { @@ -79,6 +89,17 @@ struct cdns_dsi { bool link_initialized; bool phy_initialized; struct phy *dphy; + +#ifdef CONFIG_DRM_CDNS_DSI_JH7110 + struct clk *apb_clk; + struct clk *txesc_clk; + struct reset_control *dpi_rst; + struct reset_control *apb_rst; + struct reset_control *txesc_rst; + struct reset_control *txbytehs_rst; +#endif }; =20 +void cdns_dsi_hs_init(struct cdns_dsi *dsi); + #endif /* !__CDNS_DSI_H__ */ diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-jh7110.c b/drivers/gpu= /drm/bridge/cadence/cdns-dsi-jh7110.c new file mode 100644 index 000000000000..654d083f49e1 --- /dev/null +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-jh7110.c @@ -0,0 +1,193 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * JH7110 SoC Cadence DSI wrapper + * + * Copyright (C) 2023 StarFive Technology Co., Ltd. + */ + +#include +#include +#include +#include + +#include "cdns-dsi-jh7110.h" + +static int cdns_dsi_clock_enable(struct cdns_dsi *dsi, struct device *dev) +{ + int ret; + + ret =3D clk_prepare_enable(dsi->apb_clk); + if (ret) { + dev_err(dev, "Failed to prepare/enable apb_clk\n"); + return ret; + } + + ret =3D clk_prepare_enable(dsi->txesc_clk); + if (ret) { + dev_err(dev, "Failed to prepare/enable txesc_clk\n"); + return ret; + } + + return ret; +} + +static void cdns_dsi_clock_disable(struct cdns_dsi *dsi) +{ + clk_disable_unprepare(dsi->apb_clk); + clk_disable_unprepare(dsi->txesc_clk); +} + +static int cdns_dsi_resets_deassert(struct cdns_dsi *dsi, struct device *d= ev) +{ + int ret; + + ret =3D reset_control_deassert(dsi->apb_rst); + if (ret < 0) { + dev_err(dev, "failed to deassert apb_rst\n"); + return ret; + } + + ret =3D reset_control_deassert(dsi->txesc_rst); + if (ret < 0) { + dev_err(dev, "failed to deassert txesc_rst\n"); + return ret; + } + + ret =3D reset_control_deassert(dsi->dpi_rst); + if (ret < 0) { + dev_err(dev, "failed to deassert dpi_rst\n"); + return ret; + } + + return ret; +} + +static int cdns_dsi_resets_assert(struct cdns_dsi *dsi, struct device *dev) +{ + int ret; + + ret =3D reset_control_assert(dsi->apb_rst); + if (ret < 0) { + dev_err(dev, "failed to assert apb_rst\n"); + return ret; + } + + ret =3D reset_control_assert(dsi->txesc_rst); + if (ret < 0) { + dev_err(dev, "failed to assert txesc_rst\n"); + return ret; + } + + ret =3D reset_control_assert(dsi->dpi_rst); + if (ret < 0) { + dev_err(dev, "failed to assert dpi_rst\n"); + return ret; + } + + return ret; +} + +static int cdns_dsi_get_clock(struct device *dev, struct cdns_dsi *dsi) +{ + dsi->apb_clk =3D devm_clk_get(dev, "apb"); + if (IS_ERR(dsi->apb_clk)) + return PTR_ERR(dsi->apb_clk); + + dsi->txesc_clk =3D devm_clk_get(dev, "txesc"); + if (IS_ERR(dsi->txesc_clk)) + return PTR_ERR(dsi->txesc_clk); + + return 0; +} + +static int cdns_dsi_get_reset(struct device *dev, struct cdns_dsi *dsi) +{ + dsi->dpi_rst =3D devm_reset_control_get(dev, "dpi"); + if (IS_ERR(dsi->dpi_rst)) + return PTR_ERR(dsi->dpi_rst); + + dsi->apb_rst =3D devm_reset_control_get(dev, "apb"); + if (IS_ERR(dsi->apb_rst)) + return PTR_ERR(dsi->apb_rst); + + dsi->txesc_rst =3D devm_reset_control_get(dev, "txesc"); + if (IS_ERR(dsi->txesc_rst)) + return PTR_ERR(dsi->txesc_rst); + + dsi->txbytehs_rst =3D devm_reset_control_get(dev, "txbytehs"); + if (IS_ERR(dsi->txbytehs_rst)) + return PTR_ERR(dsi->txbytehs_rst); + + return 0; +} + +static int cdns_dsi_jh7110_init(struct cdns_dsi *dsi) +{ + int ret; + + ret =3D cdns_dsi_get_clock(dsi->base.dev, dsi); + if (ret) + return ret; + + return cdns_dsi_get_reset(dsi->base.dev, dsi); +} + +static void cdns_dsi_jh7110_resume(struct cdns_dsi *dsi) +{ + int ret; + + ret =3D cdns_dsi_clock_enable(dsi, dsi->base.dev); + if (ret) { + dev_err(dsi->base.dev, "failed to enable clock\n"); + return; + } + ret =3D cdns_dsi_resets_deassert(dsi, dsi->base.dev); + if (ret < 0) { + dev_err(dsi->base.dev, "failed to deassert reset\n"); + return; + } +} + +static void cdns_dsi_jh7110_suspend(struct cdns_dsi *dsi) +{ + int ret; + + ret =3D cdns_dsi_resets_assert(dsi, dsi->base.dev); + if (ret < 0) { + dev_err(dsi->base.dev, "failed to deassert reset\n"); + return; + } + + cdns_dsi_clock_disable(dsi); +} + +static int cdns_dsi_jh7110_update(struct cdns_dsi *dsi, struct cdns_dsi_cf= g *dsi_cfg, + struct phy_configure_opts_mipi_dphy *phy_cfg, + unsigned long dpi_hz, unsigned long dpi_htotal, + unsigned long dsi_htotal) +{ + unsigned long long dlane_bps; + unsigned long adj_dsi_htotal; + unsigned int lanes =3D dsi->output.dev->lanes; + + phy_cfg->hs_clk_rate =3D phy_cfg->hs_clk_rate - (phy_cfg->hs_clk_rate % 1= 0000000); + phy_cfg->hs_clk_rate =3D phy_cfg->hs_clk_rate + 40000000; + dlane_bps =3D phy_cfg->hs_clk_rate * lanes * dpi_htotal / 8; + adj_dsi_htotal =3D dlane_bps / dpi_hz; + + return adj_dsi_htotal; +} + +static void jh7110_cdns_dsi_hs_init(struct cdns_dsi *dsi) +{ + cdns_dsi_hs_init(dsi); + reset_control_deassert(dsi->txbytehs_rst); +} + +const struct cdns_dsi_platform_ops dsi_ti_jh7110_ops =3D { + .init =3D cdns_dsi_jh7110_init, + .resume =3D cdns_dsi_jh7110_resume, + .suspend =3D cdns_dsi_jh7110_suspend, + .update =3D cdns_dsi_jh7110_update, + .transfer =3D jh7110_cdns_dsi_hs_init, +}; diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-jh7110.h b/drivers/gpu= /drm/bridge/cadence/cdns-dsi-jh7110.h new file mode 100644 index 000000000000..15d6a766b502 --- /dev/null +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-jh7110.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * JH7110 Cadence DSI + * + * Copyright (C) 2022-2023 StarFive Technology Co., Ltd. + * Author: keith.zhao + */ + +#ifndef __CDNS_DSI_JH7110_H__ +#define __CDNS_DSI_JH7110_H__ + +#include "cdns-dsi-core.h" + +extern const struct cdns_dsi_platform_ops dsi_ti_jh7110_ops; + +#endif /* !__CDNS_DSI_JH7110_H__ */ --=20 2.17.1