tty: serial: samsung: Add gs101 compatible and common fifoszdt_serial_drv_data
authorPeter Griffin <peter.griffin@linaro.org>
Mon, 11 Dec 2023 16:23:28 +0000 (16:23 +0000)
committerKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Tue, 12 Dec 2023 19:36:06 +0000 (20:36 +0100)
Add serial driver data for Google Tensor gs101 SoC and a common
fifoszdt_serial_drv_data that can be used by platforms that specify the
samsung,uart-fifosize DT property.

A corresponding dt-bindings patch updates the yaml to ensure
samsung,uart-fifosize is a required property.

Tested-by: Will McVicker <willmcvicker@google.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Link: https://lore.kernel.org/r/20231211162331.435900-14-peter.griffin@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
drivers/tty/serial/samsung_tty.c

index 3bd552841cd28c6ebc328ac62d3f16c566f24a03..66bd6c090aceb7e194b5711f6784368337b4712c 100644 (file)
@@ -2492,14 +2492,25 @@ static const struct s3c24xx_serial_drv_data exynos850_serial_drv_data = {
        .fifosize = { 256, 64, 64, 64 },
 };
 
+/*
+ * Common drv_data struct for platforms that specify samsung,uart-fifosize in
+ * device tree.
+ */
+static const struct s3c24xx_serial_drv_data exynos_fifoszdt_serial_drv_data = {
+       EXYNOS_COMMON_SERIAL_DRV_DATA(),
+       .fifosize = { 0 },
+};
+
 #define EXYNOS4210_SERIAL_DRV_DATA (&exynos4210_serial_drv_data)
 #define EXYNOS5433_SERIAL_DRV_DATA (&exynos5433_serial_drv_data)
 #define EXYNOS850_SERIAL_DRV_DATA (&exynos850_serial_drv_data)
+#define EXYNOS_FIFOSZDT_DRV_DATA (&exynos_fifoszdt_serial_drv_data)
 
 #else
 #define EXYNOS4210_SERIAL_DRV_DATA NULL
 #define EXYNOS5433_SERIAL_DRV_DATA NULL
 #define EXYNOS850_SERIAL_DRV_DATA NULL
+#define EXYNOS_FIFOSZDT_DRV_DATA NULL
 #endif
 
 #ifdef CONFIG_ARCH_APPLE
@@ -2583,6 +2594,9 @@ static const struct platform_device_id s3c24xx_serial_driver_ids[] = {
        }, {
                .name           = "artpec8-uart",
                .driver_data    = (kernel_ulong_t)ARTPEC8_SERIAL_DRV_DATA,
+       }, {
+               .name           = "gs101-uart",
+               .driver_data    = (kernel_ulong_t)EXYNOS_FIFOSZDT_DRV_DATA,
        },
        { },
 };
@@ -2604,6 +2618,8 @@ static const struct of_device_id s3c24xx_uart_dt_match[] = {
                .data = EXYNOS850_SERIAL_DRV_DATA },
        { .compatible = "axis,artpec8-uart",
                .data = ARTPEC8_SERIAL_DRV_DATA },
+       { .compatible = "google,gs101-uart",
+               .data = EXYNOS_FIFOSZDT_DRV_DATA },
        {},
 };
 MODULE_DEVICE_TABLE(of, s3c24xx_uart_dt_match);