From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_2 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BAA3AC4363A for ; Thu, 29 Oct 2020 15:26:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 65EBE20759 for ; Thu, 29 Oct 2020 15:26:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603985160; bh=md/5mtqaLq4poF+cAam22zEdu3VEziPtNNrcvka9+Hw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:List-ID:From; b=t5huSvnAtiAWjBYh9HKnuT27aKO+QcKHS4TBfzXUg5RpL1H1w257vnbrR45ZRNCGr nDAPGFroVtZJRavIoDXQmC5blGXzZ21pm0bVqxmKGP6aWTW15kdZj12drfDJ/mQjQc bkhXtiJsG9Ym0SlTkDzmaXZ7QnlRQzN5aMObjWY4= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728152AbgJ2PZ7 (ORCPT ); Thu, 29 Oct 2020 11:25:59 -0400 Received: from mail.kernel.org ([198.145.29.99]:44396 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728181AbgJ2PZy (ORCPT ); Thu, 29 Oct 2020 11:25:54 -0400 Received: from archlinux (cpc149474-cmbg20-2-0-cust94.5-4.cable.virginm.net [82.4.196.95]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 03BE92087E; Thu, 29 Oct 2020 15:25:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603985150; bh=md/5mtqaLq4poF+cAam22zEdu3VEziPtNNrcvka9+Hw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=vgnqYdYULcpSZMBCz39KartBFuGOrCazQ2C5KFusCZi0E6T6v9amOfe2Km+nhIClY TG/ftx/kufVyme5XotS3aVbbrG2NJlH4rKwGAiAeaiiPVfVpgFe7vCeCLu26ZtdaAg l/tdDYHHen0Ptsp38RaprFyYsGgM7zw/tyvMlaiM= Date: Thu, 29 Oct 2020 15:25:45 +0000 From: Jonathan Cameron To: Andy Shevchenko Cc: linux-iio@vger.kernel.org, Lars-Peter Clausen , Peter Meerwald-Stadler , Eddie James Subject: Re: [PATCH v1] iio: pressure: dps310: Use get_unaligned_beXX() Message-ID: <20201029152545.18eecc9a@archlinux> In-Reply-To: <20201026180515.19680-1-andriy.shevchenko@linux.intel.com> References: <20201026180515.19680-1-andriy.shevchenko@linux.intel.com> X-Mailer: Claws Mail 3.17.7 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org On Mon, 26 Oct 2020 20:05:15 +0200 Andy Shevchenko wrote: > This makes the driver code slightly easier to read. > > Cc: Eddie James > Signed-off-by: Andy Shevchenko Hi Andy, I am a bit in 2 minds about this one. I'm not 100% sure on the register arrangement here, but it 'looks' like a be64 followed by some smaller registers. It isn't documented like that in the datasheet though, so representing it as such might confuse people... So, we 'could' use a structure with a __be64 and some __be16s then all would be aligned, but it would be hard to align with the datasheet. Unfortunately what you have here is also rather hard to align with the datasheet... Jonathan > --- > drivers/iio/pressure/dps310.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/drivers/iio/pressure/dps310.c b/drivers/iio/pressure/dps310.c > index 0730380ceb69..6a21cb5d3d37 100644 > --- a/drivers/iio/pressure/dps310.c > +++ b/drivers/iio/pressure/dps310.c > @@ -127,7 +127,7 @@ static int dps310_get_coefs(struct dps310_data *data) > c0 = (coef[0] << 4) | (coef[1] >> 4); > data->c0 = sign_extend32(c0, 11); > > - c1 = ((coef[1] & GENMASK(3, 0)) << 8) | coef[2]; > + c1 = get_unaligned_be16(&coef[1]) & GENMASK(11, 0); > data->c1 = sign_extend32(c1, 11); > > /* > @@ -138,22 +138,22 @@ static int dps310_get_coefs(struct dps310_data *data) > c00 = (coef[3] << 12) | (coef[4] << 4) | (coef[5] >> 4); > data->c00 = sign_extend32(c00, 19); > > - c10 = ((coef[5] & GENMASK(3, 0)) << 16) | (coef[6] << 8) | coef[7]; > + c10 = get_unaligned_be24(&coef[5]) & GENMASK(19, 0); > data->c10 = sign_extend32(c10, 19); > > - c01 = (coef[8] << 8) | coef[9]; > + c01 = get_unaligned_be16(&coef[8]); > data->c01 = sign_extend32(c01, 15); > > - c11 = (coef[10] << 8) | coef[11]; > + c11 = get_unaligned_be16(&coef[10]); > data->c11 = sign_extend32(c11, 15); > > - c20 = (coef[12] << 8) | coef[13]; > + c20 = get_unaligned_be16(&coef[12]); > data->c20 = sign_extend32(c20, 15); > > - c21 = (coef[14] << 8) | coef[15]; > + c21 = get_unaligned_be16(&coef[14]); > data->c21 = sign_extend32(c21, 15); > > - c30 = (coef[16] << 8) | coef[17]; > + c30 = get_unaligned_be16(&coef[16]); > data->c30 = sign_extend32(c30, 15); > > return 0; > @@ -323,7 +323,7 @@ static int dps310_read_pres_raw(struct dps310_data *data) > if (rc < 0) > goto done; > > - raw = (val[0] << 16) | (val[1] << 8) | val[2]; > + raw = get_unaligned_be24(&val[0]); > data->pressure_raw = sign_extend32(raw, 23); > > done: > @@ -342,7 +342,7 @@ static int dps310_read_temp_ready(struct dps310_data *data) > if (rc < 0) > return rc; > > - raw = (val[0] << 16) | (val[1] << 8) | val[2]; > + raw = get_unaligned_be24(&val[0]); > data->temp_raw = sign_extend32(raw, 23); > > return 0;