mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-17 02:08:38 +00:00
91 lines
2.2 KiB
C
91 lines
2.2 KiB
C
|
/* GRLIB Memory controller setup structures
|
||
|
*
|
||
|
* (C) Copyright 2010, 2015
|
||
|
* Daniel Hellstrom, Cobham Gaisler, daniel@gaisler.com.
|
||
|
*
|
||
|
* SPDX-License-Identifier: GPL-2.0+
|
||
|
*/
|
||
|
|
||
|
#ifndef __MEMCFG_H__
|
||
|
#define __MEMCFG_H__
|
||
|
|
||
|
/*********** Low Level Memory Controller Initalization ***********/
|
||
|
|
||
|
#ifndef __ASSEMBLER__
|
||
|
|
||
|
struct grlib_mctrl_handler;
|
||
|
|
||
|
typedef void (*mctrl_handler_t)(
|
||
|
struct grlib_mctrl_handler *dev,
|
||
|
void *conf,
|
||
|
unsigned int ioarea
|
||
|
);
|
||
|
|
||
|
/* Memory Controller Handler Structure */
|
||
|
struct grlib_mctrl_handler {
|
||
|
unsigned char type; /* 0x00. MASK: AHB MST&SLV, APB SLV */
|
||
|
char index; /* 0x01. Unit number, 0, 1, 2... */
|
||
|
char unused[2]; /* 0x02 */
|
||
|
unsigned int ven_dev; /* 0x04. Device and Vendor */
|
||
|
mctrl_handler_t func; /* 0x08. Memory Controller Handler */
|
||
|
void *priv; /* 0x0c. Optional private data, ptr to
|
||
|
* info how to set up controller */
|
||
|
};
|
||
|
|
||
|
extern struct grlib_mctrl_handler grlib_mctrl_handlers[];
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#define MH_STRUCT_SIZE (4*4)
|
||
|
#define MH_TYPE 0x00
|
||
|
#define MH_INDEX 0x01
|
||
|
#define MH_VENDOR_DEVICE 0x04
|
||
|
#define MH_FUNC 0x08
|
||
|
#define MH_PRIV 0x0c
|
||
|
|
||
|
#define MH_TYPE_NONE DEV_NONE
|
||
|
#define MH_TYPE_AHB_MST DEV_AHB_MST
|
||
|
#define MH_TYPE_AHB_SLV DEV_AHB_SLV
|
||
|
#define MH_TYPE_APB_SLV DEV_APB_SLV
|
||
|
|
||
|
#define MH_UNUSED {0, 0}
|
||
|
#define MH_END {DEV_NONE, 0, MH_UNUSED, AMBA_PNP_ID(0, 0), 0, 0}
|
||
|
|
||
|
/*********** Low Level Memory Controller Initalization Handlers ***********/
|
||
|
|
||
|
#ifndef __ASSEMBLER__
|
||
|
extern void _nomem_mctrl_init(
|
||
|
struct grlib_mctrl_handler *dev,
|
||
|
void *conf,
|
||
|
unsigned int ioarea_apbmst);
|
||
|
|
||
|
struct mctrl_setup {
|
||
|
unsigned int reg_mask; /* Which registers to write */
|
||
|
struct {
|
||
|
unsigned int mask; /* Mask used keep reg bits unchanged */
|
||
|
unsigned int value; /* Value written to register */
|
||
|
} regs[8];
|
||
|
};
|
||
|
|
||
|
extern void _nomem_ahbmctrl_init(
|
||
|
struct grlib_mctrl_handler *dev,
|
||
|
void *conf,
|
||
|
unsigned int ioarea_apbmst);
|
||
|
|
||
|
struct ahbmctrl_setup {
|
||
|
int ahb_mbar_no; /* MBAR to get register address from */
|
||
|
unsigned int reg_mask; /* Which registers to write */
|
||
|
struct {
|
||
|
unsigned int mask; /* Mask used keep reg bits unchanged */
|
||
|
unsigned int value; /* Value written to register */
|
||
|
} regs[8];
|
||
|
};
|
||
|
#endif
|
||
|
|
||
|
/* mctrl_setup data structure defines */
|
||
|
#define NREGS_OFS 0
|
||
|
#define REGS_OFS 0x4
|
||
|
#define REGS_SIZE 8
|
||
|
|
||
|
#endif
|