From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> To: Joe Perches <joe@perches.com> Cc: linuxarm@huawei.com, mauro.chehab@huawei.com, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org Subject: Re: [PATCH 06/44] staging: spmi: hisi-spmi-controller: use le32 macros where needed Date: Wed, 12 Aug 2020 16:02:09 -0300 [thread overview] Message-ID: <20200812160209.4871e90d@onda.lan> (raw) In-Reply-To: <fa2d01411982f3f0873a895f4790ce65d9d6d185.camel@perches.com> Em Wed, 12 Aug 2020 09:21:54 -0700 Joe Perches <joe@perches.com> escreveu: > On Wed, 2020-08-12 at 17:56 +0200, Mauro Carvalho Chehab wrote: > > Instead of manually using bswap_32(), just use the > > le32 macros. > > Are you certain this code will now work on any endian cpu? > > Maybe just use __swab32 instead Well, I didn't test, because this driver is for an specific hardware (arm64). Yet, what happens in practice is that just one byte is written by the PMIC drivers. If the order is not LE, the byte written at the buffer will always be zero. > > > diff --git a/drivers/staging/hikey9xx/hisi-spmi-controller.c b/drivers/staging/hikey9xx/hisi-spmi-controller.c > [] > > @@ -43,11 +42,6 @@ > > #define SPMI_APB_SPMI_CMD_TYPE_OFFSET 24 > > #define SPMI_APB_SPMI_CMD_LENGTH_OFFSET 20 > > > > -#define bswap_32(X) \ > > - ((((u32)(X) & 0xff000000) >> 24) | \ > > - (((u32)(X) & 0x00ff0000) >> 8) | \ > > - (((u32)(X) & 0x0000ff00) << 8) | \ > > - (((u32)(X) & 0x000000ff) << 24)) > > #define SPMI_APB_SPMI_CMD_SLAVEID_OFFSET 16 > > #define SPMI_APB_SPMI_CMD_ADDR_OFFSET 0 > > > > @@ -179,14 +173,15 @@ static int spmi_read_cmd(struct spmi_controller *ctrl, > > > > writel(cmd, spmi_controller->base + chnl_ofst + SPMI_APB_SPMI_CMD_BASE_ADDR); > > > > - rc = spmi_controller_wait_for_done(spmi_controller, spmi_controller->base, sid, addr); > > + rc = spmi_controller_wait_for_done(spmi_controller, > > + spmi_controller->base, sid, addr); > > if (rc) > > goto done; > > > > i = 0; > > do { > > data = readl(spmi_controller->base + chnl_ofst + SPMI_SLAVE_OFFSET * sid + SPMI_APB_SPMI_RDATA0_BASE_ADDR + i * SPMI_PER_DATAREG_BYTE); > > - data = bswap_32(data); > > + data = be32_to_cpu((__be32)data); > > if ((bc - i * SPMI_PER_DATAREG_BYTE) >> 2) { > > memcpy(buf, &data, sizeof(data)); > > buf += sizeof(data); > > @@ -210,8 +205,7 @@ static int spmi_write_cmd(struct spmi_controller *ctrl, > > { > > struct spmi_controller_dev *spmi_controller = dev_get_drvdata(&ctrl->dev); > > unsigned long flags; > > - u32 cmd; > > - u32 data = 0; > > + u32 cmd, data; > > int rc; > > u32 chnl_ofst = SPMI_CHANNEL_OFFSET * spmi_controller->channel; > > u8 op_code, i; > > @@ -246,7 +240,7 @@ static int spmi_write_cmd(struct spmi_controller *ctrl, > > > > i = 0; > > do { > > - memset(&data, 0, sizeof(data)); > > + data = 0; > > if ((bc - i * SPMI_PER_DATAREG_BYTE) >> 2) { > > memcpy(&data, buf, sizeof(data)); > > buf += sizeof(data); > > @@ -255,8 +249,8 @@ static int spmi_write_cmd(struct spmi_controller *ctrl, > > buf += (bc % SPMI_PER_DATAREG_BYTE); > > } > > > > - data = bswap_32(data); > > - writel(data, spmi_controller->base + chnl_ofst + SPMI_APB_SPMI_WDATA0_BASE_ADDR + SPMI_PER_DATAREG_BYTE * i); > > + writel((u32)cpu_to_be32(data), > > + spmi_controller->base + chnl_ofst + SPMI_APB_SPMI_WDATA0_BASE_ADDR + SPMI_PER_DATAREG_BYTE * i); > > i++; > > } while (bc > i * SPMI_PER_DATAREG_BYTE); > > >
WARNING: multiple messages have this Message-ID (diff)
From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> To: Joe Perches <joe@perches.com> Cc: mauro.chehab@huawei.com, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, devel@driverdev.osuosl.org, linuxarm@huawei.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH 06/44] staging: spmi: hisi-spmi-controller: use le32 macros where needed Date: Wed, 12 Aug 2020 16:02:09 -0300 [thread overview] Message-ID: <20200812160209.4871e90d@onda.lan> (raw) In-Reply-To: <fa2d01411982f3f0873a895f4790ce65d9d6d185.camel@perches.com> Em Wed, 12 Aug 2020 09:21:54 -0700 Joe Perches <joe@perches.com> escreveu: > On Wed, 2020-08-12 at 17:56 +0200, Mauro Carvalho Chehab wrote: > > Instead of manually using bswap_32(), just use the > > le32 macros. > > Are you certain this code will now work on any endian cpu? > > Maybe just use __swab32 instead Well, I didn't test, because this driver is for an specific hardware (arm64). Yet, what happens in practice is that just one byte is written by the PMIC drivers. If the order is not LE, the byte written at the buffer will always be zero. > > > diff --git a/drivers/staging/hikey9xx/hisi-spmi-controller.c b/drivers/staging/hikey9xx/hisi-spmi-controller.c > [] > > @@ -43,11 +42,6 @@ > > #define SPMI_APB_SPMI_CMD_TYPE_OFFSET 24 > > #define SPMI_APB_SPMI_CMD_LENGTH_OFFSET 20 > > > > -#define bswap_32(X) \ > > - ((((u32)(X) & 0xff000000) >> 24) | \ > > - (((u32)(X) & 0x00ff0000) >> 8) | \ > > - (((u32)(X) & 0x0000ff00) << 8) | \ > > - (((u32)(X) & 0x000000ff) << 24)) > > #define SPMI_APB_SPMI_CMD_SLAVEID_OFFSET 16 > > #define SPMI_APB_SPMI_CMD_ADDR_OFFSET 0 > > > > @@ -179,14 +173,15 @@ static int spmi_read_cmd(struct spmi_controller *ctrl, > > > > writel(cmd, spmi_controller->base + chnl_ofst + SPMI_APB_SPMI_CMD_BASE_ADDR); > > > > - rc = spmi_controller_wait_for_done(spmi_controller, spmi_controller->base, sid, addr); > > + rc = spmi_controller_wait_for_done(spmi_controller, > > + spmi_controller->base, sid, addr); > > if (rc) > > goto done; > > > > i = 0; > > do { > > data = readl(spmi_controller->base + chnl_ofst + SPMI_SLAVE_OFFSET * sid + SPMI_APB_SPMI_RDATA0_BASE_ADDR + i * SPMI_PER_DATAREG_BYTE); > > - data = bswap_32(data); > > + data = be32_to_cpu((__be32)data); > > if ((bc - i * SPMI_PER_DATAREG_BYTE) >> 2) { > > memcpy(buf, &data, sizeof(data)); > > buf += sizeof(data); > > @@ -210,8 +205,7 @@ static int spmi_write_cmd(struct spmi_controller *ctrl, > > { > > struct spmi_controller_dev *spmi_controller = dev_get_drvdata(&ctrl->dev); > > unsigned long flags; > > - u32 cmd; > > - u32 data = 0; > > + u32 cmd, data; > > int rc; > > u32 chnl_ofst = SPMI_CHANNEL_OFFSET * spmi_controller->channel; > > u8 op_code, i; > > @@ -246,7 +240,7 @@ static int spmi_write_cmd(struct spmi_controller *ctrl, > > > > i = 0; > > do { > > - memset(&data, 0, sizeof(data)); > > + data = 0; > > if ((bc - i * SPMI_PER_DATAREG_BYTE) >> 2) { > > memcpy(&data, buf, sizeof(data)); > > buf += sizeof(data); > > @@ -255,8 +249,8 @@ static int spmi_write_cmd(struct spmi_controller *ctrl, > > buf += (bc % SPMI_PER_DATAREG_BYTE); > > } > > > > - data = bswap_32(data); > > - writel(data, spmi_controller->base + chnl_ofst + SPMI_APB_SPMI_WDATA0_BASE_ADDR + SPMI_PER_DATAREG_BYTE * i); > > + writel((u32)cpu_to_be32(data), > > + spmi_controller->base + chnl_ofst + SPMI_APB_SPMI_WDATA0_BASE_ADDR + SPMI_PER_DATAREG_BYTE * i); > > i++; > > } while (bc > i * SPMI_PER_DATAREG_BYTE); > > > _______________________________________________ devel mailing list devel@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
next prev parent reply other threads:[~2020-08-12 19:02 UTC|newest] Thread overview: 129+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-08-12 15:56 [PATCH 00/44] SPMI patches needed by Hikey 970 Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 01/44] staging: spmi: add Hikey 970 SPMI controller driver Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 16:28 ` Greg Kroah-Hartman 2020-08-12 16:28 ` Greg Kroah-Hartman 2020-08-12 18:59 ` Mauro Carvalho Chehab 2020-08-12 18:59 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 02/44] staging: spmi: hisi-spmi-controller: coding style fixup Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 03/44] staging: spmi: hisi-spmi-controller: fix it to probe successfully Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 04/44] staging: spmi: hisi-spmi-controller: fix a typo Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 05/44] staging: spmi: hisi-spmi-controller: adjust whitespaces at defines Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 06/44] staging: spmi: hisi-spmi-controller: use le32 macros where needed Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 16:21 ` Joe Perches 2020-08-12 16:21 ` Joe Perches 2020-08-12 19:02 ` Mauro Carvalho Chehab [this message] 2020-08-12 19:02 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 07/44] staging: spmi: hisi-spmi-controller: add debug when values are read/write Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 08/44] staging: spmi: hisi-spmi-controller: fix the dev_foo() logic Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 09/44] staging: spmi: hisi-spmi-controller: add it to the building system Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 10/44] staging: spmi: hisi-spmi-controller: do some code cleanups Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 16:17 ` Joe Perches 2020-08-12 16:17 ` Joe Perches 2020-08-12 15:56 ` [PATCH 11/44] staging: mfd: add a PMIC driver for HiSilicon 6421 SPMI version Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 12/44] staging: mfd: hi6421-spmi-pmic: get rid of unused code Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 13/44] staging: mfd: hi6421-spmi-pmic: deal with non-static functions Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 14/44] staging: mfd: hi6421-spmi-pmic: get rid of the static vars Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 15/44] staging: mfd: hi6421-spmi-pmic: cleanup hi6421-spmi-pmic.h header Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 16/44] staging: mfd: hi6421-spmi-pmic: change the binding logic Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 17/44] staging: mfd: hi6421-spmi-pmic: get rid of unused OF properties Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 18/44] staging: mfd: hi6421-spmi-pmic: cleanup " Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 19/44] staging: mfd: hi6421-spmi-pmic: change namespace on its functions Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 20/44] staging: mfd: hi6421-spmi-pmic: fix some coding style issues Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 16:12 ` Joe Perches 2020-08-12 16:12 ` Joe Perches 2020-08-12 15:56 ` [PATCH 21/44] staging: mfd: hi6421-spmi-pmic: add it to the building system Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 22/44] staging: mfd: hi6421-spmi-pmic: cleanup the code Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 23/44] staging: regulator: add a regulator driver for HiSilicon 6421v600 SPMI PMIC Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 24/44] staging: regulator: hi6421v600-regulator: get rid of unused code Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 25/44] staging: regulator: hi6421v600-regulator: port it to upstream Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 26/44] staging: regulator: hi6421v600-regulator: coding style fixups Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 27/44] staging: regulator: hi6421v600-regulator: change the binding logic Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 28/44] staging: regulator: hi6421v600-regulator: cleanup struct hisi_regulator Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 29/44] staging: regulator: hi6421v600-regulator: cleanup debug messages Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 30/44] staging: regulator: hi6421v600-regulator: use shorter names for OF properties Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 31/44] staging: regulator: hi6421v600-regulator: better handle modes Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 32/44] staging: regulator: hi6421v600-regulator: change namespace Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 33/44] staging: regulator: hi6421v600-regulator: convert to use get/set voltage_sel Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 34/44] staging: regulator: hi6421v600-regulator: don't use usleep_range for off_on_delay Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 35/44] staging: regulator: hi6421v600-regulator: add a driver-specific debug macro Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 16:10 ` Joe Perches 2020-08-12 16:10 ` Joe Perches 2020-08-13 10:10 ` Mauro Carvalho Chehab 2020-08-13 10:10 ` Mauro Carvalho Chehab 2020-08-13 15:07 ` Joe Perches 2020-08-13 15:07 ` Joe Perches 2020-08-14 4:01 ` [PATCH] media: debugging logging cleanup Joe Perches 2020-08-14 4:01 ` Joe Perches 2020-08-12 15:56 ` [PATCH 36/44] staging: regulator: hi6421v600-regulator: initialize ramp_delay Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 37/44] staging: regulator: hi6421v600-regulator: cleanup DT settings Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 38/44] staging: regulator: hi6421v600-regulator: fix some coding style issues Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 39/44] staging: regulator: hi6421v600-regulator: add it to the building system Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 40/44] staging: regulator: hi6421v600-regulator: code cleanup Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 41/44] staging: hikey9xx: add a TODO list Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 42/44] MAINTAINERS: add an entry for HiSilicon 6421v600 drivers Mauro Carvalho Chehab 2020-08-12 15:56 ` [PATCH 43/44] dt: document HiSilicon SPMI controller and mfd/regulator properties Mauro Carvalho Chehab 2020-08-14 20:17 ` Rob Herring 2020-08-15 9:55 ` Mauro Carvalho Chehab 2020-08-17 14:13 ` Rob Herring 2020-08-12 15:56 ` [PATCH 44/44] dt: hisilicon: add support for the PMIC found on Hikey 970 Mauro Carvalho Chehab 2020-08-12 15:56 ` Mauro Carvalho Chehab 2020-08-12 17:13 ` [PATCH 00/44] SPMI patches needed by " Joe Perches 2020-08-12 17:13 ` Joe Perches 2020-08-12 17:13 ` Joe Perches 2020-08-12 18:47 ` Mauro Carvalho Chehab 2020-08-12 18:47 ` Mauro Carvalho Chehab 2020-08-12 18:47 ` Mauro Carvalho Chehab 2020-08-12 18:58 ` Joe Perches 2020-08-12 18:58 ` Joe Perches 2020-08-12 18:58 ` Joe Perches 2020-08-12 19:07 ` Mauro Carvalho Chehab 2020-08-12 19:07 ` Mauro Carvalho Chehab 2020-08-12 19:07 ` Mauro Carvalho Chehab 2020-08-13 7:58 ` Lee Jones 2020-08-13 7:58 ` Lee Jones 2020-08-13 7:58 ` Lee Jones 2020-08-13 9:58 ` Mauro Carvalho Chehab 2020-08-13 9:58 ` Mauro Carvalho Chehab 2020-08-13 9:58 ` Mauro Carvalho Chehab
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200812160209.4871e90d@onda.lan \ --to=mchehab+huawei@kernel.org \ --cc=devel@driverdev.osuosl.org \ --cc=gregkh@linuxfoundation.org \ --cc=joe@perches.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxarm@huawei.com \ --cc=mauro.chehab@huawei.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.