From patchwork Thu Mar 26 10:34:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Riesen X-Patchwork-Id: 11459787 X-Patchwork-Delegate: kieran@bingham.xyz Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 533ED1668 for ; Thu, 26 Mar 2020 10:40:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 35A8320748 for ; Thu, 26 Mar 2020 10:40:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727948AbgCZKkx (ORCPT ); Thu, 26 Mar 2020 06:40:53 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:51695 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727743AbgCZKkw (ORCPT ); Thu, 26 Mar 2020 06:40:52 -0400 Received: from mail.cetitecgmbh.com ([87.190.42.90]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MKbc2-1iwaly3w20-00Kud7 for ; Thu, 26 Mar 2020 11:40:50 +0100 Received: from pflvmailgateway.corp.cetitec.com (unknown [127.0.0.1]) by mail.cetitecgmbh.com (Postfix) with ESMTP id BB87564FF16 for ; Thu, 26 Mar 2020 10:40:50 +0000 (UTC) X-Virus-Scanned: amavisd-new at cetitec.com Received: from mail.cetitecgmbh.com ([127.0.0.1]) by pflvmailgateway.corp.cetitec.com (pflvmailgateway.corp.cetitec.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GLkfRKDdRAHB for ; Thu, 26 Mar 2020 11:40:50 +0100 (CET) Received: from pfwsexchange.corp.cetitec.com (unknown [10.10.1.99]) by mail.cetitecgmbh.com (Postfix) with ESMTPS id 5C56164FB26 for ; Thu, 26 Mar 2020 11:40:50 +0100 (CET) Received: from pflmari.corp.cetitec.com (10.8.5.79) by PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 26 Mar 2020 11:40:50 +0100 Received: by pflmari.corp.cetitec.com (Postfix, from userid 1000) id 182C1804FD; Thu, 26 Mar 2020 11:34:57 +0100 (CET) Date: Thu, 26 Mar 2020 11:34:57 +0100 From: Alex Riesen To: Kieran Bingham CC: Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , "Laurent Pinchart" , Rob Herring , Mark Rutland , Kuninori Morimoto , , , , , Subject: [PATCH v4 1/9] media: adv748x: fix end-of-line terminators in diagnostic statements Message-ID: Mail-Followup-To: Alex Riesen , Kieran Bingham , Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , Laurent Pinchart , Rob Herring , Mark Rutland , Kuninori Morimoto , devel@driverdev.osuosl.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Originating-IP: [10.8.5.79] X-ClientProxiedBy: PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) To PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) X-EsetResult: clean, is OK X-EsetId: 37303A290D7F536A6D7C67 X-Provags-ID: V03:K1:Ps6i356mxVoV+d6s6+yUR2exlZMpoFpO1kRdT9y8K4O43OUmwB9 3VppWAAF6kNv3F/W7yPqJb1hQ6Qox3hrWKnZ2BFGEOO64y7lPZuH2/9OUFkP+4LfiFPPsBX TXWPMQdv0iUR/UMz1pcclJDy3mPcovjf5dMbUxaUwaLLUoQDZ2Rvn9/RL3bameK0RUxTpgN saSeucHn56j0ben6F2vhA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:FUVO1VvYd8o=:i5bEKkZw97ltteN5QFaWXN XH3Pe7Pc6eXVkJJfvt2yqf4Xeezy6QaKJYiWq/m209me7wF4KjgfENovSFFwd5pnHKVRk48uw wkt2hy6n8JuLXCrsHq+uUM5XGDkQs1prsbAqX7fbgdDfaa+jlFvHlVxAZewotRsWGyyTz0hrV r3xEfSrT6wegfHL3nzn6u4XsxA8vZsc1MZdX8A4NMhvfbSfC6VPWggZ+K+8LLgQfEqlZvbaVx 55MZCVQiW7E06TJwwIuCoMHFa2T7doL2HOp1VSwpnS7pJLauaxj0c4RrtJLYbJ2krvqABqeSu 6Gjuz0jfUdULKiuKLwhRo4PwltTyjeVm47E2Pbzee+OaymSICzKJ6HgvjK50SSUMRGhE9ecNe 1IJxHBUsb2B7DQ66G3Da7HjMJaLzdGL7e9xhLONoSFs0BRMemyJ3ir2V1CT8Gadf83r5/GqnC foB4q8qfzzpcCPYueFEHzfOk/ELY6RPKrA8+USW+IEXEGH0nYHDdvoznjPA9k5/7rIKnAqLm2 sRkSy5aOSPjbnUw3t4VtD8SRbv4DRr2RMb+ip3WqRhVVuiWpjFeANjliNHiV5viy+s5op4+W9 OoO+76u7gRVsYFDR+cUbASYAaC7r6NOJD+d6mfj8cjQIqOTN6s1T2XnikmQyIHm4ilZlvGfgC uRxsmTl7MlWs3KXrGRGgy4mK/UvdqP4u59RMcCQhBncGTr10/TptsHJNRpuM+0PiVKeaZqixh qofrMtZ9CbTE7vPTpp0wYp5/SS6bG+k8t+aJV6iLKPdTcXZnidzqQyxvGtTFA+bUZlzk+FlNY radHxisvO8UlI4kI0zhl0XRlzqZmCrgdmNZgIsq7XXDdaB8VNXsvokdm7UKIoAn3SGdog1P Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org Signed-off-by: Alexander Riesen Reviewed-by: Laurent Pinchart --- drivers/media/i2c/adv748x/adv748x-core.c | 24 ++++++++++++------------ drivers/media/i2c/adv748x/adv748x-csi2.c | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/media/i2c/adv748x/adv748x-core.c b/drivers/media/i2c/adv748x/adv748x-core.c index 23e02ff27b17..c3fb113cef62 100644 --- a/drivers/media/i2c/adv748x/adv748x-core.c +++ b/drivers/media/i2c/adv748x/adv748x-core.c @@ -623,11 +623,11 @@ static int adv748x_parse_dt(struct adv748x_state *state) for_each_endpoint_of_node(state->dev->of_node, ep_np) { of_graph_parse_endpoint(ep_np, &ep); - adv_info(state, "Endpoint %pOF on port %d", ep.local_node, + adv_info(state, "Endpoint %pOF on port %d\n", ep.local_node, ep.port); if (ep.port >= ADV748X_PORT_MAX) { - adv_err(state, "Invalid endpoint %pOF on port %d", + adv_err(state, "Invalid endpoint %pOF on port %d\n", ep.local_node, ep.port); continue; @@ -635,7 +635,7 @@ static int adv748x_parse_dt(struct adv748x_state *state) if (state->endpoints[ep.port]) { adv_err(state, - "Multiple port endpoints are not supported"); + "Multiple port endpoints are not supported\n"); continue; } @@ -702,62 +702,62 @@ static int adv748x_probe(struct i2c_client *client) /* Discover and process ports declared by the Device tree endpoints */ ret = adv748x_parse_dt(state); if (ret) { - adv_err(state, "Failed to parse device tree"); + adv_err(state, "Failed to parse device tree\n"); goto err_free_mutex; } /* Configure IO Regmap region */ ret = adv748x_configure_regmap(state, ADV748X_PAGE_IO); if (ret) { - adv_err(state, "Error configuring IO regmap region"); + adv_err(state, "Error configuring IO regmap region\n"); goto err_cleanup_dt; } ret = adv748x_identify_chip(state); if (ret) { - adv_err(state, "Failed to identify chip"); + adv_err(state, "Failed to identify chip\n"); goto err_cleanup_dt; } /* Configure remaining pages as I2C clients with regmap access */ ret = adv748x_initialise_clients(state); if (ret) { - adv_err(state, "Failed to setup client regmap pages"); + adv_err(state, "Failed to setup client regmap pages\n"); goto err_cleanup_clients; } /* SW reset ADV748X to its default values */ ret = adv748x_reset(state); if (ret) { - adv_err(state, "Failed to reset hardware"); + adv_err(state, "Failed to reset hardware\n"); goto err_cleanup_clients; } /* Initialise HDMI */ ret = adv748x_hdmi_init(&state->hdmi); if (ret) { - adv_err(state, "Failed to probe HDMI"); + adv_err(state, "Failed to probe HDMI\n"); goto err_cleanup_clients; } /* Initialise AFE */ ret = adv748x_afe_init(&state->afe); if (ret) { - adv_err(state, "Failed to probe AFE"); + adv_err(state, "Failed to probe AFE\n"); goto err_cleanup_hdmi; } /* Initialise TXA */ ret = adv748x_csi2_init(state, &state->txa); if (ret) { - adv_err(state, "Failed to probe TXA"); + adv_err(state, "Failed to probe TXA\n"); goto err_cleanup_afe; } /* Initialise TXB */ ret = adv748x_csi2_init(state, &state->txb); if (ret) { - adv_err(state, "Failed to probe TXB"); + adv_err(state, "Failed to probe TXB\n"); goto err_cleanup_txa; } diff --git a/drivers/media/i2c/adv748x/adv748x-csi2.c b/drivers/media/i2c/adv748x/adv748x-csi2.c index 2091cda50935..c43ce5d78723 100644 --- a/drivers/media/i2c/adv748x/adv748x-csi2.c +++ b/drivers/media/i2c/adv748x/adv748x-csi2.c @@ -72,7 +72,7 @@ static int adv748x_csi2_registered(struct v4l2_subdev *sd) struct adv748x_state *state = tx->state; int ret; - adv_dbg(state, "Registered %s (%s)", is_txa(tx) ? "TXA":"TXB", + adv_dbg(state, "Registered %s (%s)\n", is_txa(tx) ? "TXA":"TXB", sd->name); /* From patchwork Thu Mar 26 10:34:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Riesen X-Patchwork-Id: 11459797 X-Patchwork-Delegate: kieran@bingham.xyz Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AD3171668 for ; Thu, 26 Mar 2020 10:44:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8E77520748 for ; Thu, 26 Mar 2020 10:44:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727975AbgCZKoM (ORCPT ); Thu, 26 Mar 2020 06:44:12 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:50941 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727560AbgCZKoM (ORCPT ); Thu, 26 Mar 2020 06:44:12 -0400 Received: from mail.cetitecgmbh.com ([87.190.42.90]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MKsax-1iwrln0xI5-00LBa3 for ; Thu, 26 Mar 2020 11:44:10 +0100 Received: from pflvmailgateway.corp.cetitec.com (unknown [127.0.0.1]) by mail.cetitecgmbh.com (Postfix) with ESMTP id 06CDD65034C for ; Thu, 26 Mar 2020 10:44:10 +0000 (UTC) X-Virus-Scanned: amavisd-new at cetitec.com Received: from mail.cetitecgmbh.com ([127.0.0.1]) by pflvmailgateway.corp.cetitec.com (pflvmailgateway.corp.cetitec.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Apwmn9gOKOiS for ; Thu, 26 Mar 2020 11:44:09 +0100 (CET) Received: from pfwsexchange.corp.cetitec.com (unknown [10.10.1.99]) by mail.cetitecgmbh.com (Postfix) with ESMTPS id 96F1564EAD9 for ; Thu, 26 Mar 2020 11:44:09 +0100 (CET) Received: from pflmari.corp.cetitec.com (10.8.5.79) by PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 26 Mar 2020 11:44:09 +0100 Received: by pflmari.corp.cetitec.com (Postfix, from userid 1000) id 4A517804FE; Thu, 26 Mar 2020 11:34:59 +0100 (CET) Date: Thu, 26 Mar 2020 11:34:59 +0100 From: Alex Riesen To: Kieran Bingham CC: Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , "Laurent Pinchart" , Rob Herring , Mark Rutland , Kuninori Morimoto , , , , , Subject: [PATCH v4 2/9] media: adv748x: include everything adv748x.h needs into the file Message-ID: Mail-Followup-To: Alex Riesen , Kieran Bingham , Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , Laurent Pinchart , Rob Herring , Mark Rutland , Kuninori Morimoto , devel@driverdev.osuosl.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Originating-IP: [10.8.5.79] X-ClientProxiedBy: PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) To PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) X-EsetResult: clean, is OK X-EsetId: 37303A290D7F536A6D7C67 X-Provags-ID: V03:K1:zSDVYk5FU66WNv5yhQYtlgol5uesyMR19T48xh6s31MH8HvjrO+ dg2o1ugSGBP260vM2gI50ouNtclJR/t1VeP2qxxdnXRv93GDdGvgPE2dESyJ5WrdJYZqWdy a0vxpOkJBtkgKWhJ2VHgAzoj3yRGT+7z5ilEL49apUwXVQAIA+3ka4d1cTmc1xrW2AwTRqz mzZrCLGtK7f8oiiPhC43g== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:cZ4qigDCaWc=:7k4ShI6VMcv8VfqrX8w3az Iyx5W+JjTec0dcOki0xevlEBgE5oLOaNK42quPcS3wl2BXf3vxWtylZ51YK8BHMXD01KchFnK ZkAAc5P4aKoDXa3ael2sdYWawxReJ3BiGSVc+0cS+mvKWTXlLViGMu62jIL42SsG5F5QmZFAc uo9WBS8Ke22S1Ruu1SNkfaFGnaI+VKnzHiHxmVIxcJtSSPzoMTFfTEb/jdDTZMkYzf9QOV1f+ FE+3QOkYVJSFUktuZFCKl6ZEP7a5zTxIOgWaRRVBVF2QXDkF4jZ4w+oq4AEyG/w/WPBgu97EY sS7FriI2pOeslpBFhYgJJ6vvOUd2qKh6aWFcp4EGPYdMrHHtKKi8LFSpTyCjYPOBCKuppfF3b 09ZKTrj4jUnN2tKj7LBmk6ERtS+ttFvMbQmJINJ8P6CJpvozq6fBQY3GWVl9r+HporvS2iTcz 1rbSCvnJKD8UBR2iqhsNv3zNsttYAp+brZQrrv9TcvWVieBPlAEKSZv7BYyh4wTRLNpVDhKOb HMte0IfDtG1kgqTcmakRSaMnr0PTUYm+f5yhuOpyaRur/T4HIRvi5ozn5ecm0V0cu08eQhzZo Pzc8P/kK3jItI908yICellajiyXNHw11U1nHPjM1JFFvvR5T5HH8Kj4dhVzvriK9x/ovdgzkp EZuAA6CN7USBg7o+2mRkb7f5esFYQguNbwUI4ZmF1KZA0XdEJZbb7LegcLsxIzzp7RvcNuhGJ OxJV4fkTrFta6tDVWMOBlma2p+vjxFV2hpcuc3s1fD67wscpQaUeDYqB1JVeKFnqolBlKy38f memzm05Zc3DsW2tAwKnFWvwtbeX1dbcDh2J62g0i6NIInBS2NY9DRPtzJr61deKujY1moi2 Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org To follow the established practice of not depending on others to pull everything in. While at it, make sure it stays like this. Signed-off-by: Alexander Riesen Reviewed-by: Laurent Pinchart --- drivers/media/i2c/adv748x/adv748x-afe.c | 6 ++---- drivers/media/i2c/adv748x/adv748x-core.c | 6 ++---- drivers/media/i2c/adv748x/adv748x-csi2.c | 6 ++---- drivers/media/i2c/adv748x/adv748x-hdmi.c | 6 ++---- drivers/media/i2c/adv748x/adv748x.h | 2 ++ 5 files changed, 10 insertions(+), 16 deletions(-) diff --git a/drivers/media/i2c/adv748x/adv748x-afe.c b/drivers/media/i2c/adv748x/adv748x-afe.c index dbbb1e4d6363..5a25d1fbe25f 100644 --- a/drivers/media/i2c/adv748x/adv748x-afe.c +++ b/drivers/media/i2c/adv748x/adv748x-afe.c @@ -6,18 +6,16 @@ * Copyright (C) 2017 Renesas Electronics Corp. */ +#include "adv748x.h" + #include #include #include #include -#include -#include #include #include -#include "adv748x.h" - /* ----------------------------------------------------------------------------- * SDP */ diff --git a/drivers/media/i2c/adv748x/adv748x-core.c b/drivers/media/i2c/adv748x/adv748x-core.c index c3fb113cef62..5c59aad319d1 100644 --- a/drivers/media/i2c/adv748x/adv748x-core.c +++ b/drivers/media/i2c/adv748x/adv748x-core.c @@ -10,6 +10,8 @@ * Kieran Bingham */ +#include "adv748x.h" + #include #include #include @@ -20,14 +22,10 @@ #include #include -#include -#include #include #include #include -#include "adv748x.h" - /* ----------------------------------------------------------------------------- * Register manipulation */ diff --git a/drivers/media/i2c/adv748x/adv748x-csi2.c b/drivers/media/i2c/adv748x/adv748x-csi2.c index c43ce5d78723..c00d4f347d95 100644 --- a/drivers/media/i2c/adv748x/adv748x-csi2.c +++ b/drivers/media/i2c/adv748x/adv748x-csi2.c @@ -5,15 +5,13 @@ * Copyright (C) 2017 Renesas Electronics Corp. */ +#include "adv748x.h" + #include #include -#include -#include #include -#include "adv748x.h" - static int adv748x_csi2_set_virtual_channel(struct adv748x_csi2 *tx, unsigned int vc) { diff --git a/drivers/media/i2c/adv748x/adv748x-hdmi.c b/drivers/media/i2c/adv748x/adv748x-hdmi.c index c557f8fdf11a..f598acec3b5c 100644 --- a/drivers/media/i2c/adv748x/adv748x-hdmi.c +++ b/drivers/media/i2c/adv748x/adv748x-hdmi.c @@ -5,18 +5,16 @@ * Copyright (C) 2017 Renesas Electronics Corp. */ +#include "adv748x.h" + #include #include -#include -#include #include #include #include -#include "adv748x.h" - /* ----------------------------------------------------------------------------- * HDMI and CP */ diff --git a/drivers/media/i2c/adv748x/adv748x.h b/drivers/media/i2c/adv748x/adv748x.h index fccb388ce179..09aab4138c3f 100644 --- a/drivers/media/i2c/adv748x/adv748x.h +++ b/drivers/media/i2c/adv748x/adv748x.h @@ -19,6 +19,8 @@ */ #include +#include +#include #ifndef _ADV748X_H_ #define _ADV748X_H_ From patchwork Thu Mar 26 10:35:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Riesen X-Patchwork-Id: 11459849 X-Patchwork-Delegate: kieran@bingham.xyz Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9DF2C6CA for ; Thu, 26 Mar 2020 11:08:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7FB8720409 for ; Thu, 26 Mar 2020 11:08:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728077AbgCZLIz (ORCPT ); Thu, 26 Mar 2020 07:08:55 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:50817 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727688AbgCZLIz (ORCPT ); Thu, 26 Mar 2020 07:08:55 -0400 Received: from mail.cetitecgmbh.com ([87.190.42.90]) by mrelayeu.kundenserver.de (mreue009 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MuDPh-1jVurQ2ec9-00uclg for ; Thu, 26 Mar 2020 12:08:53 +0100 Received: from pflvmailgateway.corp.cetitec.com (unknown [127.0.0.1]) by mail.cetitecgmbh.com (Postfix) with ESMTP id 6417E64FD25 for ; Thu, 26 Mar 2020 11:08:53 +0000 (UTC) X-Virus-Scanned: amavisd-new at cetitec.com Received: from mail.cetitecgmbh.com ([127.0.0.1]) by pflvmailgateway.corp.cetitec.com (pflvmailgateway.corp.cetitec.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uIV8B1SyGEks for ; Thu, 26 Mar 2020 12:08:53 +0100 (CET) Received: from pfwsexchange.corp.cetitec.com (unknown [10.10.1.99]) by mail.cetitecgmbh.com (Postfix) with ESMTPS id 0626E64F787 for ; Thu, 26 Mar 2020 12:08:53 +0100 (CET) Received: from pflmari.corp.cetitec.com (10.8.5.79) by PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 26 Mar 2020 12:08:52 +0100 Received: by pflmari.corp.cetitec.com (Postfix, from userid 1000) id 5049380500; Thu, 26 Mar 2020 11:35:23 +0100 (CET) Date: Thu, 26 Mar 2020 11:35:23 +0100 From: Alex Riesen To: Kieran Bingham CC: Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , "Laurent Pinchart" , Rob Herring , Mark Rutland , Kuninori Morimoto , , , , , Subject: [PATCH v4 3/9] media: adv748x: reduce amount of code for bitwise modifications of device registers Message-ID: <88950969b1d16ff5fcd1b3458356c4cf5a9e6cff.1585218857.git.alexander.riesen@cetitec.com> Mail-Followup-To: Alex Riesen , Kieran Bingham , Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , Laurent Pinchart , Rob Herring , Mark Rutland , Kuninori Morimoto , devel@driverdev.osuosl.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Originating-IP: [10.8.5.79] X-ClientProxiedBy: PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) To PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) X-EsetResult: clean, is OK X-EsetId: 37303A290D7F536A6D7C67 X-Provags-ID: V03:K1:dEnU+TJY/EQ47A/QYMKKfg5/dkYLXo2nZHHvjkx3AwN5Kxf4opd bWKWtMZ8mCgt5mGsl6hX0nUw+cwUcqETOUPwQedlHaMoBc4joXqDtBp2A28mk5GyKAS2r2m A94nC4iUirx523BXau0jZ8lmJLJ8cnAyLlqCdHJIGnJ1HKu6psTZwJutTicLhimSLBOYIpr 2K/ioqSi4xNPvadIhLDxA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:OC04nKps/AI=:oU4CeL4wkxD1fVZSind9K3 qC+t6O97FqcYfX/OYaJGm6Uk8u5txUGzuq+i9Qbhf1ECuogHW+Ze7oeHDi8SNX2Jl6Wh/QLMu UY72c7JEayn+IqXGoxIfYiKCooCOxV98lDC/+V9ROAJQypXtQLYNkfa0I8lJnVY1amo8W8Lrh 0skAUgWqzibF5pvAIUI0kDDmbs1xjkhGS2EKJ6ShG7obXTbPQCsQOHhunZQJ+J3ozT+nQTWwi WAaTnTpuIQW6sKp1OPgCCHQ2Mo8fgqJJdK2quL3SAXLLja9TX3lC6irDeOqKSmTiMXKr1RW7d DaDnlMzi53nGRT1KrGbpEiiYSzC5QG6Bs2EPPQXlYumcYPRxCC7EqXGbDFRvsCfcBxAAVGBeC coLA9+eM+XiD3Qpx4NkozYHLjnUoSlD7QAXfux68yMNcnzRB7S7QxFgyvM1TKMa90cgKHknsH v5tvcu1s0/Q4say8TVx85wyH2fHz5YsbMbLbBmBwnRLV+MfQn2UxIEk1Q9xwUvPMEzQvBCFbj d8+RoWJgEtQ/wEIUWgq6NdoprpatYHFv8gj4nZiAnsTP+Sl3h+k+Qtlla4isoiFpy4CYvWpPO BMJph88mfar7wEbMXvNpgDc/TKKUdQbeH6AbIVFSi6iVB6mt7V0pWPKV0j3lvGXmE+jorYQxW XdqbPRwzl+iVLCcF9XloHMfyvRocqrkMox3F0cvpK2xjzIjQATYcuNWWQnuivsJzpQphD0sFM hiThj4irCZrrt04WVf2zz/SzxVyKvkopZJm3B8y3/+soD0x12CF+oCxXYtTSp5ykf+kzmiJQu YqcOtaVGzPm/ceEjoH1Igj3VUyalD7ELA8ChtZVtipEborIwO9weiOzcNcC6nqBtGXue3Uu Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org The regmap provides a convenient utility for this. The hdmi_* and dpll_* register modification macros added for symmetry with the existing operations (io_*, sdp_*). Signed-off-by: Alexander Riesen Reviewed-by: Laurent Pinchart --- v3: remove _update name in favor of existing _clrset --- drivers/media/i2c/adv748x/adv748x-core.c | 6 ++++++ drivers/media/i2c/adv748x/adv748x.h | 14 +++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/drivers/media/i2c/adv748x/adv748x-core.c b/drivers/media/i2c/adv748x/adv748x-core.c index 5c59aad319d1..8580e6624276 100644 --- a/drivers/media/i2c/adv748x/adv748x-core.c +++ b/drivers/media/i2c/adv748x/adv748x-core.c @@ -133,6 +133,12 @@ static int adv748x_write_check(struct adv748x_state *state, u8 page, u8 reg, return *error; } +int adv748x_update_bits(struct adv748x_state *state, u8 page, u8 reg, u8 mask, + u8 value) +{ + return regmap_update_bits(state->regmap[page], reg, mask, value); +} + /* adv748x_write_block(): Write raw data with a maximum of I2C_SMBUS_BLOCK_MAX * size to one or more registers. * diff --git a/drivers/media/i2c/adv748x/adv748x.h b/drivers/media/i2c/adv748x/adv748x.h index 09aab4138c3f..0a9d78c2870b 100644 --- a/drivers/media/i2c/adv748x/adv748x.h +++ b/drivers/media/i2c/adv748x/adv748x.h @@ -393,25 +393,33 @@ int adv748x_write(struct adv748x_state *state, u8 page, u8 reg, u8 value); int adv748x_write_block(struct adv748x_state *state, int client_page, unsigned int init_reg, const void *val, size_t val_len); +int adv748x_update_bits(struct adv748x_state *state, u8 page, u8 reg, + u8 mask, u8 value); #define io_read(s, r) adv748x_read(s, ADV748X_PAGE_IO, r) #define io_write(s, r, v) adv748x_write(s, ADV748X_PAGE_IO, r, v) -#define io_clrset(s, r, m, v) io_write(s, r, (io_read(s, r) & ~(m)) | (v)) +#define io_clrset(s, r, m, v) adv748x_update_bits(s, ADV748X_PAGE_IO, r, m, v) #define hdmi_read(s, r) adv748x_read(s, ADV748X_PAGE_HDMI, r) #define hdmi_read16(s, r, m) (((hdmi_read(s, r) << 8) | hdmi_read(s, (r)+1)) & (m)) #define hdmi_write(s, r, v) adv748x_write(s, ADV748X_PAGE_HDMI, r, v) +#define hdmi_clrset(s, r, m, v) \ + adv748x_update_bits(s, ADV748X_PAGE_HDMI, r, m, v) + +#define dpll_read(s, r) adv748x_read(s, ADV748X_PAGE_DPLL, r) +#define dpll_clrset(s, r, m, v) \ + adv748x_update_bits(s, ADV748X_PAGE_DPLL, r, m, v) #define repeater_read(s, r) adv748x_read(s, ADV748X_PAGE_REPEATER, r) #define repeater_write(s, r, v) adv748x_write(s, ADV748X_PAGE_REPEATER, r, v) #define sdp_read(s, r) adv748x_read(s, ADV748X_PAGE_SDP, r) #define sdp_write(s, r, v) adv748x_write(s, ADV748X_PAGE_SDP, r, v) -#define sdp_clrset(s, r, m, v) sdp_write(s, r, (sdp_read(s, r) & ~(m)) | (v)) +#define sdp_clrset(s, r, m, v) adv748x_update_bits(s, ADV748X_PAGE_SDP, r, m, v) #define cp_read(s, r) adv748x_read(s, ADV748X_PAGE_CP, r) #define cp_write(s, r, v) adv748x_write(s, ADV748X_PAGE_CP, r, v) -#define cp_clrset(s, r, m, v) cp_write(s, r, (cp_read(s, r) & ~(m)) | (v)) +#define cp_clrset(s, r, m, v) adv748x_update_bits(s, ADV748X_PAGE_CP, r, m, v) #define tx_read(t, r) adv748x_read(t->state, t->page, r) #define tx_write(t, r, v) adv748x_write(t->state, t->page, r, v) From patchwork Thu Mar 26 10:35:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Riesen X-Patchwork-Id: 11459805 X-Patchwork-Delegate: kieran@bingham.xyz Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9533792A for ; Thu, 26 Mar 2020 10:49:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8069420748 for ; Thu, 26 Mar 2020 10:49:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727910AbgCZKts (ORCPT ); Thu, 26 Mar 2020 06:49:48 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:53377 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726338AbgCZKts (ORCPT ); Thu, 26 Mar 2020 06:49:48 -0400 Received: from mail.cetitecgmbh.com ([87.190.42.90]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MGQWr-1j1FCh1kVB-00Gncf for ; Thu, 26 Mar 2020 11:49:46 +0100 Received: from pflvmailgateway.corp.cetitec.com (unknown [127.0.0.1]) by mail.cetitecgmbh.com (Postfix) with ESMTP id 3D93765047A for ; Thu, 26 Mar 2020 10:49:46 +0000 (UTC) X-Virus-Scanned: amavisd-new at cetitec.com Received: from mail.cetitecgmbh.com ([127.0.0.1]) by pflvmailgateway.corp.cetitec.com (pflvmailgateway.corp.cetitec.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7-s9PfSjAtCk for ; Thu, 26 Mar 2020 11:49:45 +0100 (CET) Received: from pfwsexchange.corp.cetitec.com (unknown [10.10.1.99]) by mail.cetitecgmbh.com (Postfix) with ESMTPS id DB50C64C209 for ; Thu, 26 Mar 2020 11:49:45 +0100 (CET) Received: from pflmari.corp.cetitec.com (10.8.5.79) by PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 26 Mar 2020 11:49:45 +0100 Received: by pflmari.corp.cetitec.com (Postfix, from userid 1000) id 4A99B80501; Thu, 26 Mar 2020 11:35:25 +0100 (CET) Date: Thu, 26 Mar 2020 11:35:25 +0100 From: Alex Riesen To: Kieran Bingham CC: Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , "Laurent Pinchart" , Rob Herring , Mark Rutland , Kuninori Morimoto , , , , , Subject: [PATCH v4 4/9] media: adv748x: add definitions for audio output related registers Message-ID: Mail-Followup-To: Alex Riesen , Kieran Bingham , Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , Laurent Pinchart , Rob Herring , Mark Rutland , Kuninori Morimoto , devel@driverdev.osuosl.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Originating-IP: [10.8.5.79] X-ClientProxiedBy: PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) To PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) X-EsetResult: clean, is OK X-EsetId: 37303A290D7F536A6D7C67 X-Provags-ID: V03:K1:zhCa0nN+JUbF4TKnnRMo6CRKFni9zSuSstNV0CAEjXMQWPnbeyi Rk6K9gN5ju14SvgpYdVFCC1aHCfRddsN5rWxPLJSfwXCINVhGK83wmaYAMuVJCjhhyc6tMk NJi/TM+4hzGRV3c7y9PhRRSXrhsSjhUihAOkOFhB4YwwtC7lL/H6rzv/ZUz8FqsWl0ovqdC bIL9tRAfLKdpuf7r/EJyA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:bLK/TUmCenE=:BqI8GtTLoVzbMvOwxhFwAR Cw3Ni5hZixaFqtqeLY3nOJViqUywRGiO+xjVNp0V2+xURnGMlgwUaDukQS7ajbaDJkGXTsqYP N6YY3YNvjW8tD570bUnQBsOvcVU+TOgt9li+br8LjqwQiO6uQWzxf1H5/sco4QKwUmvJwx7ty W7Sc3SxMvUbGu/Bay4m9vYbmDSXwkMrbBbddotea3vMbbgzZqRDExbDu1dopS3/wqFhytTk0z zscXbXap4yxvGpnj+VEAf6MyMw0d6g/MUaf3JinZENSQ35Fci/qRXxkntir+qYf4jRUA7bZYO VujMd8K/EcSV7Xd+LO8gXWZix30hMuIKfVqw8nnFZ92cvkC7TCwZK+U4Q2EZsNsBRStVFTXYr DsMxoTCqnsgog7cERpH6+Tfl7089IbOaVgdxKZm3R6b4oAICarm2smMO616hRhnyOg0qETWum aFGjhtWRz5+4VJIaSER4iHYuwCtxVKkpsWEob7maAt445bp1GmMYYhTw6Sc94JtFFebmLaX8j T9SOHErsCQuKcx+KjSPolHBWQ6ij+1UbdvAP3YI6SLLDe9TGxI91OLkMI7zkm14YllZfgQE7P IABFTrzohuZ7UphEuTuwyZLNkPJrIZegHY/JiaMNjyAyNV8KJTkvPcprda7/IZ9PtJTve1kVr 0UQJvSe3FNaTjJIjK7pFl67g5sMuquPpI5OIt/RPXrpFeM9q4kCtMotbzwW/nMH78o6oWjL5t cp1ijDSNJ+Tzz7uCLP2n+GljfuczRF7qad3p3Z7JifGWwyDsfesq1Yoy0NupZU/zR1Bt1Dl5i Vqsk2WSgLTf+et8kceoso3KiRJE0kihMLjVUBi4JdkP86LzJ1OvwtESOJh2DRGyjf0cYaRZ Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org Signed-off-by: Alexander Riesen --- drivers/media/i2c/adv748x/adv748x.h | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/media/i2c/adv748x/adv748x.h b/drivers/media/i2c/adv748x/adv748x.h index 0a9d78c2870b..1a1ea70086c6 100644 --- a/drivers/media/i2c/adv748x/adv748x.h +++ b/drivers/media/i2c/adv748x/adv748x.h @@ -226,6 +226,11 @@ struct adv748x_state { #define ADV748X_IO_VID_STD 0x05 +#define ADV748X_IO_PAD_CONTROLS 0x0e +#define ADV748X_IO_PAD_CONTROLS_TRI_AUD BIT(5) +#define ADV748X_IO_PAD_CONTROLS_PDN_AUD BIT(1) +#define ADV748X_IO_PAD_CONTROLS1 0x1d + #define ADV748X_IO_10 0x10 /* io_reg_10 */ #define ADV748X_IO_10_CSI4_EN BIT(7) #define ADV748X_IO_10_CSI1_EN BIT(6) @@ -248,7 +253,21 @@ struct adv748x_state { #define ADV748X_IO_REG_FF 0xff #define ADV748X_IO_REG_FF_MAIN_RESET 0xff +/* DPLL Map */ +#define ADV748X_DPLL_MCLK_FS 0xb5 +#define ADV748X_DPLL_MCLK_FS_N_MASK GENMASK(2, 0) + /* HDMI RX Map */ +#define ADV748X_HDMI_I2S 0x03 /* I2S mode and width */ +#define ADV748X_HDMI_I2SBITWIDTH_MASK GENMASK(4, 0) +#define ADV748X_HDMI_I2SOUTMODE_SHIFT 5 +#define ADV748X_HDMI_I2SOUTMODE_MASK \ + GENMASK(6, ADV748X_HDMI_I2SOUTMODE_SHIFT) +#define ADV748X_I2SOUTMODE_I2S 0 +#define ADV748X_I2SOUTMODE_RIGHT_J 1 +#define ADV748X_I2SOUTMODE_LEFT_J 2 +#define ADV748X_I2SOUTMODE_SPDIF 3 + #define ADV748X_HDMI_LW1 0x07 /* line width_1 */ #define ADV748X_HDMI_LW1_VERT_FILTER BIT(7) #define ADV748X_HDMI_LW1_DE_REGEN BIT(5) @@ -260,6 +279,16 @@ struct adv748x_state { #define ADV748X_HDMI_F1H1 0x0b /* field1 height_1 */ #define ADV748X_HDMI_F1H1_INTERLACED BIT(5) +#define ADV748X_HDMI_MUTE_CTRL 0x1a +#define ADV748X_HDMI_MUTE_CTRL_MUTE_AUDIO BIT(4) +#define ADV748X_HDMI_MUTE_CTRL_WAIT_UNMUTE_MASK GENMASK(3, 1) +#define ADV748X_HDMI_MUTE_CTRL_NOT_AUTO_UNMUTE BIT(0) + +#define ADV748X_HDMI_AUDIO_MUTE_SPEED 0x0f +#define ADV748X_HDMI_AUDIO_MUTE_SPEED_MASK GENMASK(4, 0) +#define ADV748X_MAN_AUDIO_DL_BYPASS BIT(7) +#define ADV748X_AUDIO_DELAY_LINE_BYPASS BIT(6) + #define ADV748X_HDMI_HFRONT_PORCH 0x20 /* hsync_front_porch_1 */ #define ADV748X_HDMI_HFRONT_PORCH_MASK 0x1fff @@ -281,6 +310,9 @@ struct adv748x_state { #define ADV748X_HDMI_TMDS_1 0x51 /* hdmi_reg_51 */ #define ADV748X_HDMI_TMDS_2 0x52 /* hdmi_reg_52 */ +#define ADV748X_HDMI_REG_6D 0x6d /* hdmi_reg_6d */ +#define ADV748X_I2S_TDM_MODE_ENABLE BIT(7) + /* HDMI RX Repeater Map */ #define ADV748X_REPEATER_EDID_SZ 0x70 /* primary_edid_size */ #define ADV748X_REPEATER_EDID_SZ_SHIFT 4 From patchwork Thu Mar 26 10:35:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Riesen X-Patchwork-Id: 11459845 X-Patchwork-Delegate: kieran@bingham.xyz Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7622B159A for ; Thu, 26 Mar 2020 11:07:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4EF4220409 for ; Thu, 26 Mar 2020 11:07:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727560AbgCZLHj (ORCPT ); Thu, 26 Mar 2020 07:07:39 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:46233 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727928AbgCZLHj (ORCPT ); Thu, 26 Mar 2020 07:07:39 -0400 Received: from mail.cetitecgmbh.com ([87.190.42.90]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Myb8N-1jRXBV0KR3-00ywHc for ; Thu, 26 Mar 2020 12:07:36 +0100 Received: from pflvmailgateway.corp.cetitec.com (unknown [127.0.0.1]) by mail.cetitecgmbh.com (Postfix) with ESMTP id D100B64FD25 for ; Thu, 26 Mar 2020 11:07:35 +0000 (UTC) X-Virus-Scanned: amavisd-new at cetitec.com Received: from mail.cetitecgmbh.com ([127.0.0.1]) by pflvmailgateway.corp.cetitec.com (pflvmailgateway.corp.cetitec.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nxexiKL3q8Ts for ; Thu, 26 Mar 2020 12:07:35 +0100 (CET) Received: from pfwsexchange.corp.cetitec.com (unknown [10.10.1.99]) by mail.cetitecgmbh.com (Postfix) with ESMTPS id 33AC564E22C for ; Thu, 26 Mar 2020 12:07:35 +0100 (CET) Received: from pflmari.corp.cetitec.com (10.8.5.79) by PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 26 Mar 2020 12:07:34 +0100 Received: by pflmari.corp.cetitec.com (Postfix, from userid 1000) id 0F8A080502; Thu, 26 Mar 2020 11:35:41 +0100 (CET) Date: Thu, 26 Mar 2020 11:35:41 +0100 From: Alex Riesen To: Kieran Bingham CC: Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , "Laurent Pinchart" , Rob Herring , Mark Rutland , Kuninori Morimoto , , , , , , linux-clk Subject: [PATCH v4 5/9] media: adv748x: add support for HDMI audio Message-ID: <4911f57e7c5e8c51e735f9b4ecd08bca740b540d.1585218857.git.alexander.riesen@cetitec.com> Mail-Followup-To: Alex Riesen , Kieran Bingham , Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , Laurent Pinchart , Rob Herring , Mark Rutland , Kuninori Morimoto , devel@driverdev.osuosl.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-clk References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Originating-IP: [10.8.5.79] X-ClientProxiedBy: PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) To PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) X-EsetResult: clean, is OK X-EsetId: 37303A290D7F536A6D7C67 X-Provags-ID: V03:K1:93EtZA9G70PhBXpyXjs22QnEO5HBeH1j9QC/WfVusRx8HKUS6ym yx2W4mCktfELr1xNxIGnlSQjYan3sfDzkzXwtlBYi9Koe/YgUMlRJ7A8W4F/2G9YNfqJrON uuHtPVAQxMxaiBYTODWIqEHLl9bzgCu7mn7SyJgBr2duCil2LeKA4Ql+UvIHI4+G/M55koT XMhtK6gtmhWqUBty73Myw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:mElN048Cuwk=:Z8iNdbYSlfw7wyNrkj8FVl 8/rc52ar2iKNmIlNCBqxQBbLTqT6rjaD3GwKL1IdF4PWgAY8b/5EpMFm6/z4sflRBoO3PtWOe A1FGupLR9Q4ncZjYtEvs5/XDSC95jXVhv3fmTOUQhk+qvjR83Zj75FxsRYerhxr7OsvU+UlOx DnNAfz3sb6gwJS7XRGQ1p4yZibGqwLi1J5KnZX4HWkCbe484A+pt6ikf0psrA4pvJdzyDDd3Y +LHy3E7mT4dSvypFcOesn8Srz7ve5J7NrYqYnnEoRArpJUXqqMizOAtzsSjLYzA2vF7Fx9nCR xlzfPagLDtaAVQZVuwij1JqOVDJWv/joL1GEiK0fLqqKyhlwfodtM0xf1l1uPpvvg2l3cvXZY ILa2WrjnSoCZyK4qR5Ri2VGfM1qp3KZOIudkKmHM3Ys+xERcG9qg50gZsA0m5jTXbXWMZBJfA 82JvOjZ8VGVs0UR/7V8Nnd5/BMHW8hiHmnusbF5CzGwI2bZfERR8iJiRJ2u/YeE0+/pUVjHqH nUGMtzkFxyKQHYuNFNRgY8z1RR91ZMUkJoaYVBa22TxpgXJE6IgJgwhryj2efFGayuqx16M/2 Y1fy8E6l8hvK60SWLv4zsuPp3LvXK+Zf12kHwsVoSzjV+YPwmgELE+1aNE3p2hb8u72HRK4RP c+s4cN5F1AGHwQlm2Ff0OESmQmi+HkcCOJ8q8FRQ4l0MCPR55y72IrtiihZj9/m0R1lJmTw9x Gi7+4JPTaB7Cw0XD4ahjbPQ3fzHx0q5Ta0fYip5S5HKCaA4MKQuZ2BmioHOs757tr34dbB1KE 5DzKwXgppXiTLTsnvFq702KYejWxyt3lJJm4ZKQEAZsZPFn10r8da1z63FFcHk6bByY2djl Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org This adds an implemention of SoC DAI driver which provides access to the I2S port of the device. Signed-off-by: Alexander Riesen --- v3: fix clock registration in case of multiple adv748x devices Suggested-by: Geert Uytterhoeven v4: use clk_hw instead of clk Suggested-by: Stephen Boyd v4: use const for capture snd_soc_pcm_stream instance Suggested-by: Stephen Boyd --- drivers/media/i2c/adv748x/Makefile | 3 +- drivers/media/i2c/adv748x/adv748x-core.c | 9 +- drivers/media/i2c/adv748x/adv748x-dai.c | 261 +++++++++++++++++++++++ drivers/media/i2c/adv748x/adv748x.h | 17 +- 4 files changed, 287 insertions(+), 3 deletions(-) create mode 100644 drivers/media/i2c/adv748x/adv748x-dai.c diff --git a/drivers/media/i2c/adv748x/Makefile b/drivers/media/i2c/adv748x/Makefile index 93844f14cb10..6e7a302ef199 100644 --- a/drivers/media/i2c/adv748x/Makefile +++ b/drivers/media/i2c/adv748x/Makefile @@ -3,6 +3,7 @@ adv748x-objs := \ adv748x-afe.o \ adv748x-core.o \ adv748x-csi2.o \ - adv748x-hdmi.o + adv748x-hdmi.o \ + adv748x-dai.o obj-$(CONFIG_VIDEO_ADV748X) += adv748x.o diff --git a/drivers/media/i2c/adv748x/adv748x-core.c b/drivers/media/i2c/adv748x/adv748x-core.c index 8580e6624276..3513ca138e53 100644 --- a/drivers/media/i2c/adv748x/adv748x-core.c +++ b/drivers/media/i2c/adv748x/adv748x-core.c @@ -765,8 +765,14 @@ static int adv748x_probe(struct i2c_client *client) goto err_cleanup_txa; } + ret = adv748x_dai_init(&state->dai); + if (ret) { + adv_err(state, "Failed to probe DAI\n"); + goto err_cleanup_txb; + } return 0; - +err_cleanup_txb: + adv748x_csi2_cleanup(&state->txb); err_cleanup_txa: adv748x_csi2_cleanup(&state->txa); err_cleanup_afe: @@ -787,6 +793,7 @@ static int adv748x_remove(struct i2c_client *client) { struct adv748x_state *state = i2c_get_clientdata(client); + adv748x_dai_cleanup(&state->dai); adv748x_afe_cleanup(&state->afe); adv748x_hdmi_cleanup(&state->hdmi); diff --git a/drivers/media/i2c/adv748x/adv748x-dai.c b/drivers/media/i2c/adv748x/adv748x-dai.c new file mode 100644 index 000000000000..c9191f8f1ca8 --- /dev/null +++ b/drivers/media/i2c/adv748x/adv748x-dai.c @@ -0,0 +1,261 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Driver for Analog Devices ADV748X HDMI receiver with AFE + * The implementation of DAI. + */ + +#include "adv748x.h" + +#include +#include +#include + +#define state_of(soc_dai) \ + adv748x_dai_to_state(container_of((soc_dai)->driver, \ + struct adv748x_dai, drv)) +#define mclk_of(state) ((state)->dai.mclk_hw->clk) + +static const char ADV748X_DAI_NAME[] = "adv748x-i2s"; + +static int set_audio_pads_state(struct adv748x_state *state, int on) +{ + return io_clrset(state, ADV748X_IO_PAD_CONTROLS, + ADV748X_IO_PAD_CONTROLS_TRI_AUD | + ADV748X_IO_PAD_CONTROLS_PDN_AUD, + on ? 0 : 0xff); +} + +static int set_dpll_mclk_fs(struct adv748x_state *state, int fs) +{ + return dpll_clrset(state, ADV748X_DPLL_MCLK_FS, + ADV748X_DPLL_MCLK_FS_N_MASK, (fs / 128) - 1); +} + +static int set_i2s_format(struct adv748x_state *state, uint outmode, + uint bitwidth) +{ + return hdmi_clrset(state, ADV748X_HDMI_I2S, + ADV748X_HDMI_I2SBITWIDTH_MASK | + ADV748X_HDMI_I2SOUTMODE_MASK, + (outmode << ADV748X_HDMI_I2SOUTMODE_SHIFT) | + bitwidth); +} + +static int set_i2s_tdm_mode(struct adv748x_state *state, int is_tdm) +{ + int ret; + + ret = hdmi_clrset(state, ADV748X_HDMI_AUDIO_MUTE_SPEED, + ADV748X_MAN_AUDIO_DL_BYPASS | + ADV748X_AUDIO_DELAY_LINE_BYPASS, + is_tdm ? 0xff : 0); + if (ret < 0) + return ret; + ret = hdmi_clrset(state, ADV748X_HDMI_REG_6D, + ADV748X_I2S_TDM_MODE_ENABLE, + is_tdm ? 0xff : 0); + return ret; +} + +static int set_audio_mute(struct adv748x_state *state, int enable) +{ + return hdmi_clrset(state, ADV748X_HDMI_MUTE_CTRL, + ADV748X_HDMI_MUTE_CTRL_MUTE_AUDIO, + enable ? 0xff : 0); +} + +static int adv748x_dai_set_sysclk(struct snd_soc_dai *dai, + int clk_id, unsigned int freq, int dir) +{ + struct adv748x_state *state = state_of(dai); + + /* currently supporting only one fixed rate clock */ + if (clk_id != 0 || freq != clk_get_rate(mclk_of(state))) { + dev_err(dai->dev, "invalid clock (%d) or frequency (%u, dir %d)\n", + clk_id, freq, dir); + return -EINVAL; + } + state->dai.freq = freq; + return 0; +} + +static int adv748x_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) +{ + struct adv748x_state *state = state_of(dai); + int ret = 0; + + if ((fmt & SND_SOC_DAIFMT_MASTER_MASK) != SND_SOC_DAIFMT_CBM_CFM) { + dev_err(dai->dev, "only I2S master clock mode supported\n"); + ret = -EINVAL; + goto done; + } + switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { + case SND_SOC_DAI_FORMAT_I2S: + state->dai.tdm = 0; + state->dai.fmt = ADV748X_I2SOUTMODE_I2S; + break; + case SND_SOC_DAI_FORMAT_RIGHT_J: + state->dai.tdm = 1; + state->dai.fmt = ADV748X_I2SOUTMODE_RIGHT_J; + break; + case SND_SOC_DAI_FORMAT_LEFT_J: + state->dai.tdm = 1; + state->dai.fmt = ADV748X_I2SOUTMODE_LEFT_J; + break; + default: + dev_err(dai->dev, "only i2s, left_j and right_j supported\n"); + ret = -EINVAL; + goto done; + } + if ((fmt & SND_SOC_DAIFMT_INV_MASK) != SND_SOC_DAIFMT_NB_NF) { + dev_err(dai->dev, "only normal bit clock + frame supported\n"); + ret = -EINVAL; + } +done: + return ret; +} + +static int adv748x_dai_startup(struct snd_pcm_substream *sub, struct snd_soc_dai *dai) +{ + struct adv748x_state *state = state_of(dai); + + if (sub->stream != SNDRV_PCM_STREAM_CAPTURE) + return -EINVAL; + return set_audio_pads_state(state, 1); +} + +static int adv748x_dai_hw_params(struct snd_pcm_substream *sub, + struct snd_pcm_hw_params *params, + struct snd_soc_dai *dai) +{ + int ret; + struct adv748x_state *state = state_of(dai); + uint fs = state->dai.freq / params_rate(params); + + dev_dbg(dai->dev, "dai %s substream %s rate=%u (fs=%u), channels=%u sample width=%u(%u)\n", + dai->name, sub->name, + params_rate(params), fs, + params_channels(params), + params_width(params), + params_physical_width(params)); + switch (fs) { + case 128: + case 256: + case 384: + case 512: + case 640: + case 768: + break; + default: + ret = -EINVAL; + dev_err(dai->dev, "invalid clock frequency (%u) or rate (%u)\n", + state->dai.freq, params_rate(params)); + goto done; + } + ret = set_dpll_mclk_fs(state, fs); + if (ret) + goto done; + ret = set_i2s_tdm_mode(state, state->dai.tdm); + if (ret) + goto done; + ret = set_i2s_format(state, state->dai.fmt, params_width(params)); +done: + return ret; +} + +static int adv748x_dai_mute_stream(struct snd_soc_dai *dai, int mute, int dir) +{ + struct adv748x_state *state = state_of(dai); + + return set_audio_mute(state, mute); +} + +static void adv748x_dai_shutdown(struct snd_pcm_substream *sub, struct snd_soc_dai *dai) +{ + struct adv748x_state *state = state_of(dai); + + set_audio_pads_state(state, 0); +} + +static const struct snd_soc_dai_ops adv748x_dai_ops = { + .set_sysclk = adv748x_dai_set_sysclk, + .set_fmt = adv748x_dai_set_fmt, + .startup = adv748x_dai_startup, + .hw_params = adv748x_dai_hw_params, + .mute_stream = adv748x_dai_mute_stream, + .shutdown = adv748x_dai_shutdown, +}; + +static int adv748x_of_xlate_dai_name(struct snd_soc_component *component, + struct of_phandle_args *args, + const char **dai_name) +{ + if (dai_name) + *dai_name = ADV748X_DAI_NAME; + return 0; +} + +static const struct snd_soc_component_driver adv748x_codec = { + .of_xlate_dai_name = adv748x_of_xlate_dai_name, +}; + +int adv748x_dai_init(struct adv748x_dai *dai) +{ + int ret; + struct adv748x_state *state = adv748x_dai_to_state(dai); + + dai->mclk_name = kasprintf(GFP_KERNEL, "%s.%s-i2s-mclk", + state->dev->driver->name, + dev_name(state->dev)); + if (!dai->mclk_name) { + ret = -ENOMEM; + adv_err(state, "No memory for MCLK\n"); + goto fail; + } + dai->mclk_hw = clk_hw_register_fixed_rate(state->dev, dai->mclk_name, + NULL, 0, 12288000); + if (IS_ERR(dai->mclk_hw)) { + ret = PTR_ERR(dai->mclk_hw); + adv_err(state, "Failed to register MCLK (%d)\n", ret); + goto fail; + } + ret = of_clk_add_hw_provider(state->dev->of_node, of_clk_hw_simple_get, + dai->mclk_hw->clk); + if (ret < 0) { + adv_err(state, "Failed to add MCLK provider (%d)\n", ret); + goto unreg_mclk; + } + dai->drv.name = ADV748X_DAI_NAME; + dai->drv.ops = &adv748x_dai_ops; + dai->drv.capture = (const struct snd_soc_pcm_stream){ + .stream_name = "Capture", + .channels_min = 8, + .channels_max = 8, + .rates = SNDRV_PCM_RATE_48000, + .formats = SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_U24_LE, + }; + + ret = devm_snd_soc_register_component(state->dev, &adv748x_codec, + &dai->drv, 1); + if (ret < 0) { + adv_err(state, "Failed to register the codec (%d)\n", ret); + goto cleanup_mclk; + } + return 0; + +cleanup_mclk: + of_clk_del_provider(state->dev->of_node); +unreg_mclk: + clk_hw_unregister_fixed_rate(dai->mclk_hw); +fail: + return ret; +} + +void adv748x_dai_cleanup(struct adv748x_dai *dai) +{ + struct adv748x_state *state = adv748x_dai_to_state(dai); + + of_clk_del_provider(state->dev->of_node); + clk_hw_unregister_fixed_rate(dai->mclk_hw); + kfree(dai->mclk_name); +} diff --git a/drivers/media/i2c/adv748x/adv748x.h b/drivers/media/i2c/adv748x/adv748x.h index 1a1ea70086c6..454f97ff7b54 100644 --- a/drivers/media/i2c/adv748x/adv748x.h +++ b/drivers/media/i2c/adv748x/adv748x.h @@ -19,6 +19,7 @@ */ #include +#include #include #include @@ -63,7 +64,8 @@ enum adv748x_ports { ADV748X_PORT_TTL = 9, ADV748X_PORT_TXA = 10, ADV748X_PORT_TXB = 11, - ADV748X_PORT_MAX = 12, + ADV748X_PORT_I2S = 12, + ADV748X_PORT_MAX = 13, }; enum adv748x_csi2_pads { @@ -166,6 +168,13 @@ struct adv748x_afe { container_of(ctrl->handler, struct adv748x_afe, ctrl_hdl) #define adv748x_sd_to_afe(sd) container_of(sd, struct adv748x_afe, sd) +struct adv748x_dai { + struct snd_soc_dai_driver drv; + struct clk_hw *mclk_hw; + char *mclk_name; + unsigned int freq, fmt, tdm; +}; + /** * struct adv748x_state - State of ADV748X * @dev: (OF) device @@ -182,6 +191,7 @@ struct adv748x_afe { * @afe: state of AFE receiver context * @txa: state of TXA transmitter context * @txb: state of TXB transmitter context + * @mclk: MCLK clock of the I2S port */ struct adv748x_state { struct device *dev; @@ -197,10 +207,12 @@ struct adv748x_state { struct adv748x_afe afe; struct adv748x_csi2 txa; struct adv748x_csi2 txb; + struct adv748x_dai dai; }; #define adv748x_hdmi_to_state(h) container_of(h, struct adv748x_state, hdmi) #define adv748x_afe_to_state(a) container_of(a, struct adv748x_state, afe) +#define adv748x_dai_to_state(p) container_of(p, struct adv748x_state, dai) #define adv_err(a, fmt, arg...) dev_err(a->dev, fmt, ##arg) #define adv_info(a, fmt, arg...) dev_info(a->dev, fmt, ##arg) @@ -484,4 +496,7 @@ int adv748x_csi2_set_pixelrate(struct v4l2_subdev *sd, s64 rate); int adv748x_hdmi_init(struct adv748x_hdmi *hdmi); void adv748x_hdmi_cleanup(struct adv748x_hdmi *hdmi); +int adv748x_dai_init(struct adv748x_dai *); +void adv748x_dai_cleanup(struct adv748x_dai *); + #endif /* _ADV748X_H_ */ From patchwork Thu Mar 26 10:35:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Riesen X-Patchwork-Id: 11459809 X-Patchwork-Delegate: kieran@bingham.xyz Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 291EB6CA for ; Thu, 26 Mar 2020 10:53:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 13EAF20748 for ; Thu, 26 Mar 2020 10:53:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727990AbgCZKxz (ORCPT ); Thu, 26 Mar 2020 06:53:55 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:41187 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727928AbgCZKxz (ORCPT ); Thu, 26 Mar 2020 06:53:55 -0400 Received: from mail.cetitecgmbh.com ([87.190.42.90]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MQgtC-1iuxqm0v1q-00NkXn for ; Thu, 26 Mar 2020 11:53:54 +0100 Received: from pflvmailgateway.corp.cetitec.com (unknown [127.0.0.1]) by mail.cetitecgmbh.com (Postfix) with ESMTP id 11D2264FB32 for ; Thu, 26 Mar 2020 10:53:54 +0000 (UTC) X-Virus-Scanned: amavisd-new at cetitec.com Received: from mail.cetitecgmbh.com ([127.0.0.1]) by pflvmailgateway.corp.cetitec.com (pflvmailgateway.corp.cetitec.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y_AYX6E1xkUu for ; Thu, 26 Mar 2020 11:53:53 +0100 (CET) Received: from pfwsexchange.corp.cetitec.com (unknown [10.10.1.99]) by mail.cetitecgmbh.com (Postfix) with ESMTPS id C33C464D5D2 for ; Thu, 26 Mar 2020 11:53:53 +0100 (CET) Received: from pflmari.corp.cetitec.com (10.8.5.79) by PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 26 Mar 2020 11:53:53 +0100 Received: by pflmari.corp.cetitec.com (Postfix, from userid 1000) id 220CD80503; Thu, 26 Mar 2020 11:35:42 +0100 (CET) Date: Thu, 26 Mar 2020 11:35:42 +0100 From: Alex Riesen To: Kieran Bingham CC: Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , "Laurent Pinchart" , Rob Herring , Mark Rutland , Kuninori Morimoto , , , , , Subject: [PATCH v4 6/9] media: adv748x: prepare/enable mclk when the audio is used Message-ID: Mail-Followup-To: Alex Riesen , Kieran Bingham , Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , Laurent Pinchart , Rob Herring , Mark Rutland , Kuninori Morimoto , devel@driverdev.osuosl.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Originating-IP: [10.8.5.79] X-ClientProxiedBy: PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) To PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) X-EsetResult: clean, is OK X-EsetId: 37303A290D7F536A6D7C67 X-Provags-ID: V03:K1:GF9XAJjY4AlZROXljfwOA7tsNyHFnXMFdEk17mq1XJ892m1Hxmr Jg+fJsoBiM5ykgaDzKvwjlIF2lulXMljpUxlPhVyUxbhXih6Y7cYkqbUMlCOHDh/Ukp6g2h 29dYdZKLN5devQ8zLNLr1hNoUc7qqetR6KEWZX74jw7LIjvv+Q7GICo9mH1lItT95WgT+dq 30JLY0YGmq15LwPDkCATw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:r/Nj4xpxV3E=:fpxYBMcpbE8EQzPNRIjONT WFHrVFe25EAfLfgpP/GJYk7hTIrZwnMGyEDiA5injpDHX4tognpXmB7sdWtgsdJQHCl6TTuDl x0LT6D8oQoSfqAC3WvA7gVBj5tmJAhPTDZcBBLyEowZM29/JesGyshqrE1eN7w7CrsJgE1lIV GkZLf2fG4jiiYvlmoYv4GGuTQza/ZpCgcid/qnbhgHmOgKJoBvavJVUSw7vveE7D9ArGQFvfd GbPbZZO2RpKdVaTvPX4QndIICMYEALGkmd4dW38JXOAQhqJi9ViXiZbaKh7ZMyVH0+8otF6c4 3Vis3WpVjvKMLutHjn3gup7UG8KgyhskETDR7mZVhKdP+xeqYQD8k5/CAvt64B5YjwLI/H39R vqiEFL4/zT5BqAjvK8xKk/bWZzZePpD85X3t/0fSzQFydmW0OIA/ZNM5ESsoOWUjHXa9RvA9n kQkDBKogb2ZTRZBrRJYRdTr+xR1FHMSJUlErp7AwyzCXsaV2fWbsuLqFgnuEUnB93NC+cQ3C7 5BLRYkKoaUe7Jd4UIVRRkZFqiUgfH1+a6h1za5wsdT/YYaaldFEZm3TP0xVAH4t/c5j7yWOqR QSZHMyAOzCd2DpjPCRSipGdnT9aDaB7hfLaD7xHB/PZTK4bH0+d7BgRddurGGktnz2VeFzMg5 aD2ZK8Ap0reEQJm6IsDac6RAXs2PS3N6rs4vwo/3YJidMkSjZ8Gfc2iOdZxL4iOp5scqcfiED s16PU/tOgMJ5B4ZVseTXMhiM8WUQmcS0MunxC/TpB1FIcaGcn0DIj/sqKRZ9x6xw5jbjo1r/f wzgYizgXFFkYtS8yLG1YqQhZzDqm94JfnrlR/ukfyK9p5YcgnvEA5K28j5kc1ayZhrFijvB Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org As there is nothing else (the consumers are supposed to do that) which enables the clock, do it in the driver. Signed-off-by: Alexander Riesen --- v3: added --- drivers/media/i2c/adv748x/adv748x-dai.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/adv748x/adv748x-dai.c b/drivers/media/i2c/adv748x/adv748x-dai.c index c9191f8f1ca8..185f78023e91 100644 --- a/drivers/media/i2c/adv748x/adv748x-dai.c +++ b/drivers/media/i2c/adv748x/adv748x-dai.c @@ -117,11 +117,22 @@ static int adv748x_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) static int adv748x_dai_startup(struct snd_pcm_substream *sub, struct snd_soc_dai *dai) { + int ret; struct adv748x_state *state = state_of(dai); if (sub->stream != SNDRV_PCM_STREAM_CAPTURE) return -EINVAL; - return set_audio_pads_state(state, 1); + ret = set_audio_pads_state(state, 1); + if (ret) + goto fail; + ret = clk_prepare_enable(mclk_of(state)); + if (ret) + goto fail_pwdn; + return 0; +fail_pwdn: + set_audio_pads_state(state, 0); +fail: + return ret; } static int adv748x_dai_hw_params(struct snd_pcm_substream *sub, @@ -174,6 +185,7 @@ static void adv748x_dai_shutdown(struct snd_pcm_substream *sub, struct snd_soc_d { struct adv748x_state *state = state_of(dai); + clk_disable_unprepare(mclk_of(state)); set_audio_pads_state(state, 0); } From patchwork Thu Mar 26 10:35:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Riesen X-Patchwork-Id: 11459835 X-Patchwork-Delegate: kieran@bingham.xyz Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C64231668 for ; Thu, 26 Mar 2020 11:00:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B16C72073E for ; Thu, 26 Mar 2020 11:00:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727970AbgCZLAj (ORCPT ); Thu, 26 Mar 2020 07:00:39 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:60791 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727953AbgCZLAj (ORCPT ); Thu, 26 Mar 2020 07:00:39 -0400 Received: from mail.cetitecgmbh.com ([87.190.42.90]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MLR5h-1j0iJS1x1X-00IQIR for ; Thu, 26 Mar 2020 12:00:37 +0100 Received: from pflvmailgateway.corp.cetitec.com (unknown [127.0.0.1]) by mail.cetitecgmbh.com (Postfix) with ESMTP id 46BEA6502CC for ; Thu, 26 Mar 2020 11:00:37 +0000 (UTC) X-Virus-Scanned: amavisd-new at cetitec.com Received: from mail.cetitecgmbh.com ([127.0.0.1]) by pflvmailgateway.corp.cetitec.com (pflvmailgateway.corp.cetitec.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rEZvhlRd02XO for ; Thu, 26 Mar 2020 12:00:36 +0100 (CET) Received: from pfwsexchange.corp.cetitec.com (unknown [10.10.1.99]) by mail.cetitecgmbh.com (Postfix) with ESMTPS id ECA1864FC1E for ; Thu, 26 Mar 2020 12:00:36 +0100 (CET) Received: from pflmari.corp.cetitec.com (10.8.5.79) by PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 26 Mar 2020 12:00:36 +0100 Received: by pflmari.corp.cetitec.com (Postfix, from userid 1000) id DD5CD80504; Thu, 26 Mar 2020 11:35:42 +0100 (CET) Date: Thu, 26 Mar 2020 11:35:42 +0100 From: Alex Riesen To: Kieran Bingham CC: Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , "Laurent Pinchart" , Rob Herring , Mark Rutland , Kuninori Morimoto , , , , , Subject: [PATCH v4 7/9] media: adv748x: only activate DAI if it is described in device tree Message-ID: Mail-Followup-To: Alex Riesen , Kieran Bingham , Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , Laurent Pinchart , Rob Herring , Mark Rutland , Kuninori Morimoto , devel@driverdev.osuosl.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Originating-IP: [10.8.5.79] X-ClientProxiedBy: PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) To PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) X-EsetResult: clean, is OK X-EsetId: 37303A290D7F536A6D7C67 X-Provags-ID: V03:K1:TM/y2WUFOVcMS2eBmLJa7FblcbqyRbdehPKCR+RQ4ytpAKuHy7m q92euLldnYjy3+xC8vx9Za0iCA+RXv6j195bUTTjkI8rjmvrHWAvsE4Ll53lSU7C2iYd64t I+IkSNzLc0ja9GJPPnaQbPcBYKQqVcOSG0qETHwPoJZ8vgWmHS59osf0kYH1x6SXatZvxZW 54AEwhxdxJi8ydHT2xqAQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:dmg9QVFkJUg=:CQR4oqlZI5qoTizAu90/YR ffwptPi3YSBLB2s6C9udcQvfNoINeMTY2sNU41MiPd0SanOxnUWfD8Kvh8zYWXlDToNREgyaJ waHJgJkH5SY52USgugd3lr6C/AuQEIpbwu34uj1gUaP6q7M0gdf4YT0+9pUNa6iDKQawWlyVV O2UV5YPdZcaZg04b6Nmchv7oWeJKuohXQbZoYCF4z01UnAh3x2voWmdvaIdrvVFdD8oJheJl7 qI082oHOrCVgcpGmr3ACl7pQqhM4Nu8E1JFHvHByYjqsBRr/TTjAKFhK24ZBoteCU8gvhJ2lY RTsXTbDVcXICA9PyzgTmRQBc35UJ2gNXZkXTUyjYoKLQSE0xPfeBgiO6S0JD+l9lnFq3aLfIw w2qAzeLtCU7AuXmnWXPlZasMz7h8B6+BpijffiTNXmUw4rzmRu1105hQtToSDq2EDFF56CQMA NGBaG/hyjOC53G+q7S1Y15jSaqwDGXQ2q+3um4EuZiqspW/ifdEPAnUOerF+SJpuiCWQ3cNmn iBjMZB4zrUBC373uRIcSxl05birsx7vpVgdARRGBd0j9eyu5KqTBv1OqmG7ICJssY2f0Zs3sI VorxBxZqganHWU3ASSRWm9rYqWLMpuR5ivaJDJPk/bza+RFauprW+6vQIO7z2DyCbfi1bCCgI LgDzlcvqrChLwK2itsQJkIqqqFJu4tvDMvg230pOtJMNc3SHHV7K6AIvh5McZdsFmWQuiOCTA c9ju05ChcnEgIGF4ZqFEpM+qFQivjeXC+js9W1GHxIPpcUBpY/nN/88m+yjRGmhkRC7mG6c0Q B73Wz7BfWqGextUOHb2HKkydvL5Rg2gQqWfKpzjw8dg1+2Y5j2xTbBb+oI8eZGcgPe+/RPB Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org To avoid setting it up even if the hardware is not actually connected to anything physically. Besides, the bindings explicitly notes that port definitions are "optional if they are not connected to anything at the hardware level". Signed-off-by: Alexander Riesen --- drivers/media/i2c/adv748x/adv748x-dai.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/media/i2c/adv748x/adv748x-dai.c b/drivers/media/i2c/adv748x/adv748x-dai.c index 185f78023e91..f9cc47fa9ad1 100644 --- a/drivers/media/i2c/adv748x/adv748x-dai.c +++ b/drivers/media/i2c/adv748x/adv748x-dai.c @@ -216,6 +216,11 @@ int adv748x_dai_init(struct adv748x_dai *dai) int ret; struct adv748x_state *state = adv748x_dai_to_state(dai); + if (!state->endpoints[ADV748X_PORT_I2S]) { + adv_info(state, "no I2S port, DAI disabled\n"); + ret = 0; + goto fail; + } dai->mclk_name = kasprintf(GFP_KERNEL, "%s.%s-i2s-mclk", state->dev->driver->name, dev_name(state->dev)); From patchwork Thu Mar 26 10:35:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Riesen X-Patchwork-Id: 11459839 X-Patchwork-Delegate: kieran@bingham.xyz Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8684A159A for ; Thu, 26 Mar 2020 11:04:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 700A720409 for ; Thu, 26 Mar 2020 11:04:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727781AbgCZLEA (ORCPT ); Thu, 26 Mar 2020 07:04:00 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:49033 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727688AbgCZLEA (ORCPT ); Thu, 26 Mar 2020 07:04:00 -0400 Received: from mail.cetitecgmbh.com ([87.190.42.90]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1Mo6WJ-1jbxLR1Ysd-00pbwn for ; Thu, 26 Mar 2020 12:03:58 +0100 Received: from pflvmailgateway.corp.cetitec.com (unknown [127.0.0.1]) by mail.cetitecgmbh.com (Postfix) with ESMTP id 2D7916503FC for ; Thu, 26 Mar 2020 11:03:58 +0000 (UTC) X-Virus-Scanned: amavisd-new at cetitec.com Received: from mail.cetitecgmbh.com ([127.0.0.1]) by pflvmailgateway.corp.cetitec.com (pflvmailgateway.corp.cetitec.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZLNwS4Y575_U for ; Thu, 26 Mar 2020 12:03:57 +0100 (CET) Received: from pfwsexchange.corp.cetitec.com (unknown [10.10.1.99]) by mail.cetitecgmbh.com (Postfix) with ESMTPS id C8AA964E126 for ; Thu, 26 Mar 2020 12:03:57 +0100 (CET) Received: from pflmari.corp.cetitec.com (10.8.5.79) by PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 26 Mar 2020 12:03:57 +0100 Received: by pflmari.corp.cetitec.com (Postfix, from userid 1000) id A12B180505; Thu, 26 Mar 2020 11:35:43 +0100 (CET) Date: Thu, 26 Mar 2020 11:35:43 +0100 From: Alex Riesen To: Kieran Bingham CC: Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , "Laurent Pinchart" , Rob Herring , Mark Rutland , Kuninori Morimoto , , , , , Subject: [PATCH v4 8/9] dt-bindings: adv748x: add information about serial audio interface (I2S/TDM) Message-ID: <37482bdfc6d6c6e231c58550b6bc4582aa29dde0.1585218857.git.alexander.riesen@cetitec.com> Mail-Followup-To: Alex Riesen , Kieran Bingham , Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , Laurent Pinchart , Rob Herring , Mark Rutland , Kuninori Morimoto , devel@driverdev.osuosl.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Originating-IP: [10.8.5.79] X-ClientProxiedBy: PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) To PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) X-EsetResult: clean, is OK X-EsetId: 37303A290D7F536A6D7C67 X-Provags-ID: V03:K1:Ilf2WKJfS58DfFPuFkfNlQjmqYvqADdumerggvftTzlD5GlA1nF FWJN+NCuT4+s1S52T3JzjLDCMfCY0htmAU5K+y+cAouFz03DbiSv0/CGncG6RgO297241Mu K/Id82wDQS6VDY6LU16yrSIVsspq5QGNcCHbYit9BSMaatnOrkW0TLR1SMaLiGK4iui6sHi 4Ztz7DHrKoC2NbtohViMQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:wpLQi3cjRdk=:qQDXKQqrZzd3GSG6MaXwfq 6TojbJCKiLF82QceAojCWuE2oZw84GDobWbaBzYfYoJ2faNHubo91583ABjDI/ZgaMyOWfOCK tyK4SXD6h9pAFP8Y2NyElwhuIR+jicn3cm1kS/SIAj842Iprbe3juta5deQ7YglJAtkhBqNYF ZAlKx+COS+UqsBRmupEK//78gBaxkqwfrPte3d69SVVzntqs1JJ1eOcWdCiNrpOobAt96WmTi e8Z9QtMK1yFXKvV56LTbPbN4WYmk7ehlLWHMkh9VD3Ggs/k+NEC/NA1ytmOPyjAuFFkPJpHiX bBBCfZgvAmTCVKzDTWD0u958PkK7LHrVAvS2RoAZvn990j/RVYtq6RvxUKLurRGgzrLAzAn0O ZOUfcR37WcJHSGssExlKQqDj4wzl6xZ/axiD1mndkk7buxYbcOwZIh2Be7d4XB5bwHxE9S0GT SVf4fkyRRiphUeotqTp3v7PZdwTW2FdPHdx9XNJfqfWJybPYkyi+QPk4Zm+XShRKE1O2uOtur udruwMEnzDCqy4Kyhy+atXvOoiD8DyafPPA0E854VUteqwPDMVvLTkgPskpwxSmkC5cANL68v 3GnFOChUDn5WlNun+wzKkJdxd6Rff+dQ/ysCzIYPTU+hdiBONOZUCyyUgJhMb2rRQ4CPxQGHR 5AOMEK7M5zidjl20moTwdLkmB73XqF3Gy31KIvN+ni7R5nGIfcxEPNYXzNYNai4deFaBQg2LF O3ymqWyGY+9e8Aejxd0yhYeUYDZqQMsPEl+XA8G+U/+x+IFw++47x6mGgh7rLnoA5WGBA2P1y TwQYXbbklmhG56huM0pVD9N9aw5KhiDBscqTQZdRSrGZpJHVFozCcmX+rGqC/9LtzXrwh17 Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org As the driver has some support for the audio interface of the device, the bindings file should mention it. Signed-off-by: Alexander Riesen Reviewed-by: Rob Herring Reviewed-by: Laurent Pinchart --- v3: remove optionality off MCLK clock cell to ensure the description matches the hardware no matter if the line is connected. Suggested-by: Geert Uytterhoeven --- .../devicetree/bindings/media/i2c/adv748x.txt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/media/i2c/adv748x.txt b/Documentation/devicetree/bindings/media/i2c/adv748x.txt index 4f91686e54a6..50a753189b81 100644 --- a/Documentation/devicetree/bindings/media/i2c/adv748x.txt +++ b/Documentation/devicetree/bindings/media/i2c/adv748x.txt @@ -2,7 +2,9 @@ The ADV7481 and ADV7482 are multi format video decoders with an integrated HDMI receiver. They can output CSI-2 on two independent outputs TXA and TXB -from three input sources HDMI, analog and TTL. +from three input sources HDMI, analog and TTL. There is also support for an +I2S-compatible interface connected to the audio processor of the HDMI decoder. +The interface has TDM capability (8 slots, 32 bits, left or right justified). Required Properties: @@ -16,6 +18,8 @@ Required Properties: slave device on the I2C bus. The main address is mandatory, others are optional and remain at default values if not specified. + - #clock-cells: must be <0> + Optional Properties: - interrupt-names: Should specify the interrupts as "intrq1", "intrq2" and/or @@ -47,6 +51,7 @@ are numbered as follows. TTL sink 9 TXA source 10 TXB source 11 + I2S source 12 The digital output port nodes, when present, shall contain at least one endpoint. Each of those endpoints shall contain the data-lanes property as @@ -72,6 +77,7 @@ Example: #address-cells = <1>; #size-cells = <0>; + #clock-cells = <0>; interrupt-parent = <&gpio6>; interrupt-names = "intrq1", "intrq2"; @@ -113,4 +119,12 @@ Example: remote-endpoint = <&csi20_in>; }; }; + + port@c { + reg = <12>; + + adv7482_i2s: endpoint { + remote-endpoint = <&i2s_in>; + }; + }; }; From patchwork Thu Mar 26 10:35:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Riesen X-Patchwork-Id: 11459827 X-Patchwork-Delegate: geert@linux-m68k.org Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B4AA46CA for ; Thu, 26 Mar 2020 10:57:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 972B320774 for ; Thu, 26 Mar 2020 10:57:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728000AbgCZK5S (ORCPT ); Thu, 26 Mar 2020 06:57:18 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:43261 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727590AbgCZK5S (ORCPT ); Thu, 26 Mar 2020 06:57:18 -0400 Received: from mail.cetitecgmbh.com ([87.190.42.90]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1N0F9t-1jUIUF0XYN-00xHNi for ; Thu, 26 Mar 2020 11:57:16 +0100 Received: from pflvmailgateway.corp.cetitec.com (unknown [127.0.0.1]) by mail.cetitecgmbh.com (Postfix) with ESMTP id E55BA650227 for ; Thu, 26 Mar 2020 10:57:15 +0000 (UTC) X-Virus-Scanned: amavisd-new at cetitec.com Received: from mail.cetitecgmbh.com ([127.0.0.1]) by pflvmailgateway.corp.cetitec.com (pflvmailgateway.corp.cetitec.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Z2IhLgsExEOa for ; Thu, 26 Mar 2020 11:57:15 +0100 (CET) Received: from pfwsexchange.corp.cetitec.com (unknown [10.10.1.99]) by mail.cetitecgmbh.com (Postfix) with ESMTPS id 6F71964C347 for ; Thu, 26 Mar 2020 11:57:15 +0100 (CET) Received: from pflmari.corp.cetitec.com (10.8.5.79) by PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 26 Mar 2020 11:57:15 +0100 Received: by pflmari.corp.cetitec.com (Postfix, from userid 1000) id 92B2B80506; Thu, 26 Mar 2020 11:35:44 +0100 (CET) Date: Thu, 26 Mar 2020 11:35:44 +0100 From: Alex Riesen To: Kieran Bingham CC: Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , "Laurent Pinchart" , Rob Herring , Mark Rutland , Kuninori Morimoto , , , , , Subject: [PATCH v4 9/9] arm64: dts: renesas: salvator: add a connection from adv748x codec (HDMI input) to the R-Car SoC Message-ID: Mail-Followup-To: Alex Riesen , Kieran Bingham , Geert Uytterhoeven , Mauro Carvalho Chehab , Hans Verkuil , Laurent Pinchart , Rob Herring , Mark Rutland , Kuninori Morimoto , devel@driverdev.osuosl.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Originating-IP: [10.8.5.79] X-ClientProxiedBy: PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) To PFWSEXCHANGE.corp.cetitec.com (10.10.1.99) X-EsetResult: clean, is OK X-EsetId: 37303A290D7F536A6D7C67 X-Provags-ID: V03:K1:aJi5fYhkCL6W+oDRSdWwHdc9isAGxEbAnobzB1znpS3tViXslRe E7frowKoTQisI0OUsOGhb0ULmPXDaFZ26/YKQL/NbjW475S0ftKhxMJ5cHXWBaKETEqGMJL hnN08D2KxirDo2mkco35+SHPc2ievsByBDO9m/iiv/Iw4FXweXqeFoq5v38TffowxapxW63 NeSNtWilb5HmAyv902D8Q== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:wpJYjPTy15Y=:oBow6BHsAelYQlEBo6PadU dcdvEvYLA3eu9ms3v9Z+PDtDEA6f/kJhEs+KYq5vQWL/D1k44bjcvRdjwelas6CQchRmz+jg1 6VTmkUIXoQctLsYDSzHMCp8fbkg94VndaXIzW487Lz811QpEGyHY8HR+CRI1RRZyCAe/CB6A3 WmQmFiJ+Lyp/zQGQVKwsEgVWzRX+EYJ4nKsITC2DWmxz0GVKpcE4PZHSYDiGAD2uLL9gGJSh0 K5NU+qGUIpvAX6NwzV13gjt7j2aU8DtF2I+mHYXYLbRHpLjb1okITxFrlwSeg+RsmdYSgJv3n HVdIqf3Hdd+Uk7N1IZChNP9oVZobI2l4/K+wUHWUAeWndT8CcfHpAQC+0gvTU7BjDM4IlKnxE X7FqEpANRAe1PSWmgLnY0BLiHYaaZ6B+7S+zZjr0c7cypkVuzJeoJkaeGaSN47aS1hZiXRQF5 GKzMnDkxuggvKVjM80Trc7qI2240BKEeSZjZQyfQIEP3FwLpAeKWFHIjmH8K049RH6W4yCKZ7 qI2uRAbb8PMcVRJbbaZFXsOijvKZ+UoW1C/eYT9u+7EvtMS3vJqu5NjcARhXQM+DvKFxQr8js ULH9S1XmRyqk5BnDwLzdTR4I3vS8g8+Bd8vqLGPCCYw2cXmnebcwrHvFPA8v0sFkm0NKNujNd MHpkICKLojPl/+AnVKz3l8CED7XDJnPbJ+luPjHoUObvRBsT2O/4UQGu/PWlhHT4s3/16osFL Nm89sZVW+5TarQBoP5CSw6vs32d+oklhntEJwet1tTYerbE/+emzKl7mEe90fqXMGe0oHl/mU f+P6T4Qh2NqMao12VDaZ9fv/fVEH13MLnOwUCNtYLL1OILOMrsV25obz+IBOSzhb/viTIAX Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org As all known variants of the Salvator board have the HDMI decoder chip (the ADV7482) connected to the SSI4 on R-Car SoC, the ADV7482 endpoint and the connection definitions are placed in the common board file. For the same reason, the CLK_C clock line and I2C configuration (similar to the ak4613, on the same interface) are added into the common file. Signed-off-by: Alexander Riesen --- v2: Also add ssi4_ctrl pin group in the sound pins. The pins are responsible for SCK4 (sample clock) WS4 and (word boundary input), and are required for SSI audio input over I2S. The adv748x shall provide its own implementation of the output clock (MCLK), connected to the audio_clk_c line of the R-Car SoC. If the frequency of the ADV748x MCLK were fixed, the clock implementation were not necessary, but it does not seem so: the MCLK depends on the value in a speed multiplier register and the input sample rate (48kHz). Remove audio clock C from the clocks of adv7482. The clocks property of the video-receiver node lists the input clocks of the device, which is quite the opposite from the original intention: the adv7482 on Salvator X boards is a provide of the MCLK clock for I2S audio output. Remove old definition of &sound_card.dais and reduce size of changes in the Salvator-X specific device tree source. Declare video-receiver a clock producer, as the adv748x driver implements the master clock used I2S audio output. Suggested-by: Geert Uytterhoeven v2: The driver provides only MCLK clock, not the SCLK and LRCLK, which are part of the I2S protocol. Suggested-by: Laurent Pinchart --- .../boot/dts/renesas/r8a77950-salvator-x.dts | 3 +- .../boot/dts/renesas/salvator-common.dtsi | 47 +++++++++++++++++-- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/arch/arm64/boot/dts/renesas/r8a77950-salvator-x.dts b/arch/arm64/boot/dts/renesas/r8a77950-salvator-x.dts index 2438825c9b22..e16c146808b6 100644 --- a/arch/arm64/boot/dts/renesas/r8a77950-salvator-x.dts +++ b/arch/arm64/boot/dts/renesas/r8a77950-salvator-x.dts @@ -146,7 +146,8 @@ &sata { &sound_card { dais = <&rsnd_port0 /* ak4613 */ &rsnd_port1 /* HDMI0 */ - &rsnd_port2>; /* HDMI1 */ + &rsnd_port2 /* HDMI1 */ + &rsnd_port3>; /* adv7482 hdmi-in */ }; &usb2_phy2 { diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi b/arch/arm64/boot/dts/renesas/salvator-common.dtsi index 98bbcafc8c0d..ead7f8d7a929 100644 --- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi +++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi @@ -460,7 +460,7 @@ pca9654: gpio@20 { #gpio-cells = <2>; }; - video-receiver@70 { + adv7482_hdmi_in: video-receiver@70 { compatible = "adi,adv7482"; reg = <0x70 0x71 0x72 0x73 0x74 0x75 0x60 0x61 0x62 0x63 0x64 0x65>; @@ -469,6 +469,7 @@ video-receiver@70 { #address-cells = <1>; #size-cells = <0>; + #clock-cells = <0>; /* the MCLK for I2S output */ interrupt-parent = <&gpio6>; interrupt-names = "intrq1", "intrq2"; @@ -510,6 +511,15 @@ adv7482_txb: endpoint { remote-endpoint = <&csi20_in>; }; }; + + port@c { + reg = <12>; + + adv7482_i2s: endpoint { + remote-endpoint = <&rsnd_endpoint3>; + system-clock-direction-out; + }; + }; }; csa_vdd: adc@7c { @@ -684,7 +694,8 @@ sdhi3_pins_uhs: sd3_uhs { }; sound_pins: sound { - groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data_a"; + groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data_a", + "ssi4_data", "ssi4_ctrl"; function = "ssi"; }; @@ -733,8 +744,8 @@ &rcar_sound { pinctrl-0 = <&sound_pins &sound_clk_pins>; pinctrl-names = "default"; - /* Single DAI */ - #sound-dai-cells = <0>; + /* multi DAI */ + #sound-dai-cells = <1>; /* audio_clkout0/1/2/3 */ #clock-cells = <1>; @@ -758,8 +769,19 @@ &rcar_sound { <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>, <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>, <&audio_clk_a>, <&cs2000>, - <&audio_clk_c>, + <&adv7482_hdmi_in>, <&cpg CPG_CORE CPG_AUDIO_CLK_I>; + clock-names = "ssi-all", + "ssi.9", "ssi.8", "ssi.7", "ssi.6", + "ssi.5", "ssi.4", "ssi.3", "ssi.2", + "ssi.1", "ssi.0", + "src.9", "src.8", "src.7", "src.6", + "src.5", "src.4", "src.3", "src.2", + "src.1", "src.0", + "mix.1", "mix.0", + "ctu.1", "ctu.0", + "dvc.0", "dvc.1", + "clk_a", "clk_b", "clk_c", "clk_i"; ports { #address-cells = <1>; @@ -777,6 +799,21 @@ rsnd_endpoint0: endpoint { capture = <&ssi1 &src1 &dvc1>; }; }; + rsnd_port3: port@3 { + reg = <3>; + rsnd_endpoint3: endpoint { + remote-endpoint = <&adv7482_i2s>; + + dai-tdm-slot-num = <8>; + dai-tdm-slot-width = <32>; + dai-format = "left_j"; + mclk-fs = <256>; + bitclock-master = <&adv7482_i2s>; + frame-master = <&adv7482_i2s>; + + capture = <&ssi4>; + }; + }; }; };