coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
w25q64.c
Go to the documentation of this file.
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
3
#include <
string.h
>
4
#include <soc/spi.h>
5
6
/*
7
* SPI lockdown configuration W25Q64FW.
8
*/
9
#define SPI_OPMENU_0 0x01
/* WRSR: Write Status Register */
10
#define SPI_OPTYPE_0 0x01
/* Write, no address */
11
12
#define SPI_OPMENU_1 0x02
/* BYPR: Byte Program */
13
#define SPI_OPTYPE_1 0x03
/* Write, address required */
14
15
#define SPI_OPMENU_2 0x03
/* READ: Read Data */
16
#define SPI_OPTYPE_2 0x02
/* Read, address required */
17
18
#define SPI_OPMENU_3 0x05
/* RDSR: Read Status Register */
19
#define SPI_OPTYPE_3 0x00
/* Read, no address */
20
21
#define SPI_OPMENU_4 0x20
/* SE20: Sector Erase 0x20 */
22
#define SPI_OPTYPE_4 0x03
/* Write, address required */
23
24
#define SPI_OPMENU_5 0x9f
/* RDID: Read ID */
25
#define SPI_OPTYPE_5 0x00
/* Read, no address */
26
27
#define SPI_OPMENU_6 0xd8
/* BED8: Block Erase 0xd8 */
28
#define SPI_OPTYPE_6 0x03
/* Write, address required */
29
30
#define SPI_OPMENU_7 0x0b
/* FAST: Fast Read */
31
#define SPI_OPTYPE_7 0x02
/* Read, address required */
32
33
#define SPI_OPPREFIX ((0x50 << 8) | 0x06)
/* EWSR and WREN */
34
#define SPI_OPTYPE ((SPI_OPTYPE_7 << 14) | (SPI_OPTYPE_6 << 12) | \
35
(SPI_OPTYPE_5 << 10) | (SPI_OPTYPE_4 << 8) | \
36
(SPI_OPTYPE_3 << 6) | (SPI_OPTYPE_2 << 4) | \
37
(SPI_OPTYPE_1 << 2) | (SPI_OPTYPE_0 << 0))
38
#define SPI_OPMENU_UPPER ((SPI_OPMENU_7 << 24) | (SPI_OPMENU_6 << 16) | \
39
(SPI_OPMENU_5 << 8) | (SPI_OPMENU_4 << 0))
40
#define SPI_OPMENU_LOWER ((SPI_OPMENU_3 << 24) | (SPI_OPMENU_2 << 16) | \
41
(SPI_OPMENU_1 << 8) | (SPI_OPMENU_0 << 0))
42
#define SPI_VSCC (WG_64_BYTE | EO(0x20) | BES_4_KB)
43
44
static
const
struct
spi_config
spi_config
= {
45
.
preop
=
SPI_OPPREFIX
,
46
.optype =
SPI_OPTYPE
,
47
.opmenu = {
SPI_OPMENU_LOWER
,
SPI_OPMENU_UPPER
},
48
.lvscc =
SPI_VSCC
,
49
.uvscc =
SPI_VSCC
,
50
};
51
52
int
mainboard_get_spi_config
(
struct
spi_config
*cfg)
53
{
54
memcpy
(cfg, &
spi_config
,
sizeof
(*cfg));
55
56
return
0;
57
}
memcpy
void * memcpy(void *dest, const void *src, size_t n)
Definition:
memcpy.c:7
SPI_OPMENU_LOWER
#define SPI_OPMENU_LOWER
Definition:
w25q64.c:40
mainboard_get_spi_config
int mainboard_get_spi_config(struct spi_config *cfg)
Definition:
w25q64.c:52
SPI_OPTYPE
#define SPI_OPTYPE
Definition:
w25q64.c:34
SPI_OPPREFIX
#define SPI_OPPREFIX
Definition:
w25q64.c:33
SPI_VSCC
#define SPI_VSCC
Definition:
w25q64.c:42
SPI_OPMENU_UPPER
#define SPI_OPMENU_UPPER
Definition:
w25q64.c:38
string.h
spi_config
Definition:
spi.h:77
spi_config::preop
uint16_t preop
Definition:
spi.h:40
src
mainboard
google
rambi
w25q64.c
Generated by
1.9.1