1 /* This file is part of the coreboot project. */
2 /* SPDX-License-Identifier: GPL-2.0-or-later */
4 #ifndef _ASPEED_COREBOOT_
5 #define _ASPEED_COREBOOT_
12 #include <device/mmio.h>
14 #include <console/console.h>
15 #include <device/device.h>
16 #include <device/pci.h>
17 #include <device/pci_ops.h>
19 /* coreboot <--> kernel code interface */
21 typedef u64 phys_addr_t
;
22 #define pci_dev device
24 #define SZ_16M 0x01000000
26 #define min_t(type, x, y) ({ \
29 __min1 < __min2 ? __min1 : __min2; })
31 #define dev_info(dev, format, arg...) printk(BIOS_INFO, "%s: " format, __func__, ##arg)
32 #define dev_dbg(dev, format, arg...) printk(BIOS_DEBUG, "%s: " format, __func__, ##arg)
33 #define dev_err(dev, format, arg...) printk(BIOS_ERR, "%s: " format, __func__, ##arg)
35 #define pr_info(format, arg...) printk(BIOS_INFO, "%s: " format, __func__, ##arg)
36 #define pr_debug(format, arg...) printk(BIOS_INFO, "%s: " format, __func__, ##arg)
37 #define pr_err(format, arg...) printk(BIOS_ERR, "%s: " format, __func__, ##arg)
39 #define DRM_INFO pr_info
43 #define kfree(address) free(address)
53 /* firmware loader private fields */
62 static inline void *kzalloc(size_t size
, int flags
) {
63 void *ptr
= malloc(size
);
68 static inline int pci_read_config_dword(struct pci_dev
*dev
, int where
,
71 *val
= pci_read_config32(dev
, where
);
75 static inline int pci_write_config_dword(struct pci_dev
*dev
, int where
,
78 pci_write_config32(dev
, where
, val
);
82 static inline int pci_read_config_byte(struct pci_dev
*dev
, int where
,
85 *val
= pci_read_config8(dev
, where
);
89 static inline struct resource
* resource_at_bar(struct pci_dev
*dev
, u8 bar
) {
90 struct resource
*res
= dev
->resource_list
;
92 for (i
= 0; i
< bar
; i
++) {
101 static inline resource_t
pci_resource_len(struct pci_dev
*dev
, u8 bar
) {
102 struct resource
*res
= resource_at_bar(dev
, bar
);
109 static inline resource_t
pci_resource_start(struct pci_dev
*dev
, u8 bar
) {
110 struct resource
*res
= resource_at_bar(dev
, bar
);
117 static inline unsigned int ioread32(void __iomem
*p
) {
121 static inline void iowrite32(u32 val
, void __iomem
*p
) {
125 static inline unsigned int ioread16(void __iomem
*p
) {
129 static inline void iowrite16(u16 val
, void __iomem
*p
) {
133 static inline unsigned int ioread8(void __iomem
*p
) {
137 static inline void iowrite8(u8 val
, void __iomem
*p
) {
141 static inline unsigned int ioread_cbio32(void __iomem
*p
) {
142 return inl((uint16_t)((intptr_t)p
));
145 static inline void iowrite_cbio32(u32 val
, void __iomem
*p
) {
146 outl(val
, (uint16_t)((intptr_t)p
));
149 static inline unsigned int ioread_cbio16(void __iomem
*p
) {
150 return inw((uint16_t)((intptr_t)p
));
153 static inline void iowrite_cbio16(u16 val
, void __iomem
*p
) {
154 outw(val
, (uint16_t)((intptr_t)p
));
157 static inline unsigned int ioread_cbio8(void __iomem
*p
) {
158 return inb((uint16_t)((intptr_t)p
));
161 static inline void iowrite_cbio8(u8 val
, void __iomem
*p
) {
162 outb(val
, (uint16_t)((intptr_t)p
));
165 static inline void msleep(unsigned int msecs
) {
166 udelay(msecs
* 1000);