1 /* GRLIB Memory controller setup structures
3 * (C) Copyright 2010, 2015
4 * Daniel Hellstrom, Cobham Gaisler, daniel@gaisler.com.
6 * SPDX-License-Identifier: GPL-2.0+
12 /*********** Low Level Memory Controller Initalization ***********/
16 struct grlib_mctrl_handler;
18 typedef void (*mctrl_handler_t)(
19 struct grlib_mctrl_handler *dev,
24 /* Memory Controller Handler Structure */
25 struct grlib_mctrl_handler {
26 unsigned char type; /* 0x00. MASK: AHB MST&SLV, APB SLV */
27 char index; /* 0x01. Unit number, 0, 1, 2... */
28 char unused[2]; /* 0x02 */
29 unsigned int ven_dev; /* 0x04. Device and Vendor */
30 mctrl_handler_t func; /* 0x08. Memory Controller Handler */
31 void *priv; /* 0x0c. Optional private data, ptr to
32 * info how to set up controller */
35 extern struct grlib_mctrl_handler grlib_mctrl_handlers[];
39 #define MH_STRUCT_SIZE (4*4)
42 #define MH_VENDOR_DEVICE 0x04
46 #define MH_TYPE_NONE DEV_NONE
47 #define MH_TYPE_AHB_MST DEV_AHB_MST
48 #define MH_TYPE_AHB_SLV DEV_AHB_SLV
49 #define MH_TYPE_APB_SLV DEV_APB_SLV
51 #define MH_UNUSED {0, 0}
52 #define MH_END {DEV_NONE, 0, MH_UNUSED, AMBA_PNP_ID(0, 0), 0, 0}
54 /*********** Low Level Memory Controller Initalization Handlers ***********/
57 extern void _nomem_mctrl_init(
58 struct grlib_mctrl_handler *dev,
60 unsigned int ioarea_apbmst);
63 unsigned int reg_mask; /* Which registers to write */
65 unsigned int mask; /* Mask used keep reg bits unchanged */
66 unsigned int value; /* Value written to register */
70 extern void _nomem_ahbmctrl_init(
71 struct grlib_mctrl_handler *dev,
73 unsigned int ioarea_apbmst);
75 struct ahbmctrl_setup {
76 int ahb_mbar_no; /* MBAR to get register address from */
77 unsigned int reg_mask; /* Which registers to write */
79 unsigned int mask; /* Mask used keep reg bits unchanged */
80 unsigned int value; /* Value written to register */
85 /* mctrl_setup data structure defines */