From patchwork Tue Nov 6 05:19:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10669645 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DB98E14BD for ; Tue, 6 Nov 2018 05:20:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C40CB29D12 for ; Tue, 6 Nov 2018 05:20:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B381829D5B; Tue, 6 Nov 2018 05:20:01 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_INVALID,DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9167E29D12 for ; Tue, 6 Nov 2018 05:20:00 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 6F18E267A61; Tue, 6 Nov 2018 06:19:59 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 163AC267A61; Tue, 6 Nov 2018 06:19:55 +0100 (CET) Received: from JPN01-OS2-obe.outbound.protection.outlook.com (mail-os2jpn01on0132.outbound.protection.outlook.com [104.47.92.132]) by alsa0.perex.cz (Postfix) with ESMTP id 37958267877 for ; Tue, 6 Nov 2018 06:19:51 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesasgroup.onmicrosoft.com; s=selector1-renesas-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=42HlpRPhYVBqS73p6wfkYTHukqblzUi7Le9RcDK2ODY=; b=kGimUzKXwqnyFywsPZRlhXnXlYyIoos3DICdkMdytLBrTM5LtmA65TrL9I4KNi3IFuqRl/oEmhu4cX2ALB7bH145DCTE8SgUsU9l7s58yDSNeJiKnBfP3tTqcBAppv5A+AVQvxnTtrj97y4PDZ/SBC0wMDg5+iB1K9ATyYMCwc0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; Received: from morimoto-PC.renesas.com (211.11.155.130) by TYAPR01MB3327.jpnprd01.prod.outlook.com (2603:1096:404:bb::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.23; Tue, 6 Nov 2018 05:19:48 +0000 Message-ID: <87a7mmx02k.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto User-Agent: Wanderlust/2.15.9 Emacs/24.5 Mule/6.0 To: Mark Brown In-Reply-To: <87ftwex052.wl-kuninori.morimoto.gx@renesas.com> References: <87ftwex052.wl-kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Tue, 6 Nov 2018 05:19:48 +0000 X-Originating-IP: [211.11.155.130] X-ClientProxiedBy: TY2PR04CA0020.apcprd04.prod.outlook.com (2603:1096:404:f6::32) To TYAPR01MB3327.jpnprd01.prod.outlook.com (2603:1096:404:bb::16) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9e1f036f-7b61-4d5d-03c8-08d643a7789f X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:TYAPR01MB3327; X-Microsoft-Exchange-Diagnostics: 1; TYAPR01MB3327; 3:9cohaTwOVwHL6Yi/2Op9IW0IOdsssUIeL736izFjQRbt5Dlag4f7+pZX+AT7SxiccX4iDnrT40xHJ6TT72xjU2xt7beU0KwdaKA4eSAnjjKAkYpWrsRRha71IEKikiAVEdO04oEsY3uF1Spz7o9EPYOlKLP/AmiKdC8+NH59tA6LwKVEqlrot6dTNJWlhGk2IaNLoMwi3h6fhdaAUOaPVhuzWvSSSjMUZ8PJcSkQLw0MURQHXdm97vrFncsLtQFP; 25:9Kvs+lUwctiGhHMIF4D0pUGWx4XtFiSKH5uMARgUT8zhycsQ7YvL/UG2E2PDc93fFYDAwkEN/5oqqotzhbmexoBu50ggZwKnOoLf/jqrEHU7MkmaUibSSxPfmtx4H5jSXQVmNOJig/Lpmc+RpbMurvGid43qRszG0cTGB5y6sppjUUTQUgUxytHv56Amse+6wb9EhA7jgSJHfC+k9fTjEmnByJbq2bNII4Ai9mObuMzQ1unbrnPxaFiQsD3AIYR5xwJW2CUs2uiTxJijlDc0QnZKpj/F5Ab/GDHm+hRV+RP0ixbpaQfOMLiBQ3+xmd8U3THbm4831+PHND2oFn7z3g==; 31:o2d/2yoIiSUlanEEi72r3lD38KSs6xEctD4mCCNviXcUUb0eL5OEZeuD8dCNhIs4ZE3jHT/7HpioY9pWj7KA3bRmqSm4cgLj9B/PG+oSw7j1eoREx0/Zg9NKOPuztSCtz5GbQqssQuUOuq4Ip03HQL8Oii087rOgaJ2UEOidKH5tbkQmJtlLcRwAwr3YXu5CeSgE1Rd9C30GyRU/A5hDTZ2oNI0RW71pa5/2A99IZYs= X-MS-TrafficTypeDiagnostic: TYAPR01MB3327: X-Microsoft-Exchange-Diagnostics: 1; TYAPR01MB3327; 20:gGSUFps5G8qbZ87ikteHZuFew8Nhoax+vS4Va3Uk2iyENt9LoS+CRCrN9ThW0Ce7NSLYEDSxq93t/BTnT3NzOjs8R0hxduwgVTJgnCRRVoW6/fH42EbhjwuMhfPXJHf4cT3WGHJNsYayIKEJytM7UiBaMHNlB6aoZ2L5L+QW+8/jkCLPjMIySSCcW7PuuMh+8KCqX0zXfXwYX9AqOMF5UHcOC0WnA4C3ZcR4OQLylm6TyHO8NTX5nf2+9mpiw8UFEkpUro6y2M/o/vsINTN2e+nPza/mFTXKyO/IGWG1yjBPAJzUmMwhSxkqj6kLDFhfYL9x/4zvgwlYNgSwJPL5ZexQkTs7W8txhvGw7S2EfdFCmaA8SjOlNiDr6KvxNAu/bSNTPxfLy1eJMwPSO3hl452kkkc9fGpLj/GX0Q9rxcbbWyppmrSytom9zTUq3r5YuLVKqUtdDo8MHIzdaZ0YmydvGPHU4bWp6NusMumQzMsjuyQTtYKCVzdjU3weT+wx; 4:VNeQy49OKAFwLaq6MqJoZj7sEptQHmtVtSekEFcyCHvV6EKNLLp5K0AEauH8sEO/LJCuCPMmgWU0XQJcQvjghZsRshN6j4AKe1WzNOTu++9cQ0Ph8LzVCzvqFE8+pO/Nch4he3GV/FGnkfa8k4gVOCQEmQu9sqQlkSo54xtI1pMNtzxytf8Z+kPjAuOOOTl1XcBbJ/2xt0DXwvR+i16/WNj8upgOJhojouqtyyAz012JN02hV62a9EE6VaQmF/gWuSBo4P9+kYRlYNnpAmqQIw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231382)(944501410)(52105095)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:TYAPR01MB3327; BCL:0; PCL:0; RULEID:; SRVR:TYAPR01MB3327; X-Forefront-PRVS: 0848C1A6AA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(39860400002)(376002)(346002)(396003)(136003)(366004)(189003)(199004)(105586002)(53936002)(54906003)(4326008)(7736002)(8936002)(58126008)(106356001)(86362001)(5660300001)(97736004)(25786009)(316002)(68736007)(53416004)(2906002)(478600001)(47776003)(11346002)(36756003)(3846002)(956004)(486006)(16586007)(6116002)(6916009)(50466002)(476003)(2616005)(23726003)(8676002)(66066001)(386003)(81166006)(81156014)(52116002)(26005)(16526019)(6486002)(7696005)(186003)(69596002)(76176011)(305945005)(446003)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:TYAPR01MB3327; H:morimoto-PC.renesas.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: renesas.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; TYAPR01MB3327; 23:oOykY3oRB4qJUq+5oW74aqCHEkmUINbmF8jrDufmw?= 4iXczThogdkOmDuncLJ5dZe3RavistqPQHUC+Pgj+RBeiFLFzfhTIdG7s2YtakQkA9nk80T9VyPxNsye/vm/cPty7efG5Hs5d9xF58fdrZdETRa1F71F+wWfmeYjGJuaO3Y/jN/pfjVkyffjXBAivUu1Mv6JvuPkXgFbTmm29CWY47ucIOqiBMyJQgkEeUwXJrZxVwsVt1T0G3Fkt71gK7ZF1UQj2AwT2ARg8Py8BKjlhIJfIdUubUAQU/qiA30FCR5k+XiDHDxSd6Xp2BGbrdEK2Fj5FQu69w46rGCnxrkHwYCiReR/SXKUOQ8kyMxw3OE26zvzECIwmBZ1Zb78gBN0TiYt1KGnkM1nH0BH0jkRvrQiCI06FUCRxwdhsRnMXDAwQ4kKGXD0lMUpFF4XW47LgKUqN+BgPh/7y3TCX0qFldsBQmEONAGD8rQH67zvHsagxCI2qZmppmXt6hL0hdynKl97U2JJyWt3RuiGxNLxQk1JtSA/cZRL7pWVcUElNNNyFyskdoBQLvzcGboDu47Rmg9D5d7JKh8AoMlUZGviAx8fMyrxBI3QBSwd1UbiHQ1WskofVgAonSjAK089CovLtDXoxdcq/jBJ88ILIezJP16ll8aSbdy3oxzRHVq1Gr9kz84efRAc5ZJltqiqx05Rtg5OeAQflkdtdd0AK+OQQL9UKGh/9k4ftPtPnIdGVIxii+Fbju1HYPvlvSdWILW6s8JuuQgue35Wi9MFnDKfNGJqd1vT9ZPrH6kyQ+r2kU+VKBKZ+PLDvE+FKl8O+0wCJZt3IY8SrfpdPMN2BQxPbSjE/ghOp0F0figpJgiAcbsJbrBBVvLtBhqA5NwOsDfQqVLxKbBjvrYcknf79ab/N1WNWtWNLPasEtM88ikSfb5yUSjc7lx5tMVQvbZ7Me+U5Z13cP7hZNjkX2cD0iBq1BMxKo5HufQusTIA13daXfpnn8Da4b/4ueGGFl3IsXeuDeXcSAX/S7Ioyif18/53PPumfRAt5wRnmmYE8GvT8Pd2/3FbzrK2V+PJJERWmqRMPvjTWh73iCFlqxX1VnpKjeK1syaVk1UZAuLUd9RibjYiwqNIA3hZ19wHSD7F7jo7HVMSFh4cVGTFCugIrtqiaxtVSwaKpyhwP8TwXrvzftILrgPd3ID1MScNyCOvN2b X-Microsoft-Antispam-Message-Info: 3921HzaMGTutO0S+PkUIg86KDoZ7f4u4QXNj0Ila9EMvNPckbpHPKcLjwMoqtgnoWztpB6PyyTezSgFqiDt20mg6qGieSs70sxh1wOeBCbmzlMgu+MVz/1prHbEE3+vMOzsrQFttlXObNuwNfQTHhOq3yVwYXxT+sepTd6arMN125adAJpqKgJbo6N6C6rBsJbT0Lb/17qaJTrTvPC6MRLVNbLgmcZq/zzOgpph8nvLMbFawB1a/MpWMUgFeaZaoU3TgXHsvS6POQ4Sg8l1fFAiNCkd5/9SWuRwPe0VSzm7LAN2My6XuiNKzveWWTQmwjhF/BV2rkBgPJ5Yie4xlX1BxLX3VOODOo6+Gn2VGhww= X-Microsoft-Exchange-Diagnostics: 1; TYAPR01MB3327; 6:Ovv0cU11UEwC013rvDOuU4qpFnAAQN0DRmtumpTvX/cTp+M+hr0WAY2WNp+V4F3wWmb/4KfRYZ7IPjOuACym0fXWgo5eA46CGrmSjWj+efEro7T7dY4pkgNHUOl02Uezfce6ViaGTd6BL6S6NCjlmXRxB+suvlnSdScEmQdOL/0jWO3xUEhu86dCoEGPqOqyB1pnwOaV8C9529ZetavUg7R8LwJDmJIUyxQhb7dXJhyWM/M2U47BhhftvfSCpMbrdQueUMfZOZmX9Je3cUVTcD1KwCZvLhg7b87mtlhNYf7KBCUlROb18z/O3Yy+42kVZhwjQYNqh5fQ4qWQekZhFgpyLTth3acf/mQu66m36/tejYV62KLiuW6OBIT7C85Zi0EKGWBf4QioqRjN2eJ/OHtwO/5WeTBEjSQ23+n0sT2mKc+NCIF9KhX95qIjtIDcawt/x1kSHgB7j42EvzXvbg==; 5:SytauP0rCAIn7/1I8IIokU/7wUnzvOu37pNsT/2ThRf4jkX/c9nuAMq1hyahGUOYaAkA5SbSVvMyCCVNQYroOcPUfdnTjh8FLGuKPuWbmXCIDkML23T/KWWasUFPsjGBBaCdXrtq+6f8K/4U/sY+HMT47J2Jbx/hq0mBWuR7cF4=; 7:ZQL3rQP/W5VHVjeSnIu9ZnCAAyDm1tQR6WhhvBbaGRy7hQhsDEXBQQX357F+jIQSK3mca+pn+yqWm9dsRa0yASXq+Kb7tvWVNvNo5FTOUja60NggcnrHLFbtS83Ojoi2cgqV+9ocCUWUfbUkjvc6cg== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; TYAPR01MB3327; 20:zaeADpCq1mR8UCawHSfxZaMhGz2n++4zWTPuc5GfH4F1xcbdYiZXHb3uJKulavJv23nOgzZyQjgZHsaM3ONPUOMhXy5Q8bfk+t+rQ5aT/d9hVY35/siOkCsp51WWMN94P2ZIA+5YyDVChdxP2yunD+FK7Qt1WOYkQ2XzOJrnaWo= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Nov 2018 05:19:48.1321 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9e1f036f-7b61-4d5d-03c8-08d643a7789f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB3327 Cc: Jiada Wang , Linux-ALSA Subject: [alsa-devel] [PATCH 04/10] ASoC: rsnd: move HDMI information from ssi.c to core.c X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP From: Kuninori Morimoto Current driver is supporting HDMI output, and its information are handled under ssi.c. But, it is stream information. Let's move it from ssi.c to core.c. Signed-off-by: Kuninori Morimoto --- sound/soc/sh/rcar/core.c | 30 +++++++++++++++++++++++- sound/soc/sh/rcar/rsnd.h | 13 +++++------ sound/soc/sh/rcar/ssi.c | 60 +----------------------------------------------- sound/soc/sh/rcar/ssiu.c | 13 ++++------- 4 files changed, 41 insertions(+), 75 deletions(-) diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c index cb59219..1758fec 100644 --- a/sound/soc/sh/rcar/core.c +++ b/sound/soc/sh/rcar/core.c @@ -1005,6 +1005,29 @@ static const struct snd_soc_dai_ops rsnd_soc_dai_ops = { .prepare = rsnd_soc_dai_prepare, }; +static void rsnd_parse_connect_graph(struct rsnd_priv *priv, + struct rsnd_dai_stream *io, + struct device_node *endpoint) +{ + struct device *dev = rsnd_priv_to_dev(priv); + struct device_node *remote_node = of_graph_get_remote_port_parent(endpoint); + + if (!rsnd_io_to_mod_ssi(io)) + return; + + /* HDMI0 */ + if (strstr(remote_node->full_name, "hdmi@fead0000")) { + rsnd_flags_set(io, RSND_STREAM_HDMI0); + dev_dbg(dev, "%s connected to HDMI0\n", io->name); + } + + /* HDMI1 */ + if (strstr(remote_node->full_name, "hdmi@feae0000")) { + rsnd_flags_set(io, RSND_STREAM_HDMI1); + dev_dbg(dev, "%s connected to HDMI1\n", io->name); + } +} + void rsnd_parse_connect_common(struct rsnd_dai *rdai, struct rsnd_mod* (*mod_get)(struct rsnd_priv *priv, int id), struct device_node *node, @@ -1177,7 +1200,12 @@ static int rsnd_dai_probe(struct rsnd_priv *priv) if (is_graph) { for_each_endpoint_of_node(dai_node, dai_np) { __rsnd_dai_probe(priv, dai_np, dai_i); - rsnd_ssi_parse_hdmi_connection(priv, dai_np, dai_i); + if (rsnd_is_gen3(priv)) { + struct rsnd_dai *rdai = rsnd_rdai_get(priv, dai_i); + + rsnd_parse_connect_graph(priv, &rdai->playback, dai_np); + rsnd_parse_connect_graph(priv, &rdai->capture, dai_np); + } dai_i++; } } else { diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h index 4b547c6..9aeb547 100644 --- a/sound/soc/sh/rcar/rsnd.h +++ b/sound/soc/sh/rcar/rsnd.h @@ -458,7 +458,13 @@ struct rsnd_dai_stream { struct rsnd_dai *rdai; struct device *dmac_dev; /* for IPMMU */ u32 parent_ssi_status; + u32 flags; }; + +/* flags */ +#define RSND_STREAM_HDMI0 (1 << 0) /* for HDMI0 */ +#define RSND_STREAM_HDMI1 (1 << 1) /* for HDMI1 */ + #define rsnd_io_to_mod(io, i) ((i) < RSND_MOD_MAX ? (io)->mod[(i)] : NULL) #define rsnd_io_to_mod_ssi(io) rsnd_io_to_mod((io), RSND_MOD_SSI) #define rsnd_io_to_mod_ssiu(io) rsnd_io_to_mod((io), RSND_MOD_SSIU) @@ -718,13 +724,6 @@ int rsnd_ssi_use_busif(struct rsnd_dai_stream *io); int rsnd_ssi_get_busif(struct rsnd_dai_stream *io); u32 rsnd_ssi_multi_slaves_runtime(struct rsnd_dai_stream *io); -#define RSND_SSI_HDMI_PORT0 0xf0 -#define RSND_SSI_HDMI_PORT1 0xf1 -int rsnd_ssi_hdmi_port(struct rsnd_dai_stream *io); -void rsnd_ssi_parse_hdmi_connection(struct rsnd_priv *priv, - struct device_node *endpoint, - int dai_i); - #define rsnd_ssi_is_pin_sharing(io) \ __rsnd_ssi_is_pin_sharing(rsnd_io_to_mod_ssi(io)) int __rsnd_ssi_is_pin_sharing(struct rsnd_mod *mod); diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c index 26a00a7..0c93b1f 100644 --- a/sound/soc/sh/rcar/ssi.c +++ b/sound/soc/sh/rcar/ssi.c @@ -99,9 +99,7 @@ struct rsnd_ssi { /* flags */ #define RSND_SSI_CLK_PIN_SHARE (1 << 0) #define RSND_SSI_NO_BUSIF (1 << 1) /* SSI+DMA without BUSIF */ -#define RSND_SSI_HDMI0 (1 << 2) /* for HDMI0 */ -#define RSND_SSI_HDMI1 (1 << 3) /* for HDMI1 */ -#define RSND_SSI_PROBED (1 << 4) +#define RSND_SSI_PROBED (1 << 2) #define for_each_rsnd_ssi(pos, priv, i) \ for (i = 0; \ @@ -119,20 +117,6 @@ struct rsnd_ssi { (rsnd_ssi_run_mods(io) & (1 << rsnd_mod_id(mod))) #define rsnd_ssi_can_output_clk(mod) (!__rsnd_ssi_is_pin_sharing(mod)) -int rsnd_ssi_hdmi_port(struct rsnd_dai_stream *io) -{ - struct rsnd_mod *mod = rsnd_io_to_mod_ssi(io); - struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); - - if (rsnd_flags_has(ssi, RSND_SSI_HDMI0)) - return RSND_SSI_HDMI_PORT0; - - if (rsnd_flags_has(ssi, RSND_SSI_HDMI1)) - return RSND_SSI_HDMI_PORT1; - - return 0; -} - int rsnd_ssi_use_busif(struct rsnd_dai_stream *io) { struct rsnd_mod *mod = rsnd_io_to_mod_ssi(io); @@ -1059,48 +1043,6 @@ void rsnd_parse_connect_ssi(struct rsnd_dai *rdai, of_node_put(node); } -static void __rsnd_ssi_parse_hdmi_connection(struct rsnd_priv *priv, - struct rsnd_dai_stream *io, - struct device_node *remote_ep) -{ - struct device *dev = rsnd_priv_to_dev(priv); - struct rsnd_mod *mod = rsnd_io_to_mod_ssi(io); - struct rsnd_ssi *ssi; - struct device_node *remote_node = of_graph_get_port_parent(remote_ep); - - /* support Gen3 only */ - if (!rsnd_is_gen3(priv)) - return; - - if (!mod) - return; - - ssi = rsnd_mod_to_ssi(mod); - - /* HDMI0 */ - if (strstr(remote_node->full_name, "hdmi@fead0000")) { - rsnd_flags_set(ssi, RSND_SSI_HDMI0); - dev_dbg(dev, "%s connected to HDMI0\n", rsnd_mod_name(mod)); - } - - /* HDMI1 */ - if (strstr(remote_node->full_name, "hdmi@feae0000")) { - rsnd_flags_set(ssi, RSND_SSI_HDMI1); - dev_dbg(dev, "%s connected to HDMI1\n", rsnd_mod_name(mod)); - } -} - -void rsnd_ssi_parse_hdmi_connection(struct rsnd_priv *priv, - struct device_node *endpoint, - int dai_i) -{ - struct rsnd_dai *rdai = rsnd_rdai_get(priv, dai_i); - struct device_node *remote_ep = of_graph_get_remote_endpoint(endpoint); - - __rsnd_ssi_parse_hdmi_connection(priv, &rdai->playback, remote_ep); - __rsnd_ssi_parse_hdmi_connection(priv, &rdai->capture, remote_ep); -} - struct rsnd_mod *rsnd_ssi_mod_get(struct rsnd_priv *priv, int id) { if (WARN_ON(id < 0 || id >= rsnd_ssi_nr(priv))) diff --git a/sound/soc/sh/rcar/ssiu.c b/sound/soc/sh/rcar/ssiu.c index 645340e..4f59100 100644 --- a/sound/soc/sh/rcar/ssiu.c +++ b/sound/soc/sh/rcar/ssiu.c @@ -135,7 +135,8 @@ static int rsnd_ssiu_init_gen2(struct rsnd_mod *mod, struct rsnd_priv *priv) { struct rsnd_ssiu *ssiu = rsnd_mod_to_ssiu(mod); - int hdmi = rsnd_ssi_hdmi_port(io); + u32 has_hdmi0 = rsnd_flags_has(io, RSND_STREAM_HDMI0); + u32 has_hdmi1 = rsnd_flags_has(io, RSND_STREAM_HDMI1); int ret; u32 mode = 0; @@ -212,7 +213,7 @@ static int rsnd_ssiu_init_gen2(struct rsnd_mod *mod, } } - if (hdmi) { + if (has_hdmi0 || has_hdmi1) { enum rsnd_mod_type rsnd_ssi_array[] = { RSND_MOD_SSIM1, RSND_MOD_SSIM2, @@ -238,14 +239,10 @@ static int rsnd_ssiu_init_gen2(struct rsnd_mod *mod, rsnd_mod_id(pos) << shift; } - switch (hdmi) { - case RSND_SSI_HDMI_PORT0: + if (has_hdmi0) rsnd_mod_write(mod, HDMI0_SEL, val); - break; - case RSND_SSI_HDMI_PORT1: + if (has_hdmi1) rsnd_mod_write(mod, HDMI1_SEL, val); - break; - } } return 0;