* [PATCH 1/5] spi: spi-s3c64xx: increase MAX_SPI_PORTS to 12
2022-06-27 6:47 ` [PATCH 0/5] spi support for Exynos Auto v9 SoC Chanho Park
@ 2022-06-27 6:47 ` Chanho Park
2022-06-27 9:37 ` Krzysztof Kozlowski
2022-06-27 6:47 ` [PATCH 2/5] spi: s3c64xx: support loopback mode Chanho Park
` (3 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Chanho Park @ 2022-06-27 6:47 UTC (permalink / raw)
To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring,
Krzysztof Kozlowski
Cc: Alim Akhtar, devicetree, linux-spi, linux-samsung-soc,
linux-arm-kernel, Chanho Park
For exynosautov9 SoC, the spi can be supported up to 12.
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
---
drivers/spi/spi-s3c64xx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index 7f0faf0d75d9..a62c7baadc8b 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -18,7 +18,7 @@
#include <linux/platform_data/spi-s3c64xx.h>
-#define MAX_SPI_PORTS 6
+#define MAX_SPI_PORTS 12
#define S3C64XX_SPI_QUIRK_POLL (1 << 0)
#define S3C64XX_SPI_QUIRK_CS_AUTO (1 << 1)
#define AUTOSUSPEND_TIMEOUT 2000
--
2.36.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 1/5] spi: spi-s3c64xx: increase MAX_SPI_PORTS to 12
2022-06-27 6:47 ` [PATCH 1/5] spi: spi-s3c64xx: increase MAX_SPI_PORTS to 12 Chanho Park
@ 2022-06-27 9:37 ` Krzysztof Kozlowski
0 siblings, 0 replies; 12+ messages in thread
From: Krzysztof Kozlowski @ 2022-06-27 9:37 UTC (permalink / raw)
To: Chanho Park, Andi Shyti, Mark Brown, Rob Herring,
Krzysztof Kozlowski
Cc: Alim Akhtar, devicetree, linux-spi, linux-samsung-soc,
linux-arm-kernel
On 27/06/2022 08:47, Chanho Park wrote:
> For exynosautov9 SoC, the spi can be supported up to 12.
>
> Signed-off-by: Chanho Park <chanho61.park@samsung.com>
> ---
> drivers/spi/spi-s3c64xx.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
This should be squashed with patch #5 which actually makes use of it.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 2/5] spi: s3c64xx: support loopback mode
2022-06-27 6:47 ` [PATCH 0/5] spi support for Exynos Auto v9 SoC Chanho Park
2022-06-27 6:47 ` [PATCH 1/5] spi: spi-s3c64xx: increase MAX_SPI_PORTS to 12 Chanho Park
@ 2022-06-27 6:47 ` Chanho Park
2022-06-27 9:38 ` Krzysztof Kozlowski
2022-06-27 6:47 ` [PATCH 3/5] spi: s3c64xx: support custom value of internal clock divider Chanho Park
` (2 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Chanho Park @ 2022-06-27 6:47 UTC (permalink / raw)
To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring,
Krzysztof Kozlowski
Cc: Alim Akhtar, devicetree, linux-spi, linux-samsung-soc,
linux-arm-kernel, Chanho Park
Modern exynos SoCs can support self loopback mode via setting BIT(3) of
MODE_CFG register. Previous SoCs don't have the bit so we need to add
has_loopback field in the s3c64xx_spi_port_config. Exynos Auto v9 SoC
has the bit and it will define the field to "true".
When it is set, SPI_LOOP mode will be marked.
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
---
drivers/spi/spi-s3c64xx.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index a62c7baadc8b..e17c74c0d7de 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -59,6 +59,7 @@
#define S3C64XX_SPI_MODE_BUS_TSZ_HALFWORD (1<<17)
#define S3C64XX_SPI_MODE_BUS_TSZ_WORD (2<<17)
#define S3C64XX_SPI_MODE_BUS_TSZ_MASK (3<<17)
+#define S3C64XX_SPI_MODE_SELF_LOOPBACK (1<<3)
#define S3C64XX_SPI_MODE_RXDMA_ON (1<<2)
#define S3C64XX_SPI_MODE_TXDMA_ON (1<<1)
#define S3C64XX_SPI_MODE_4BURST (1<<0)
@@ -135,6 +136,7 @@ struct s3c64xx_spi_dma_data {
* @clk_from_cmu: True, if the controller does not include a clock mux and
* prescaler unit.
* @clk_ioclk: True if clock is present on this device
+ * @has_loopback: True if loopback mode can be supported
*
* The Samsung s3c64xx SPI controller are used on various Samsung SoC's but
* differ in some aspects such as the size of the fifo and spi bus clock
@@ -149,6 +151,7 @@ struct s3c64xx_spi_port_config {
bool high_speed;
bool clk_from_cmu;
bool clk_ioclk;
+ bool has_loopback;
};
/**
@@ -659,6 +662,9 @@ static int s3c64xx_spi_config(struct s3c64xx_spi_driver_data *sdd)
break;
}
+ if ((sdd->cur_mode & SPI_LOOP) && sdd->port_conf->has_loopback)
+ val |= S3C64XX_SPI_MODE_SELF_LOOPBACK;
+
writel(val, regs + S3C64XX_SPI_MODE_CFG);
if (sdd->port_conf->clk_from_cmu) {
@@ -1148,6 +1154,8 @@ static int s3c64xx_spi_probe(struct platform_device *pdev)
SPI_BPW_MASK(8);
/* the spi->mode bits understood by this driver: */
master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH;
+ if (sdd->port_conf->has_loopback)
+ master->mode_bits |= SPI_LOOP;
master->auto_runtime_pm = true;
if (!is_polling(sdd))
master->can_dma = s3c64xx_spi_can_dma;
--
2.36.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 2/5] spi: s3c64xx: support loopback mode
2022-06-27 6:47 ` [PATCH 2/5] spi: s3c64xx: support loopback mode Chanho Park
@ 2022-06-27 9:38 ` Krzysztof Kozlowski
0 siblings, 0 replies; 12+ messages in thread
From: Krzysztof Kozlowski @ 2022-06-27 9:38 UTC (permalink / raw)
To: Chanho Park, Andi Shyti, Mark Brown, Rob Herring,
Krzysztof Kozlowski
Cc: Alim Akhtar, devicetree, linux-spi, linux-samsung-soc,
linux-arm-kernel
On 27/06/2022 08:47, Chanho Park wrote:
> Modern exynos SoCs can support self loopback mode via setting BIT(3) of
> MODE_CFG register. Previous SoCs don't have the bit so we need to add
> has_loopback field in the s3c64xx_spi_port_config. Exynos Auto v9 SoC
> has the bit and it will define the field to "true".
> When it is set, SPI_LOOP mode will be marked.
>
> Signed-off-by: Chanho Park <chanho61.park@samsung.com>
> ---
> drivers/spi/spi-s3c64xx.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 3/5] spi: s3c64xx: support custom value of internal clock divider
2022-06-27 6:47 ` [PATCH 0/5] spi support for Exynos Auto v9 SoC Chanho Park
2022-06-27 6:47 ` [PATCH 1/5] spi: spi-s3c64xx: increase MAX_SPI_PORTS to 12 Chanho Park
2022-06-27 6:47 ` [PATCH 2/5] spi: s3c64xx: support loopback mode Chanho Park
@ 2022-06-27 6:47 ` Chanho Park
2022-06-27 9:40 ` Krzysztof Kozlowski
2022-06-27 6:47 ` [PATCH 4/5] dt-bindings: samsung,spi: define exynosautov9 compatible Chanho Park
2022-06-27 6:47 ` [PATCH 5/5] spi: s3c64xx: add spi port configuration for Exynos Auto v9 SoC Chanho Park
4 siblings, 1 reply; 12+ messages in thread
From: Chanho Park @ 2022-06-27 6:47 UTC (permalink / raw)
To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring,
Krzysztof Kozlowski
Cc: Alim Akhtar, devicetree, linux-spi, linux-samsung-soc,
linux-arm-kernel, Chanho Park
Modern exynos SoCs such as Exynos Auto v9 has different internal clock
divider, for example "4". To support this internal value, this adds
clk_div of the s3c64xx_spi_port_config and use it if it is specified.
Otherwise, use "2" which is the previous default value.
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
---
drivers/spi/spi-s3c64xx.c | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index e17c74c0d7de..dd5fc8570bce 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -131,6 +131,7 @@ struct s3c64xx_spi_dma_data {
* @fifo_lvl_mask: Bit-mask for {TX|RX}_FIFO_LVL bits in SPI_STATUS register.
* @rx_lvl_offset: Bit offset of RX_FIFO_LVL bits in SPI_STATUS regiter.
* @tx_st_done: Bit offset of TX_DONE bit in SPI_STATUS regiter.
+ * @clk_div: Internal clock divider, if not specified, use 2 as the default.
* @quirks: Bitmask of known quirks
* @high_speed: True, if the controller supports HIGH_SPEED_EN bit.
* @clk_from_cmu: True, if the controller does not include a clock mux and
@@ -148,6 +149,7 @@ struct s3c64xx_spi_port_config {
int rx_lvl_offset;
int tx_st_done;
int quirks;
+ int clk_div;
bool high_speed;
bool clk_from_cmu;
bool clk_ioclk;
@@ -620,6 +622,7 @@ static int s3c64xx_spi_config(struct s3c64xx_spi_driver_data *sdd)
void __iomem *regs = sdd->regs;
int ret;
u32 val;
+ u32 div = sdd->port_conf->clk_div ? sdd->port_conf->clk_div : 2;
/* Disable Clock */
if (!sdd->port_conf->clk_from_cmu) {
@@ -668,16 +671,15 @@ static int s3c64xx_spi_config(struct s3c64xx_spi_driver_data *sdd)
writel(val, regs + S3C64XX_SPI_MODE_CFG);
if (sdd->port_conf->clk_from_cmu) {
- /* The src_clk clock is divided internally by 2 */
- ret = clk_set_rate(sdd->src_clk, sdd->cur_speed * 2);
+ ret = clk_set_rate(sdd->src_clk, sdd->cur_speed * div);
if (ret)
return ret;
- sdd->cur_speed = clk_get_rate(sdd->src_clk) / 2;
+ sdd->cur_speed = clk_get_rate(sdd->src_clk) / div;
} else {
/* Configure Clock */
val = readl(regs + S3C64XX_SPI_CLK_CFG);
val &= ~S3C64XX_SPI_PSR_MASK;
- val |= ((clk_get_rate(sdd->src_clk) / sdd->cur_speed / 2 - 1)
+ val |= ((clk_get_rate(sdd->src_clk) / sdd->cur_speed / div - 1)
& S3C64XX_SPI_PSR_MASK);
writel(val, regs + S3C64XX_SPI_CLK_CFG);
@@ -871,6 +873,7 @@ static int s3c64xx_spi_setup(struct spi_device *spi)
struct s3c64xx_spi_csinfo *cs = spi->controller_data;
struct s3c64xx_spi_driver_data *sdd;
int err;
+ u32 div = 2;
sdd = spi_master_get_devdata(spi->master);
if (spi->dev.of_node) {
@@ -889,22 +892,26 @@ static int s3c64xx_spi_setup(struct spi_device *spi)
pm_runtime_get_sync(&sdd->pdev->dev);
+ /* Use clk_div value if it is specified, otherwise use 2 as default */
+ if (sdd->port_conf->clk_div)
+ div = sdd->port_conf->clk_div;
+
/* Check if we can provide the requested rate */
if (!sdd->port_conf->clk_from_cmu) {
u32 psr, speed;
/* Max possible */
- speed = clk_get_rate(sdd->src_clk) / 2 / (0 + 1);
+ speed = clk_get_rate(sdd->src_clk) / div / (0 + 1);
if (spi->max_speed_hz > speed)
spi->max_speed_hz = speed;
- psr = clk_get_rate(sdd->src_clk) / 2 / spi->max_speed_hz - 1;
+ psr = clk_get_rate(sdd->src_clk) / div / spi->max_speed_hz - 1;
psr &= S3C64XX_SPI_PSR_MASK;
if (psr == S3C64XX_SPI_PSR_MASK)
psr--;
- speed = clk_get_rate(sdd->src_clk) / 2 / (psr + 1);
+ speed = clk_get_rate(sdd->src_clk) / div / (psr + 1);
if (spi->max_speed_hz < speed) {
if (psr+1 < S3C64XX_SPI_PSR_MASK) {
psr++;
@@ -914,7 +921,7 @@ static int s3c64xx_spi_setup(struct spi_device *spi)
}
}
- speed = clk_get_rate(sdd->src_clk) / 2 / (psr + 1);
+ speed = clk_get_rate(sdd->src_clk) / div / (psr + 1);
if (spi->max_speed_hz >= speed) {
spi->max_speed_hz = speed;
} else {
--
2.36.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 3/5] spi: s3c64xx: support custom value of internal clock divider
2022-06-27 6:47 ` [PATCH 3/5] spi: s3c64xx: support custom value of internal clock divider Chanho Park
@ 2022-06-27 9:40 ` Krzysztof Kozlowski
2022-06-28 1:51 ` Chanho Park
0 siblings, 1 reply; 12+ messages in thread
From: Krzysztof Kozlowski @ 2022-06-27 9:40 UTC (permalink / raw)
To: Chanho Park, Andi Shyti, Mark Brown, Rob Herring,
Krzysztof Kozlowski
Cc: Alim Akhtar, devicetree, linux-spi, linux-samsung-soc,
linux-arm-kernel
On 27/06/2022 08:47, Chanho Park wrote:
> Modern exynos SoCs such as Exynos Auto v9 has different internal clock
> divider, for example "4". To support this internal value, this adds
> clk_div of the s3c64xx_spi_port_config and use it if it is specified.
> Otherwise, use "2" which is the previous default value.
>
> Signed-off-by: Chanho Park <chanho61.park@samsung.com>
> ---
> drivers/spi/spi-s3c64xx.c | 23 +++++++++++++++--------
> 1 file changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
> index e17c74c0d7de..dd5fc8570bce 100644
> --- a/drivers/spi/spi-s3c64xx.c
> +++ b/drivers/spi/spi-s3c64xx.c
> @@ -131,6 +131,7 @@ struct s3c64xx_spi_dma_data {
> * @fifo_lvl_mask: Bit-mask for {TX|RX}_FIFO_LVL bits in SPI_STATUS register.
> * @rx_lvl_offset: Bit offset of RX_FIFO_LVL bits in SPI_STATUS regiter.
> * @tx_st_done: Bit offset of TX_DONE bit in SPI_STATUS regiter.
> + * @clk_div: Internal clock divider, if not specified, use 2 as the default.
> * @quirks: Bitmask of known quirks
> * @high_speed: True, if the controller supports HIGH_SPEED_EN bit.
> * @clk_from_cmu: True, if the controller does not include a clock mux and
> @@ -148,6 +149,7 @@ struct s3c64xx_spi_port_config {
> int rx_lvl_offset;
> int tx_st_done;
> int quirks;
> + int clk_div;
> bool high_speed;
> bool clk_from_cmu;
> bool clk_ioclk;
> @@ -620,6 +622,7 @@ static int s3c64xx_spi_config(struct s3c64xx_spi_driver_data *sdd)
> void __iomem *regs = sdd->regs;
> int ret;
> u32 val;
> + u32 div = sdd->port_conf->clk_div ? sdd->port_conf->clk_div : 2;
I would prefer to explicitly set '2' as clk_div for existing variants.
Such assignments in the code are usually trickier to find/read.
>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 12+ messages in thread* RE: [PATCH 3/5] spi: s3c64xx: support custom value of internal clock divider
2022-06-27 9:40 ` Krzysztof Kozlowski
@ 2022-06-28 1:51 ` Chanho Park
0 siblings, 0 replies; 12+ messages in thread
From: Chanho Park @ 2022-06-28 1:51 UTC (permalink / raw)
To: 'Krzysztof Kozlowski', 'Andi Shyti',
'Mark Brown', 'Rob Herring',
'Krzysztof Kozlowski'
Cc: 'Alim Akhtar', devicetree, linux-spi, linux-samsung-soc,
linux-arm-kernel
> Subject: Re: [PATCH 3/5] spi: s3c64xx: support custom value of internal
> clock divider
>
> On 27/06/2022 08:47, Chanho Park wrote:
> > Modern exynos SoCs such as Exynos Auto v9 has different internal clock
> > divider, for example "4". To support this internal value, this adds
> > clk_div of the s3c64xx_spi_port_config and use it if it is specified.
> > Otherwise, use "2" which is the previous default value.
> >
> > Signed-off-by: Chanho Park <chanho61.park@samsung.com>
> > ---
> > drivers/spi/spi-s3c64xx.c | 23 +++++++++++++++--------
> > 1 file changed, 15 insertions(+), 8 deletions(-)
> >
> > diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
> > index e17c74c0d7de..dd5fc8570bce 100644
> > --- a/drivers/spi/spi-s3c64xx.c
> > +++ b/drivers/spi/spi-s3c64xx.c
> > @@ -131,6 +131,7 @@ struct s3c64xx_spi_dma_data {
> > * @fifo_lvl_mask: Bit-mask for {TX|RX}_FIFO_LVL bits in SPI_STATUS
> register.
> > * @rx_lvl_offset: Bit offset of RX_FIFO_LVL bits in SPI_STATUS regiter.
> > * @tx_st_done: Bit offset of TX_DONE bit in SPI_STATUS regiter.
> > + * @clk_div: Internal clock divider, if not specified, use 2 as the
> default.
> > * @quirks: Bitmask of known quirks
> > * @high_speed: True, if the controller supports HIGH_SPEED_EN bit.
> > * @clk_from_cmu: True, if the controller does not include a clock
> > mux and @@ -148,6 +149,7 @@ struct s3c64xx_spi_port_config {
> > int rx_lvl_offset;
> > int tx_st_done;
> > int quirks;
> > + int clk_div;
> > bool high_speed;
> > bool clk_from_cmu;
> > bool clk_ioclk;
> > @@ -620,6 +622,7 @@ static int s3c64xx_spi_config(struct
> s3c64xx_spi_driver_data *sdd)
> > void __iomem *regs = sdd->regs;
> > int ret;
> > u32 val;
> > + u32 div = sdd->port_conf->clk_div ? sdd->port_conf->clk_div : 2;
>
> I would prefer to explicitly set '2' as clk_div for existing variants.
> Such assignments in the code are usually trickier to find/read.
Make sense. It can be more clear what value is using.
I'll apply it next patchset.
Best Regards,
Chanho Park
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 4/5] dt-bindings: samsung,spi: define exynosautov9 compatible
2022-06-27 6:47 ` [PATCH 0/5] spi support for Exynos Auto v9 SoC Chanho Park
` (2 preceding siblings ...)
2022-06-27 6:47 ` [PATCH 3/5] spi: s3c64xx: support custom value of internal clock divider Chanho Park
@ 2022-06-27 6:47 ` Chanho Park
2022-06-27 9:41 ` Krzysztof Kozlowski
2022-06-27 6:47 ` [PATCH 5/5] spi: s3c64xx: add spi port configuration for Exynos Auto v9 SoC Chanho Park
4 siblings, 1 reply; 12+ messages in thread
From: Chanho Park @ 2022-06-27 6:47 UTC (permalink / raw)
To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring,
Krzysztof Kozlowski
Cc: Alim Akhtar, devicetree, linux-spi, linux-samsung-soc,
linux-arm-kernel, Chanho Park
Define "samsung,exynosautov9-spi" for Exynos Auto v9's spi.
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
---
Documentation/devicetree/bindings/spi/samsung,spi.yaml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/spi/samsung,spi.yaml b/Documentation/devicetree/bindings/spi/samsung,spi.yaml
index a50f24f9359d..d51ee3e6d604 100644
--- a/Documentation/devicetree/bindings/spi/samsung,spi.yaml
+++ b/Documentation/devicetree/bindings/spi/samsung,spi.yaml
@@ -21,6 +21,7 @@ properties:
- samsung,s3c6410-spi
- samsung,s5pv210-spi # for S5PV210 and S5PC110
- samsung,exynos5433-spi
+ - samsung,exynosautov9-spi
- tesla,fsd-spi
- const: samsung,exynos7-spi
deprecated: true
@@ -85,7 +86,9 @@ allOf:
properties:
compatible:
contains:
- const: samsung,exynos5433-spi
+ enum:
+ - samsung,exynos5433-spi
+ - samsung,exynosautov9-spi
then:
properties:
clocks:
--
2.36.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 4/5] dt-bindings: samsung,spi: define exynosautov9 compatible
2022-06-27 6:47 ` [PATCH 4/5] dt-bindings: samsung,spi: define exynosautov9 compatible Chanho Park
@ 2022-06-27 9:41 ` Krzysztof Kozlowski
0 siblings, 0 replies; 12+ messages in thread
From: Krzysztof Kozlowski @ 2022-06-27 9:41 UTC (permalink / raw)
To: Chanho Park, Andi Shyti, Mark Brown, Rob Herring,
Krzysztof Kozlowski
Cc: Alim Akhtar, devicetree, linux-spi, linux-samsung-soc,
linux-arm-kernel
On 27/06/2022 08:47, Chanho Park wrote:
> Define "samsung,exynosautov9-spi" for Exynos Auto v9's spi.
>
> Signed-off-by: Chanho Park <chanho61.park@samsung.com>
> ---
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH 5/5] spi: s3c64xx: add spi port configuration for Exynos Auto v9 SoC
2022-06-27 6:47 ` [PATCH 0/5] spi support for Exynos Auto v9 SoC Chanho Park
` (3 preceding siblings ...)
2022-06-27 6:47 ` [PATCH 4/5] dt-bindings: samsung,spi: define exynosautov9 compatible Chanho Park
@ 2022-06-27 6:47 ` Chanho Park
2022-06-27 9:46 ` Krzysztof Kozlowski
4 siblings, 1 reply; 12+ messages in thread
From: Chanho Park @ 2022-06-27 6:47 UTC (permalink / raw)
To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring,
Krzysztof Kozlowski
Cc: Alim Akhtar, devicetree, linux-spi, linux-samsung-soc,
linux-arm-kernel, Chanho Park
Add exynosautov9 spi port configuration. It supports up to 12 spis and
has DIV_4 as the default internal clock divider. The spi also has
an internal loopback mode to run a loopback test.
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
---
drivers/spi/spi-s3c64xx.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index dd5fc8570bce..67b1fecf6fc6 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -1447,6 +1447,19 @@ static const struct s3c64xx_spi_port_config exynos5433_spi_port_config = {
.quirks = S3C64XX_SPI_QUIRK_CS_AUTO,
};
+static struct s3c64xx_spi_port_config exynosautov9_spi_port_config = {
+ .fifo_lvl_mask = { 0x1ff, 0x1ff, 0x7f, 0x7f, 0x7f, 0x7f, 0x1ff, 0x7f,
+ 0x7f, 0x7f, 0x7f, 0x7f},
+ .rx_lvl_offset = 15,
+ .tx_st_done = 25,
+ .high_speed = true,
+ .clk_from_cmu = true,
+ .clk_ioclk = true,
+ .clk_div = 4,
+ .has_loopback = true,
+ .quirks = S3C64XX_SPI_QUIRK_CS_AUTO,
+};
+
static struct s3c64xx_spi_port_config fsd_spi_port_config = {
.fifo_lvl_mask = { 0x7f, 0x7f, 0x7f, 0x7f, 0x7f},
.rx_lvl_offset = 15,
@@ -1487,6 +1500,9 @@ static const struct of_device_id s3c64xx_spi_dt_match[] = {
{ .compatible = "samsung,exynos5433-spi",
.data = (void *)&exynos5433_spi_port_config,
},
+ { .compatible = "samsung,exynosautov9-spi",
+ .data = (void *)&exynosautov9_spi_port_config,
+ },
{ .compatible = "tesla,fsd-spi",
.data = (void *)&fsd_spi_port_config,
},
--
2.36.1
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH 5/5] spi: s3c64xx: add spi port configuration for Exynos Auto v9 SoC
2022-06-27 6:47 ` [PATCH 5/5] spi: s3c64xx: add spi port configuration for Exynos Auto v9 SoC Chanho Park
@ 2022-06-27 9:46 ` Krzysztof Kozlowski
0 siblings, 0 replies; 12+ messages in thread
From: Krzysztof Kozlowski @ 2022-06-27 9:46 UTC (permalink / raw)
To: Chanho Park, Andi Shyti, Mark Brown, Rob Herring,
Krzysztof Kozlowski
Cc: Alim Akhtar, devicetree, linux-spi, linux-samsung-soc,
linux-arm-kernel
On 27/06/2022 08:47, Chanho Park wrote:
> Add exynosautov9 spi port configuration. It supports up to 12 spis and
> has DIV_4 as the default internal clock divider. The spi also has
> an internal loopback mode to run a loopback test.
>
> Signed-off-by: Chanho Park <chanho61.park@samsung.com>
> ---
> drivers/spi/spi-s3c64xx.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
> index dd5fc8570bce..67b1fecf6fc6 100644
> --- a/drivers/spi/spi-s3c64xx.c
> +++ b/drivers/spi/spi-s3c64xx.c
> @@ -1447,6 +1447,19 @@ static const struct s3c64xx_spi_port_config exynos5433_spi_port_config = {
> .quirks = S3C64XX_SPI_QUIRK_CS_AUTO,
> };
>
> +static struct s3c64xx_spi_port_config exynosautov9_spi_port_config = {
This should be const.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 12+ messages in thread