coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
soc.c
Go to the documentation of this file.
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
3
#include <
bootmode.h
>
4
#include <
console/console.h
>
5
#include <
device/device.h
>
6
#include <
soc/nvidia/tegra/dc.h
>
7
#include <soc/display.h>
8
#include <soc/sdram.h>
9
#include <symbols.h>
10
11
#include "
chip.h
"
12
13
/* this sucks, but for now, fb size/location are hardcoded.
14
* Will break if we get 2. Sigh.
15
* We assume it's all multiples of MiB for MMUs sake.
16
*/
17
static
void
soc_read_resources
(
struct
device
*dev)
18
{
19
u32
lcdbase =
fb_base_mb
();
20
unsigned
long
fb_size =
FB_SIZE_MB
;
21
22
ram_resource
(dev, 0, (
uintptr_t
)
_dram
/
KiB
,
23
(
sdram_max_addressable_mb
() - fb_size)*
KiB
-
24
(
uintptr_t
)
_dram
/
KiB
);
25
mmio_resource
(dev, 1, lcdbase*
KiB
, fb_size*
KiB
);
26
27
u32
sdram_end_mb =
sdram_size_mb
() + (
uintptr_t
)
_dram
/
MiB
;
28
29
if
(sdram_end_mb >
sdram_max_addressable_mb
())
30
ram_resource
(dev, 2,
sdram_max_addressable_mb
()*
KiB
,
31
(sdram_end_mb -
sdram_max_addressable_mb
())*
KiB
);
32
}
33
34
static
void
soc_init
(
struct
device
*dev)
35
{
36
if
(
display_init_required
())
37
display_startup
(dev);
38
else
39
printk
(
BIOS_INFO
,
"Skipping display init.\n"
);
40
printk
(
BIOS_INFO
,
"CPU: Tegra124\n"
);
41
}
42
43
static
struct
device_operations
soc_ops
= {
44
.
read_resources
=
soc_read_resources
,
45
.set_resources =
noop_set_resources
,
46
.init =
soc_init
,
47
};
48
49
static
void
enable_tegra124_dev
(
struct
device
*dev)
50
{
51
dev->
ops
= &
soc_ops
;
52
}
53
54
struct
chip_operations
soc_nvidia_tegra124_ops
= {
55
CHIP_NAME
(
"SOC Nvidia Tegra124"
)
56
.enable_dev =
enable_tegra124_dev
,
57
};
bootmode.h
display_init_required
int display_init_required(void)
Definition:
bootmode.c:22
MiB
#define MiB
Definition:
helpers.h:76
KiB
#define KiB
Definition:
helpers.h:75
sdram_size_mb
size_t sdram_size_mb(void)
Definition:
sdram.c:24
printk
#define printk(level,...)
Definition:
stdlib.h:16
console.h
dc.h
fb_base_mb
unsigned int fb_base_mb(void)
Definition:
display.c:190
display_startup
static void display_startup(void)
Definition:
mainboard.c:207
device.h
CHIP_NAME
#define CHIP_NAME(X)
Definition:
device.h:32
noop_set_resources
static void noop_set_resources(struct device *dev)
Definition:
device.h:74
ram_resource
#define ram_resource(dev, idx, basek, sizek)
Definition:
device.h:321
mmio_resource
#define mmio_resource(dev, idx, basek, sizek)
Definition:
device.h:334
_dram
u8 _dram[]
BIOS_INFO
#define BIOS_INFO
BIOS_INFO - Expected events.
Definition:
loglevel.h:113
sdram_max_addressable_mb
uintptr_t sdram_max_addressable_mb(void)
Definition:
sdram.c:630
soc_nvidia_tegra124_ops
struct chip_operations soc_nvidia_tegra124_ops
Definition:
soc.c:54
soc_read_resources
static void soc_read_resources(struct device *dev)
Definition:
soc.c:17
soc_ops
static struct device_operations soc_ops
Definition:
soc.c:43
enable_tegra124_dev
static void enable_tegra124_dev(struct device *dev)
Definition:
soc.c:49
soc_init
static void soc_init(struct device *dev)
Definition:
soc.c:34
FB_SIZE_MB
#define FB_SIZE_MB
Definition:
display.h:11
u32
uint32_t u32
Definition:
stdint.h:51
uintptr_t
unsigned long uintptr_t
Definition:
stdint.h:21
chip_operations
Definition:
device.h:23
device_operations
Definition:
device.h:38
device_operations::read_resources
void(* read_resources)(struct device *dev)
Definition:
device.h:39
device
Definition:
device.h:107
device::ops
struct device_operations * ops
Definition:
device.h:143
chip.h
src
soc
nvidia
tegra124
soc.c
Generated by
1.9.1