| /* |
| * OpenBIOS - free your system! |
| * ( firmware/flash device driver for Linux ) |
| * |
| * flashchips.h - flash device structures. |
| * |
| * This program is part of a free implementation of the IEEE 1275-1994 |
| * Standard for Boot (Initialization Configuration) Firmware. |
| * |
| * Copyright (C) 1998-2004 Stefan Reinauer |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; version 2 of the License. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA |
| * |
| */ |
| |
| /* |
| * flags structure |
| * bit 0 = needs erase before write (f_needs_erase) |
| * bit 1-3 flash manu type |
| * bit 4-6 probably needed for more manu |
| * bit 7 = sector erase happens one sector at a time |
| * (f_slow_sector_erase) |
| */ |
| |
| #define f_needs_erase 0x01 |
| |
| /* 3 bit for flashtype */ |
| #define f_manuf_compl 0x0e /* Mask out bits 1-3 */ |
| #define f_intel_compl 0x02 /* 001 */ |
| #define f_atmel_compl 0x04 /* 010 */ |
| #define f_fwh_compl 0x08 /* 100 */ |
| |
| #define f_slow_sector_erase 0x80 |
| |
| #define FLASH_UNKNOWN 0 |
| #define FLASH_CFI 1 |
| #define FLASH_JEDEC 2 |
| |
| typedef struct flashdevice { |
| unsigned long mapped; |
| unsigned long physical; |
| unsigned long offset; |
| unsigned int flashnum, manufnum; |
| unsigned short id; |
| unsigned int size, sectors; |
| unsigned int idx; |
| void *data; |
| int open_mode, open_cnt; |
| } flashdevice_t; |
| |
| typedef struct flashchip { |
| char *name; |
| unsigned short id; |
| unsigned int voltage; |
| unsigned int size; /* KBytes */ |
| unsigned int supported; |
| unsigned int pagesize; /* Bytes */ |
| unsigned int flags; |
| unsigned int *sectors; /* Kbytes[] including end of last sector */ |
| } flashchip_t; |
| |
| typedef struct manufacturer { |
| char *name; |
| unsigned short id; |
| } manufacturer_t; |
| |
| extern unsigned int currflash; |
| extern flashdevice_t flashdevices[BIOS_MAXDEV]; |
| extern const flashchip_t flashchips[]; |
| extern const manufacturer_t manufacturers[]; |