Message ID | 20220101074250.14443-10-a-nandan@ti.com |
---|---|
State | New |
Headers | show |
Series | mtd: spinand: Add Octal DTR SPI (8D-8D-8D) mode support | expand |
On Sat, 1 Jan 2022 13:12:42 +0530 Apurva Nandan <a-nandan@ti.com> wrote: > Introduce change_mode() manufacturer_op to let the vendor provide the > implementation of switching of SPI IO modes. > > The method to switch to different SPI IO mode may vary across > manufacturers. For example, for Winbond, Octal DTR is enabled by > writing values to the volatile configuration register. So, let the > manufacturer's code have their own implementation for switching to > any given SPI IO mode. Manufacturer's code need to take care, if > the requested protocol change is allowed/needed and how to apply > it. > > Signed-off-by: Apurva Nandan <a-nandan@ti.com> > --- > include/linux/mtd/spinand.h | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/include/linux/mtd/spinand.h b/include/linux/mtd/spinand.h > index 5dae0649f2fb..ad924271a248 100644 > --- a/include/linux/mtd/spinand.h > +++ b/include/linux/mtd/spinand.h > @@ -298,6 +298,7 @@ struct spinand_devid { > /** > * struct manufacurer_ops - SPI NAND manufacturer specific operations > * @init: initialize a SPI NAND device > + * @change_mode: switch the SPI NAND flash to a specific SPI protocol > * @cleanup: cleanup a SPI NAND device > * > * Each SPI NAND manufacturer driver should implement this interface so that > @@ -305,6 +306,8 @@ struct spinand_devid { > */ > struct spinand_manufacturer_ops { > int (*init)(struct spinand_device *spinand); > + int (*change_mode)(struct spinand_device *spinand, > + const enum spinand_protocol protocol); Protocol or mode? Pick one and stick to it. Given you already use protocol elsewhere, maybe s/select_mode/select_protocol/. > void (*cleanup)(struct spinand_device *spinand); > }; >
diff --git a/include/linux/mtd/spinand.h b/include/linux/mtd/spinand.h index 5dae0649f2fb..ad924271a248 100644 --- a/include/linux/mtd/spinand.h +++ b/include/linux/mtd/spinand.h @@ -298,6 +298,7 @@ struct spinand_devid { /** * struct manufacurer_ops - SPI NAND manufacturer specific operations * @init: initialize a SPI NAND device + * @change_mode: switch the SPI NAND flash to a specific SPI protocol * @cleanup: cleanup a SPI NAND device * * Each SPI NAND manufacturer driver should implement this interface so that @@ -305,6 +306,8 @@ struct spinand_devid { */ struct spinand_manufacturer_ops { int (*init)(struct spinand_device *spinand); + int (*change_mode)(struct spinand_device *spinand, + const enum spinand_protocol protocol); void (*cleanup)(struct spinand_device *spinand); };
Introduce change_mode() manufacturer_op to let the vendor provide the implementation of switching of SPI IO modes. The method to switch to different SPI IO mode may vary across manufacturers. For example, for Winbond, Octal DTR is enabled by writing values to the volatile configuration register. So, let the manufacturer's code have their own implementation for switching to any given SPI IO mode. Manufacturer's code need to take care, if the requested protocol change is allowed/needed and how to apply it. Signed-off-by: Apurva Nandan <a-nandan@ti.com> --- include/linux/mtd/spinand.h | 3 +++ 1 file changed, 3 insertions(+)