treewide: replace GPLv2 long form headers with SPDX header
[coreboot.git] / src / drivers / aspeed / common / aspeed_coreboot.h
blob1d8bdb9834f2160964bab3031df1869205b8af16
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_
7 #include <delay.h>
8 #include <stdlib.h>
9 #include <stdint.h>
10 #include <string.h>
11 #include <arch/io.h>
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 */
20 #define __iomem
21 typedef u64 phys_addr_t;
22 #define pci_dev device
24 #define SZ_16M 0x01000000
26 #define min_t(type, x, y) ({ \
27 type __min1 = (x); \
28 type __min2 = (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
41 #define GFP_KERNEL 0
42 #define GFP_ATOMIC 1
43 #define kfree(address) free(address)
45 #define EIO 5
46 #define ENOMEM 12
48 struct firmware {
49 size_t size;
50 const u8 *data;
51 struct page **pages;
53 /* firmware loader private fields */
54 void *priv;
57 struct drm_device {
58 struct pci_dev *pdev;
59 void *dev_private;
62 static inline void *kzalloc(size_t size, int flags) {
63 void *ptr = malloc(size);
64 memset(ptr, 0, size);
65 return ptr;
68 static inline int pci_read_config_dword(struct pci_dev *dev, int where,
69 u32 *val)
71 *val = pci_read_config32(dev, where);
72 return 0;
75 static inline int pci_write_config_dword(struct pci_dev *dev, int where,
76 u32 val)
78 pci_write_config32(dev, where, val);
79 return 0;
82 static inline int pci_read_config_byte(struct pci_dev *dev, int where,
83 u8 *val)
85 *val = pci_read_config8(dev, where);
86 return 0;
89 static inline struct resource* resource_at_bar(struct pci_dev *dev, u8 bar) {
90 struct resource *res = dev->resource_list;
91 int i;
92 for (i = 0; i < bar; i++) {
93 res = res->next;
94 if (res == NULL)
95 return NULL;
98 return res;
101 static inline resource_t pci_resource_len(struct pci_dev *dev, u8 bar) {
102 struct resource *res = resource_at_bar(dev, bar);
103 if (res)
104 return res->size;
105 else
106 return 0;
109 static inline resource_t pci_resource_start(struct pci_dev *dev, u8 bar) {
110 struct resource *res = resource_at_bar(dev, bar);
111 if (res)
112 return res->base;
113 else
114 return 0;
117 static inline unsigned int ioread32(void __iomem *p) {
118 return read32(p);
121 static inline void iowrite32(u32 val, void __iomem *p) {
122 write32(p, val);
125 static inline unsigned int ioread16(void __iomem *p) {
126 return read16(p);
129 static inline void iowrite16(u16 val, void __iomem *p) {
130 write16(p, val);
133 static inline unsigned int ioread8(void __iomem *p) {
134 return read8(p);
137 static inline void iowrite8(u8 val, void __iomem *p) {
138 write8(p, val);
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);
169 #endif