Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp690592ybl; Fri, 10 Jan 2020 05:14:23 -0800 (PST) X-Google-Smtp-Source: APXvYqyAb+S7R2487fBawyhB7Dc8mwWVKxC1w26UjEkMdcVCACEXqpqDm+/1va9EY8YjSKk9cKxn X-Received: by 2002:a05:6808:9ba:: with SMTP id e26mr2205770oig.81.1578662062907; Fri, 10 Jan 2020 05:14:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578662062; cv=none; d=google.com; s=arc-20160816; b=GPIuUOfUyAydvlIfHRMr1rAxbllKpqq/QYJwWnAioHScybqkM6y4zFpbaX97NhWrjf HPLQxrFljI35UMgloBwjbmadAy5lWDne0pNLU3vVwmY6PXqI0aRjkyUPdUga4cWtT+TW OiALvlc9eGuuTMKfy9ab+7UR8NV8C/eow21xF7FZmeUIfGj8J/XTBfBcWw0PgE1Q5BMf zgBNtzvBvefhiSIiKtFMQYX64A2l4yMJ6Yd7YJdSO2p41loJ70bYuoEvhU5fmqzFuxNX H82bC5nVELGrFTiELuTWaEjK+oxl5a96yNGd1AFs+wicZPaq+D8mS31wRgXa7FQfA5xU sxQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:to :from:dkim-signature; bh=haY87gSwex8rCh0FoiCdqRy2whnAZkCD7EIrYWg4L6k=; b=ZQJbOzzIQ+t84DOhTA+npQ9vwX9S9Q1dyyDAx0QtmDUoCXUwfg4adwuKZXVjtDKEcN /TT3M1mtDZFjq29k8Maai4wEzV1sUcUIw1VBG1AzNZr4IeXfSXgcNnrOoAQ6BVBbZdnd 1KGJoPegLHKVypZ8b8Vz6emWlqZxiMQ9b4HJO2iRZOVClHSZYdd5NCG5gQUdjbgo5zG3 0khzsxaH4Omn7aL+TqLXrb/OY3qq8CmNLAFZCzLDp1WGv1UxndY3C35CF35PNUN6GsQv ttT+E09oV9UuNXXWPQ1fLAFO1Fpct9H4p9P/KqcCITsjhnEE3Fi2br7XaruQUbEKX7KH 2g/Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@st.com header.s=STMicroelectronics header.b=qOyO055n; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=st.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f194si1051086oig.243.2020.01.10.05.14.11; Fri, 10 Jan 2020 05:14:22 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@st.com header.s=STMicroelectronics header.b=qOyO055n; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=st.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727481AbgAJNMj (ORCPT + 99 others); Fri, 10 Jan 2020 08:12:39 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:6114 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727456AbgAJNMj (ORCPT ); Fri, 10 Jan 2020 08:12:39 -0500 Received: from pps.filterd (m0046660.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 00AD86U6008915; Fri, 10 Jan 2020 14:11:39 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com; h=from : to : subject : date : message-id : mime-version : content-type; s=STMicroelectronics; bh=haY87gSwex8rCh0FoiCdqRy2whnAZkCD7EIrYWg4L6k=; b=qOyO055nx9VMMiP9IRWmPO2wbA8r4CSqjeVvgO1nCDHWhpUOdIiIr5lyjShgcOg7d5CM XjlEQW9y8KOfw30+NLIQ8i60i+FVd69tstJoQWGgY+UhEjFHcLz2OlJtNQ3fP6Jq/slt ZRgL+aFD0hzX+tLeyoa4nKXHttqbdSDldPTBb8C4KHKWSOOQXNY+LYk6ZY6rn5UMZiqM LIiNKfkjzhFJlhh/fTV1zjNoMx2DxLppFSIYiAw3f3oBoJ3ZuOaaC1LWe8X6K6/9NPGp MfL7EI3Ri++yw69vbWT0VZB1vvfaWDQTTHnU/5rHL3wfh7e/otFK8yOfW2CLTDcoto8B kw== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2xakkb7rur-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 10 Jan 2020 14:11:39 +0100 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 7CE4A100034; Fri, 10 Jan 2020 14:11:33 +0100 (CET) Received: from Webmail-eu.st.com (sfhdag6node2.st.com [10.75.127.17]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 913662B7742; Fri, 10 Jan 2020 14:11:33 +0100 (CET) Received: from localhost (10.75.127.47) by SFHDAG6NODE2.st.com (10.75.127.17) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Fri, 10 Jan 2020 14:11:33 +0100 From: Olivier Moysan To: , , , , , , , , , , Subject: [PATCH] ASoC: stm32: dfsdm: fix 16 bits record Date: Fri, 10 Jan 2020 14:11:31 +0100 Message-ID: <20200110131131.3191-1-olivier.moysan@st.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.75.127.47] X-ClientProxiedBy: SFHDAG7NODE3.st.com (10.75.127.21) To SFHDAG6NODE2.st.com (10.75.127.17) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-01-10_01:2020-01-10,2020-01-09 signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In stm32_afsdm_pcm_cb function, the transfer size is provided in bytes. However, samples are copied as 16 bits words from iio buffer. Divide by two the transfer size, to copy the right number of samples. Fixes: 1e7f6e1c69f0 ("ASoC: stm32: dfsdm: add 16 bits audio record support") Signed-off-by: Olivier Moysan --- sound/soc/stm/stm32_adfsdm.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sound/soc/stm/stm32_adfsdm.c b/sound/soc/stm/stm32_adfsdm.c index 807fee1eac66..51407a21c440 100644 --- a/sound/soc/stm/stm32_adfsdm.c +++ b/sound/soc/stm/stm32_adfsdm.c @@ -153,13 +153,13 @@ static const struct snd_soc_component_driver stm32_adfsdm_dai_component = { .name = "stm32_dfsdm_audio", }; -static void memcpy_32to16(void *dest, const void *src, size_t n) +static void stm32_memcpy_32to16(void *dest, const void *src, size_t n) { unsigned int i = 0; u16 *d = (u16 *)dest, *s = (u16 *)src; s++; - for (i = n; i > 0; i--) { + for (i = n >> 1; i > 0; i--) { *d++ = *s++; s++; } @@ -186,8 +186,8 @@ static int stm32_afsdm_pcm_cb(const void *data, size_t size, void *private) if ((priv->pos + src_size) > buff_size) { if (format == SNDRV_PCM_FORMAT_S16_LE) - memcpy_32to16(&pcm_buff[priv->pos], src_buff, - buff_size - priv->pos); + stm32_memcpy_32to16(&pcm_buff[priv->pos], src_buff, + buff_size - priv->pos); else memcpy(&pcm_buff[priv->pos], src_buff, buff_size - priv->pos); @@ -196,8 +196,8 @@ static int stm32_afsdm_pcm_cb(const void *data, size_t size, void *private) } if (format == SNDRV_PCM_FORMAT_S16_LE) - memcpy_32to16(&pcm_buff[priv->pos], - &src_buff[src_size - cur_size], cur_size); + stm32_memcpy_32to16(&pcm_buff[priv->pos], + &src_buff[src_size - cur_size], cur_size); else memcpy(&pcm_buff[priv->pos], &src_buff[src_size - cur_size], cur_size); -- 2.17.1