From patchwork Wed Feb 5 17:18:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13961608 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 94FDFC02192 for ; Wed, 5 Feb 2025 17:32:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Cc:To:In-Reply-To: References:Message-Id:Subject:Date:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=XSxixkZAMq3NhnDvsArmALFn+k0eF3FSD+zHGr7stwg=; b=ttsOVp0l1xQhCj0nNh5egYITgp xFV+yJSWBRviX5OXi4Zjaa0Nm6s4BTmDys+qsmtTc+jS2leEZH5rYK3tUM1UDQak+t/Je350MTMvL IZLmOvP6SMrEeGbDC2o80je96j6Y/zEX8Xagu0uCdse5ODOQaGqh9hls+6dTxomfI81CgYJ/W4Q4l RAjVCeNqFKzUh/c/7gxbXmOKnNVdozVbtzNZAqL7c5HIYHHel6MVBySX6Qmv30Z68prsTcWlixJ3R 3MFDaUdoyBBGELE1QGvGmE+nVd7FX4DdH7lYMfNrQzVth7t+U75FkGaSPifnv+gfWgK5bv/42t2xU Inf/eucA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tfjGW-000000046tl-1UQ0; Wed, 05 Feb 2025 17:32:44 +0000 Received: from mail-northeuropeazlp170120003.outbound.protection.outlook.com ([2a01:111:f403:c200::3] helo=DU2PR03CU002.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tfj41-000000044cj-0DKI; Wed, 05 Feb 2025 17:19:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=L4PdFzkRJFsWr1G49WOhhfbiP6gd+ZiyH9H1kCgR+nP8U0cM04FfDJRTRMvmC+tZc7btH4rJo2uFbFD4K6H6wq7BB+fzvn55vI3bvFirzY5tUEAiea0aDtysDg5bT1JYLRzIcRtYExik/cHz1BjoBYrDNCVm1gg94ZFLrOxLZ8Wwt7/hXi8x8iScQLRjHDfzwocSdoCRRRoIHb9lEnWZZ5mtVhhbUfTz0ZtYUVDq3p7g+9vWF2GAGG4sAun5A2WiVMs0z+VE/3FnRhsxMY+YoyhNHgYPdmMKWKcbzbpV79cSzRRT+PqpJFxL/er4uK7YHs8/ClFEX3+54zYHO8wCzQ== 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=A4ChoGAN47AD/3d+866xQrb0UnyYmFctyuF69EYy2nQ=; b=VAYnTVee0bPiXAq4d6dpePcHuIwq3OazvBdGOBJCxf7VCDpvzBhCRtlOqQ+uPi9HJp/vDaosVJ/gWN+XCtvpkh7FjSM3Ay2qCe2xNiBvIsS1hoOeGFVZ82IWY6rbOypAO7DhU8L8aMruAgolyNyL3IAZF/AgCq/2qm8/ZWEW1C9KBgdfkIXv++m/+2VnuAjRuHSRFrT1HPM0MJquh/E6VVUq3bhfidMVrLs4RChUoc3Ym7i/9hfTo+UG6YM67FdhhuNOyqs5Bhcp/3kuqEAK9z1QLO+gZT8d01ZKfXIfYyUsAqvuO8OWKyhaG94Lj8acA5gA0B/skTOumbji2iQacw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=A4ChoGAN47AD/3d+866xQrb0UnyYmFctyuF69EYy2nQ=; b=fhQHVUlCHJVPY5vo2UZaR4A+aFTa5iM2709NDObfyEt+Zkl44iaTx3pOFWSDJ86QMs8lXvEOgkW4DlrxNM76CCrt38qS70kJmSY9n5EswcXqUda6DHvel6LaOkTwVs9+meApYUsJIBJnlOegPCd628uKveBfLUbKxKaNr1r++bUrBPu3xrLWIwS/1iuQtn6e+HnLCUpRapNzaKdFoI5fMoDiQ07OKuwjnCRT6vXGDBLdBsKtzF5ksxAemmY1vAnIa2urFO82bVJu445kEksqfQn8PFBVltvgL2buxPFgpPzV6FW7bQxbB3raD55k3T5gNKOUIyCfQzTlFW0PboDvhw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) by DB9PR04MB8348.eurprd04.prod.outlook.com (2603:10a6:10:25c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.10; Wed, 5 Feb 2025 17:19:45 +0000 Received: from PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06]) by PAXPR04MB9642.eurprd04.prod.outlook.com ([fe80::9126:a61e:341d:4b06%6]) with mapi id 15.20.8398.021; Wed, 5 Feb 2025 17:19:45 +0000 From: Frank Li Date: Wed, 05 Feb 2025 12:18:19 -0500 Subject: [PATCH v2 10/14] media: imx8mq-mipi-csi2: Add support for i.MX8QXP Message-Id: <20250205-8qxp_camera-v2-10-731a3edf2744@nxp.com> References: <20250205-8qxp_camera-v2-0-731a3edf2744@nxp.com> In-Reply-To: <20250205-8qxp_camera-v2-0-731a3edf2744@nxp.com> To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Philipp Zabel , Laurent Pinchart , Mauro Carvalho Chehab , Rui Miguel Silva , Martin Kepplinger , Purism Kernel Team Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, "Guoniu.zhou" , Robby Cai , Robert Chiras , Frank Li X-Mailer: b4 0.13-dev-e586c X-Developer-Signature: v=1; a=ed25519-sha256; t=1738775920; l=3332; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=ugMwhXKf0Tm63RDlxILbeXMabykj2jL37Gb3VZTUv8c=; b=A71NdOmnSeeXjn61Yb5oFp1gUW2MVRIrF9dalVaBQAX7uZ2TfMmjJX9bszv+4uEUUtNpV1Xge 44ojZQriteMAb2JZhWRYNj5lJS4kGQtsquqVMpsk+kE31aQHBztIL5H X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-ClientProxiedBy: SJ0PR13CA0001.namprd13.prod.outlook.com (2603:10b6:a03:2c0::6) To PAXPR04MB9642.eurprd04.prod.outlook.com (2603:10a6:102:240::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB9642:EE_|DB9PR04MB8348:EE_ X-MS-Office365-Filtering-Correlation-Id: d3444c67-1b34-4495-3a99-08dd46094948 X-LD-Processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|52116014|376014|7416014|366016|921020|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?c+izdUYeo7RpJ49AoUz3dcUywikYOwn?= =?utf-8?q?k757TUBjAV53RE4WwVO6hDj71ClGo7UJfIm89yAMXe3JbuTx2TjJhD1nCRdEDzmhq?= =?utf-8?q?Qc6v7IsOvYEKtUp+s0MkfQKVfx7py6Ex1O0IHEDH7loRlSBbS13A+pZolbm5aDewb?= =?utf-8?q?L1LtCaFQXtJaa6r4lNPyvUEONFIV0Gegf+hRf5M8lLrv5fdBq0zn19KxTU5lP4B9u?= =?utf-8?q?qQF9xQDWZtL5j+PfuKFRW2p4dTGDOqwUs5llgV2x9zg4Mbd1zjNXo2L49AkI83jCC?= =?utf-8?q?IeGvqpS0PTGZ+ZWX32lhbLPJI69p00FFy8/0Hr2L3tlzR3t6dWVxdP78NDIFzeLIm?= =?utf-8?q?Z+6yBSmDIocil0R4LFXeC0Bk2wiRKDljKYMueMpIBvmJq/eWRCFRjXlHfH//Fjccf?= =?utf-8?q?49ESP8lj0jvz7b/wyKUh65xqNi7SPz7eP0mK/BCKwNpjffNT5RbJqYdrm1a2XQQVd?= =?utf-8?q?Zs5XA5VXtdvndaUc5zenix5KjBiYViscbJA1PQ54IHcbK0HPK6RHfV//nI7ezbMBO?= =?utf-8?q?Mhmt2/+J55SvBpwyP+Sie50oSariVSTea0BmpAW3ONHPa6CCoGJ0nmHW+JSmjIQwF?= =?utf-8?q?ouUnlEoym2vbozi3V5RLV9Echt+7j4y/lrPVfWh79E88M5jWzOcTPBQNT9n8Hq8hH?= =?utf-8?q?/IzQduveib51bXn/PHRuCF1mWF5pJNPUEgcL1t37EquEZlpRLc1jqpYAGUi7/6yYc?= =?utf-8?q?jAFLyZsaX4k0AiZjLg5GrZRo60MvcPUOR4TGoOKwY7/Abm35JjABGZQay2UIDSMvT?= =?utf-8?q?bO/3h4lxXwWZl4TSYRvkOO2+MSEvEa6Uw8akADgZJeHaXBD3jFXUq+V7iW3mijfWn?= =?utf-8?q?1+jyu0e0OXrr40EIBUaCvjkGbpgv3Mjnq58QWC1sj+lOeSd0zi5yqeDQqi6ccDCl6?= =?utf-8?q?/Jqn4EOeCF5Cw/3I//P99cnwqxEBTNXqtkQQIGGLdjgeCn0tLC7X2JAIOpMPbljcs?= =?utf-8?q?+MhH6PbBj5RuYjf9p3V+zo2/4Bascfq/IgssieN58Y89eV2nSfKyzDrqu6eaCWhHo?= =?utf-8?q?OqP0mFWeCccwfploB3zO53ENCD3BwfnwRS9OORA0GPhaDsCin9l8Aa0FsFcgUlkC1?= =?utf-8?q?icpjQIB78sYsQPLvnC48ncx7hd1DW2tN3CDZsZiDSotZFPR7xVLDJJAaI6F+BX9ip?= =?utf-8?q?PiLLhqhp6kDX4HBCscADOlH5llF5vGkUuwtd+Ritgu8BEeq9ge+Kj2fNgsyNQSAal?= =?utf-8?q?hLIBeM9DeAPUcWVccHBWybCcHZRiSjsEXbWjyw0rWhha70K3wviaF5RL2hiYgnosO?= =?utf-8?q?wi7hZAbqwL3TwegWQdUhyXzcGHVyqDCjqwWU3jRS4bwd/lxzaDJBIIOK/kybIzr2z?= =?utf-8?q?ri40ShRCqx0KxDKfQHmnYS6oE+uP534su3gmtgUrVijUUL9WlvFTx32h8KAGmAQN7?= =?utf-8?q?67icJDhLUB86tTNOx3JVfy+sdWFRMwFvQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB9642.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(52116014)(376014)(7416014)(366016)(921020)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?8kk6IB2DrQByN6/+GtW6+Cl+TEgX?= =?utf-8?q?KDlt/zZICXDYBoQY5US4XuDl7Ai479Oo6hgBFJiJXyG4LMawGJGK/s0bgxwSbxdo3?= =?utf-8?q?wacUOp6Hse/CK9BQkKbyPVGrpebq0PrNBioR251iAjjderXf0yf1y8G3P5oeAZoXF?= =?utf-8?q?4QchnZn/dL4hANBtis3gTVVa1LdWQsOPykeIxvOh4vpTDET5OOE2eGz6zIjelfBHR?= =?utf-8?q?7+nPtiS8oDACVXQbNVu1VeTnVXU/lkEn9XuYkyL3QNrS15Z2NiCOTfGJyzS0z0Dqh?= =?utf-8?q?WFOTnr1mPAp6I7EZbxHXAv/cnCqQbnIquAKMXkovshlfSnjSDMZ3MUR8sUgQPKQ4H?= =?utf-8?q?l2PAIZ5D3SwMRk2Yh+QES5WnyRC5xeRj3p5NjsiW89cJDtorGHcetpJW/sP8ANECd?= =?utf-8?q?81QwTvfp1c5A2aKitICAur0z7kIJ/Cfa1R2rmpIJ67s68jsp0Yt56z+6IiN9OJIeV?= =?utf-8?q?drHqkL25c08B5i3soZu7ESq1t91d7lWtplIii17pIFk/cRM+OTjbqTakMjCECliE9?= =?utf-8?q?vev+WH6WeZ2rP3AOilwGQDpW9MCegWkNbclNwTWOYTvWevULbIU1w6V3YE9Jtc7P8?= =?utf-8?q?RNoJl+G/WPgsjg61cpoWkpUOnaDUzK1Ei5nYFxsu57R1Sb/F1qKQee0IHhOeASmmk?= =?utf-8?q?Nrz/oDTT1ItuPbcQhJcPg+ni8N081bAqbramgpB9cASPSOWs7Sml8VUHvmaxeDk7a?= =?utf-8?q?1aEpBdXWcRHZnX5zj2TnDLVVqqUXOBDrQzo+qVwpXKfT5/ibi5OrbgEMgRyw3Ko9C?= =?utf-8?q?rSOG0GBJ9ajhZXi85J/RT21DeRtowkOavaOJn5UQPqsF8vKuJG96VnvDiKRo6cvh4?= =?utf-8?q?DHH5PCLrIwuSYnPftWE75ygS4GCSWLdjxX8yL5ASe6mETfPlZeF0iLFF9XAERTsK7?= =?utf-8?q?aNzZc/tt4SPIX8M3kxJ7m1Rclmp57t8ykTm8vcJ0PSZqvZsbOvICNU6fzRiwMLMVR?= =?utf-8?q?PRcODatsd/K+Z1zLzYoG/Gb0dWiZI0GGCZNiUUxnKjXrISyvHk2RPFAgmx1ZuHkPd?= =?utf-8?q?60SHSXi7yJnLcIYuiAXwF4BRxs7nX7XAyvrHq9QD9EbHWi5A5Lkh0hdH9PjEtLhUZ?= =?utf-8?q?0e+k0fQbLOEF15rT2DTunFZY0zGPAlT2COMf/Nt47P62Sg7Js+eabPwVeo2snxkWz?= =?utf-8?q?6d7pwVZ1p3TuiEG1SDU6on7erxYdqA8es4nLeXRZ3cxNm+rpGsKTlkCtyjelb6F5a?= =?utf-8?q?LGO2aPUqz/VRMZDcgEYAVU7Q2igW//fQn4fHSO0+v8FJkfSyehuvOGaiVA8Wv4Q7N?= =?utf-8?q?Vt5SHaTeHOJr2BA3eteCdmi4LQZKSAVEy/RMiCN9xvmRJvX3bFRfDBYRRdZke+OtA?= =?utf-8?q?G7N2TK4fy45DGVtLPjTj9Cs05uPl8g/TJkeKA4fbWIcFxp99sJFD30L5Rv1Adc2Kx?= =?utf-8?q?h+47jp68sAtu+8PPcowyuUZ84+nMhxANyZrMXV7XfpNgXe2ItROmCZwjgVXV39gn5?= =?utf-8?q?4T6w12kkA1iubj8+jT+fv/6Rt/G9iGToneUrVBzw3PlY927qT8jVD7bGIyHroKRad?= =?utf-8?q?ad5MTkLugV6a?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d3444c67-1b34-4495-3a99-08dd46094948 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9642.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Feb 2025 17:19:45.5612 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: MwqHvNAuyLH9VOS4cHGSFC8CbTrFfFp1Kg3lFwYaq+3eICtsYB6+a6WyvkweDA8Rv4bYL5cWziDPApI+HsMntQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB8348 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250205_091949_098232_8E6DBD3F X-CRM114-Status: GOOD ( 17.98 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org Add support for the common PHY interface to enable and disable the MIPI CSI PHY. This is required for platforms like i.MX8QXP, which rely on the PHY driver for powering the MIPI CSI PHY on and off. Add reset delay for i.MX8QXP. It needs a delay after toggle reset. Signed-off-by: Frank Li --- Change from v1 to v2 - change 8QM go 8QXP, 8QM will failback to 8QXP to keep consisense with phy drivers --- drivers/media/platform/nxp/imx8mq-mipi-csi2.c | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c index b5eae56d92f49..5da9dd0f1eec6 100644 --- a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c +++ b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -89,6 +90,8 @@ struct imx8mq_plat_data { const char *name; int (*enable)(struct csi_state *state, u32 hs_settle); void (*disable)(struct csi_state *state); + bool use_phydrv: 1; + int reset_delay; }; /* @@ -125,6 +128,7 @@ struct csi_state { u32 state; struct regmap *phy_gpr; + struct phy *phy; u8 phy_gpr_reg; struct icc_path *icc_path; @@ -169,6 +173,37 @@ static const struct imx8mq_plat_data imx8mq_data = { .enable = imx8mq_gpr_enable, }; +/* ----------------------------------------------------------------------------- + * Use common PHY interface + */ +static int imx8_phy_enable(struct csi_state *state, u32 hs_settle) +{ + int ret; + + ret = phy_set_speed(state->phy, hs_settle); + if (ret) + return ret; + + ret = phy_power_on(state->phy); + if (ret) + return ret; + + return 0; +} + +static void imx8_phy_disable(struct csi_state *state) +{ + phy_power_off(state->phy); +} + +static const struct imx8mq_plat_data imx8qxp_data = { + .name = "i.MX8QXP", + .enable = imx8_phy_enable, + .disable = imx8_phy_disable, + .use_phydrv = 1, + .reset_delay = 10000, +}; + static const struct csi2_pix_format imx8mq_mipi_csi_formats[] = { /* RAW (Bayer and greyscale) formats. */ { @@ -273,6 +308,8 @@ static int imx8mq_mipi_csi_sw_reset(struct csi_state *state) return ret; } + fsleep(state->pdata->reset_delay); + return 0; } @@ -860,6 +897,14 @@ static int imx8mq_mipi_csi_parse_dt(struct csi_state *state) return PTR_ERR(state->rst); } + if (state->pdata->use_phydrv) { + state->phy = devm_of_phy_get_by_index(dev, dev->of_node, 0); + if (IS_ERR(state->phy)) + return dev_err_probe(dev, PTR_ERR(state->phy), "Can't get mipi phy\n"); + + return 0; + } + ret = of_property_read_u32_array(np, "fsl,mipi-phy-gpr", out_val, ARRAY_SIZE(out_val)); if (ret) { @@ -979,6 +1024,7 @@ static void imx8mq_mipi_csi_remove(struct platform_device *pdev) static const struct of_device_id imx8mq_mipi_csi_of_match[] = { { .compatible = "fsl,imx8mq-mipi-csi2", .data = &imx8mq_data }, + { .compatible = "fsl,imx8qxp-mipi-csi2", .data = &imx8qxp_data }, { /* sentinel */ }, }; MODULE_DEVICE_TABLE(of, imx8mq_mipi_csi_of_match);