Messages in this thread |  | | Date | Wed, 8 Jul 2026 13:09:14 +0200 | | Subject | Re: [PATCH v2 2/2] memory: ti-k3-fsas: Add TI FSS_FSAS driver | | From | Krzysztof Kozlowski <> |
| |
On 29/06/2026 09:20, Santhosh Kumar K wrote: > Add a platform driver for the TI Flash SubSystem Application Subsystem > (FSS_FSAS_GENREGS) in K3 SoCs. This driver takes care of disabling the > OSPI XIP prefetch which causes DMA transfer data corruption. > > Set SYSCONFIG.DISXIP to disable XIP read prefetch, preventing DMA data > corruption when the OSPI DMA source address is not 4K-aligned. > > Signed-off-by: Santhosh Kumar K <s-k6@ti.com> > --- > drivers/memory/Kconfig | 10 +++++ > drivers/memory/Makefile | 1 + > drivers/memory/ti-k3-fsas.c | 74 +++++++++++++++++++++++++++++++++++++ > 3 files changed, 85 insertions(+) > create mode 100644 drivers/memory/ti-k3-fsas.c > > diff --git a/drivers/memory/Kconfig b/drivers/memory/Kconfig > index e5527020ff33..954e47810e8d 100644 > --- a/drivers/memory/Kconfig > +++ b/drivers/memory/Kconfig > @@ -125,6 +125,16 @@ config TI_EMIF_SRAM > sequence so this driver provides several relocatable PM functions > for the SoC PM code to use. > > +config TI_K3_FSS_FSAS > + tristate "TI K3 Flash Subsystem Application Subsystem (FSAS) support" > + depends on ARCH_K3 || COMPILE_TEST > + help > + Driver for the TI K3 Flash Subsystem Application Subsystem > + (FSS_FSAS_GENREGS) wrapper found on K3 related SoCs. > + > + This driver takes care of disabling the OSPI XIP prefetch which > + causes DMA transfer data corruption. > + > config FPGA_DFL_EMIF > tristate "FPGA DFL EMIF Driver" > depends on FPGA_DFL && HAS_IOMEM > diff --git a/drivers/memory/Makefile b/drivers/memory/Makefile > index 3ee883c8759a..8dc4860f615d 100644 > --- a/drivers/memory/Makefile > +++ b/drivers/memory/Makefile > @@ -28,6 +28,7 @@ obj-$(CONFIG_STM32_OMM) += stm32_omm.o > obj-$(CONFIG_SAMSUNG_MC) += samsung/ > obj-$(CONFIG_TEGRA_MC) += tegra/ > obj-$(CONFIG_TI_EMIF_SRAM) += ti-emif-sram.o > +obj-$(CONFIG_TI_K3_FSS_FSAS) += ti-k3-fsas.o > obj-$(CONFIG_FPGA_DFL_EMIF) += dfl-emif.o > > ti-emif-sram-objs := ti-emif-pm.o ti-emif-sram-pm.o > diff --git a/drivers/memory/ti-k3-fsas.c b/drivers/memory/ti-k3-fsas.c > new file mode 100644 > index 000000000000..a5f42afc694c > --- /dev/null > +++ b/drivers/memory/ti-k3-fsas.c > @@ -0,0 +1,74 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * TI K3 Flash Subsystem Application Subsystem (FSS_FSAS) driver > + * > + * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com > + */ > + > +#include <linux/io.h> > +#include <linux/module.h> > +#include <linux/of.h> > +#include <linux/platform_device.h> > +#include <linux/pm.h> > + > +#define FSAS_GENREGS_SYSCONFIG 0x04 > +#define FSAS_SYSCONFIG_DISXIP BIT(7) > + > +struct k3_fsas { > + void __iomem *base; > +}; > + > +static void k3_fsas_disable_xip_prefetch(struct k3_fsas *fsas) > +{ > + u32 val; > + > + val = readl(fsas->base + FSAS_GENREGS_SYSCONFIG); > + val |= FSAS_SYSCONFIG_DISXIP; > + writel(val, fsas->base + FSAS_GENREGS_SYSCONFIG); > +} > + > +static int k3_fsas_probe(struct platform_device *pdev) > +{ > + struct k3_fsas *fsas; > + > + fsas = devm_kzalloc(&pdev->dev, sizeof(*fsas), GFP_KERNEL); > + if (!fsas) > + return -ENOMEM; > + > + fsas->base = devm_platform_ioremap_resource(pdev, 0); > + if (IS_ERR(fsas->base)) > + return PTR_ERR(fsas->base); > + > + platform_set_drvdata(pdev, fsas); > + > + k3_fsas_disable_xip_prefetch(fsas);
So a driver for FSAS device just writes to one register. That's why I claim binding is either incomplete or not really a separate device.
Plus how does this work when you probe QSPI before this FSAS?
Best regards, Krzysztof
|  |