root/drivers/mtd/devices/bcm47xxsflash.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef __BCM47XXSFLASH_H
   3 #define __BCM47XXSFLASH_H
   4 
   5 #include <linux/mtd/mtd.h>
   6 
   7 #define BCM47XXSFLASH_WINDOW_SZ                 SZ_16M
   8 
   9 /* Used for ST flashes only. */
  10 #define OPCODE_ST_WREN          0x0006          /* Write Enable */
  11 #define OPCODE_ST_WRDIS         0x0004          /* Write Disable */
  12 #define OPCODE_ST_RDSR          0x0105          /* Read Status Register */
  13 #define OPCODE_ST_WRSR          0x0101          /* Write Status Register */
  14 #define OPCODE_ST_READ          0x0303          /* Read Data Bytes */
  15 #define OPCODE_ST_PP            0x0302          /* Page Program */
  16 #define OPCODE_ST_SE            0x02d8          /* Sector Erase */
  17 #define OPCODE_ST_BE            0x00c7          /* Bulk Erase */
  18 #define OPCODE_ST_DP            0x00b9          /* Deep Power-down */
  19 #define OPCODE_ST_RES           0x03ab          /* Read Electronic Signature */
  20 #define OPCODE_ST_CSA           0x1000          /* Keep chip select asserted */
  21 #define OPCODE_ST_SSE           0x0220          /* Sub-sector Erase */
  22 #define OPCODE_ST_READ4B        0x6313          /* Read Data Bytes in 4Byte addressing mode */
  23 
  24 /* Used for Atmel flashes only. */
  25 #define OPCODE_AT_READ                          0x07e8
  26 #define OPCODE_AT_PAGE_READ                     0x07d2
  27 #define OPCODE_AT_STATUS                        0x01d7
  28 #define OPCODE_AT_BUF1_WRITE                    0x0384
  29 #define OPCODE_AT_BUF2_WRITE                    0x0387
  30 #define OPCODE_AT_BUF1_ERASE_PROGRAM            0x0283
  31 #define OPCODE_AT_BUF2_ERASE_PROGRAM            0x0286
  32 #define OPCODE_AT_BUF1_PROGRAM                  0x0288
  33 #define OPCODE_AT_BUF2_PROGRAM                  0x0289
  34 #define OPCODE_AT_PAGE_ERASE                    0x0281
  35 #define OPCODE_AT_BLOCK_ERASE                   0x0250
  36 #define OPCODE_AT_BUF1_WRITE_ERASE_PROGRAM      0x0382
  37 #define OPCODE_AT_BUF2_WRITE_ERASE_PROGRAM      0x0385
  38 #define OPCODE_AT_BUF1_LOAD                     0x0253
  39 #define OPCODE_AT_BUF2_LOAD                     0x0255
  40 #define OPCODE_AT_BUF1_COMPARE                  0x0260
  41 #define OPCODE_AT_BUF2_COMPARE                  0x0261
  42 #define OPCODE_AT_BUF1_REPROGRAM                0x0258
  43 #define OPCODE_AT_BUF2_REPROGRAM                0x0259
  44 
  45 /* Status register bits for ST flashes */
  46 #define SR_ST_WIP               0x01            /* Write In Progress */
  47 #define SR_ST_WEL               0x02            /* Write Enable Latch */
  48 #define SR_ST_BP_MASK           0x1c            /* Block Protect */
  49 #define SR_ST_BP_SHIFT          2
  50 #define SR_ST_SRWD              0x80            /* Status Register Write Disable */
  51 
  52 /* Status register bits for Atmel flashes */
  53 #define SR_AT_READY             0x80
  54 #define SR_AT_MISMATCH          0x40
  55 #define SR_AT_ID_MASK           0x38
  56 #define SR_AT_ID_SHIFT          3
  57 
  58 struct bcma_drv_cc;
  59 
  60 enum bcm47xxsflash_type {
  61         BCM47XXSFLASH_TYPE_ATMEL,
  62         BCM47XXSFLASH_TYPE_ST,
  63 };
  64 
  65 struct bcm47xxsflash {
  66         struct bcma_drv_cc *bcma_cc;
  67         int (*cc_read)(struct bcm47xxsflash *b47s, u16 offset);
  68         void (*cc_write)(struct bcm47xxsflash *b47s, u16 offset, u32 value);
  69 
  70         enum bcm47xxsflash_type type;
  71 
  72         void __iomem *window;
  73 
  74         u32 blocksize;
  75         u16 numblocks;
  76         u32 size;
  77 
  78         struct mtd_info mtd;
  79 };
  80 
  81 #endif /* BCM47XXSFLASH */

/* [<][>][^][v][top][bottom][index][help] */