X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fspi_flash.h;h=10d19fd4b1178d2a5c1f8e0b8deb73368125da5e;hb=HEAD;hp=55b4721813a7a8531f36b273fa89323b874afc94;hpb=abe66b1b5decf9cc2fb5daad42c9e870e5b99b67;p=platform%2Fkernel%2Fu-boot.git diff --git a/include/spi_flash.h b/include/spi_flash.h index 55b4721..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; @@ -52,7 +39,7 @@ struct dm_spi_flash_ops { /* 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 * @@ -60,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); @@ -71,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); @@ -84,7 +71,7 @@ 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); @@ -96,14 +83,25 @@ int spi_flash_erase_dm(struct udevice *dev, u32 offset, size_t len); * defined. * * @dev: SPI flash device - * @return 0 if no region is write-protected, 1 if a region is + * 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 + * determine its type. It can be used in chip-specific drivers which need to + * do this, typically with of-platdata + * + * @dev: SPI-flash device to probe + * 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 */ @@ -111,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) @@ -150,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); } @@ -159,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); } @@ -173,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;