| /* SPDX-License-Identifier: GPL-2.0-or-later */ |
| |
| #ifndef DEVICE_DRAM_RCD_H |
| #define DEVICE_DRAM_RCD_H |
| |
| #include <types.h> |
| #include <device/i2c_simple.h> |
| #include <console/console.h> |
| |
| enum rcw_idx { |
| VEN_ID_L, |
| VEN_ID_H, |
| DEV_ID_L, |
| DEV_ID_H, |
| REV_ID, |
| RES_05, |
| RES_06, |
| RES_07, |
| F0RC00_01, |
| F0RC02_03, |
| F0RC04_05, |
| F0RC06_07, |
| F0RC08_09, |
| F0RC0A_0B, |
| F0RC0C_0D, |
| F0RC0E_0F, |
| F0RC1x, |
| F0RC2x, |
| F0RC3x, |
| F0RC4x, |
| F0RC5x, |
| F0RC6x, |
| F0RC7x, |
| F0RC8x, |
| F0RC9x, |
| F0RCAx, |
| F0RCBx, |
| F0RCCx, |
| F0RCDx, |
| F0RCEx, |
| F0RCFx, |
| RCW_ALL, /* Total num of bytes */ |
| RCW_ALL_ALIGNED /* Total num of bytes after aligning to 4B */ |
| }; |
| |
| _Static_assert(RCW_ALL_ALIGNED % sizeof(uint32_t) == 0, |
| "RCW_ALL_ALIGNED is not aligned"); |
| |
| /* Write an 8-bit register. Returns the number of written bytes. */ |
| int rcd_write_reg(unsigned int bus, uint8_t slave, enum rcw_idx reg, |
| uint8_t data); |
| |
| /* Write 32 bits of memory (i.e., four 8-bit registers, not 1 32-bit register, which would |
| * involve byte swapping). Returns the number of written bytes. */ |
| int rcd_write_32b(unsigned int bus, uint8_t slave, enum rcw_idx reg, |
| uint32_t data); |
| |
| /* Dump 32 bytes of RCD onto the screen. */ |
| void dump_rcd(unsigned int bus, uint8_t addr); |
| |
| #endif /* DEVICE_DRAM_RCD_H */ |