mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-22 03:03:05 +00:00
122 lines
4.1 KiB
C
122 lines
4.1 KiB
C
|
/* SPDX-License-Identifier: BSD-3-Clause */
|
||
|
/**********************************************************************
|
||
|
* Copyright (C) 2012-2019 Cadence Design Systems, Inc.
|
||
|
**********************************************************************
|
||
|
* WARNING: This file is auto-generated using api-generator utility.
|
||
|
* api-generator: 12.02.13bb8d5
|
||
|
* Do not edit it manually.
|
||
|
**********************************************************************
|
||
|
* Cadence Core Driver for LPDDR4.
|
||
|
**********************************************************************
|
||
|
*/
|
||
|
#ifndef LPDDR4_STRUCTS_IF_H
|
||
|
#define LPDDR4_STRUCTS_IF_H
|
||
|
|
||
|
#include <linux/types.h>
|
||
|
#include "lpddr4_if.h"
|
||
|
|
||
|
/** @defgroup DataStructure Dynamic Data Structures
|
||
|
* This section defines the data structures used by the driver to provide
|
||
|
* hardware information, modification and dynamic operation of the driver.
|
||
|
* These data structures are defined in the header file of the core driver
|
||
|
* and utilized by the API.
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/**********************************************************************
|
||
|
* Structures and unions
|
||
|
**********************************************************************/
|
||
|
/**
|
||
|
* Configuration of device.
|
||
|
* Object of this type is used for probe and init functions.
|
||
|
*/
|
||
|
struct lpddr4_config_s
|
||
|
{
|
||
|
/** Base address of controller registers */
|
||
|
struct lpddr4_ctlregs_s* ctlbase;
|
||
|
/** Information/warning handler */
|
||
|
lpddr4_infocallback infohandler;
|
||
|
/** Controller interrupt handler */
|
||
|
lpddr4_ctlcallback ctlinterrupthandler;
|
||
|
/** PHY Independent Module interrupt handler */
|
||
|
lpddr4_phyindepcallback phyindepinterrupthandler;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Structure contains private data for Core Driver that should not be used by
|
||
|
* upper layers. This is not a part of API and manipulating of those data may cause
|
||
|
* unpredictable behavior of Core Driver.
|
||
|
*/
|
||
|
struct lpddr4_privatedata_s
|
||
|
{
|
||
|
/** Base address of controller registers */
|
||
|
struct lpddr4_ctlregs_s* ctlbase;
|
||
|
/** Information/warning handler */
|
||
|
lpddr4_infocallback infohandler;
|
||
|
/** Controller interrupt handler */
|
||
|
lpddr4_ctlcallback ctlinterrupthandler;
|
||
|
/** PHY Independent Module interrupt handler */
|
||
|
lpddr4_phyindepcallback phyindepinterrupthandler;
|
||
|
};
|
||
|
|
||
|
/** Structure to contain debug information reported by the driver. */
|
||
|
struct lpddr4_debuginfo_s
|
||
|
{
|
||
|
/** PLL Lock error. */
|
||
|
bool pllerror;
|
||
|
/** I/O calibration error. */
|
||
|
bool iocaliberror;
|
||
|
/** RX offset error. */
|
||
|
bool rxoffseterror;
|
||
|
/** CA training error. */
|
||
|
bool catraingerror;
|
||
|
/** Write levelling error. */
|
||
|
bool wrlvlerror;
|
||
|
/** Gate Level error. */
|
||
|
bool gatelvlerror;
|
||
|
/** Read Level error. */
|
||
|
bool readlvlerror;
|
||
|
/** Write DQ training error. */
|
||
|
bool dqtrainingerror;
|
||
|
};
|
||
|
|
||
|
/** Frequency Set Point mode register values */
|
||
|
struct lpddr4_fspmoderegs_s
|
||
|
{
|
||
|
/** MR1 register data for the FSP. */
|
||
|
uint8_t mr1data_fn[LPDDR4_MAX_CS];
|
||
|
/** MR2 register data for the FSP. */
|
||
|
uint8_t mr2data_fn[LPDDR4_MAX_CS];
|
||
|
/** MR3 register data for the FSP. */
|
||
|
uint8_t mr3data_fn[LPDDR4_MAX_CS];
|
||
|
/** MR11 register data for the FSP. */
|
||
|
uint8_t mr11data_fn[LPDDR4_MAX_CS];
|
||
|
/** MR12 register data for the FSP. */
|
||
|
uint8_t mr12data_fn[LPDDR4_MAX_CS];
|
||
|
/** MR13 register data for the FSP. */
|
||
|
uint8_t mr13data_fn[LPDDR4_MAX_CS];
|
||
|
/** MR14 register data for the FSP. */
|
||
|
uint8_t mr14data_fn[LPDDR4_MAX_CS];
|
||
|
/** MR22 register data for the selected frequency. */
|
||
|
uint8_t mr22data_fn[LPDDR4_MAX_CS];
|
||
|
};
|
||
|
|
||
|
/** Structure to hold data set to initalise registers. */
|
||
|
struct lpddr4_reginitdata_s
|
||
|
{
|
||
|
/** Register initialisation data for the Controller. */
|
||
|
uint32_t denalictlreg[LPDDR4_CTL_REG_COUNT];
|
||
|
/** Should be set to true, if the corresponding denaliCtlReg element has been updated. */
|
||
|
bool updatectlreg[LPDDR4_CTL_REG_COUNT];
|
||
|
/** Register initialisation data for PHY independent module. */
|
||
|
uint32_t denaliphyindepreg[LPDDR4_PHY_INDEP_REG_COUNT];
|
||
|
/** Should be set to true, if the corresponding denaliPhyIndepReg element has been updated. */
|
||
|
bool updatephyindepreg[LPDDR4_PHY_INDEP_REG_COUNT];
|
||
|
/** Register initialisation data for the PHY. */
|
||
|
uint32_t denaliphyreg[LPDDR4_PHY_REG_COUNT];
|
||
|
/** Should be set to true, if the corresponding denaliPhyReg element has been updated. */
|
||
|
bool updatephyreg[LPDDR4_PHY_REG_COUNT];
|
||
|
};
|
||
|
|
||
|
#endif /* LPDDR4_STRUCTS_IF_H */
|