`.read_resources` and `.set_resources` are the only two device operations that are considered mandatory. Other function pointers can be left NULL. Having dedicated no-op implementations for the two mandatory fields should stop the leaking of no-op pointers to other fields. Change-Id: I6469a7568dc24317c95e238749d878e798b0a362 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/40207 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: HAOUAS Elyes <ehaouas@noos.fr> Reviewed-by: Edward O'Callaghan <quasisec@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
41 lines
961 B
C
41 lines
961 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/* This file is part of the coreboot project. */
|
|
|
|
#include <bootmode.h>
|
|
#include <console/console.h>
|
|
#include <device/device.h>
|
|
#include <gpio.h>
|
|
#include <soc/display.h>
|
|
#include <soc/soc.h>
|
|
#include <soc/sdram.h>
|
|
#include <stddef.h>
|
|
#include <symbols.h>
|
|
|
|
#include "chip.h"
|
|
|
|
static void soc_init(struct device *dev)
|
|
{
|
|
ram_resource(dev, 0, (uintptr_t)_dram/KiB, sdram_size_mb()*(MiB/KiB));
|
|
if (display_init_required())
|
|
rk_display_init(dev, (uintptr_t)_framebuffer,
|
|
REGION_SIZE(framebuffer));
|
|
else
|
|
printk(BIOS_INFO, "Skipping display init.\n");
|
|
}
|
|
|
|
static struct device_operations soc_ops = {
|
|
.read_resources = noop_read_resources,
|
|
.set_resources = noop_set_resources,
|
|
.init = soc_init,
|
|
};
|
|
|
|
static void enable_rk3288_dev(struct device *dev)
|
|
{
|
|
dev->ops = &soc_ops;
|
|
}
|
|
|
|
struct chip_operations soc_rockchip_rk3288_ops = {
|
|
CHIP_NAME("SOC Rockchip 3288")
|
|
.enable_dev = enable_rk3288_dev,
|
|
};
|