From patchwork Mon Jan 29 03:48:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10189005 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 3005960388 for ; Mon, 29 Jan 2018 04:26:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1A7B628783 for ; Mon, 29 Jan 2018 04:26:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0D52428786; Mon, 29 Jan 2018 04:26:22 +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 E4E3C28783 for ; Mon, 29 Jan 2018 04:26:19 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 29B292678FA; Mon, 29 Jan 2018 05:23:53 +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 47D04267845; Mon, 29 Jan 2018 05:23:50 +0100 (CET) Received: from relmlie2.idc.renesas.com (relmlor3.renesas.com [210.160.252.173]) by alsa0.perex.cz (Postfix) with ESMTP id E2FCD267727 for ; Mon, 29 Jan 2018 04:48:09 +0100 (CET) Received: from unknown (HELO relmlir1.idc.renesas.com) ([10.200.68.151]) by relmlie2.idc.renesas.com with ESMTP; 29 Jan 2018 12:48:08 +0900 Received: from relmlii1.idc.renesas.com (relmlii1.idc.renesas.com [10.200.68.65]) by relmlir1.idc.renesas.com (Postfix) with ESMTP id 527327616C; Mon, 29 Jan 2018 12:48:08 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,429,1511794800"; d="scan'208";a="269591897" Received: from mail-pu1apc01lp0017.outbound.protection.outlook.com (HELO APC01-PU1-obe.outbound.protection.outlook.com) ([65.55.88.17]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 29 Jan 2018 12:48:07 +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=loSO8Gbf/ZU8F5NVEvjTwsvGZTincUknp5ZdyGLMz0k=; b=kU+xXmi3Cm2ZMlOF0sabtuj6ImEGhnkrajVIzelwHn2JgLfhTahojJfbkfywEmg3R4JFasb1FSMe5w0Ipew/CHrYZEXRbhHSmz4w1a//zWosu/QjCKeo0OdYiTyhNKGhhLEcJlpV36aRJmAJkNniAPTaHR6Mh+plFgsD4NJ+w64= Received: from morimoto-PC.renesas.com (211.11.155.138) by HK2PR0601MB1873.apcprd06.prod.outlook.com (2603:1096:202:a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Mon, 29 Jan 2018 03:48:05 +0000 Message-ID: <87tvv51g4h.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 To: Mark Brown In-Reply-To: <87inbl5q6q.wl%kuninori.morimoto.gx@renesas.com> References: <87607l8k9i.wl%kuninori.morimoto.gx@renesas.com> <87inbl5q6q.wl%kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Mon, 29 Jan 2018 03:48:05 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: TY1PR01CA0064.jpnprd01.prod.outlook.com (2603:1096:401:c::24) To HK2PR0601MB1873.apcprd06.prod.outlook.com (2603:1096:202:a::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: a8f95785-e197-4560-0bf2-08d566cb1b0c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HK2PR0601MB1873; X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1873; 3:ln25BXHjcz/hXia6L1MFdb2RtK62kb79K3wJOl3HOFWGd7pA6y85//IkZd7KG/CaIYEs7ZUYJ2qwcJjGMv8UxBhBav2vfNmtFfh9fdWG77vznh/8kskqsQWDxDD3eRIy7fmLv5ilLQRPg9PRLnWDMmR2exDMPIEyDFvvbKgas8Dum+JxLFu79fniLrbMxxao2JvKCnRPsFQRgRCuAPVbVlGbXMm+8MlD5z2BneDxYBUUISJ22oXBN5XXXSfss5vt; 25:S7zSn8QHonxuNH0XBuGHzoF55VTrzJdsvRJKvqCj6XJ8I2e8pd1aDTdy96WnQXm9e6AKYZhQ8BSR8+aRmXmOPA/gFrGK3/RD0XKvMxE2U5Ss2Bmlk4cxbfI8SUL3MwpeLJ4LHIA1cFKOzFQpmgGcVXBAbS6kB9oXoIsjxvcMn8SMaGNJ5C57kwTLWDDOpT4S609urWc8YJVm0nYlfIAYayi8+z+Cw6qlo4X6b1/tRctdzmVmt9oGlaBkL0C+7YPWLlHbhnpy4/egynhVUzJYEoCFLhZQHgKynomP3C8Ibu6JGpriMtziXKFKdD6gHAqveTuW8fLOvN9gtlE2BwZExA==; 31:sTfQVP1vAx2UqrSKhivDNce7eVIP9TpezvlvPYCLrIXboRLIBCm7D+uomxTz8Rd+8OXi0OlGUlQAKM5l0JqPDTvJXiILTsCDMovFqGlugj1pCMnWaqfOqcF5KNLeNDWhF9go5fXK2qiyop4XeAZvtBCG5kt+3xGp99smAu4I8j4ZmJXRetiLGQo85MPojwmTLIJ32W8kuwLhYLog240dkjNNJyX75qq+IJUm+ldaxX4= X-MS-TrafficTypeDiagnostic: HK2PR0601MB1873: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1873; 20:JcROjBcu0Q1cOM7ojO4ceu2RoSCE052I+cfUO1oQroJ7T8RlwlHd2TB4sc/ZboVYCzEPia1g5zu6U/y3IpK2Z9fWYL66telBymFOXU5BXC5UWL4CpImQFWIBPtuZCcvHXVGimyt+Oltb/z8tOGFtDRG1Vcxs+pQOWVdQsU2Ofdws1JpRbglHzrNqPE6pvAn6Y6TL77BlHByrYxUQ6w0locXRUDSftFeqQA37jTf+2EEn01f1z+yQiJpjYpEzdISL9BMqs5I8DMmW2kVOoIWC2uOSLY+Qh8n54JRc/CJZ8zruqYeS8l83nWTXQLmLfTPynRvpa0xFmg9Zpy4du/ZkZ7Ujlvzn41RWoDcyd1eMmAZDMF36RUSNdrFMCRkR/oLEL4ux8hUUDpGmx7b0CB/kDrML7y/LJfIKcWKygjCX2HsP/f3TR5ZIwAwKk3J0B0O+PD+roL/dM6Vp0884BOZ9z5wKH7lq6cCZ3rlIcyLQcfjRNGSTRa0NN4tUrAn/wl/A; 4:i0zXvh603YR/dHnOGR4fiEeO5NqwKRl0heMObo8MQxUYjcSW5RsUg0Mc/VuM6c5lcbJV9WmsoPJmzUhwuGU5uvje+sP+AVRBS+2OfshucP8Z3+6ICER3uYkGvhKjdyWF8A+HOsjFpU2JEMzgAYyMA/FULMFBdbtVPlrEZ0WveOUnqBgC5vEoxjyw4BKP9/JVmIYV6MYl7EcL1OEgk48M8JJfWPz24cI+zE9oJ1bvP/qGUdIdJ4e4hjhDeEzgZp7KBrosK2gC0PccCaFiw6/it9bjoe+o7r+8EDFBF0470qMPHjk34DaaPeEyHeZjbKah X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(3002001)(10201501046)(3231101)(944501161)(93006095)(93001095)(6055026)(6041288)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123560045)(20161123562045)(6072148)(201708071742011); SRVR:HK2PR0601MB1873; BCL:0; PCL:0; RULEID:; SRVR:HK2PR0601MB1873; X-Forefront-PRVS: 0567A15835 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(396003)(346002)(376002)(366004)(39380400002)(39860400002)(189003)(199004)(305945005)(2906002)(4326008)(106356001)(53946003)(6486002)(53936002)(25786009)(6116002)(7736002)(23726003)(3846002)(97736004)(58126008)(16586007)(478600001)(53416004)(316002)(105586002)(47776003)(16526019)(186003)(36756003)(66066001)(83506002)(52116002)(8676002)(69596002)(81166006)(8936002)(81156014)(50466002)(68736007)(76176011)(5660300001)(7696005)(86362001)(575784001)(386003)(59450400001)(26005)(6916009)(2950100002)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:HK2PR0601MB1873; H:morimoto-PC.renesas.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; HK2PR0601MB1873; 23:zH3NC6AdVSGt/qKlK591UW2yeujI3ZlKQMSIWL/?= =?us-ascii?Q?QnIP0R34KsS0ZlOkhOMX93l6prbqzvysgVM0nq1USdymcOr4olGM2bVhUvDm?= =?us-ascii?Q?rlgYbnV8A6DXwaTQSImGG8c8gzj+SNaYY2o3CEUShsuvsNfDwbRmk5IVY6jk?= =?us-ascii?Q?N4Fwh5voucixXmlVQP9WJH0BV3S86vXPWwWs3LmS+e6HUBxZUBb7NSJsWisG?= =?us-ascii?Q?LH3L+7PXpRHV69C3PUdWkt1X7r3yOxh4542JjntgEDmt1yora2LT5lu0YtEe?= =?us-ascii?Q?Mi2eQuxfGaDHRrc71mFF1lQNfSa9mZlHyh7cfEXgiq8oXz4QiYmRMKehA3ub?= =?us-ascii?Q?4LR30Xgk0b3nzSPPpmL5lhiLOotCVzmJ7oO/hIzw3ZK1SYoCXXmssI7oCJya?= =?us-ascii?Q?Wr+ZxfUS8LUfJCSXvC58XwRtUXvmjRAKOOK/3GsXX0a4ititpkPhC8IFvk64?= =?us-ascii?Q?u6zKyFfvYX+PBKqcdeW8RILayh5l/4N1uAJloWjnBq0EiieMBWF+auhci0uw?= =?us-ascii?Q?Y9yZmGNv8m+1ZnLvKzpqQk8rtFHPoKgDlmNKLw1cSDxnZmdgpJ6otHrftkUg?= =?us-ascii?Q?WjT3XZ6WiI+I31GSHmmJzawBWtDK/9I/pmQcSS5jZHXgp8hTxDUhvtR7dFZJ?= =?us-ascii?Q?qhpUHvouZS42LdxgPJmTP4VhIBycReppJNCAVnRTioEiyDpP8ji1b9inuNAO?= =?us-ascii?Q?K0WK44B/dCIJZx7OfG+o7K8Veo+8scW63F+f3AtVLMjo8w5tH+xtPI+jxK4t?= =?us-ascii?Q?dq8ODbI9FS9Uxnt8XGxlWOSU9v+Em3SRIKRQY/uqenFcGQWlfBb2U2wv21Hy?= =?us-ascii?Q?LojM2eORaS6J63uaLBI8CEI2YZGsxVHBCiMFmP3hs2Uk5td3d/SlJzJ335vT?= =?us-ascii?Q?k9cuG6QBl8QoEnelP15PlXsSPD0z/D9iOYOKLbyiE+QEpODO7zYtEJTSHLhx?= =?us-ascii?Q?pHlmL26kv5Ws2KUGOK16f/zviP8eQYvLWnAGoIH+Jb9y36sSX/FOxnkE/qzv?= =?us-ascii?Q?6Xrwj7a3RPxb9REajdnmea5jOswk2uka4xc3NrGukOzMu/SqszMNvS4mgfwK?= =?us-ascii?Q?YPMLVMgapbBY3OUdfngoIiNo2BLQlw18jvP6Mcnfajq/mH+OIhD8lMw+qyYq?= =?us-ascii?Q?w9t5RwMMa+ULuODXhTNbPwt/kJP6rP3NNtu+chpB0X3AJ1kotFcZw9KTmzrB?= =?us-ascii?Q?913fshRR0xc/aVYlOddTiBsTsw+IWRufdl0q2Xz+j1cbMAV6qdt+dNfF8vQ?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1873; 6:C7x3wrHBnaLMqBd3hM4ge9duWSN7OBLIfaGKy40xDUZq4tGKulhKriQNz2lak6N8rU7rhWyOdhPUD+JOcKJ9DAQpB5cWaiJyp5zaH0eHre/XOuqRWKUOFRKLSHnhFPhIvpRWwXQpwV9yQ3u9P/IW+LZoKmv8pN+wP8z3hRUeHQxcwg31/CVDqm/PNjtOP28exxCD0Csd5/aYlEfdjnyUlXbP7CqMyt6UD//QxV9JEoOijePqQAUagxN3zIgMbjya+EuLzVoG/qjfmoL3A/qnykWuZ4wt94xWmOmtJU46xHYZEQQpQ3yP8m2mSa2Wj1Qtt4irdG7FAysx0QyT4kwlatTmWH/lqONWVz1vSChoFcE=; 5:MX0nmAvwosoNs+65Y4VLuIex5x/r7HJlXW2SwOfn4gp648VdEOKhwFhZpQX4llYnXqn6wS7qbiuOJjYxOnmCHzlb1rucoYiHHy14FYVCIr0UEHU0Vujpd9fVu+84TMypSuNBUKJ/kptJ7z1EILLUuJ5ZpoaUq6wgl3mW4/sgbMs=; 24:ZX9zEmn7aWDVY6J8Qa0jk7wIVEuas6rWkFIly8Wkrr46psxUUSy5VhQIqT4IwkC+viO1djDBS9NVmOgCg2Tfsbiu30OVcQ+kSfwlIvAa9hU=; 7:FvAGs3Roigh/2ERn5z/dRdeBDX0wl9/uQQ80KJR6h0hlyNulThEDhdkT0H/Ng8W7i+YaYQLAQ3SSwJYjTk0kwjWU7JeLiwKJC2FBvkclkN+fV0mxni3pxFIWynGc6JOadlHlQFNVEMq+OxbtqX5i+523kSOCyUEbsJ6TRv+7O0LujJLwAnbUmLV71tYepEaWVrjLqZLIROCPKZQiqF+/e7UoyKOmfuGUnz85AMHHYACVJSgLRxuTmRNAFTkO097A SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HK2PR0601MB1873; 20:hxhdXqSX4iaQgdXDovAQaFVwo6M5xyMGTbbB9WAnJX7ohxZk31rewGlqJbAfjHPlt8ukyrOAOw450zxim9wmvMysAcAlFd1JjLcW63qEpvmQSmWjNwbeuH6RlfgSCD5ddfudmCPojLOdRbgMCukTVtKc9trjwZ+FvEF6v8/VGdE= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2018 03:48:05.8305 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a8f95785-e197-4560-0bf2-08d566cb1b0c X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK2PR0601MB1873 Cc: Linux-ALSA Subject: [alsa-devel] [PATCH v2 067/186] ASoC: rt5631: replace codec to component 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 Now we can replace Codec to Component. Let's do it. Note: xxx_codec_xxx() -> xxx_component_xxx() .idle_bias_off = 0 -> .idle_bias_on = 1 .ignore_pmdown_time = 0 -> .use_pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 Signed-off-by: Kuninori Morimoto --- sound/soc/codecs/rt5631.c | 324 +++++++++++++++++++++++----------------------- 1 file changed, 163 insertions(+), 161 deletions(-) diff --git a/sound/soc/codecs/rt5631.c b/sound/soc/codecs/rt5631.c index 55b04c5..cf6dce6 100644 --- a/sound/soc/codecs/rt5631.c +++ b/sound/soc/codecs/rt5631.c @@ -71,30 +71,30 @@ struct rt5631_priv { /** * rt5631_write_index - write index register of 2nd layer */ -static void rt5631_write_index(struct snd_soc_codec *codec, +static void rt5631_write_index(struct snd_soc_component *component, unsigned int reg, unsigned int value) { - snd_soc_write(codec, RT5631_INDEX_ADD, reg); - snd_soc_write(codec, RT5631_INDEX_DATA, value); + snd_soc_component_write(component, RT5631_INDEX_ADD, reg); + snd_soc_component_write(component, RT5631_INDEX_DATA, value); } /** * rt5631_read_index - read index register of 2nd layer */ -static unsigned int rt5631_read_index(struct snd_soc_codec *codec, +static unsigned int rt5631_read_index(struct snd_soc_component *component, unsigned int reg) { unsigned int value; - snd_soc_write(codec, RT5631_INDEX_ADD, reg); - value = snd_soc_read(codec, RT5631_INDEX_DATA); + snd_soc_component_write(component, RT5631_INDEX_ADD, reg); + value = snd_soc_component_read32(component, RT5631_INDEX_DATA); return value; } -static int rt5631_reset(struct snd_soc_codec *codec) +static int rt5631_reset(struct snd_soc_component *component) { - return snd_soc_write(codec, RT5631_RESET, 0); + return snd_soc_component_write(component, RT5631_RESET, 0); } static bool rt5631_volatile_register(struct device *dev, unsigned int reg) @@ -187,8 +187,8 @@ static const DECLARE_TLV_DB_RANGE(mic_bst_tlv, static int rt5631_dmic_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); - struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); + struct rt5631_priv *rt5631 = snd_soc_component_get_drvdata(component); ucontrol->value.integer.value[0] = rt5631->dmic_used_flag; @@ -198,8 +198,8 @@ static int rt5631_dmic_get(struct snd_kcontrol *kcontrol, static int rt5631_dmic_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { - struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); - struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); + struct rt5631_priv *rt5631 = snd_soc_component_get_drvdata(component); rt5631->dmic_used_flag = ucontrol->value.integer.value[0]; return 0; @@ -286,78 +286,78 @@ static SOC_ENUM_SINGLE_DECL(rt5631_spk_ratio_enum, RT5631_GEN_PUR_CTRL_REG, static int check_sysclk1_source(struct snd_soc_dapm_widget *source, struct snd_soc_dapm_widget *sink) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(source->dapm); + struct snd_soc_component *component = snd_soc_dapm_to_component(source->dapm); unsigned int reg; - reg = snd_soc_read(codec, RT5631_GLOBAL_CLK_CTRL); + reg = snd_soc_component_read32(component, RT5631_GLOBAL_CLK_CTRL); return reg & RT5631_SYSCLK_SOUR_SEL_PLL; } static int check_dmic_used(struct snd_soc_dapm_widget *source, struct snd_soc_dapm_widget *sink) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(source->dapm); - struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(source->dapm); + struct rt5631_priv *rt5631 = snd_soc_component_get_drvdata(component); return rt5631->dmic_used_flag; } static int check_dacl_to_outmixl(struct snd_soc_dapm_widget *source, struct snd_soc_dapm_widget *sink) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(source->dapm); + struct snd_soc_component *component = snd_soc_dapm_to_component(source->dapm); unsigned int reg; - reg = snd_soc_read(codec, RT5631_OUTMIXER_L_CTRL); + reg = snd_soc_component_read32(component, RT5631_OUTMIXER_L_CTRL); return !(reg & RT5631_M_DAC_L_TO_OUTMIXER_L); } static int check_dacr_to_outmixr(struct snd_soc_dapm_widget *source, struct snd_soc_dapm_widget *sink) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(source->dapm); + struct snd_soc_component *component = snd_soc_dapm_to_component(source->dapm); unsigned int reg; - reg = snd_soc_read(codec, RT5631_OUTMIXER_R_CTRL); + reg = snd_soc_component_read32(component, RT5631_OUTMIXER_R_CTRL); return !(reg & RT5631_M_DAC_R_TO_OUTMIXER_R); } static int check_dacl_to_spkmixl(struct snd_soc_dapm_widget *source, struct snd_soc_dapm_widget *sink) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(source->dapm); + struct snd_soc_component *component = snd_soc_dapm_to_component(source->dapm); unsigned int reg; - reg = snd_soc_read(codec, RT5631_SPK_MIXER_CTRL); + reg = snd_soc_component_read32(component, RT5631_SPK_MIXER_CTRL); return !(reg & RT5631_M_DAC_L_TO_SPKMIXER_L); } static int check_dacr_to_spkmixr(struct snd_soc_dapm_widget *source, struct snd_soc_dapm_widget *sink) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(source->dapm); + struct snd_soc_component *component = snd_soc_dapm_to_component(source->dapm); unsigned int reg; - reg = snd_soc_read(codec, RT5631_SPK_MIXER_CTRL); + reg = snd_soc_component_read32(component, RT5631_SPK_MIXER_CTRL); return !(reg & RT5631_M_DAC_R_TO_SPKMIXER_R); } static int check_adcl_select(struct snd_soc_dapm_widget *source, struct snd_soc_dapm_widget *sink) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(source->dapm); + struct snd_soc_component *component = snd_soc_dapm_to_component(source->dapm); unsigned int reg; - reg = snd_soc_read(codec, RT5631_ADC_REC_MIXER); + reg = snd_soc_component_read32(component, RT5631_ADC_REC_MIXER); return !(reg & RT5631_M_MIC1_TO_RECMIXER_L); } static int check_adcr_select(struct snd_soc_dapm_widget *source, struct snd_soc_dapm_widget *sink) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(source->dapm); + struct snd_soc_component *component = snd_soc_dapm_to_component(source->dapm); unsigned int reg; - reg = snd_soc_read(codec, RT5631_ADC_REC_MIXER); + reg = snd_soc_component_read32(component, RT5631_ADC_REC_MIXER); return !(reg & RT5631_M_MIC2_TO_RECMIXER_R); } @@ -367,36 +367,36 @@ static int check_adcr_select(struct snd_soc_dapm_widget *source, * * When power on/off headphone, the depop sequence is done by hardware. */ -static void onebit_depop_power_stage(struct snd_soc_codec *codec, int enable) +static void onebit_depop_power_stage(struct snd_soc_component *component, int enable) { unsigned int soft_vol, hp_zc; /* enable one-bit depop function */ - snd_soc_update_bits(codec, RT5631_DEPOP_FUN_CTRL_2, + snd_soc_component_update_bits(component, RT5631_DEPOP_FUN_CTRL_2, RT5631_EN_ONE_BIT_DEPOP, 0); /* keep soft volume and zero crossing setting */ - soft_vol = snd_soc_read(codec, RT5631_SOFT_VOL_CTRL); - snd_soc_write(codec, RT5631_SOFT_VOL_CTRL, 0); - hp_zc = snd_soc_read(codec, RT5631_INT_ST_IRQ_CTRL_2); - snd_soc_write(codec, RT5631_INT_ST_IRQ_CTRL_2, hp_zc & 0xf7ff); + soft_vol = snd_soc_component_read32(component, RT5631_SOFT_VOL_CTRL); + snd_soc_component_write(component, RT5631_SOFT_VOL_CTRL, 0); + hp_zc = snd_soc_component_read32(component, RT5631_INT_ST_IRQ_CTRL_2); + snd_soc_component_write(component, RT5631_INT_ST_IRQ_CTRL_2, hp_zc & 0xf7ff); if (enable) { /* config one-bit depop parameter */ - rt5631_write_index(codec, RT5631_TEST_MODE_CTRL, 0x84c0); - rt5631_write_index(codec, RT5631_SPK_INTL_CTRL, 0x309f); - rt5631_write_index(codec, RT5631_CP_INTL_REG2, 0x6530); + rt5631_write_index(component, RT5631_TEST_MODE_CTRL, 0x84c0); + rt5631_write_index(component, RT5631_SPK_INTL_CTRL, 0x309f); + rt5631_write_index(component, RT5631_CP_INTL_REG2, 0x6530); /* power on capless block */ - snd_soc_write(codec, RT5631_DEPOP_FUN_CTRL_2, + snd_soc_component_write(component, RT5631_DEPOP_FUN_CTRL_2, RT5631_EN_CAP_FREE_DEPOP); } else { /* power off capless block */ - snd_soc_write(codec, RT5631_DEPOP_FUN_CTRL_2, 0); + snd_soc_component_write(component, RT5631_DEPOP_FUN_CTRL_2, 0); msleep(100); } /* recover soft volume and zero crossing setting */ - snd_soc_write(codec, RT5631_SOFT_VOL_CTRL, soft_vol); - snd_soc_write(codec, RT5631_INT_ST_IRQ_CTRL_2, hp_zc); + snd_soc_component_write(component, RT5631_SOFT_VOL_CTRL, soft_vol); + snd_soc_component_write(component, RT5631_INT_ST_IRQ_CTRL_2, hp_zc); } /** @@ -405,36 +405,36 @@ static void onebit_depop_power_stage(struct snd_soc_codec *codec, int enable) * * When mute/unmute headphone, the depop sequence is done by hardware. */ -static void onebit_depop_mute_stage(struct snd_soc_codec *codec, int enable) +static void onebit_depop_mute_stage(struct snd_soc_component *component, int enable) { unsigned int soft_vol, hp_zc; /* enable one-bit depop function */ - snd_soc_update_bits(codec, RT5631_DEPOP_FUN_CTRL_2, + snd_soc_component_update_bits(component, RT5631_DEPOP_FUN_CTRL_2, RT5631_EN_ONE_BIT_DEPOP, 0); /* keep soft volume and zero crossing setting */ - soft_vol = snd_soc_read(codec, RT5631_SOFT_VOL_CTRL); - snd_soc_write(codec, RT5631_SOFT_VOL_CTRL, 0); - hp_zc = snd_soc_read(codec, RT5631_INT_ST_IRQ_CTRL_2); - snd_soc_write(codec, RT5631_INT_ST_IRQ_CTRL_2, hp_zc & 0xf7ff); + soft_vol = snd_soc_component_read32(component, RT5631_SOFT_VOL_CTRL); + snd_soc_component_write(component, RT5631_SOFT_VOL_CTRL, 0); + hp_zc = snd_soc_component_read32(component, RT5631_INT_ST_IRQ_CTRL_2); + snd_soc_component_write(component, RT5631_INT_ST_IRQ_CTRL_2, hp_zc & 0xf7ff); if (enable) { schedule_timeout_uninterruptible(msecs_to_jiffies(10)); /* config one-bit depop parameter */ - rt5631_write_index(codec, RT5631_SPK_INTL_CTRL, 0x307f); - snd_soc_update_bits(codec, RT5631_HP_OUT_VOL, + rt5631_write_index(component, RT5631_SPK_INTL_CTRL, 0x307f); + snd_soc_component_update_bits(component, RT5631_HP_OUT_VOL, RT5631_L_MUTE | RT5631_R_MUTE, 0); msleep(300); } else { - snd_soc_update_bits(codec, RT5631_HP_OUT_VOL, + snd_soc_component_update_bits(component, RT5631_HP_OUT_VOL, RT5631_L_MUTE | RT5631_R_MUTE, RT5631_L_MUTE | RT5631_R_MUTE); msleep(100); } /* recover soft volume and zero crossing setting */ - snd_soc_write(codec, RT5631_SOFT_VOL_CTRL, soft_vol); - snd_soc_write(codec, RT5631_INT_ST_IRQ_CTRL_2, hp_zc); + snd_soc_component_write(component, RT5631_SOFT_VOL_CTRL, soft_vol); + snd_soc_component_write(component, RT5631_INT_ST_IRQ_CTRL_2, hp_zc); } /** @@ -443,70 +443,70 @@ static void onebit_depop_mute_stage(struct snd_soc_codec *codec, int enable) * * When power on/off headphone, the depop sequence is done in step by step. */ -static void depop_seq_power_stage(struct snd_soc_codec *codec, int enable) +static void depop_seq_power_stage(struct snd_soc_component *component, int enable) { unsigned int soft_vol, hp_zc; /* depop control by register */ - snd_soc_update_bits(codec, RT5631_DEPOP_FUN_CTRL_2, + snd_soc_component_update_bits(component, RT5631_DEPOP_FUN_CTRL_2, RT5631_EN_ONE_BIT_DEPOP, RT5631_EN_ONE_BIT_DEPOP); /* keep soft volume and zero crossing setting */ - soft_vol = snd_soc_read(codec, RT5631_SOFT_VOL_CTRL); - snd_soc_write(codec, RT5631_SOFT_VOL_CTRL, 0); - hp_zc = snd_soc_read(codec, RT5631_INT_ST_IRQ_CTRL_2); - snd_soc_write(codec, RT5631_INT_ST_IRQ_CTRL_2, hp_zc & 0xf7ff); + soft_vol = snd_soc_component_read32(component, RT5631_SOFT_VOL_CTRL); + snd_soc_component_write(component, RT5631_SOFT_VOL_CTRL, 0); + hp_zc = snd_soc_component_read32(component, RT5631_INT_ST_IRQ_CTRL_2); + snd_soc_component_write(component, RT5631_INT_ST_IRQ_CTRL_2, hp_zc & 0xf7ff); if (enable) { /* config depop sequence parameter */ - rt5631_write_index(codec, RT5631_SPK_INTL_CTRL, 0x303e); + rt5631_write_index(component, RT5631_SPK_INTL_CTRL, 0x303e); /* power on headphone and charge pump */ - snd_soc_update_bits(codec, RT5631_PWR_MANAG_ADD3, + snd_soc_component_update_bits(component, RT5631_PWR_MANAG_ADD3, RT5631_PWR_CHARGE_PUMP | RT5631_PWR_HP_L_AMP | RT5631_PWR_HP_R_AMP, RT5631_PWR_CHARGE_PUMP | RT5631_PWR_HP_L_AMP | RT5631_PWR_HP_R_AMP); /* power on soft generator and depop mode2 */ - snd_soc_write(codec, RT5631_DEPOP_FUN_CTRL_1, + snd_soc_component_write(component, RT5631_DEPOP_FUN_CTRL_1, RT5631_POW_ON_SOFT_GEN | RT5631_EN_DEPOP2_FOR_HP); msleep(100); /* stop depop mode */ - snd_soc_update_bits(codec, RT5631_PWR_MANAG_ADD3, + snd_soc_component_update_bits(component, RT5631_PWR_MANAG_ADD3, RT5631_PWR_HP_DEPOP_DIS, RT5631_PWR_HP_DEPOP_DIS); } else { /* config depop sequence parameter */ - rt5631_write_index(codec, RT5631_SPK_INTL_CTRL, 0x303F); - snd_soc_write(codec, RT5631_DEPOP_FUN_CTRL_1, + rt5631_write_index(component, RT5631_SPK_INTL_CTRL, 0x303F); + snd_soc_component_write(component, RT5631_DEPOP_FUN_CTRL_1, RT5631_POW_ON_SOFT_GEN | RT5631_EN_MUTE_UNMUTE_DEPOP | RT5631_PD_HPAMP_L_ST_UP | RT5631_PD_HPAMP_R_ST_UP); msleep(75); - snd_soc_write(codec, RT5631_DEPOP_FUN_CTRL_1, + snd_soc_component_write(component, RT5631_DEPOP_FUN_CTRL_1, RT5631_POW_ON_SOFT_GEN | RT5631_PD_HPAMP_L_ST_UP | RT5631_PD_HPAMP_R_ST_UP); /* start depop mode */ - snd_soc_update_bits(codec, RT5631_PWR_MANAG_ADD3, + snd_soc_component_update_bits(component, RT5631_PWR_MANAG_ADD3, RT5631_PWR_HP_DEPOP_DIS, 0); /* config depop sequence parameter */ - snd_soc_write(codec, RT5631_DEPOP_FUN_CTRL_1, + snd_soc_component_write(component, RT5631_DEPOP_FUN_CTRL_1, RT5631_POW_ON_SOFT_GEN | RT5631_EN_DEPOP2_FOR_HP | RT5631_PD_HPAMP_L_ST_UP | RT5631_PD_HPAMP_R_ST_UP); msleep(80); - snd_soc_write(codec, RT5631_DEPOP_FUN_CTRL_1, + snd_soc_component_write(component, RT5631_DEPOP_FUN_CTRL_1, RT5631_POW_ON_SOFT_GEN); /* power down headphone and charge pump */ - snd_soc_update_bits(codec, RT5631_PWR_MANAG_ADD3, + snd_soc_component_update_bits(component, RT5631_PWR_MANAG_ADD3, RT5631_PWR_CHARGE_PUMP | RT5631_PWR_HP_L_AMP | RT5631_PWR_HP_R_AMP, 0); } /* recover soft volume and zero crossing setting */ - snd_soc_write(codec, RT5631_SOFT_VOL_CTRL, soft_vol); - snd_soc_write(codec, RT5631_INT_ST_IRQ_CTRL_2, hp_zc); + snd_soc_component_write(component, RT5631_SOFT_VOL_CTRL, soft_vol); + snd_soc_component_write(component, RT5631_INT_ST_IRQ_CTRL_2, hp_zc); } /** @@ -515,75 +515,75 @@ static void depop_seq_power_stage(struct snd_soc_codec *codec, int enable) * * When mute/unmute headphone, the depop sequence is done in step by step. */ -static void depop_seq_mute_stage(struct snd_soc_codec *codec, int enable) +static void depop_seq_mute_stage(struct snd_soc_component *component, int enable) { unsigned int soft_vol, hp_zc; /* depop control by register */ - snd_soc_update_bits(codec, RT5631_DEPOP_FUN_CTRL_2, + snd_soc_component_update_bits(component, RT5631_DEPOP_FUN_CTRL_2, RT5631_EN_ONE_BIT_DEPOP, RT5631_EN_ONE_BIT_DEPOP); /* keep soft volume and zero crossing setting */ - soft_vol = snd_soc_read(codec, RT5631_SOFT_VOL_CTRL); - snd_soc_write(codec, RT5631_SOFT_VOL_CTRL, 0); - hp_zc = snd_soc_read(codec, RT5631_INT_ST_IRQ_CTRL_2); - snd_soc_write(codec, RT5631_INT_ST_IRQ_CTRL_2, hp_zc & 0xf7ff); + soft_vol = snd_soc_component_read32(component, RT5631_SOFT_VOL_CTRL); + snd_soc_component_write(component, RT5631_SOFT_VOL_CTRL, 0); + hp_zc = snd_soc_component_read32(component, RT5631_INT_ST_IRQ_CTRL_2); + snd_soc_component_write(component, RT5631_INT_ST_IRQ_CTRL_2, hp_zc & 0xf7ff); if (enable) { schedule_timeout_uninterruptible(msecs_to_jiffies(10)); /* config depop sequence parameter */ - rt5631_write_index(codec, RT5631_SPK_INTL_CTRL, 0x302f); - snd_soc_write(codec, RT5631_DEPOP_FUN_CTRL_1, + rt5631_write_index(component, RT5631_SPK_INTL_CTRL, 0x302f); + snd_soc_component_write(component, RT5631_DEPOP_FUN_CTRL_1, RT5631_POW_ON_SOFT_GEN | RT5631_EN_MUTE_UNMUTE_DEPOP | RT5631_EN_HP_R_M_UN_MUTE_DEPOP | RT5631_EN_HP_L_M_UN_MUTE_DEPOP); - snd_soc_update_bits(codec, RT5631_HP_OUT_VOL, + snd_soc_component_update_bits(component, RT5631_HP_OUT_VOL, RT5631_L_MUTE | RT5631_R_MUTE, 0); msleep(160); } else { /* config depop sequence parameter */ - rt5631_write_index(codec, RT5631_SPK_INTL_CTRL, 0x302f); - snd_soc_write(codec, RT5631_DEPOP_FUN_CTRL_1, + rt5631_write_index(component, RT5631_SPK_INTL_CTRL, 0x302f); + snd_soc_component_write(component, RT5631_DEPOP_FUN_CTRL_1, RT5631_POW_ON_SOFT_GEN | RT5631_EN_MUTE_UNMUTE_DEPOP | RT5631_EN_HP_R_M_UN_MUTE_DEPOP | RT5631_EN_HP_L_M_UN_MUTE_DEPOP); - snd_soc_update_bits(codec, RT5631_HP_OUT_VOL, + snd_soc_component_update_bits(component, RT5631_HP_OUT_VOL, RT5631_L_MUTE | RT5631_R_MUTE, RT5631_L_MUTE | RT5631_R_MUTE); msleep(150); } /* recover soft volume and zero crossing setting */ - snd_soc_write(codec, RT5631_SOFT_VOL_CTRL, soft_vol); - snd_soc_write(codec, RT5631_INT_ST_IRQ_CTRL_2, hp_zc); + snd_soc_component_write(component, RT5631_SOFT_VOL_CTRL, soft_vol); + snd_soc_component_write(component, RT5631_INT_ST_IRQ_CTRL_2, hp_zc); } static int hp_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); - struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct rt5631_priv *rt5631 = snd_soc_component_get_drvdata(component); switch (event) { case SND_SOC_DAPM_PRE_PMD: if (rt5631->codec_version) { - onebit_depop_mute_stage(codec, 0); - onebit_depop_power_stage(codec, 0); + onebit_depop_mute_stage(component, 0); + onebit_depop_power_stage(component, 0); } else { - depop_seq_mute_stage(codec, 0); - depop_seq_power_stage(codec, 0); + depop_seq_mute_stage(component, 0); + depop_seq_power_stage(component, 0); } break; case SND_SOC_DAPM_POST_PMU: if (rt5631->codec_version) { - onebit_depop_power_stage(codec, 1); - onebit_depop_mute_stage(codec, 1); + onebit_depop_power_stage(component, 1); + onebit_depop_mute_stage(component, 1); } else { - depop_seq_power_stage(codec, 1); - depop_seq_mute_stage(codec, 1); + depop_seq_power_stage(component, 1); + depop_seq_mute_stage(component, 1); } break; @@ -597,20 +597,20 @@ static int hp_event(struct snd_soc_dapm_widget *w, static int set_dmic_params(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) { - struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); - struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct rt5631_priv *rt5631 = snd_soc_component_get_drvdata(component); switch (rt5631->rx_rate) { case 44100: case 48000: - snd_soc_update_bits(codec, RT5631_DIG_MIC_CTRL, + snd_soc_component_update_bits(component, RT5631_DIG_MIC_CTRL, RT5631_DMIC_CLK_CTRL_MASK, RT5631_DMIC_CLK_CTRL_TO_32FS); break; case 32000: case 22050: - snd_soc_update_bits(codec, RT5631_DIG_MIC_CTRL, + snd_soc_component_update_bits(component, RT5631_DIG_MIC_CTRL, RT5631_DMIC_CLK_CTRL_MASK, RT5631_DMIC_CLK_CTRL_TO_64FS); break; @@ -618,7 +618,7 @@ static int set_dmic_params(struct snd_soc_dapm_widget *w, case 16000: case 11025: case 8000: - snd_soc_update_bits(codec, RT5631_DIG_MIC_CTRL, + snd_soc_component_update_bits(component, RT5631_DIG_MIC_CTRL, RT5631_DMIC_CLK_CTRL_MASK, RT5631_DMIC_CLK_CTRL_TO_128FS); break; @@ -1352,16 +1352,16 @@ static int get_coeff(int mclk, int rate, int timesofbclk) static int rt5631_hifi_pcm_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) { - struct snd_soc_codec *codec = dai->codec; - struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct rt5631_priv *rt5631 = snd_soc_component_get_drvdata(component); int timesofbclk = 32, coeff; unsigned int iface = 0; - dev_dbg(codec->dev, "enter %s\n", __func__); + dev_dbg(component->dev, "enter %s\n", __func__); rt5631->bclk_rate = snd_soc_params_to_bclk(params); if (rt5631->bclk_rate < 0) { - dev_err(codec->dev, "Fail to get BCLK rate\n"); + dev_err(component->dev, "Fail to get BCLK rate\n"); return rt5631->bclk_rate; } rt5631->rx_rate = params_rate(params); @@ -1373,7 +1373,7 @@ static int rt5631_hifi_pcm_params(struct snd_pcm_substream *substream, coeff = get_coeff(rt5631->sysclk, rt5631->rx_rate, timesofbclk); if (coeff < 0) { - dev_err(codec->dev, "Fail to get coeff\n"); + dev_err(component->dev, "Fail to get coeff\n"); return coeff; } @@ -1393,9 +1393,9 @@ static int rt5631_hifi_pcm_params(struct snd_pcm_substream *substream, return -EINVAL; } - snd_soc_update_bits(codec, RT5631_SDP_CTRL, + snd_soc_component_update_bits(component, RT5631_SDP_CTRL, RT5631_SDP_I2S_DL_MASK, iface); - snd_soc_write(codec, RT5631_STEREO_AD_DA_CLK_CTRL, + snd_soc_component_write(component, RT5631_STEREO_AD_DA_CLK_CTRL, coeff_div[coeff].reg_val); return 0; @@ -1404,11 +1404,11 @@ static int rt5631_hifi_pcm_params(struct snd_pcm_substream *substream, static int rt5631_hifi_codec_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) { - struct snd_soc_codec *codec = codec_dai->codec; - struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct rt5631_priv *rt5631 = snd_soc_component_get_drvdata(component); unsigned int iface = 0; - dev_dbg(codec->dev, "enter %s\n", __func__); + dev_dbg(component->dev, "enter %s\n", __func__); switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { case SND_SOC_DAIFMT_CBM_CFM: @@ -1448,7 +1448,7 @@ static int rt5631_hifi_codec_set_dai_fmt(struct snd_soc_dai *codec_dai, return -EINVAL; } - snd_soc_write(codec, RT5631_SDP_CTRL, iface); + snd_soc_component_write(component, RT5631_SDP_CTRL, iface); return 0; } @@ -1456,10 +1456,10 @@ static int rt5631_hifi_codec_set_dai_fmt(struct snd_soc_dai *codec_dai, static int rt5631_hifi_codec_set_dai_sysclk(struct snd_soc_dai *codec_dai, int clk_id, unsigned int freq, int dir) { - struct snd_soc_codec *codec = codec_dai->codec; - struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct rt5631_priv *rt5631 = snd_soc_component_get_drvdata(component); - dev_dbg(codec->dev, "enter %s, syclk=%d\n", __func__, freq); + dev_dbg(component->dev, "enter %s, syclk=%d\n", __func__, freq); if ((freq >= (256 * 8000)) && (freq <= (512 * 96000))) { rt5631->sysclk = freq; @@ -1472,16 +1472,16 @@ static int rt5631_hifi_codec_set_dai_sysclk(struct snd_soc_dai *codec_dai, static int rt5631_codec_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, int source, unsigned int freq_in, unsigned int freq_out) { - struct snd_soc_codec *codec = codec_dai->codec; - struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct rt5631_priv *rt5631 = snd_soc_component_get_drvdata(component); int i, ret = -EINVAL; - dev_dbg(codec->dev, "enter %s\n", __func__); + dev_dbg(component->dev, "enter %s\n", __func__); if (!freq_in || !freq_out) { - dev_dbg(codec->dev, "PLL disabled\n"); + dev_dbg(component->dev, "PLL disabled\n"); - snd_soc_update_bits(codec, RT5631_GLOBAL_CLK_CTRL, + snd_soc_component_update_bits(component, RT5631_GLOBAL_CLK_CTRL, RT5631_SYSCLK_SOUR_SEL_MASK, RT5631_SYSCLK_SOUR_SEL_MCLK); @@ -1492,13 +1492,13 @@ static int rt5631_codec_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, for (i = 0; i < ARRAY_SIZE(codec_master_pll_div); i++) if (freq_in == codec_master_pll_div[i].pll_in && freq_out == codec_master_pll_div[i].pll_out) { - dev_info(codec->dev, + dev_info(component->dev, "change PLL in master mode\n"); - snd_soc_write(codec, RT5631_PLL_CTRL, + snd_soc_component_write(component, RT5631_PLL_CTRL, codec_master_pll_div[i].reg_val); schedule_timeout_uninterruptible( msecs_to_jiffies(20)); - snd_soc_update_bits(codec, + snd_soc_component_update_bits(component, RT5631_GLOBAL_CLK_CTRL, RT5631_SYSCLK_SOUR_SEL_MASK | RT5631_PLLCLK_SOUR_SEL_MASK, @@ -1511,13 +1511,13 @@ static int rt5631_codec_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, for (i = 0; i < ARRAY_SIZE(codec_slave_pll_div); i++) if (freq_in == codec_slave_pll_div[i].pll_in && freq_out == codec_slave_pll_div[i].pll_out) { - dev_info(codec->dev, + dev_info(component->dev, "change PLL in slave mode\n"); - snd_soc_write(codec, RT5631_PLL_CTRL, + snd_soc_component_write(component, RT5631_PLL_CTRL, codec_slave_pll_div[i].reg_val); schedule_timeout_uninterruptible( msecs_to_jiffies(20)); - snd_soc_update_bits(codec, + snd_soc_component_update_bits(component, RT5631_GLOBAL_CLK_CTRL, RT5631_SYSCLK_SOUR_SEL_MASK | RT5631_PLLCLK_SOUR_SEL_MASK, @@ -1531,26 +1531,26 @@ static int rt5631_codec_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id, return ret; } -static int rt5631_set_bias_level(struct snd_soc_codec *codec, +static int rt5631_set_bias_level(struct snd_soc_component *component, enum snd_soc_bias_level level) { - struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); + struct rt5631_priv *rt5631 = snd_soc_component_get_drvdata(component); switch (level) { case SND_SOC_BIAS_ON: case SND_SOC_BIAS_PREPARE: - snd_soc_update_bits(codec, RT5631_PWR_MANAG_ADD2, + snd_soc_component_update_bits(component, RT5631_PWR_MANAG_ADD2, RT5631_PWR_MICBIAS1_VOL | RT5631_PWR_MICBIAS2_VOL, RT5631_PWR_MICBIAS1_VOL | RT5631_PWR_MICBIAS2_VOL); break; case SND_SOC_BIAS_STANDBY: - if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) { - snd_soc_update_bits(codec, RT5631_PWR_MANAG_ADD3, + if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_OFF) { + snd_soc_component_update_bits(component, RT5631_PWR_MANAG_ADD3, RT5631_PWR_VREF | RT5631_PWR_MAIN_BIAS, RT5631_PWR_VREF | RT5631_PWR_MAIN_BIAS); msleep(80); - snd_soc_update_bits(codec, RT5631_PWR_MANAG_ADD3, + snd_soc_component_update_bits(component, RT5631_PWR_MANAG_ADD3, RT5631_PWR_FAST_VREF_CTRL, RT5631_PWR_FAST_VREF_CTRL); regcache_cache_only(rt5631->regmap, false); @@ -1559,10 +1559,10 @@ static int rt5631_set_bias_level(struct snd_soc_codec *codec, break; case SND_SOC_BIAS_OFF: - snd_soc_write(codec, RT5631_PWR_MANAG_ADD1, 0x0000); - snd_soc_write(codec, RT5631_PWR_MANAG_ADD2, 0x0000); - snd_soc_write(codec, RT5631_PWR_MANAG_ADD3, 0x0000); - snd_soc_write(codec, RT5631_PWR_MANAG_ADD4, 0x0000); + snd_soc_component_write(component, RT5631_PWR_MANAG_ADD1, 0x0000); + snd_soc_component_write(component, RT5631_PWR_MANAG_ADD2, 0x0000); + snd_soc_component_write(component, RT5631_PWR_MANAG_ADD3, 0x0000); + snd_soc_component_write(component, RT5631_PWR_MANAG_ADD4, 0x0000); break; default: @@ -1572,48 +1572,48 @@ static int rt5631_set_bias_level(struct snd_soc_codec *codec, return 0; } -static int rt5631_probe(struct snd_soc_codec *codec) +static int rt5631_probe(struct snd_soc_component *component) { - struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); + struct rt5631_priv *rt5631 = snd_soc_component_get_drvdata(component); unsigned int val; - val = rt5631_read_index(codec, RT5631_ADDA_MIXER_INTL_REG3); + val = rt5631_read_index(component, RT5631_ADDA_MIXER_INTL_REG3); if (val & 0x0002) rt5631->codec_version = 1; else rt5631->codec_version = 0; - rt5631_reset(codec); - snd_soc_update_bits(codec, RT5631_PWR_MANAG_ADD3, + rt5631_reset(component); + snd_soc_component_update_bits(component, RT5631_PWR_MANAG_ADD3, RT5631_PWR_VREF | RT5631_PWR_MAIN_BIAS, RT5631_PWR_VREF | RT5631_PWR_MAIN_BIAS); msleep(80); - snd_soc_update_bits(codec, RT5631_PWR_MANAG_ADD3, + snd_soc_component_update_bits(component, RT5631_PWR_MANAG_ADD3, RT5631_PWR_FAST_VREF_CTRL, RT5631_PWR_FAST_VREF_CTRL); /* enable HP zero cross */ - snd_soc_write(codec, RT5631_INT_ST_IRQ_CTRL_2, 0x0f18); + snd_soc_component_write(component, RT5631_INT_ST_IRQ_CTRL_2, 0x0f18); /* power off ClassD auto Recovery */ if (rt5631->codec_version) - snd_soc_update_bits(codec, RT5631_INT_ST_IRQ_CTRL_2, + snd_soc_component_update_bits(component, RT5631_INT_ST_IRQ_CTRL_2, 0x2000, 0x2000); else - snd_soc_update_bits(codec, RT5631_INT_ST_IRQ_CTRL_2, + snd_soc_component_update_bits(component, RT5631_INT_ST_IRQ_CTRL_2, 0x2000, 0); /* DMIC */ if (rt5631->dmic_used_flag) { - snd_soc_update_bits(codec, RT5631_GPIO_CTRL, + snd_soc_component_update_bits(component, RT5631_GPIO_CTRL, RT5631_GPIO_PIN_FUN_SEL_MASK | RT5631_GPIO_DMIC_FUN_SEL_MASK, RT5631_GPIO_PIN_FUN_SEL_GPIO_DIMC | RT5631_GPIO_DMIC_FUN_SEL_DIMC); - snd_soc_update_bits(codec, RT5631_DIG_MIC_CTRL, + snd_soc_component_update_bits(component, RT5631_DIG_MIC_CTRL, RT5631_DMIC_L_CH_LATCH_MASK | RT5631_DMIC_R_CH_LATCH_MASK, RT5631_DMIC_L_CH_LATCH_FALLING | RT5631_DMIC_R_CH_LATCH_RISING); } - snd_soc_codec_init_bias_level(codec, SND_SOC_BIAS_STANDBY); + snd_soc_component_init_bias_level(component, SND_SOC_BIAS_STANDBY); return 0; } @@ -1653,18 +1653,20 @@ static int rt5631_probe(struct snd_soc_codec *codec) }, }; -static const struct snd_soc_codec_driver soc_codec_dev_rt5631 = { - .probe = rt5631_probe, - .set_bias_level = rt5631_set_bias_level, - .suspend_bias_off = true, - .component_driver = { - .controls = rt5631_snd_controls, - .num_controls = ARRAY_SIZE(rt5631_snd_controls), - .dapm_widgets = rt5631_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(rt5631_dapm_widgets), - .dapm_routes = rt5631_dapm_routes, - .num_dapm_routes = ARRAY_SIZE(rt5631_dapm_routes), - }, +static const struct snd_soc_component_driver soc_component_dev_rt5631 = { + .probe = rt5631_probe, + .set_bias_level = rt5631_set_bias_level, + .controls = rt5631_snd_controls, + .num_controls = ARRAY_SIZE(rt5631_snd_controls), + .dapm_widgets = rt5631_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(rt5631_dapm_widgets), + .dapm_routes = rt5631_dapm_routes, + .num_dapm_routes = ARRAY_SIZE(rt5631_dapm_routes), + .suspend_bias_off = 1, + .idle_bias_on = 1, + .use_pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static const struct i2c_device_id rt5631_i2c_id[] = { @@ -1712,14 +1714,14 @@ static int rt5631_i2c_probe(struct i2c_client *i2c, if (IS_ERR(rt5631->regmap)) return PTR_ERR(rt5631->regmap); - ret = snd_soc_register_codec(&i2c->dev, &soc_codec_dev_rt5631, + ret = devm_snd_soc_register_component(&i2c->dev, + &soc_component_dev_rt5631, rt5631_dai, ARRAY_SIZE(rt5631_dai)); return ret; } static int rt5631_i2c_remove(struct i2c_client *client) { - snd_soc_unregister_codec(&client->dev); return 0; }