From patchwork Wed Nov 30 06:22:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 9453793 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 11C8F6071E for ; Wed, 30 Nov 2016 06:59:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id ED6602838E for ; Wed, 30 Nov 2016 06:59:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E192A28394; Wed, 30 Nov 2016 06:59:26 +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=-1.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_NONE, T_DKIM_INVALID autolearn=no 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 DA87C2838E for ; Wed, 30 Nov 2016 06:59:25 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id 4BDBC266BF5; Wed, 30 Nov 2016 07:59:21 +0100 (CET) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 27B17266BEF; Wed, 30 Nov 2016 07:57:02 +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 68CE1266B88; Wed, 30 Nov 2016 07:23:07 +0100 (CET) Received: from relmlie3.idc.renesas.com (relmlor4.renesas.com [210.160.252.174]) by alsa0.perex.cz (Postfix) with ESMTP id 123E12667E0 for ; Wed, 30 Nov 2016 07:22:59 +0100 (CET) Received: from unknown (HELO relmlir1.idc.renesas.com) ([10.200.68.151]) by relmlie3.idc.renesas.com with ESMTP; 30 Nov 2016 15:22:40 +0900 Received: from relmlac1.idc.renesas.com (relmlac1.idc.renesas.com [10.200.69.21]) by relmlir1.idc.renesas.com (Postfix) with ESMTP id 8FA3C4BC84; Wed, 30 Nov 2016 15:22:40 +0900 (JST) Received: by relmlac1.idc.renesas.com (Postfix, from userid 0) id 8473980030; Wed, 30 Nov 2016 15:22:40 +0900 (JST) Received: from relmlac1.idc.renesas.com (localhost [127.0.0.1]) by relmlac1.idc.renesas.com (Postfix) with ESMTP id 788048002F; Wed, 30 Nov 2016 15:22:40 +0900 (JST) Received: from relmlii1.idc.renesas.com [10.200.68.65] by relmlac1.idc.renesas.com with ESMTP id RAR27802; Wed, 30 Nov 2016 15:22:40 +0900 X-IronPort-AV: E=Sophos;i="5.31,720,1473087600"; d="scan'";a="226660523" Received: from mail-pu1apc01lp0018.outbound.protection.outlook.com (HELO APC01-PU1-obe.outbound.protection.outlook.com) ([65.55.88.18]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 30 Nov 2016 15:22:39 +0900 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; bh=WKBTsd62/Uw9kdtU2veA6RyypsUCtG5oxHC6o13j8gM=; b=jHWFqQr1HU1FVWDHdnnzmd4EWcAuPiUlFnYPEBc0RjOtQ3mKdIZB/BukmyvJyavkT8B/oA/aKcglgBJKba9hP9+8TG//ZVyzxHjq6R2C4vJvZZfY9jO03lpjnXxvEQHE3ruQIQ9nHcsWqi8JMv1Y679kjQ2TV1r9SQgCpvo0qIE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; Received: from morimoto-PC.renesas.com (211.11.155.144) by SG2PR0601MB1453.apcprd06.prod.outlook.com (10.169.106.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.747.10; Wed, 30 Nov 2016 06:22:36 +0000 Message-ID: <87wpfla3oe.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 To: Mark Brown , Lars-Peter In-Reply-To: <87y401a3pj.wl%kuninori.morimoto.gx@renesas.com> References: <87y401a3pj.wl%kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Wed, 30 Nov 2016 06:22:36 +0000 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: KAWPR01CA0089.jpnprd01.prod.outlook.com (10.174.230.25) To SG2PR0601MB1453.apcprd06.prod.outlook.com (10.169.106.19) X-MS-Office365-Filtering-Correlation-Id: 01211940-6ec9-4aa5-b80d-08d418e94785 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:SG2PR0601MB1453; X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1453; 3:m46qrwkIZRbSZV4lQaSjxhPpKBZ4ApsRgbArgVCub8PVBMWqC+li+wZnfSTzzWAb5o2IgXnYK2qobrPjZC86EZ14VTmRiXZTvVsbCL1bQx4Wq7pSeT1bb7bgScbMnaUpqQy1AruUlwC8nWd+5CQco4BxmAhY/fyLSTmfuDGXgxNW67yCtNVDY5QjfdxPBQ2Dw/hrMKq1FiiJw7cnYWxcTQWRyrvCcq4mgYWFpPbkzsLgTzIDwHUS+BWC6aTIzfBlO9pbXay7ous0/Yu/bp3/1A==; 25:HoiaRvvjPd+KQ9zKArUsNEJ+TIdD43kLZ/f9UezsVKDvofCln/2h89QreZZQPxnL4IFhEIUOv0ZcA4Q7is0qPdgMyfbdI33y19te+C10nHWq8owrQXknH7OZztYeZbOo5P8uYbBI4etTNRdRG46me8oC2ME50RQZLaaQS3GwWZjIGEL8adlxXFgL04kGU5RuB7tkhL429Pq31FdFAD5hnSLW10IUZt6NJChciFdgaa6gPtkqzXpvcsbqApvLQ11brtbIdOS9IxEJtPLIWE2wIrdaxnV6IQG/0JjtF+crdAUbPrTehv4JG+GdEu85I091dPWZo3/7EAWdDOkYHPTfLiENpNCqCJspDYAoB2C8IH+4RZmvlQN5Q7cPu6sChBP34Y8UP4cUysM0Bgu7gqLLk65rVKbnDx8iqUYN/hpRILQu/3hxKs8yZ8VmQYxW9+vz+FP0dQAh3xn5FPyfgRH2ZA== X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1453; 31:JouAg+1aRByRdFAfGInesRkK+oSujpgpXqY/QGwsuIpbUOKReA+4YeE7OAW3atc+jDQLNW16Nx+CD/4yecj5jr4Os4oocG+85wF4PXZCt0hLi4sh9zAqEL0DiE2eck9Kv3oWNCIIfET7NltCMLB0g2CWuhHMy0d9OkRh+IzwRlTUCHMhMZaRSHPADRSeRgTmX1WHY2I+utnxC6LVrohpgmvh+nqeGMGfEatp3gs/gOh3i59w9zZHTJ8ueBSBnWHMmqe4zMWVRdOJgyes0usl9A==; 20:z4RyguLSTQJ88+61bA3T7VJdIlRNMb39ryK0T/qCCIo6CJHCqnzZiTbAnwINyuTiEFUIz3G2zv8P+V/62DTrHRYcpd2dbF8KGMlnae9U7IISdNU9fTx7Kh6ck47CWO0Nt2MIU4tUmcl5dz7rZwtJOkfQbQ9zosFMjq/nIkFXTHs0YQ8j2wtePdEKTMt/6RpwOeWopUhh/ANBlmr0XeR5jIbgwMn3MjvP8QxMitq5AXCGLs/m+SYRASfNGxKwLhGhDWE7BJy5WgtF1/VJ9qY26byRhPR0AVW4sx2ZVNMbzNvxzl4v0GPu5vCdR88xcvR5LuJOFjObd9Qzc7pNo/4SeHagkAj3s8b4W6I1ITp5K/IRzdBF1K4wE2BKXkmt3KPTHw3wXwcEruLXqOvgwnNjDBB14sonWvAJCY2SqZSmXfbSwmnPa0iS3CdPBsA8P+eWHRWFhF0/bok/lvjNVbKfr5F0h+YNHMzVcuP4LM9VAdU1G4SKg6H//DftF0qIQVZv X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123564025)(20161123562025)(20161123558021)(20161123560025)(6072148); SRVR:SG2PR0601MB1453; BCL:0; PCL:0; RULEID:; SRVR:SG2PR0601MB1453; X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1453; 4:Tv8eg0EDXOWFMCiS15vGEre4AgZUosvEqcCIQh4u2tNNzw20wUBE6/GsAppYsMIY/s+LhG2l9BLDyvp0sydTqRpBKh/ysj330gkJr1eMjIW+j7uqg29rLo4ex4jNf9VjIiSdd2QzMDxbJ2037WK6fOybxSTHmNbCNKvczmWzSFlBfsNVUXbcgAfbjWkpnkHNz7aul+fChyL2ND+5wFVxhoXZ2XDwVSkU+AXty32cH6SjNg6Ac7sSQiBxUE+fNfZ0KfXY/7mWfea7J8Vk+reKFCM6P+ePsToYTtN3e612qOclR+cZ4ToyrFmYQQtFBDSfA9J9PgojRS4KwsqkOl50Se0FTJsi3Gcphp4w38SX1xIOqCmU/hG3BpiRsMUR62cuHgxsNZNmw+t/IbYXAJoviVsykH0P9wRkcAOSaZ9HhQ4DsxiKumNZ+pAzOWaNW9Fdqq8xLtpmicURLLR+gHv/Uv958Ijng7BTrLIuUdyZQtUsB+S8htQa/TBV4eUBLFY58qJvU9fgodxXBd6+JQeVKUWPi9Pw3jre6FmwoB6Y3X7qgCYRT7nuQd97ZlmvGWdqpf2iFPs39BsT0e7MyB7+L9fntiQ5ws0FscmUePgWe0IXRAGw/K1edgB+9wVGHsrgP+uPb1liWL47bbMAxt2ZAOFQQd8rnF276Y/Oz3HYPUM= X-Forefront-PRVS: 0142F22657 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(199003)(189002)(53416004)(4001350100001)(66066001)(105586002)(42186005)(23726003)(2950100002)(97736004)(5001770100001)(189998001)(38730400001)(6116002)(3846002)(50466002)(305945005)(86362001)(36756003)(7736002)(47776003)(106356001)(4326007)(92566002)(7846002)(68736007)(2906002)(69596002)(33646002)(81166006)(8676002)(5660300001)(6486002)(83506001)(46406003)(81156014)(733004)(50986999)(39410400001)(76176999)(54356999)(39450400002)(101416001)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:SG2PR0601MB1453; H:morimoto-PC.renesas.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: renesas.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SG2PR0601MB1453; 23:XYmnYCyD3RVtIN96oyVQKRbVLExcrFeuQz5uI+0?= =?us-ascii?Q?l06q+K2Sag+Tos7vdOB1/WLaWLEl5Q/uwjNzX7PQ9XPsQYDgigHRisgbHwS0?= =?us-ascii?Q?HdiHYNmwLucpIkVDxBrCILGgr4kNP2oBx6RtAs5Ch+GIcOlV2EflpFvVO6G+?= =?us-ascii?Q?hbQQHEsSJRjh23Uw5qTh2BYQ9ut+i0wAwE5D45ZKcFI0k4CGHqqxH0U2HHTB?= =?us-ascii?Q?KUqKrPotd9b2ExOK7tWpBEGD4ABlJqD4dg00jFAZS/rW192aT4uO76rxXq0H?= =?us-ascii?Q?tP9U0RBzo4V2shrLvT4VZ6fP+ZlgWdV6aaIBcjjzeBuYXEKXNzO1pj9WecZ5?= =?us-ascii?Q?BO3ztI7FLFnCwE0ff2Ndr6ppsUd3xomNV57Go8geg/HaBicRpV0hsJmrdCsA?= =?us-ascii?Q?PSoOD4gwfqy70SNTALYWBR/ZIA83w4bD2Tw44juusNsvqcoPmKR2T0AE+JFE?= =?us-ascii?Q?3fxwjVaySyrZB6+fVqs3E5rlmjkceUQasfgvfza95l1JQSQBDoSSKHtzTuR0?= =?us-ascii?Q?FcZnqR9pu03vlS2r2MgDikwCa/AIPjH6OyXYOyKMt23oMrNbiin3IvaPnhMS?= =?us-ascii?Q?ozCSOpfEe7VtScvm5AgbZf+juZF9UfOS6xyANi8Ygd+JwU1+JFWRrh24KcmJ?= =?us-ascii?Q?3wCSIJuFL8zscZ4jAEHsOAyFXHUj8pyfwi1WRmtldFDp3kXuul4pGqDZt4nT?= =?us-ascii?Q?KeuhvlUkt61NQwIm9TSzHta4t3HdisMr+3OtdJWvjwTnCTX55Ruk9x9zmo82?= =?us-ascii?Q?JAPBer2mx5Euj33r/D+gIZv4PZpSSTiPQPiZJOf7pSb2uAJCQ5aiqWm2SDZj?= =?us-ascii?Q?bRA3ynzh5TkVjCdSGRyUCWR5yauqF5Y0vZxYiaxhekuZ1FchnTGKKaoEdE3T?= =?us-ascii?Q?+fRrrDxjkTD6JygMTbU8SL0egb0ctO4O7sgxwurLZQAP98fPY9p2i0QOP8Pd?= =?us-ascii?Q?a2mJBRQ0LRMpuUT/UFWTmRO+duk24wTKvCxv5C3OSkRlTo88tOtSfaWGjgjY?= =?us-ascii?Q?mPtWTCcRQhYqzogjovTLTLh86mDSwIzR6K/CF74JNQH/lo49VNCOpVruKqBP?= =?us-ascii?Q?g7h0SdamroBj2PWYdYSQ+wI+9ICu76gzsnUGmMOZ6qw2hi6igWg9TOuWI/bc?= =?us-ascii?Q?KV4VgGk3cAGqu9R5lNRDB7Ov+YQca2Hz6Hn/cjpCvhDqjD4ni4343Dw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1453; 6:JzL6epFTNCzqNX4RGzxxqYTPd+0XfMwjjlhLTNVlldp1mYBicmtkL6/Bf7EWWSqqnOdbylbtdC/HnXba9R5z16McrTHfaRLp99zLPLQbu+TAugv70uFhqMQK60xYW+fViNXomvw8uAJS2zgz/7C5Dg7LxsouNNn8I7o6iPQR2yJfQ9g4Sp1hnOz8Gpy8JfdGAxtbrTHb7J/InRkkMUUfOTASuUc4IoelwTKkQFw/EygErY9miYny9uPqcp4uLwqrKk2LeAAzDy8SiwoJw33Fe8gogOy0w3h2Se/hUlIreaQdvk2SONagE9WPjxC4weiky/Dy3gIXLQLFizUwFAvHqymWJ6yBoezpjvguzizOPDXwEB8g4qX0LBkoAuBk6Ds2Z4x2DKv1eg9GUNwQ1ke6FW2Hatk9FvV9QQM3bHSn86wo0D5/mGmbE0AoVAbPPSJSRE12BRq8WxtKWZTKzTIq1+5QyltEYs3WS3mDZ4GD9ME=; 5:PbarISyzMW79eq4oLhkXMNef7qQlj7MY7kY9aamXv7zHjwAGYcx8Y2NwSLjJMbSRGOZZ26VXCDgxAm4BjCO25AySyWFS97z+gkZRPrzMO1VPbjPvUWKYaAWXsfXouxeDjnREYXtV/EjLbLRUgqvw2g==; 24:wrgCQw+JKGxKqHVTzDqj+V0Alr5ht6AtskzHD7EYt4kU3znWR0i4hDsar6rW8szcvtnsAJ+9KF1QRUHpu2mZchQfPmOUndnS2H/POy1ILV8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1453; 7:ojstpRkGiHQYeJA+RBxctJm5aI6eTblwy8UX004lrzzXpdvSuzISwQP5DNziHRinqDdtyRnGvaTCpwbkLTTSoRYEti2dvvF60y2IK65QDL+eLhI4NH1vH7mK3hz5mujaMa7rDppJkwDBN+V/9Kk1Uf8QmwlHB6xIw1BbQ4gh8IGci6A5vXTe7gXaHuShfyxbocVAA0sOHsb1eLubcuBJggRl8/983EBbw60Mk9RnafpFyPeiw/96zp0nzBSiyaD+0yJZ/jiM9rw9u+eOKgu8CDoOh3XXh0aQYnfLKAKoEzJVCj/s+pdM+NcJOc4y13/mcwHYQ7pX6cqQAoOhEHT8eCMjPME1A1aKo2+NgMyOwNpHUr8idONKh4KbE3IQhHOYRvRGIY/xS9tqkdRJeQdGPksLAZSOMT2Kw2vkBa8G9mjuX3pvBewXO36ceEWt3U7fzXfSSffVDbx6rBH57QsQkQ==; 20:F/8JeolfS2d+Zi9cY9oE2nkvM9WpN4OpH6EWsER1xHZbuCAYs9ir/oMysrQoyMBV2VkQEa9MpUY6GgGCCETgkFbHVx+VZXfwDKoJKRcEfw09KK1ir5YdEs+ADD+IPToFvHBNsh8x/LX1s4S2JkXhX9zPgoHGoxFOQhy1/FcnH0Y= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2016 06:22:36.7831 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2PR0601MB1453 Cc: Linux-ALSA , Simon Subject: [alsa-devel] [PATCH v4 1/3] ASoC: core: replace codec_dev_list to component_dev_list on Card 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 Card has Codec list (= codec_dev_list), but Codec will be removed in the future. Because of this reason, this patch adds new Component list in Card, and replace Codec list. Signed-off-by: Kuninori Morimoto --- include/sound/soc.h | 6 +++--- sound/soc/intel/boards/broadwell.c | 16 ++++++++++------ sound/soc/intel/boards/cht_bsw_rt5672.c | 16 ++++++++++------ sound/soc/soc-core.c | 28 ++++++++++++++++------------ 4 files changed, 39 insertions(+), 27 deletions(-) diff --git a/include/sound/soc.h b/include/sound/soc.h index 77b01c4..7c567e7 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -810,6 +810,7 @@ struct snd_soc_component { struct list_head list; struct list_head list_aux; /* for auxiliary component of the card */ + struct list_head card_list; struct snd_soc_dai_driver *dai_drv; int num_dai; @@ -868,7 +869,6 @@ struct snd_soc_codec { const struct snd_soc_codec_driver *driver; struct list_head list; - struct list_head card_list; /* runtime */ unsigned int cache_bypass:1; /* Suppress access to the cache */ @@ -1170,7 +1170,7 @@ struct snd_soc_card { struct work_struct deferred_resume_work; /* lists of probed devices belonging to this card */ - struct list_head codec_dev_list; + struct list_head component_dev_list; struct list_head widgets; struct list_head paths; @@ -1541,11 +1541,11 @@ static inline void *snd_soc_platform_get_drvdata(struct snd_soc_platform *platfo static inline void snd_soc_initialize_card_lists(struct snd_soc_card *card) { - INIT_LIST_HEAD(&card->codec_dev_list); INIT_LIST_HEAD(&card->widgets); INIT_LIST_HEAD(&card->paths); INIT_LIST_HEAD(&card->dapm_list); INIT_LIST_HEAD(&card->aux_comp_list); + INIT_LIST_HEAD(&card->component_dev_list); } static inline bool snd_soc_volsw_is_stereo(struct soc_mixer_control *mc) diff --git a/sound/soc/intel/boards/broadwell.c b/sound/soc/intel/boards/broadwell.c index 7486a00..80f3a2d 100644 --- a/sound/soc/intel/boards/broadwell.c +++ b/sound/soc/intel/boards/broadwell.c @@ -220,10 +220,12 @@ static int broadwell_rtd_init(struct snd_soc_pcm_runtime *rtd) }; static int broadwell_suspend(struct snd_soc_card *card){ - struct snd_soc_codec *codec; + struct snd_soc_component *component; + + list_for_each_entry(component, &card->component_dev_list, card_list) { + if (!strcmp(component->name, "i2c-INT343A:00")) { + struct snd_soc_codec *codec = snd_soc_component_to_codec(component); - list_for_each_entry(codec, &card->codec_dev_list, card_list) { - if (!strcmp(codec->component.name, "i2c-INT343A:00")) { dev_dbg(codec->dev, "disabling jack detect before going to suspend.\n"); rt286_mic_detect(codec, NULL); break; @@ -233,10 +235,12 @@ static int broadwell_suspend(struct snd_soc_card *card){ } static int broadwell_resume(struct snd_soc_card *card){ - struct snd_soc_codec *codec; + struct snd_soc_component *component; + + list_for_each_entry(component, &card->component_dev_list, card_list) { + if (!strcmp(component->name, "i2c-INT343A:00")) { + struct snd_soc_codec *codec = snd_soc_component_to_codec(component); - list_for_each_entry(codec, &card->codec_dev_list, card_list) { - if (!strcmp(codec->component.name, "i2c-INT343A:00")) { dev_dbg(codec->dev, "enabling jack detect for resume.\n"); rt286_mic_detect(codec, &broadwell_headset); break; diff --git a/sound/soc/intel/boards/cht_bsw_rt5672.c b/sound/soc/intel/boards/cht_bsw_rt5672.c index df9d254..dfae9cf 100644 --- a/sound/soc/intel/boards/cht_bsw_rt5672.c +++ b/sound/soc/intel/boards/cht_bsw_rt5672.c @@ -292,10 +292,12 @@ static int cht_aif1_startup(struct snd_pcm_substream *substream) static int cht_suspend_pre(struct snd_soc_card *card) { - struct snd_soc_codec *codec; + struct snd_soc_component *component; + + list_for_each_entry(component, &card->component_dev_list, card_list) { + if (!strcmp(component->name, "i2c-10EC5670:00")) { + struct snd_soc_codec *codec = snd_soc_component_to_codec(component); - list_for_each_entry(codec, &card->codec_dev_list, card_list) { - if (!strcmp(codec->component.name, "i2c-10EC5670:00")) { dev_dbg(codec->dev, "disabling jack detect before going to suspend.\n"); rt5670_jack_suspend(codec); break; @@ -306,10 +308,12 @@ static int cht_suspend_pre(struct snd_soc_card *card) static int cht_resume_post(struct snd_soc_card *card) { - struct snd_soc_codec *codec; + struct snd_soc_component *component; + + list_for_each_entry(component, &card->component_dev_list, card_list) { + if (!strcmp(component->name, "i2c-10EC5670:00")) { + struct snd_soc_codec *codec = snd_soc_component_to_codec(component); - list_for_each_entry(codec, &card->codec_dev_list, card_list) { - if (!strcmp(codec->component.name, "i2c-10EC5670:00")) { dev_dbg(codec->dev, "enabling jack detect for resume.\n"); rt5670_jack_resume(codec); break; diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 6f911f4..f57ff68 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -626,7 +626,7 @@ static void codec2codec_close_delayed_work(struct work_struct *work) int snd_soc_suspend(struct device *dev) { struct snd_soc_card *card = dev_get_drvdata(dev); - struct snd_soc_codec *codec; + struct snd_soc_component *component; struct snd_soc_pcm_runtime *rtd; int i; @@ -703,8 +703,12 @@ int snd_soc_suspend(struct device *dev) snd_soc_dapm_sync(&card->dapm); /* suspend all CODECs */ - list_for_each_entry(codec, &card->codec_dev_list, card_list) { - struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec); + list_for_each_entry(component, &card->component_dev_list, card_list) { + struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); + struct snd_soc_codec *codec = snd_soc_component_to_codec(component); + + if (!codec) + continue; /* If there are paths active then the CODEC will be held with * bias _ON and should not be suspended. */ @@ -768,7 +772,7 @@ static void soc_resume_deferred(struct work_struct *work) struct snd_soc_card *card = container_of(work, struct snd_soc_card, deferred_resume_work); struct snd_soc_pcm_runtime *rtd; - struct snd_soc_codec *codec; + struct snd_soc_component *component; int i; /* our power state is still SNDRV_CTL_POWER_D3hot from suspend time, @@ -794,7 +798,12 @@ static void soc_resume_deferred(struct work_struct *work) cpu_dai->driver->resume(cpu_dai); } - list_for_each_entry(codec, &card->codec_dev_list, card_list) { + list_for_each_entry(component, &card->component_dev_list, card_list) { + struct snd_soc_codec *codec = snd_soc_component_to_codec(component); + + if (!codec) + continue; + if (codec->suspended) { if (codec->driver->resume) codec->driver->resume(codec); @@ -1072,9 +1081,7 @@ static void soc_remove_component(struct snd_soc_component *component) if (!component->card) return; - /* This is a HACK and will be removed soon */ - if (component->codec) - list_del(&component->codec->card_list); + list_del(&component->card_list); if (component->remove) component->remove(component); @@ -1443,10 +1450,7 @@ static int soc_probe_component(struct snd_soc_card *card, component->num_dapm_routes); list_add(&dapm->list, &card->dapm_list); - - /* This is a HACK and will be removed soon */ - if (component->codec) - list_add(&component->codec->card_list, &card->codec_dev_list); + list_add(&component->card_list, &card->component_dev_list); return 0;