From patchwork Fri Jan 12 01:11:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10159141 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 0B0A9601A1 for ; Fri, 12 Jan 2018 01:13:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E9CB628047 for ; Fri, 12 Jan 2018 01:13:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DBDD728700; Fri, 12 Jan 2018 01:13:28 +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 396D628047 for ; Fri, 12 Jan 2018 01:13:27 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id ACEEC267B2B; Fri, 12 Jan 2018 02:13:25 +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 D0335267B2C; Fri, 12 Jan 2018 02:13:23 +0100 (CET) Received: from relmlie1.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by alsa0.perex.cz (Postfix) with ESMTP id 47C6F2679DC for ; Fri, 12 Jan 2018 02:11:51 +0100 (CET) Received: from unknown (HELO relmlir2.idc.renesas.com) ([10.200.68.152]) by relmlie1.idc.renesas.com with ESMTP; 12 Jan 2018 10:11:50 +0900 Received: from relmlii2.idc.renesas.com (relmlii2.idc.renesas.com [10.200.68.66]) by relmlir2.idc.renesas.com (Postfix) with ESMTP id DA3C86C287; Fri, 12 Jan 2018 10:11:50 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,346,1511794800"; d="scan'208";a="269306662" Received: from mail-hk2apc01lp0213.outbound.protection.outlook.com (HELO APC01-HK2-obe.outbound.protection.outlook.com) ([65.55.88.213]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 12 Jan 2018 10:11:49 +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=Y6R3OORMAJ7RMlh0zdFbMCu6/iMaoFWDAAGw3rN8C+Q=; b=hGygpGHEXOt3lOb3E2kBqbAvLk04rOwc8xNHdlz2Bw5nBrZH24AeHOVDgLVhzQRCZrhuvazpct6TXxL63/VUsKnrHzsGYB+frYLfjz6pZ2PdFlZWUIys0a3oJA0Hb/Ivx0QGLDSFF1sJgRbLat8kXEZZ0v6ozsvAX1Z+qcDDhNs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; Received: from morimoto-PC.renesas.com (211.11.155.138) by SG2PR0601MB1888.apcprd06.prod.outlook.com (2603:1096:3:9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Fri, 12 Jan 2018 01:11:46 +0000 Message-ID: <87r2qvdgq9.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: <87bmhzevk9.wl%kuninori.morimoto.gx@renesas.com> References: <87bmhzevk9.wl%kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Fri, 12 Jan 2018 01:11:46 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: KAXPR01CA0037.jpnprd01.prod.outlook.com (2603:1096:402:1a::23) To SG2PR0601MB1888.apcprd06.prod.outlook.com (2603:1096:3:9::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7dde41fb-ae2d-4b81-928a-08d5595973db X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020074)(4652020)(5600026)(4604075)(48565401081)(2017052603307)(7153060)(7193020); SRVR:SG2PR0601MB1888; X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1888; 3:GZQtaCQVNN/ny8TE81R2pWZfLY8a6Oe2T9aK6QErsLeLY0zLg475J08gOrdCc9yIDdPochr96eVI7c0XYsYpky/jOwphzMVMgeYWln+6YrVW3GnsAP2veLX1WDXx7HdiDu3LrM29jKf6QwoCN7HwibK2Tfi0yf/JhAt0hNx4gnnH5yMUqBy63VbccFym/zkLjernGvLMYUwOfXpvmDF2497wfm1xox+Yiu/HOVwlaVzLzRDRaLysLGuKQl5QXSzI; 25:3DSwPK45Fl/1jcHsAASAfOrbDhvbFIGT6hNgXiFmUDy11zGRP1LpwPTZ3LTeIy7SgV7hcIJYAKopAkLALYudOWshaR/khYmAiiuV8v2HpaM3FgSHkpiETaq1OIKyV1SC00AMipC6Tpe0V+Uwb4Ycwnsjmne1ed1qUFHA7TTsMb/74hM1PPm0bsSYr3MmGLTbtTHy7ZZP3eBBdu3mhiF+Nf+S/czlneQbLjooomlUTE5psVDj1pVO83WhuqbFXm9pkxkZOL3RP9yRgCsNowjrxubvSe8HGPwHYifirQI2Y73Szh+99ob7gDv81/QZD5zkF8IOkUe3jP4aKKcbUnh67Q==; 31:cqCLaJ4P+EF2YAdL2amuND9O+q/PvZzJfw5/q3EMr01AtEWHKM79oSQg20enV6UJbjvtO9TGIv4ozRSAqq/+x/hJs9LAeQJQe2qdUrN6zPQTb7jQDbcUKUSS7p7rXkHTf0UAT1GNjoioAicSLWhAmYz/Sh1JF7ZHn7WMInnwJlVVBAXVH1llFYGp6MTWNagBef72huif1dIzRtVK+IIJvebMFc5OV0PA683rsh0Dykk= X-MS-TrafficTypeDiagnostic: SG2PR0601MB1888: X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1888; 20:TujoP7p2DNcfgW8aF3sp950mIH7o2bgMso98+3jPYI9wUMFpSLIhJXPmp5doFYvLJIvm3HYp7olAB/AUmDhFAqcx0YC9W5hMMxt3+CKvzUMVFsLxCuCs233iDS0lDA/2sW6twj3ZGA8UryO9NTvM+jNwlSLnEdMbj0en4MHuIysf4XNBrJER4E1kRtkn7QB6ZjojaVnd+lb9SdyKsrDZ/l/UG9RGiBtEl6LLz4tZrt9r9tbDX4NRuW5cKDlWibGpOgWk0bTwyBmmxysfuifEjzW6CIjxQF6FX1KxuQuCi/rrFBnpyjqxf1Tnxie8nk5PcCtH4BKJUDSSWMYipAmM1sOzphQmxPJS5LR8ThSNFt7gf0g8JHErfYFOqHbe6JHUESS/qJvsJPBTHvmjrIcXRQqF91yY/kiKCnhUSdc70WBjtdZX2qRHe7inJTNocdlGH9EZ8JcCwD+4PeVcpr0fybU7jweb2i8ovvkx/KKYw8TZIBNKiAabT0DAkxwMW0X+; 4:cEbHG2X2XmYI6m3GfYi6rD/F8qWaXSN5qBCi24yp7GXE5b8an4yZG2VHJYbGScQtGoPFzZHA4Zc3nt3Qw6bmQCeKSQgVoO0G6/jRsw0M6oSye2Yv12X7i6Rg1xZMTlxckr6zI4UY0EXuQl8USX6YfgeqSlgohbdA+uCs97idK+R4Hmhw/mWdW+Oeo5/o9sx4Tj/h12bLTmfyT69ggnB1mPUjlSE2o7Mfnd8bN0HmgexZl/y48eMEpO7daA4lrWwWzUA1RW6khkkgek5mjznunhEUHmRlmbsj/UMqbIuHjwrIiE6WwenWS1tkbYDeE8ea X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(3231023)(944501137)(10201501046)(3002001)(93006095)(93001095)(6055026)(6041268)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(6072148)(201708071742011); SRVR:SG2PR0601MB1888; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:SG2PR0601MB1888; X-Forefront-PRVS: 0550778858 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(376002)(346002)(396003)(39380400002)(366004)(39860400002)(189003)(199004)(5660300001)(2906002)(2950100002)(25786009)(69596002)(6916009)(54906003)(6116002)(53936002)(3846002)(6486002)(16526018)(58126008)(16586007)(36756003)(23726003)(7736002)(47776003)(305945005)(478600001)(53416004)(4326008)(316002)(83506002)(8936002)(66066001)(7696005)(76176011)(59450400001)(386003)(97736004)(52116002)(106356001)(8676002)(81166006)(68736007)(86362001)(81156014)(105586002)(50466002)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:SG2PR0601MB1888; 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; SG2PR0601MB1888; 23:qcoO3fcpgeWHhJrYZIvJKcqTuV3WNlH26r+1/GW?= =?us-ascii?Q?vRXaQZ8FbSDy/RY9Mjwu3Bwze/+ylQxUY1BFW5IYUmrlX5f69ODUoDC4sosK?= =?us-ascii?Q?FeI3Z9TIrqsX+nJoeTKIdyWk1396qb+wdDH7bQ7tDrwXMBP5LlMb4i1+pvtM?= =?us-ascii?Q?xB5c3YMyi3fKAaiyQi2dfhfzU8eHfciUuKA6BNAdgtxujyFu8Jpc58tUTTIf?= =?us-ascii?Q?+HwUz/ByUpZO2cdeeQwBan29cfxXJIPgy/PPgXt9lAWksMORSDTAQCRZrtn+?= =?us-ascii?Q?HcrHSbfg+N0003NxDloNVYNV+p+gn+Fwhbro3CHed+MM+OUy/uXPKVxodr0j?= =?us-ascii?Q?Z0oembvAScnbmKXCmVIy+F6/3Wa8l1lHps0axDuF7dZbDzXDI8gZdz+6ncD4?= =?us-ascii?Q?fnkKePsiUjgmiUjuvM4LINDH9SgzwaRwqP4fJazap2MWVIniC8biqCjtcZcu?= =?us-ascii?Q?HK5lvimbxkfnNDVHMKmN3tlJvMfifviYeCFrAnv4yn9aBPLLU+aFVosaCEw3?= =?us-ascii?Q?jptW8dWxDEWsSnlyksxbpsgP7UQ8UdkMG4TxHoixP5vj5qL03tIfQqzMYPS5?= =?us-ascii?Q?yVaPN8FV9J8nF1BFt/fd38W/WINkdc+Y0HCYFkmYsUkn6KNVPj1MkKLLrzLs?= =?us-ascii?Q?uDO/iu4lMlnDTLGjt0XXYdkBjO6+aow5xOX5LYskgN5Y7tuBZUt0N6bvZb7I?= =?us-ascii?Q?yc9vwaT+Xdm2ujgnGHh404AxhQ4EWOdfy3ZsJH0UTME4x5xkkl0hoBYnCowf?= =?us-ascii?Q?gD6dK3TTDsxcnw+2iSoLAoY+swUJAQgM7IbVTl9xYuuFJDWbJf9kitp7ZotE?= =?us-ascii?Q?ED0CXxKmDbLVSnYi6ab5HeczLT6N01NEtoPYHEGucZq0yTcTsm9XTQxqScDr?= =?us-ascii?Q?8sUUY0nrw/F6KxcJMYoXzC0x0e/51tdnaHwM8ty64CvF/MTKcdm9CVg1InAX?= =?us-ascii?Q?DbdQqqd/ZhWxKx2d8WgdIxx0A+FnGvroZDQpZlRQcK4IPgDAcirEV+HHtR2V?= =?us-ascii?Q?TWSdzuL5fankm0AONPlrl3u4X89EmabSmwIcmN/Q8+CVyKHQJVU1VAzYApg0?= =?us-ascii?Q?8saG2KAx2ov3O347+MuV6dKSZcpW5DdTC0ZHevD3MaiNuIloU1AJ4bNbr7Dm?= =?us-ascii?Q?MDylVA6VY0ogkATQOr9RY26nA4V8680YZCV7MD0tm8tapzls8NN38Ww=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1888; 6:De0RhUyx5MtG/I52PkiFUPaQg5G/VgdvAj34mhd+YScKihS3YQIfPY/bNQmepPeDtLrDgKETZWx+p0kFhaZq6jQD+rdDd3J/zNznBARd9g/IdFraNb6OftVUYHQG8PxJ/fu9fa5Oivy3bKbIXvx3FSvncuT7OfxCG6zqWx6T/VndyCPfxVW5hozSx3JHM9JioreAiEmbyMRjV0d6LGR3vNTenm9cyER3X+HEBiK2gRpDSgUaGAJjdkIB4vil+nbaDUqI9Fz/6wkuCst3CzbHg97/I00sCokyuOTZzsZJotRkZEctsHIidUkO0Jc4iqo3nptAk0m+g6ixTVuSfUsKgLgGJChD2ySyqPhZ+WUiVng=; 5:W90XAUSuMzQeiZdBeTCcmi4IdnjM6cmx+Qnhh53tGsGczj7TksFlOdLqryOTfT0xhPWWa8CvoeQMycgxhL6bIWz3FJ9r4u6zzowlWBivk9wt9R/sfq/ShwBk/gLk/reNxMBJqtccfrthltwRq4E0zbhzi6NrB3F9kvAC4I2ali8=; 24:71fGuv1WE9U4fg+KZXPnR5IaobIEGI3EIPVuXh7+kLPMpb9UgJqKumES7QQfuoaHjAjqa1xcB5FdA0nj2dQjr8MFGTN6tP9HwX5UzFOyUA4=; 7:IS4IEkAELPb+FWRULzdBM5ackcbcS6kLqEcepFN0xyZmKD4zIvXA0YdaFi0WrYJEEoaq+lILD4y/7HbEvQIppB7yAZ5R54wrv3guzQqGts2NBLJqjNCQWoKErBWa85uiaJL5tMbh+/SvqrOfN3n0fVwRfKLuYMbBju9+n2zYHRG0wJkrukh6n62V58AXyJ471xzPeYdvl18s2+kjM/xSq73+CB9XKC3hdaEczSdMVvYOsQiHYKQSZ6ciFb4wPoYN SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SG2PR0601MB1888; 20:jzGasaRnaZVC2cUDQ0X6jeCHX3CslDPJU8V/F2XU7DzPosSfqewXXkBKsa75gwrRsNN65bjLN68A3SSOTzJYmDSqJ/Df8geYvGuof44ZnnxB0tsIrmvUpMofm+kYj+sZ0rWozq36f17qRkWnNI65Kzw9S2FY6WZgICkPm8WY2N4= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2018 01:11:46.7118 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7dde41fb-ae2d-4b81-928a-08d5595973db X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2PR0601MB1888 Cc: Linux-ALSA , Simon Subject: [alsa-devel] [PATCH 014/187] ASoC: wm8750: 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 -> .pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 Signed-off-by: Kuninori Morimoto --- sound/soc/codecs/wm8750.c | 115 ++++++++++++++++++++-------------------------- 1 file changed, 51 insertions(+), 64 deletions(-) diff --git a/sound/soc/codecs/wm8750.c b/sound/soc/codecs/wm8750.c index 0da2bba..4418527 100644 --- a/sound/soc/codecs/wm8750.c +++ b/sound/soc/codecs/wm8750.c @@ -86,7 +86,7 @@ struct wm8750_priv { unsigned int sysclk; }; -#define wm8750_reset(c) snd_soc_write(c, WM8750_RESET, 0) +#define wm8750_reset(c) snd_soc_component_write(c, WM8750_RESET, 0) /* * WM8750 Controls @@ -502,8 +502,8 @@ static inline int get_coeff(int mclk, int rate) static int wm8750_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 wm8750_priv *wm8750 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct wm8750_priv *wm8750 = snd_soc_component_get_drvdata(component); switch (freq) { case 11289600: @@ -520,7 +520,7 @@ static int wm8750_set_dai_sysclk(struct snd_soc_dai *codec_dai, static int wm8750_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) { - struct snd_soc_codec *codec = codec_dai->codec; + struct snd_soc_component *component = codec_dai->component; u16 iface = 0; /* set master/slave audio interface */ @@ -571,7 +571,7 @@ static int wm8750_set_dai_fmt(struct snd_soc_dai *codec_dai, return -EINVAL; } - snd_soc_write(codec, WM8750_IFACE, iface); + snd_soc_component_write(component, WM8750_IFACE, iface); return 0; } @@ -579,10 +579,10 @@ static int wm8750_pcm_hw_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 wm8750_priv *wm8750 = snd_soc_codec_get_drvdata(codec); - u16 iface = snd_soc_read(codec, WM8750_IFACE) & 0x1f3; - u16 srate = snd_soc_read(codec, WM8750_SRATE) & 0x1c0; + struct snd_soc_component *component = dai->component; + struct wm8750_priv *wm8750 = snd_soc_component_get_drvdata(component); + u16 iface = snd_soc_component_read32(component, WM8750_IFACE) & 0x1f3; + u16 srate = snd_soc_component_read32(component, WM8750_SRATE) & 0x1c0; int coeff = get_coeff(wm8750->sysclk, params_rate(params)); /* bit size */ @@ -601,9 +601,9 @@ static int wm8750_pcm_hw_params(struct snd_pcm_substream *substream, } /* set iface & srate */ - snd_soc_write(codec, WM8750_IFACE, iface); + snd_soc_component_write(component, WM8750_IFACE, iface); if (coeff >= 0) - snd_soc_write(codec, WM8750_SRATE, srate | + snd_soc_component_write(component, WM8750_SRATE, srate | (coeff_div[coeff].sr << 1) | coeff_div[coeff].usb); return 0; @@ -611,44 +611,44 @@ static int wm8750_pcm_hw_params(struct snd_pcm_substream *substream, static int wm8750_mute(struct snd_soc_dai *dai, int mute) { - struct snd_soc_codec *codec = dai->codec; - u16 mute_reg = snd_soc_read(codec, WM8750_ADCDAC) & 0xfff7; + struct snd_soc_component *component = dai->component; + u16 mute_reg = snd_soc_component_read32(component, WM8750_ADCDAC) & 0xfff7; if (mute) - snd_soc_write(codec, WM8750_ADCDAC, mute_reg | 0x8); + snd_soc_component_write(component, WM8750_ADCDAC, mute_reg | 0x8); else - snd_soc_write(codec, WM8750_ADCDAC, mute_reg); + snd_soc_component_write(component, WM8750_ADCDAC, mute_reg); return 0; } -static int wm8750_set_bias_level(struct snd_soc_codec *codec, +static int wm8750_set_bias_level(struct snd_soc_component *component, enum snd_soc_bias_level level) { - u16 pwr_reg = snd_soc_read(codec, WM8750_PWR1) & 0xfe3e; + u16 pwr_reg = snd_soc_component_read32(component, WM8750_PWR1) & 0xfe3e; switch (level) { case SND_SOC_BIAS_ON: /* set vmid to 50k and unmute dac */ - snd_soc_write(codec, WM8750_PWR1, pwr_reg | 0x00c0); + snd_soc_component_write(component, WM8750_PWR1, pwr_reg | 0x00c0); break; case SND_SOC_BIAS_PREPARE: break; case SND_SOC_BIAS_STANDBY: - if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) { - snd_soc_cache_sync(codec); + if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_OFF) { + snd_soc_component_cache_sync(component); /* Set VMID to 5k */ - snd_soc_write(codec, WM8750_PWR1, pwr_reg | 0x01c1); + snd_soc_component_write(component, WM8750_PWR1, pwr_reg | 0x01c1); /* ...and ramp */ msleep(1000); } /* mute dac and set vmid to 500k, enable VREF */ - snd_soc_write(codec, WM8750_PWR1, pwr_reg | 0x0141); + snd_soc_component_write(component, WM8750_PWR1, pwr_reg | 0x0141); break; case SND_SOC_BIAS_OFF: - snd_soc_write(codec, WM8750_PWR1, 0x0001); + snd_soc_component_write(component, WM8750_PWR1, 0x0001); break; } return 0; @@ -685,42 +685,43 @@ static int wm8750_set_bias_level(struct snd_soc_codec *codec, .ops = &wm8750_dai_ops, }; -static int wm8750_probe(struct snd_soc_codec *codec) +static int wm8750_probe(struct snd_soc_component *component) { int ret; - ret = wm8750_reset(codec); + ret = wm8750_reset(component); if (ret < 0) { printk(KERN_ERR "wm8750: failed to reset: %d\n", ret); return ret; } /* set the update bits */ - snd_soc_update_bits(codec, WM8750_LDAC, 0x0100, 0x0100); - snd_soc_update_bits(codec, WM8750_RDAC, 0x0100, 0x0100); - snd_soc_update_bits(codec, WM8750_LOUT1V, 0x0100, 0x0100); - snd_soc_update_bits(codec, WM8750_ROUT1V, 0x0100, 0x0100); - snd_soc_update_bits(codec, WM8750_LOUT2V, 0x0100, 0x0100); - snd_soc_update_bits(codec, WM8750_ROUT2V, 0x0100, 0x0100); - snd_soc_update_bits(codec, WM8750_LINVOL, 0x0100, 0x0100); - snd_soc_update_bits(codec, WM8750_RINVOL, 0x0100, 0x0100); + snd_soc_component_update_bits(component, WM8750_LDAC, 0x0100, 0x0100); + snd_soc_component_update_bits(component, WM8750_RDAC, 0x0100, 0x0100); + snd_soc_component_update_bits(component, WM8750_LOUT1V, 0x0100, 0x0100); + snd_soc_component_update_bits(component, WM8750_ROUT1V, 0x0100, 0x0100); + snd_soc_component_update_bits(component, WM8750_LOUT2V, 0x0100, 0x0100); + snd_soc_component_update_bits(component, WM8750_ROUT2V, 0x0100, 0x0100); + snd_soc_component_update_bits(component, WM8750_LINVOL, 0x0100, 0x0100); + snd_soc_component_update_bits(component, WM8750_RINVOL, 0x0100, 0x0100); return ret; } -static const struct snd_soc_codec_driver soc_codec_dev_wm8750 = { - .probe = wm8750_probe, - .set_bias_level = wm8750_set_bias_level, - .suspend_bias_off = true, - - .component_driver = { - .controls = wm8750_snd_controls, - .num_controls = ARRAY_SIZE(wm8750_snd_controls), - .dapm_widgets = wm8750_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(wm8750_dapm_widgets), - .dapm_routes = wm8750_dapm_routes, - .num_dapm_routes = ARRAY_SIZE(wm8750_dapm_routes), - }, +static const struct snd_soc_component_driver soc_component_dev_wm8750 = { + .probe = wm8750_probe, + .set_bias_level = wm8750_set_bias_level, + .controls = wm8750_snd_controls, + .num_controls = ARRAY_SIZE(wm8750_snd_controls), + .dapm_widgets = wm8750_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(wm8750_dapm_widgets), + .dapm_routes = wm8750_dapm_routes, + .num_dapm_routes = ARRAY_SIZE(wm8750_dapm_routes), + .suspend_bias_off = 1, + .idle_bias_on = 1, + .pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static const struct of_device_id wm8750_of_match[] = { @@ -758,17 +759,11 @@ static int wm8750_spi_probe(struct spi_device *spi) spi_set_drvdata(spi, wm8750); - ret = snd_soc_register_codec(&spi->dev, - &soc_codec_dev_wm8750, &wm8750_dai, 1); + ret = devm_snd_soc_register_component(&spi->dev, + &soc_component_dev_wm8750, &wm8750_dai, 1); return ret; } -static int wm8750_spi_remove(struct spi_device *spi) -{ - snd_soc_unregister_codec(&spi->dev); - return 0; -} - static const struct spi_device_id wm8750_spi_ids[] = { { "wm8750", 0 }, { "wm8987", 0 }, @@ -783,7 +778,6 @@ static int wm8750_spi_remove(struct spi_device *spi) }, .id_table = wm8750_spi_ids, .probe = wm8750_spi_probe, - .remove = wm8750_spi_remove, }; #endif /* CONFIG_SPI_MASTER */ @@ -806,17 +800,11 @@ static int wm8750_i2c_probe(struct i2c_client *i2c, if (IS_ERR(regmap)) return PTR_ERR(regmap); - ret = snd_soc_register_codec(&i2c->dev, - &soc_codec_dev_wm8750, &wm8750_dai, 1); + ret = devm_snd_soc_register_component(&i2c->dev, + &soc_component_dev_wm8750, &wm8750_dai, 1); return ret; } -static int wm8750_i2c_remove(struct i2c_client *client) -{ - snd_soc_unregister_codec(&client->dev); - return 0; -} - static const struct i2c_device_id wm8750_i2c_id[] = { { "wm8750", 0 }, { "wm8987", 0 }, @@ -830,7 +818,6 @@ static int wm8750_i2c_remove(struct i2c_client *client) .of_match_table = wm8750_of_match, }, .probe = wm8750_i2c_probe, - .remove = wm8750_i2c_remove, .id_table = wm8750_i2c_id, }; #endif