dm: Add support for RAM drivers
Add support for a driver which sets up DRAM and can return information about the amount of RAM available. This is a first step towards moving RAM init to driver model. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
10f5f5a90e
commit
6c51df6859
@ -34,6 +34,8 @@ source "drivers/gpio/Kconfig"
|
||||
|
||||
source "drivers/power/Kconfig"
|
||||
|
||||
source "drivers/ram/Kconfig"
|
||||
|
||||
source "drivers/hwmon/Kconfig"
|
||||
|
||||
source "drivers/watchdog/Kconfig"
|
||||
|
@ -11,6 +11,7 @@ obj-$(CONFIG_LED) += led/
|
||||
obj-y += misc/
|
||||
obj-y += pcmcia/
|
||||
obj-y += dfu/
|
||||
obj-$(CONFIG_RAM) += ram/
|
||||
obj-y += rtc/
|
||||
obj-y += sound/
|
||||
obj-y += tpm/
|
||||
|
18
drivers/ram/Kconfig
Normal file
18
drivers/ram/Kconfig
Normal file
@ -0,0 +1,18 @@
|
||||
config RAM
|
||||
bool "Enable RAM drivers using Driver Model"
|
||||
depends on DM
|
||||
help
|
||||
This allows drivers to be provided for SDRAM and other RAM
|
||||
controllers and their type to be specified in the board's device
|
||||
tree. Generally some parameters are required to set up the RAM and
|
||||
the RAM size can either be statically defined or dynamically
|
||||
detected.
|
||||
|
||||
config SPL_RAM_SUPPORT
|
||||
bool "Enable RAM support in SPL"
|
||||
depends on RAM
|
||||
help
|
||||
The RAM subsystem adds a small amount of overhead to the image.
|
||||
If this is acceptable and you have a need to use RAM drivers in
|
||||
SPL, enable this option. It might provide a cleaner interface to
|
||||
setting up RAM (e.g. SDRAM / DDR) within SPL.
|
7
drivers/ram/Makefile
Normal file
7
drivers/ram/Makefile
Normal file
@ -0,0 +1,7 @@
|
||||
#
|
||||
# Copyright (c) 2015 Google, Inc
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
obj-$(CONFIG_RAM) += ram-uclass.o
|
28
drivers/ram/ram-uclass.c
Normal file
28
drivers/ram/ram-uclass.c
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2015 Google, Inc
|
||||
* Written by Simon Glass <sjg@chromium.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <ram.h>
|
||||
#include <dm.h>
|
||||
#include <errno.h>
|
||||
#include <dm/lists.h>
|
||||
#include <dm/root.h>
|
||||
|
||||
int ram_get_info(struct udevice *dev, struct ram_info *info)
|
||||
{
|
||||
struct ram_ops *ops = ram_get_ops(dev);
|
||||
|
||||
if (!ops->get_info)
|
||||
return -ENOSYS;
|
||||
|
||||
return ops->get_info(dev, info);
|
||||
}
|
||||
|
||||
UCLASS_DRIVER(ram) = {
|
||||
.id = UCLASS_RAM,
|
||||
.name = "ram",
|
||||
};
|
@ -28,6 +28,7 @@ enum uclass_id {
|
||||
UCLASS_CPU, /* CPU, typically part of an SoC */
|
||||
UCLASS_CROS_EC, /* Chrome OS EC */
|
||||
UCLASS_DISPLAY_PORT, /* Display port video */
|
||||
UCLASS_RAM, /* RAM controller */
|
||||
UCLASS_ETH, /* Ethernet device */
|
||||
UCLASS_GPIO, /* Bank of general-purpose I/O pins */
|
||||
UCLASS_I2C, /* I2C bus */
|
||||
|
38
include/ram.h
Normal file
38
include/ram.h
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (c) 2015 Google, Inc
|
||||
* Written by Simon Glass <sjg@chromium.org>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __RAM_H
|
||||
#define __RAM_H
|
||||
|
||||
struct ram_info {
|
||||
phys_addr_t base;
|
||||
size_t size;
|
||||
};
|
||||
|
||||
struct ram_ops {
|
||||
/**
|
||||
* get_info() - Get basic memory info
|
||||
*
|
||||
* @dev: Device to check (UCLASS_RAM)
|
||||
* @info: Place to put info
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int (*get_info)(struct udevice *dev, struct ram_info *info);
|
||||
};
|
||||
|
||||
#define ram_get_ops(dev) ((struct ram_ops *)(dev)->driver->ops)
|
||||
|
||||
/**
|
||||
* ram_get_info() - Get information about a RAM device
|
||||
*
|
||||
* @dev: Device to check (UCLASS_RAM)
|
||||
* @info: Returns RAM info
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int ram_get_info(struct udevice *dev, struct ram_info *info);
|
||||
|
||||
#endif
|
@ -78,6 +78,7 @@ libs-$(CONFIG_SPL_NET_SUPPORT) += net/
|
||||
libs-$(CONFIG_SPL_ETH_SUPPORT) += drivers/net/
|
||||
libs-$(CONFIG_SPL_ETH_SUPPORT) += drivers/net/phy/
|
||||
libs-$(CONFIG_SPL_USBETH_SUPPORT) += drivers/net/phy/
|
||||
libs-$(CONFIG_SPL_RAM_SUPPORT) += drivers/ram/
|
||||
libs-$(CONFIG_SPL_MUSB_NEW_SUPPORT) += drivers/usb/musb-new/
|
||||
libs-$(CONFIG_SPL_USBETH_SUPPORT) += drivers/usb/gadget/
|
||||
libs-$(CONFIG_SPL_WATCHDOG_SUPPORT) += drivers/watchdog/
|
||||
|
Loading…
Reference in New Issue
Block a user