From patchwork Fri Jan 12 01:11:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 10159139 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 D60FD602B3 for ; Fri, 12 Jan 2018 01:13:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C32F828047 for ; Fri, 12 Jan 2018 01:13:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B799B28700; Fri, 12 Jan 2018 01:13:12 +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 B36B628047 for ; Fri, 12 Jan 2018 01:13:11 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id C014F267B06; Fri, 12 Jan 2018 02:13:09 +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 66703267AF9; Fri, 12 Jan 2018 02:13:06 +0100 (CET) Received: from relmlie1.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by alsa0.perex.cz (Postfix) with ESMTP id 9FA64267A86 for ; Fri, 12 Jan 2018 02:11:34 +0100 (CET) Received: from unknown (HELO relmlir3.idc.renesas.com) ([10.200.68.153]) by relmlie1.idc.renesas.com with ESMTP; 12 Jan 2018 10:11:33 +0900 Received: from relmlii1.idc.renesas.com (relmlii1.idc.renesas.com [10.200.68.65]) by relmlir3.idc.renesas.com (Postfix) with ESMTP id 235B84C42B; Fri, 12 Jan 2018 10:11:33 +0900 (JST) X-IronPort-AV: E=Sophos;i="5.46,346,1511794800"; d="scan'208";a="268006052" Received: from mail-hk2apc01lp0216.outbound.protection.outlook.com (HELO APC01-HK2-obe.outbound.protection.outlook.com) ([65.55.88.216]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA256; 12 Jan 2018 10:11:32 +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=xPlvqoVLQn38PYeSlJNFDr/8LEcR8iIZu9cV2vJKapE=; b=XQg7V2KmO0ys2ysb71okF7piJ81OcmDdS7lV8Ms0QYkE5d7ThNOZuQAhCLfeVoEgHNqbMNv+Tc9MlJ3AZKMDhb94FWleAQxFNx+8hLWbqkMRW1AvS7FOlroyri9Dbvp22W+oSo8GHry6pFqKBNgj5TfAqe1kc76RyhRCyFkUz5k= 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 PS1PR0601MB1884.apcprd06.prod.outlook.com (2603:1096:803:8::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.407.7; Fri, 12 Jan 2018 01:11:29 +0000 Message-ID: <87shbbdgqp.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:29 +0000 X-Originating-IP: [211.11.155.138] X-ClientProxiedBy: KAXPR01CA0042.jpnprd01.prod.outlook.com (2603:1096:402:1a::28) To PS1PR0601MB1884.apcprd06.prod.outlook.com (2603:1096:803:8::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f3017769-98ac-40b2-5f52-08d559596992 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020074)(4652020)(5600026)(4604075)(48565401081)(2017052603307)(7153060)(7193020); SRVR:PS1PR0601MB1884; X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1884; 3:qbDymEtkrFd8f9pnuVuEzkDIgGOA2UaATecAitAlfAaTSuExzoUGCptkPVBX6NtTSBP1IjP0CHBse7KoLJp5xpZOBV8MbA7W51F+8yODvajAdretYLVpYCtvgCY4uLmYtT/QbdpZXHciBf35uVnPYcqDyuMxDyrbTFzW66EBYm2F5P8yu8HLdu15tEQYU1JnUhdUrmCggGFldGfyxRUGc9bjZIZyJ6hzE7QFn4ruDiAsXH/h4Z7FHAryS0dtzq9D; 25:1YXDc6VuDhxPRUfeMnFbQcWPOUMiVireSz+NWO50lLXZ53hYo5WX0sSu3VA6sKGjz0du+ZcmEJwtKxR745IXqZF3ACJEGTztgzMuAMWGSdnFZ5zfPzrREZgEnO9yD29Ncmf0Fd4+kgl5UdPTIfBYOvFZxqyLX97HXQ4gzaLOhkDEtWN4CnzIGRykqZHlCnsqyN0+WIVsvFyfbDud6EA8PMfyl8LF+XmmERaUcLVJDVSINW4IvlnptE8FKJF/nyzYByTfVAiEbuu6F9LlNtdnS+OUcvKjESGuAoSUxLclUqCOc4Os3rAQYq3vL1b9J/Yti+6FZZN90sUzfSCgmM7lpg==; 31:u9gbTxmgFjgqR/nGD0Lhhv1eW+IwlWnohk0WB9l3LdJemfaXszm0661/ppA3OLmA427dOjZbDOllUwSne11kbGy3qQrlehQGouWNqWQHqzMXAhIrMUSlxIXooZeAOFatlpSpSkZlb9O4+2gXvOgmwt6AC7L9awRBiMnkgtceISERLRJjotDkhdNr5GpKHdLnEnBLuhv9ptJ2Udob5xsmZD+Kxo/aRkgyteRXVNp/SHY= X-MS-TrafficTypeDiagnostic: PS1PR0601MB1884: X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1884; 20:8rDF1ERBq4Xpo8PyR6UGe0BNXgRxv81c2wsIueksGONFTy2N1YaCslPWwX+QqwLsje2Xwh/Wxezp7zo6wXZpe0bYfqxc69CQa9iqz71zPcv+XqUhFWVn9srcMbAgYIJX2yCnv4SnUgfNhO8lb245U+oGMleNizsWwy/VwIuH5FjMAruzLclEzmNHe7eyNlvicvko1BWT5JRKHmBYLNmDtrNhFz/SDNG8yCCuEd8SaeBEFVMR7Mti8VIcIO6vak/PpNHFbM3nO4+p9gaTSN1yoY1UExPFur+XVZN3dQCWmN8ghSZk2nF5IwK1DsuGeTpqFN6d/dxKrGpq96/LGX5icyJZw1pEz/K493KLzmO6wwfuU681SAiBKPZIkonOr4jFJC1S7jiVmFQb3wARo0f5hfttGeyaoOfsvEswkU3C87GE7dlc0Y0CmUS/P+3xf8quupWxIPlhWhrpxGEWl/YPt48sbctYbAJCMA989elg1y35hKy1NA9QyljJgZSLcapy; 4:o5f2xKD/g6WJFf2R/JLYpTKHnxhQX7L3n91eUCcm/8fMwIiuwV14xpfbb/ANn4EVK6//hR2GC0coQBCXX75bsU7Nma1D1gMpM/mN+yjQP5znW9E2f6FVkygMezFhslOGzdqk/yPj2FkOCoHoWjyQQbvZSDK9aWe0ZqYQ2zScojI6OwfajzsUlDD3I235M55tQQjQMJoQTf+ZdK6AudkRpVXgwFS1XcwXF2N4SXJ7X0draZ6YCPSHjEMcsI6Jm9NOLoqwWOae+sVcJHo1BBXLFdPz0lf7DDmIno9kZ0sFLhJf6TXHyqAjlrVL4lOVaPgP 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)(93006095)(93001095)(3231023)(944501137)(10201501046)(3002001)(6055026)(6041268)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:PS1PR0601MB1884; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:PS1PR0601MB1884; X-Forefront-PRVS: 0550778858 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(39380400002)(366004)(346002)(39860400002)(376002)(396003)(189003)(199004)(2906002)(8676002)(81166006)(8936002)(81156014)(6116002)(3846002)(53416004)(478600001)(23726003)(7736002)(6916009)(2950100002)(5660300001)(47776003)(7696005)(52116002)(76176011)(305945005)(59450400001)(386003)(105586002)(16526018)(25786009)(16586007)(316002)(54906003)(58126008)(68736007)(83506002)(36756003)(4326008)(50466002)(69596002)(106356001)(66066001)(86362001)(97736004)(6486002)(53936002)(21314002)(16060500001); DIR:OUT; SFP:1102; SCL:1; SRVR:PS1PR0601MB1884; 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; PS1PR0601MB1884; 23:Lbv6rcDPhcIjaqi4XQ1Fk7aezs3NjwrmzdFiRWT?= =?us-ascii?Q?en5GVJ6b9Rqw/U0whDWCd+x6E3qkBSfzuE+J57WenkC1tpENCq+pW+CSSBKO?= =?us-ascii?Q?TBuLct/Yyi6YjcchyMLwP9C7CP1XP27O+CFvBrCoP51glhKMVrntN/zMbg6m?= =?us-ascii?Q?xPLCqV1qBIdKrDjVFH4zSFas3r9OgwVGBl5M9qb1usRUtD4g9jGMCT3OW7WG?= =?us-ascii?Q?ZzSS1dQFsujdwV6M69+La1ZV9+jaGnk+47PlODqs5bMVbPAKhUbr19cF8v4q?= =?us-ascii?Q?wPP1WrOR5Ewc63v8HZppgeg87sOYLwg/KHrbNB0/0VMFQR9f5GYK/3zr1urw?= =?us-ascii?Q?CTR8B/G4NyOmvG9IZ3ED+lELcR/b1Nkw0w51kY/AqV9PfIVg35yq9MtSvq+Y?= =?us-ascii?Q?wNth9z353q8jiVNWp4VVzohbUvVk/8Gs6frlj+Jq8pLiVxqqUqh/fCeHcErY?= =?us-ascii?Q?I5okPgUCoJiuBc8eEGWZ5hM1EtvncRXokrwCvcNBU1PDsdibsac/AiK6KsCZ?= =?us-ascii?Q?sFpkmmQP+7+eISI2IZArnR0A1P92DD1OMBWC1Ysy1tLGJER+vyCnW+sZsY6v?= =?us-ascii?Q?cG5nTp1obK+J0ZyP5FAwQinkEFa7f87ZMZo6sK3TuqtUdZZ+D4mAzMsct25g?= =?us-ascii?Q?uQbaaZvG3TPEdexWDqw7jLufDSzEYFtK1s9lhivp9W1nQupkbcF0DwbHTXIH?= =?us-ascii?Q?FSXTNx1W7R7rEaHBw/iVat+lBnf1rZk1aH2KxFHSBfs1bmPzqKBPKLz59Kv+?= =?us-ascii?Q?X6veEOyahbgcBd6axrN1yndBSDNXgv4m+0QO7rD06eUONx/5w/iAMTnQa+Qk?= =?us-ascii?Q?VoCMM+z9G/R8uc6FGZM7Z4dTL6m9tc/z4rjghiBhRzoHRDwcOd4qdfPqfyin?= =?us-ascii?Q?Ym6vbz8kcdBM1CRJXTTYN0Ja7v/VtdxvcnYIYj4dBdS9GIS/5C80iSAeHXP/?= =?us-ascii?Q?or6vJRsJYLa/24NwqXiwgwAaYm6UAW3nUNGy22G3mCN1peiCKjCWylx9pAw6?= =?us-ascii?Q?ddeEkOLWMX4Dtk3MZxt75f9Ter6klycfbqnfK68O7suN1WiRDg0GN4yzAg6G?= =?us-ascii?Q?51StER+kGsWnBAo+/hMlMzXJMGsFG5bmzZIN7tlr0RIQ5o+BppmCEwDgsyg0?= =?us-ascii?Q?0zRxTU/sRolLw9B/2sYOgNMX+VGKOMUjZMLgQdW2LJ+4UbPwx016W4w=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1884; 6:gNmqm/BDu9tCzRNERP2UoGtv+oGoHK662VCeUgOYCueWBNu75NqVb9JF25xcOdnz04fdtmpaMczAmCZzJj6LfJsV4S+qq0wlfAFAQm1Aa/h5W+p1pPeg3S0ZlJgFzMZE5tlrjUj77IbpFNcyUTFHM1I0rHlGKmJmd9Hc5lGS0QWuo+//tKr+cwPq+MdQWen1mkYQyo0SqQVYqlVcG2MjHk0ZadkOjGCJzVA042bKw4PN00y3RSDa8sihlYRCGvhAhIkxe3FpSVnhOwt6ReMLNwIXjpurf2cHWz1vlwpWAyNn337tNXBJzfhpkctdyZSGoTgaWhsXVBzgRLFVQjIsFVMqdHHujRusJco/tdt2UuM=; 5:jw22AW9YzWNQcBH5+1V0KMkUp6axyillmDxPJC+uNV5Z2A6R0cb6yF39uHor76Nv6HmoPqPXRrDGnHLSa3oAMtiCNxBjDmM/ta7ovA1jexx+jdlhVtbLGUjUDCanLsctwVAaosI+j6RhDSl6CHtc5oyrQ9T0rs0S5hzpa39fJUg=; 24:gWeBI4cjQZUvX6T2/rJ4c8rg9EJp0HHlSloFF3RV07hqwx+8o1yY2UXrgOIEN91qx3HSVNANKyzMhUumTYFw5LLL6M1CxQkQfQI85ci61D4=; 7:gN4uXYRXJ0N8rOFpK71i2v1dSY53igWpQG5dRDQZOqWvzDxMklmziAdqxe7c6HsA6nkL+ELRpuR243wXQR0DGRqscVckFeN8oM+M/5iqbO530dcpICIv/YfHT551nSzjN9QDPjFRTY3uOUzAIPtBofNsK5Gbfm7fTbp9TXAK8pFiHlelOWhwMRhXFaD9LN+PmyPfM0tLGnV1GMitiT8CcniciUksV9JJxRexH92kA2cu37OnO18hISL5lzYs8vMj SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; PS1PR0601MB1884; 20:nPUzhiqBMAq3UZscHO2xThuqB3YjOpwzoDD5klo+RWyGlk0FdghsJVeWZG4MR8WCNnAUT/I2a1Q2ec5MWB9H6gJ9sDlSY1N+4Aps68vC+1C0l3kRuy/78CexlYQywSrv/fj6nhyd1aFd8pB+UUMVfUWhxwCHxm6lSoYh7wVxFg0= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2018 01:11:29.6736 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f3017769-98ac-40b2-5f52-08d559596992 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-Transport-CrossTenantHeadersStamped: PS1PR0601MB1884 Cc: Linux-ALSA , Simon Subject: [alsa-devel] [PATCH 013/187] ASoC: wm8711: 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/wm8711.c | 116 ++++++++++++++++++++-------------------------- 1 file changed, 51 insertions(+), 65 deletions(-) diff --git a/sound/soc/codecs/wm8711.c b/sound/soc/codecs/wm8711.c index 2b376c9..fe7a40a 100644 --- a/sound/soc/codecs/wm8711.c +++ b/sound/soc/codecs/wm8711.c @@ -58,7 +58,7 @@ static bool wm8711_volatile(struct device *dev, unsigned int reg) } } -#define wm8711_reset(c) snd_soc_write(c, WM8711_RESET, 0) +#define wm8711_reset(c) snd_soc_component_write(c, WM8711_RESET, 0) static const DECLARE_TLV_DB_SCALE(out_tlv, -12100, 100, 1); @@ -159,14 +159,14 @@ static int wm8711_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 wm8711_priv *wm8711 = snd_soc_codec_get_drvdata(codec); - u16 iface = snd_soc_read(codec, WM8711_IFACE) & 0xfff3; + struct snd_soc_component *component = dai->component; + struct wm8711_priv *wm8711 = snd_soc_component_get_drvdata(component); + u16 iface = snd_soc_component_read32(component, WM8711_IFACE) & 0xfff3; int i = get_coeff(wm8711->sysclk, params_rate(params)); u16 srate = (coeff_div[i].sr << 2) | (coeff_div[i].bosr << 1) | coeff_div[i].usb; - snd_soc_write(codec, WM8711_SRATE, srate); + snd_soc_component_write(component, WM8711_SRATE, srate); /* bit size */ switch (params_width(params)) { @@ -180,17 +180,17 @@ static int wm8711_hw_params(struct snd_pcm_substream *substream, break; } - snd_soc_write(codec, WM8711_IFACE, iface); + snd_soc_component_write(component, WM8711_IFACE, iface); return 0; } static int wm8711_pcm_prepare(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; /* set active */ - snd_soc_write(codec, WM8711_ACTIVE, 0x0001); + snd_soc_component_write(component, WM8711_ACTIVE, 0x0001); return 0; } @@ -198,24 +198,24 @@ static int wm8711_pcm_prepare(struct snd_pcm_substream *substream, static void wm8711_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; /* deactivate */ - if (!snd_soc_codec_is_active(codec)) { + if (!snd_soc_component_is_active(component)) { udelay(50); - snd_soc_write(codec, WM8711_ACTIVE, 0x0); + snd_soc_component_write(component, WM8711_ACTIVE, 0x0); } } static int wm8711_mute(struct snd_soc_dai *dai, int mute) { - struct snd_soc_codec *codec = dai->codec; - u16 mute_reg = snd_soc_read(codec, WM8711_APDIGI) & 0xfff7; + struct snd_soc_component *component = dai->component; + u16 mute_reg = snd_soc_component_read32(component, WM8711_APDIGI) & 0xfff7; if (mute) - snd_soc_write(codec, WM8711_APDIGI, mute_reg | 0x8); + snd_soc_component_write(component, WM8711_APDIGI, mute_reg | 0x8); else - snd_soc_write(codec, WM8711_APDIGI, mute_reg); + snd_soc_component_write(component, WM8711_APDIGI, mute_reg); return 0; } @@ -223,8 +223,8 @@ static int wm8711_mute(struct snd_soc_dai *dai, int mute) static int wm8711_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 wm8711_priv *wm8711 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct wm8711_priv *wm8711 = snd_soc_component_get_drvdata(component); switch (freq) { case 11289600: @@ -241,8 +241,8 @@ static int wm8711_set_dai_sysclk(struct snd_soc_dai *codec_dai, static int wm8711_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) { - struct snd_soc_codec *codec = codec_dai->codec; - u16 iface = snd_soc_read(codec, WM8711_IFACE) & 0x000c; + struct snd_soc_component *component = codec_dai->component; + u16 iface = snd_soc_component_read32(component, WM8711_IFACE) & 0x000c; /* set master/slave audio interface */ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { @@ -293,31 +293,31 @@ static int wm8711_set_dai_fmt(struct snd_soc_dai *codec_dai, } /* set iface */ - snd_soc_write(codec, WM8711_IFACE, iface); + snd_soc_component_write(component, WM8711_IFACE, iface); return 0; } -static int wm8711_set_bias_level(struct snd_soc_codec *codec, +static int wm8711_set_bias_level(struct snd_soc_component *component, enum snd_soc_bias_level level) { - struct wm8711_priv *wm8711 = snd_soc_codec_get_drvdata(codec); - u16 reg = snd_soc_read(codec, WM8711_PWR) & 0xff7f; + struct wm8711_priv *wm8711 = snd_soc_component_get_drvdata(component); + u16 reg = snd_soc_component_read32(component, WM8711_PWR) & 0xff7f; switch (level) { case SND_SOC_BIAS_ON: - snd_soc_write(codec, WM8711_PWR, reg); + snd_soc_component_write(component, WM8711_PWR, reg); break; case SND_SOC_BIAS_PREPARE: break; case SND_SOC_BIAS_STANDBY: - if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) + if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_OFF) regcache_sync(wm8711->regmap); - snd_soc_write(codec, WM8711_PWR, reg | 0x0040); + snd_soc_component_write(component, WM8711_PWR, reg | 0x0040); break; case SND_SOC_BIAS_OFF: - snd_soc_write(codec, WM8711_ACTIVE, 0x0); - snd_soc_write(codec, WM8711_PWR, 0xffff); + snd_soc_component_write(component, WM8711_ACTIVE, 0x0); + snd_soc_component_write(component, WM8711_PWR, 0xffff); break; } return 0; @@ -349,37 +349,38 @@ static int wm8711_set_bias_level(struct snd_soc_codec *codec, .ops = &wm8711_ops, }; -static int wm8711_probe(struct snd_soc_codec *codec) +static int wm8711_probe(struct snd_soc_component *component) { int ret; - ret = wm8711_reset(codec); + ret = wm8711_reset(component); if (ret < 0) { - dev_err(codec->dev, "Failed to issue reset\n"); + dev_err(component->dev, "Failed to issue reset\n"); return ret; } /* Latch the update bits */ - snd_soc_update_bits(codec, WM8711_LOUT1V, 0x0100, 0x0100); - snd_soc_update_bits(codec, WM8711_ROUT1V, 0x0100, 0x0100); + snd_soc_component_update_bits(component, WM8711_LOUT1V, 0x0100, 0x0100); + snd_soc_component_update_bits(component, WM8711_ROUT1V, 0x0100, 0x0100); return ret; } -static const struct snd_soc_codec_driver soc_codec_dev_wm8711 = { - .probe = wm8711_probe, - .set_bias_level = wm8711_set_bias_level, - .suspend_bias_off = true, - - .component_driver = { - .controls = wm8711_snd_controls, - .num_controls = ARRAY_SIZE(wm8711_snd_controls), - .dapm_widgets = wm8711_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(wm8711_dapm_widgets), - .dapm_routes = wm8711_intercon, - .num_dapm_routes = ARRAY_SIZE(wm8711_intercon), - }, +static const struct snd_soc_component_driver soc_component_dev_wm8711 = { + .probe = wm8711_probe, + .set_bias_level = wm8711_set_bias_level, + .controls = wm8711_snd_controls, + .num_controls = ARRAY_SIZE(wm8711_snd_controls), + .dapm_widgets = wm8711_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(wm8711_dapm_widgets), + .dapm_routes = wm8711_intercon, + .num_dapm_routes = ARRAY_SIZE(wm8711_intercon), + .suspend_bias_off = 1, + .idle_bias_on = 1, + .pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static const struct of_device_id wm8711_of_match[] = { @@ -417,26 +418,18 @@ static int wm8711_spi_probe(struct spi_device *spi) spi_set_drvdata(spi, wm8711); - ret = snd_soc_register_codec(&spi->dev, - &soc_codec_dev_wm8711, &wm8711_dai, 1); + ret = devm_snd_soc_register_component(&spi->dev, + &soc_component_dev_wm8711, &wm8711_dai, 1); return ret; } -static int wm8711_spi_remove(struct spi_device *spi) -{ - snd_soc_unregister_codec(&spi->dev); - - return 0; -} - static struct spi_driver wm8711_spi_driver = { .driver = { .name = "wm8711", .of_match_table = wm8711_of_match, }, .probe = wm8711_spi_probe, - .remove = wm8711_spi_remove, }; #endif /* CONFIG_SPI_MASTER */ @@ -458,18 +451,12 @@ static int wm8711_i2c_probe(struct i2c_client *client, i2c_set_clientdata(client, wm8711); - ret = snd_soc_register_codec(&client->dev, - &soc_codec_dev_wm8711, &wm8711_dai, 1); + ret = devm_snd_soc_register_component(&client->dev, + &soc_component_dev_wm8711, &wm8711_dai, 1); return ret; } -static int wm8711_i2c_remove(struct i2c_client *client) -{ - snd_soc_unregister_codec(&client->dev); - return 0; -} - static const struct i2c_device_id wm8711_i2c_id[] = { { "wm8711", 0 }, { } @@ -482,7 +469,6 @@ static int wm8711_i2c_remove(struct i2c_client *client) .of_match_table = wm8711_of_match, }, .probe = wm8711_i2c_probe, - .remove = wm8711_i2c_remove, .id_table = wm8711_i2c_id, }; #endif