X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fspi_flash.h;h=10d19fd4b1178d2a5c1f8e0b8deb73368125da5e;hb=6786ce1ce14feb4d02854a0c04bc0cce505be46e;hp=d9b2af856c08feb18adda8934452483800f83bb4;hpb=1b6ae82a5abb4cbedb0d6cb262526173f4efa486;p=platform%2Fkernel%2Fu-boot.git diff --git a/include/spi_flash.h b/include/spi_flash.h index d9b2af8..10d19fd 100644 --- a/include/spi_flash.h +++ b/include/spi_flash.h @@ -9,23 +9,10 @@ #ifndef _SPI_FLASH_H_ #define _SPI_FLASH_H_ -#include /* Because we dereference struct udevice here */ #include #include -/* by default ENV use the same parameters than SF command */ -#ifndef CONFIG_ENV_SPI_BUS -# define CONFIG_ENV_SPI_BUS CONFIG_SF_DEFAULT_BUS -#endif -#ifndef CONFIG_ENV_SPI_CS -# define CONFIG_ENV_SPI_CS CONFIG_SF_DEFAULT_CS -#endif -#ifndef CONFIG_ENV_SPI_MAX_HZ -# define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED -#endif -#ifndef CONFIG_ENV_SPI_MODE -# define CONFIG_ENV_SPI_MODE CONFIG_SF_DEFAULT_MODE -#endif +struct udevice; struct spi_slave; @@ -34,12 +21,25 @@ struct dm_spi_flash_ops { int (*write)(struct udevice *dev, u32 offset, size_t len, const void *buf); int (*erase)(struct udevice *dev, u32 offset, size_t len); + /** + * get_sw_write_prot() - Check state of software write-protect feature + * + * SPI flash chips can lock a region of the flash defined by a + * 'protected area'. This function checks if this protected area is + * defined. + * + * @dev: SPI flash device + * @return 0 if no region is write-protected, 1 if a region is + * write-protected, -ENOSYS if the driver does not implement this, + * other -ve value on error + */ + int (*get_sw_write_prot)(struct udevice *dev); }; /* Access the serial operations for a device */ #define sf_get_ops(dev) ((struct dm_spi_flash_ops *)(dev)->driver->ops) -#ifdef CONFIG_DM_SPI_FLASH +#if CONFIG_IS_ENABLED(DM_SPI_FLASH) /** * spi_flash_read_dm() - Read data from SPI flash * @@ -47,7 +47,7 @@ struct dm_spi_flash_ops { * @offset: Offset into device in bytes to read from * @len: Number of bytes to read * @buf: Buffer to put the data that is read - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int spi_flash_read_dm(struct udevice *dev, u32 offset, size_t len, void *buf); @@ -58,7 +58,7 @@ int spi_flash_read_dm(struct udevice *dev, u32 offset, size_t len, void *buf); * @offset: Offset into device in bytes to write to * @len: Number of bytes to write * @buf: Buffer containing bytes to write - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int spi_flash_write_dm(struct udevice *dev, u32 offset, size_t len, const void *buf); @@ -71,11 +71,25 @@ int spi_flash_write_dm(struct udevice *dev, u32 offset, size_t len, * @dev: SPI flash device * @offset: Offset into device in bytes to start erasing * @len: Number of bytes to erase - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int spi_flash_erase_dm(struct udevice *dev, u32 offset, size_t len); /** + * spl_flash_get_sw_write_prot() - Check state of software write-protect feature + * + * SPI flash chips can lock a region of the flash defined by a + * 'protected area'. This function checks if this protected area is + * defined. + * + * @dev: SPI flash device + * Return: 0 if no region is write-protected, 1 if a region is + * write-protected, -ENOSYS if the driver does not implement this, + * other -ve value on error + */ +int spl_flash_get_sw_write_prot(struct udevice *dev); + +/** * spi_flash_std_probe() - Probe a SPI flash device * * This is the standard internal method for probing a SPI flash device to @@ -83,12 +97,11 @@ int spi_flash_erase_dm(struct udevice *dev, u32 offset, size_t len); * do this, typically with of-platdata * * @dev: SPI-flash device to probe - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int spi_flash_std_probe(struct udevice *dev); int spi_flash_probe_bus_cs(unsigned int busnum, unsigned int cs, - unsigned int max_hz, unsigned int spi_mode, struct udevice **devp); /* Compatibility function - this is the old U-Boot API */ @@ -96,7 +109,9 @@ struct spi_flash *spi_flash_probe(unsigned int bus, unsigned int cs, unsigned int max_hz, unsigned int spi_mode); /* Compatibility function - this is the old U-Boot API */ -void spi_flash_free(struct spi_flash *flash); +static inline void spi_flash_free(struct spi_flash *flash) +{ +} static inline int spi_flash_read(struct spi_flash *flash, u32 offset, size_t len, void *buf) @@ -135,6 +150,9 @@ static inline int spi_flash_read(struct spi_flash *flash, u32 offset, struct mtd_info *mtd = &flash->mtd; size_t retlen; + if (!len) + return 0; + return mtd->_read(mtd, offset, len, &retlen, buf); } @@ -144,6 +162,9 @@ static inline int spi_flash_write(struct spi_flash *flash, u32 offset, struct mtd_info *mtd = &flash->mtd; size_t retlen; + if (!len) + return 0; + return mtd->_write(mtd, offset, len, &retlen, buf); } @@ -158,6 +179,9 @@ static inline int spi_flash_erase(struct spi_flash *flash, u32 offset, return -EINVAL; } + if (!len) + return 0; + memset(&instr, 0, sizeof(instr)); instr.addr = offset; instr.len = len;