From: Sam Protsenko <semen.protsenko@linaro.org> To: Tudor Ambarus <tudor.ambarus@linaro.org> Cc: broonie@kernel.org, andi.shyti@kernel.org, arnd@arndb.de, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, alim.akhtar@samsung.com, linux-spi@vger.kernel.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arch@vger.kernel.org, andre.draszik@linaro.org, peter.griffin@linaro.org, kernel-team@android.com, willmcvicker@google.com Subject: Re: [PATCH v2 07/28] spi: s3c64xx: remove unneeded (void *) casts in of_match_table Date: Fri, 26 Jan 2024 13:40:36 -0600 [thread overview] Message-ID: <CAPLW+4mJ5BxwhKwi2Z2pMOu1D0N0KaaW7=C1sZ0PV51iOHSw8Q@mail.gmail.com> (raw) In-Reply-To: <cad69841-9ca2-45af-9db2-4c4aced63d5e@linaro.org> On Fri, Jan 26, 2024 at 2:24 AM Tudor Ambarus <tudor.ambarus@linaro.org> wrote: > > Thanks for the review feedback, Sam, great catches so far! > > On 1/25/24 19:04, Sam Protsenko wrote: > > On Thu, Jan 25, 2024 at 8:50 AM Tudor Ambarus <tudor.ambarus@linaro.org> wrote: > >> > >> of_device_id::data is an opaque pointer. No explicit cast is needed. > >> Remove unneeded (void *) casts in of_match_table. While here align the > >> compatible and data members. > >> > >> Reviewed-by: Andi Shyti <andi.shyti@kernel.org> > >> Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org> > >> --- > >> drivers/spi/spi-s3c64xx.c | 45 +++++++++++++++++++++++---------------- > >> 1 file changed, 27 insertions(+), 18 deletions(-) > >> > >> diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c > >> index 230fda2b3417..137faf9f2697 100644 > >> --- a/drivers/spi/spi-s3c64xx.c > >> +++ b/drivers/spi/spi-s3c64xx.c > >> @@ -1511,32 +1511,41 @@ static const struct platform_device_id s3c64xx_spi_driver_ids[] = { > >> }; > >> > >> static const struct of_device_id s3c64xx_spi_dt_match[] = { > >> - { .compatible = "samsung,s3c2443-spi", > >> - .data = (void *)&s3c2443_spi_port_config, > > > > I support removing (void *) cast. But this new braces style: > > > > }, > > { > > this style was there before my patch. > > > > seems to bloat the code a bit. For my taste, having something like }, > > { on the same line would be more compact, and more canonical so to > > I don't lean towards neither of the styles, I'm ok with both > > > speak. Or even preserving the existing style would be ok too, for that > > matter. > > > > seeing .compatible and .data unaligned hurt my eyes and I think that > aligning them while dropping the cast is fine. I don't really want to do > the style change unless you, Andi or Mark insist. Would you please come > with a patch on top if you really want them changed? > But that would completely undermine the whole point of the review? I'd prefer this style: ... = { { .compatible = .data = }, { .compatible = .data = }, { /* sentinel */ }, }; That seems more canonical to me, and more compact too, with no contradictions to your preference about alignment too. But that's only my opinion, as a reviewer. > > Assuming the braces style is fixed, you can add: > > > > Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org> > > > >> + { > >> + .compatible = "samsung,s3c2443-spi", > >> + .data = &s3c2443_spi_port_config, > >> }, > >> - { .compatible = "samsung,s3c6410-spi", > >> - .data = (void *)&s3c6410_spi_port_config, > >> + { > >> + .compatible = "samsung,s3c6410-spi", > >> + .data = &s3c6410_spi_port_config, > >> }, > >> - { .compatible = "samsung,s5pv210-spi", > >> - .data = (void *)&s5pv210_spi_port_config, > >> + { > >> + .compatible = "samsung,s5pv210-spi", > >> + .data = &s5pv210_spi_port_config, > >> }, > >> - { .compatible = "samsung,exynos4210-spi", > >> - .data = (void *)&exynos4_spi_port_config, > >> + { > >> + .compatible = "samsung,exynos4210-spi", > >> + .data = &exynos4_spi_port_config, > >> }, > >> - { .compatible = "samsung,exynos7-spi", > >> - .data = (void *)&exynos7_spi_port_config, > >> + { > >> + .compatible = "samsung,exynos7-spi", > >> + .data = &exynos7_spi_port_config, > >> }, > >> - { .compatible = "samsung,exynos5433-spi", > >> - .data = (void *)&exynos5433_spi_port_config, > >> + { > >> + .compatible = "samsung,exynos5433-spi", > >> + .data = &exynos5433_spi_port_config, > >> }, > >> - { .compatible = "samsung,exynos850-spi", > >> - .data = (void *)&exynos850_spi_port_config, > >> + { > >> + .compatible = "samsung,exynos850-spi", > >> + .data = &exynos850_spi_port_config, > >> }, > >> - { .compatible = "samsung,exynosautov9-spi", > >> - .data = (void *)&exynosautov9_spi_port_config, > >> + { > >> + .compatible = "samsung,exynosautov9-spi", > >> + .data = &exynosautov9_spi_port_config, > >> }, > >> - { .compatible = "tesla,fsd-spi", > >> - .data = (void *)&fsd_spi_port_config, > >> + { > >> + .compatible = "tesla,fsd-spi", > >> + .data = &fsd_spi_port_config, > >> }, > >> { }, > >> }; > >> -- > >> 2.43.0.429.g432eaa2c6b-goog > >> _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Sam Protsenko <semen.protsenko@linaro.org> To: Tudor Ambarus <tudor.ambarus@linaro.org> Cc: broonie@kernel.org, andi.shyti@kernel.org, arnd@arndb.de, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, alim.akhtar@samsung.com, linux-spi@vger.kernel.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arch@vger.kernel.org, andre.draszik@linaro.org, peter.griffin@linaro.org, kernel-team@android.com, willmcvicker@google.com Subject: Re: [PATCH v2 07/28] spi: s3c64xx: remove unneeded (void *) casts in of_match_table Date: Fri, 26 Jan 2024 13:40:36 -0600 [thread overview] Message-ID: <CAPLW+4mJ5BxwhKwi2Z2pMOu1D0N0KaaW7=C1sZ0PV51iOHSw8Q@mail.gmail.com> (raw) In-Reply-To: <cad69841-9ca2-45af-9db2-4c4aced63d5e@linaro.org> On Fri, Jan 26, 2024 at 2:24 AM Tudor Ambarus <tudor.ambarus@linaro.org> wrote: > > Thanks for the review feedback, Sam, great catches so far! > > On 1/25/24 19:04, Sam Protsenko wrote: > > On Thu, Jan 25, 2024 at 8:50 AM Tudor Ambarus <tudor.ambarus@linaro.org> wrote: > >> > >> of_device_id::data is an opaque pointer. No explicit cast is needed. > >> Remove unneeded (void *) casts in of_match_table. While here align the > >> compatible and data members. > >> > >> Reviewed-by: Andi Shyti <andi.shyti@kernel.org> > >> Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org> > >> --- > >> drivers/spi/spi-s3c64xx.c | 45 +++++++++++++++++++++++---------------- > >> 1 file changed, 27 insertions(+), 18 deletions(-) > >> > >> diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c > >> index 230fda2b3417..137faf9f2697 100644 > >> --- a/drivers/spi/spi-s3c64xx.c > >> +++ b/drivers/spi/spi-s3c64xx.c > >> @@ -1511,32 +1511,41 @@ static const struct platform_device_id s3c64xx_spi_driver_ids[] = { > >> }; > >> > >> static const struct of_device_id s3c64xx_spi_dt_match[] = { > >> - { .compatible = "samsung,s3c2443-spi", > >> - .data = (void *)&s3c2443_spi_port_config, > > > > I support removing (void *) cast. But this new braces style: > > > > }, > > { > > this style was there before my patch. > > > > seems to bloat the code a bit. For my taste, having something like }, > > { on the same line would be more compact, and more canonical so to > > I don't lean towards neither of the styles, I'm ok with both > > > speak. Or even preserving the existing style would be ok too, for that > > matter. > > > > seeing .compatible and .data unaligned hurt my eyes and I think that > aligning them while dropping the cast is fine. I don't really want to do > the style change unless you, Andi or Mark insist. Would you please come > with a patch on top if you really want them changed? > But that would completely undermine the whole point of the review? I'd prefer this style: ... = { { .compatible = .data = }, { .compatible = .data = }, { /* sentinel */ }, }; That seems more canonical to me, and more compact too, with no contradictions to your preference about alignment too. But that's only my opinion, as a reviewer. > > Assuming the braces style is fixed, you can add: > > > > Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org> > > > >> + { > >> + .compatible = "samsung,s3c2443-spi", > >> + .data = &s3c2443_spi_port_config, > >> }, > >> - { .compatible = "samsung,s3c6410-spi", > >> - .data = (void *)&s3c6410_spi_port_config, > >> + { > >> + .compatible = "samsung,s3c6410-spi", > >> + .data = &s3c6410_spi_port_config, > >> }, > >> - { .compatible = "samsung,s5pv210-spi", > >> - .data = (void *)&s5pv210_spi_port_config, > >> + { > >> + .compatible = "samsung,s5pv210-spi", > >> + .data = &s5pv210_spi_port_config, > >> }, > >> - { .compatible = "samsung,exynos4210-spi", > >> - .data = (void *)&exynos4_spi_port_config, > >> + { > >> + .compatible = "samsung,exynos4210-spi", > >> + .data = &exynos4_spi_port_config, > >> }, > >> - { .compatible = "samsung,exynos7-spi", > >> - .data = (void *)&exynos7_spi_port_config, > >> + { > >> + .compatible = "samsung,exynos7-spi", > >> + .data = &exynos7_spi_port_config, > >> }, > >> - { .compatible = "samsung,exynos5433-spi", > >> - .data = (void *)&exynos5433_spi_port_config, > >> + { > >> + .compatible = "samsung,exynos5433-spi", > >> + .data = &exynos5433_spi_port_config, > >> }, > >> - { .compatible = "samsung,exynos850-spi", > >> - .data = (void *)&exynos850_spi_port_config, > >> + { > >> + .compatible = "samsung,exynos850-spi", > >> + .data = &exynos850_spi_port_config, > >> }, > >> - { .compatible = "samsung,exynosautov9-spi", > >> - .data = (void *)&exynosautov9_spi_port_config, > >> + { > >> + .compatible = "samsung,exynosautov9-spi", > >> + .data = &exynosautov9_spi_port_config, > >> }, > >> - { .compatible = "tesla,fsd-spi", > >> - .data = (void *)&fsd_spi_port_config, > >> + { > >> + .compatible = "tesla,fsd-spi", > >> + .data = &fsd_spi_port_config, > >> }, > >> { }, > >> }; > >> -- > >> 2.43.0.429.g432eaa2c6b-goog > >>
next prev parent reply other threads:[~2024-01-26 19:41 UTC|newest] Thread overview: 154+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-01-25 14:49 [PATCH v2 00/28] spi: s3c64xx: winter cleanup and gs101 support Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 14:49 ` [PATCH v2 01/28] spi: s3c64xx: explicitly include <linux/io.h> Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 18:58 ` Sam Protsenko 2024-01-25 18:58 ` Sam Protsenko 2024-01-26 14:40 ` Tudor Ambarus 2024-01-26 14:40 ` Tudor Ambarus 2024-01-25 14:49 ` [PATCH v2 02/28] spi: s3c64xx: explicitly include <linux/bits.h> Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 14:49 ` [PATCH v2 03/28] spi: s3c64xx: avoid possible negative array index Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 18:50 ` Sam Protsenko 2024-01-25 18:50 ` Sam Protsenko 2024-01-25 14:49 ` [PATCH v2 04/28] spi: dt-bindings: samsung: add google,gs101-spi compatible Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 14:49 ` [PATCH v2 05/28] spi: dt-bindings: samsung: add samsung,spi-fifosize property Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 16:16 ` Mark Brown 2024-01-25 16:16 ` Mark Brown 2024-01-25 16:38 ` Tudor Ambarus 2024-01-25 16:38 ` Tudor Ambarus 2024-01-25 17:26 ` Mark Brown 2024-01-25 17:26 ` Mark Brown 2024-01-25 17:30 ` Tudor Ambarus 2024-01-25 17:30 ` Tudor Ambarus 2024-01-25 17:45 ` Mark Brown 2024-01-25 17:45 ` Mark Brown 2024-01-25 19:01 ` Tudor Ambarus 2024-01-25 19:01 ` Tudor Ambarus 2024-01-30 22:25 ` Rob Herring 2024-01-30 22:25 ` Rob Herring 2024-02-05 9:42 ` Tudor Ambarus 2024-02-05 9:42 ` Tudor Ambarus 2024-01-25 14:49 ` [PATCH v2 06/28] spi: s3c64xx: sort headers alphabetically Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 14:49 ` [PATCH v2 07/28] spi: s3c64xx: remove unneeded (void *) casts in of_match_table Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 19:04 ` Sam Protsenko 2024-01-25 19:04 ` Sam Protsenko 2024-01-26 8:24 ` Tudor Ambarus 2024-01-26 8:24 ` Tudor Ambarus 2024-01-26 19:40 ` Sam Protsenko [this message] 2024-01-26 19:40 ` Sam Protsenko 2024-01-25 14:49 ` [PATCH v2 08/28] spi: s3c64xx: remove else after return Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 14:49 ` [PATCH v2 09/28] spi: s3c64xx: use bitfield access macros Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 19:50 ` Sam Protsenko 2024-01-25 19:50 ` Sam Protsenko 2024-01-26 8:49 ` Tudor Ambarus 2024-01-26 8:49 ` Tudor Ambarus 2024-01-26 19:55 ` Sam Protsenko 2024-01-26 19:55 ` Sam Protsenko 2024-01-26 16:01 ` Tudor Ambarus 2024-01-26 16:01 ` Tudor Ambarus 2024-01-25 14:49 ` [PATCH v2 10/28] spi: s3c64xx: use full mask for {RX, TX}_FIFO_LVL Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 20:03 ` Sam Protsenko 2024-01-25 20:03 ` Sam Protsenko 2024-01-25 21:48 ` Mark Brown 2024-01-25 21:48 ` Mark Brown 2024-01-26 8:51 ` Tudor Ambarus 2024-01-26 8:51 ` Tudor Ambarus 2024-01-26 8:12 ` Tudor Ambarus 2024-01-26 8:12 ` Tudor Ambarus 2024-01-25 14:49 ` [PATCH v2 11/28] spi: s3c64xx: move common code outside if else Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 20:09 ` Sam Protsenko 2024-01-25 20:09 ` Sam Protsenko 2024-01-25 14:49 ` [PATCH v2 12/28] spi: s3c64xx: check return code of dmaengine_slave_config() Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 20:19 ` Sam Protsenko 2024-01-25 20:19 ` Sam Protsenko 2024-01-25 14:49 ` [PATCH v2 13/28] spi: s3c64xx: propagate the dma_submit_error() error code Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 20:23 ` Sam Protsenko 2024-01-25 20:23 ` Sam Protsenko 2024-01-26 7:42 ` Tudor Ambarus 2024-01-26 7:42 ` Tudor Ambarus 2024-01-25 14:49 ` [PATCH v2 14/28] spi: s3c64xx: rename prepare_dma() to s3c64xx_prepare_dma() Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 20:24 ` Sam Protsenko 2024-01-25 20:24 ` Sam Protsenko 2024-01-25 14:49 ` [PATCH v2 15/28] spi: s3c64xx: return ETIMEDOUT for wait_for_completion_timeout() Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 20:30 ` Sam Protsenko 2024-01-25 20:30 ` Sam Protsenko 2024-01-25 14:49 ` [PATCH v2 16/28] spi: s3c64xx: simplify s3c64xx_wait_for_pio() Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 20:43 ` Sam Protsenko 2024-01-25 20:43 ` Sam Protsenko 2024-01-26 7:56 ` Tudor Ambarus 2024-01-26 7:56 ` Tudor Ambarus 2024-01-26 19:31 ` Sam Protsenko 2024-01-26 19:31 ` Sam Protsenko 2024-01-25 14:49 ` [PATCH v2 17/28] spi: s3c64xx: drop blank line between declarations Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 20:38 ` Sam Protsenko 2024-01-25 20:38 ` Sam Protsenko 2024-01-25 14:49 ` [PATCH v2 18/28] spi: s3c64xx: fix typo, s/configuartion/configuration Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 20:39 ` Sam Protsenko 2024-01-25 20:39 ` Sam Protsenko 2024-01-25 14:49 ` [PATCH v2 19/28] spi: s3c64xx: downgrade dev_warn to dev_dbg for optional dt props Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 20:40 ` Sam Protsenko 2024-01-25 20:40 ` Sam Protsenko 2024-01-25 14:49 ` [PATCH v2 20/28] spi: s3c64xx: add support for inferring fifosize from the compatible Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 14:49 ` [PATCH v2 21/28] spi: s3c64xx: infer " Tudor Ambarus 2024-01-25 14:49 ` Tudor Ambarus 2024-01-25 17:18 ` Mark Brown 2024-01-25 17:18 ` Mark Brown 2024-01-25 18:44 ` Tudor Ambarus 2024-01-25 18:44 ` Tudor Ambarus 2024-01-25 22:28 ` Sam Protsenko 2024-01-25 22:28 ` Sam Protsenko 2024-01-26 7:27 ` Tudor Ambarus 2024-01-26 7:27 ` Tudor Ambarus 2024-01-25 14:50 ` [PATCH v2 22/28] spi: s3c64xx: drop dependency on of_alias where possible Tudor Ambarus 2024-01-25 14:50 ` Tudor Ambarus 2024-01-25 14:50 ` [PATCH v2 23/28] spi: s3c64xx: retrieve the FIFO size from the device tree Tudor Ambarus 2024-01-25 14:50 ` Tudor Ambarus 2024-01-25 17:33 ` Mark Brown 2024-01-25 17:33 ` Mark Brown 2024-01-26 19:23 ` Sam Protsenko 2024-01-26 19:23 ` Sam Protsenko 2024-01-26 20:16 ` Arnd Bergmann 2024-01-26 20:16 ` Arnd Bergmann 2024-01-26 20:20 ` Sam Protsenko 2024-01-26 20:20 ` Sam Protsenko 2024-02-05 9:54 ` Tudor Ambarus 2024-02-05 9:54 ` Tudor Ambarus 2024-01-26 21:19 ` Mark Brown 2024-01-26 21:19 ` Mark Brown 2024-01-25 14:50 ` [PATCH v2 24/28] spi: s3c64xx: mark fifo_lvl_mask as deprecated Tudor Ambarus 2024-01-25 14:50 ` Tudor Ambarus 2024-01-25 14:50 ` [PATCH v2 25/28] asm-generic/io.h: add iowrite{8,16}_32 accessors Tudor Ambarus 2024-01-25 14:50 ` Tudor Ambarus 2024-01-25 17:41 ` Mark Brown 2024-01-25 17:41 ` Mark Brown 2024-01-25 21:23 ` Arnd Bergmann 2024-01-25 21:23 ` Arnd Bergmann 2024-01-26 7:21 ` Tudor Ambarus 2024-01-26 7:21 ` Tudor Ambarus 2024-01-25 14:50 ` [PATCH v2 26/28] spi: s3c64xx: add iowrite{8,16}_32_rep accessors Tudor Ambarus 2024-01-25 14:50 ` Tudor Ambarus 2024-01-25 14:50 ` [PATCH v2 27/28] spi: s3c64xx: add support for google,gs101-spi Tudor Ambarus 2024-01-25 14:50 ` Tudor Ambarus 2024-01-25 20:45 ` Sam Protsenko 2024-01-25 20:45 ` Sam Protsenko 2024-01-25 14:50 ` [PATCH v2 28/28] MAINTAINERS: add Tudor Ambarus as R for the samsung SPI driver Tudor Ambarus 2024-01-25 14:50 ` Tudor Ambarus
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='CAPLW+4mJ5BxwhKwi2Z2pMOu1D0N0KaaW7=C1sZ0PV51iOHSw8Q@mail.gmail.com' \ --to=semen.protsenko@linaro.org \ --cc=alim.akhtar@samsung.com \ --cc=andi.shyti@kernel.org \ --cc=andre.draszik@linaro.org \ --cc=arnd@arndb.de \ --cc=broonie@kernel.org \ --cc=conor+dt@kernel.org \ --cc=devicetree@vger.kernel.org \ --cc=kernel-team@android.com \ --cc=krzysztof.kozlowski+dt@linaro.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-samsung-soc@vger.kernel.org \ --cc=linux-spi@vger.kernel.org \ --cc=peter.griffin@linaro.org \ --cc=robh+dt@kernel.org \ --cc=tudor.ambarus@linaro.org \ --cc=willmcvicker@google.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.