mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-04 20:26:13 +02:00
board/tq: Add common SoM API
Reduce code duplication by adding a default implementation. Signed-off-by: Max Merchel <Max.Merchel@ew.tq-group.com> Signed-off-by: Alexander Feilke <alexander.feilke@ew.tq-group.com>
This commit is contained in:
parent
60d41b6551
commit
c8eebe0a70
@ -11,3 +11,6 @@ config TQ_COMMON_BB
|
||||
|
||||
config TQ_COMMON_SDMMC
|
||||
bool
|
||||
|
||||
config TQ_COMMON_SOM
|
||||
bool
|
||||
|
||||
@ -6,4 +6,5 @@
|
||||
#
|
||||
|
||||
obj-$(CONFIG_TQ_COMMON_BB) += tq_bb.o
|
||||
obj-$(CONFIG_TQ_COMMON_SOM) += tq_som.o
|
||||
obj-$(CONFIG_TQ_COMMON_SDMMC) += tq_sdmmc.o
|
||||
|
||||
32
board/tq/common/tq_som.c
Normal file
32
board/tq/common/tq_som.c
Normal file
@ -0,0 +1,32 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright (c) 2025-2026 TQ-Systems GmbH <u-boot@ew.tq-group.com>,
|
||||
* D-82229 Seefeld, Germany.
|
||||
* Author: Alexander Feilke, Max Merchel
|
||||
*/
|
||||
|
||||
#include <init.h>
|
||||
#include <asm/io.h>
|
||||
#include <linux/sizes.h>
|
||||
|
||||
#include "tq_som.h"
|
||||
|
||||
void __weak tq_som_ram_init(void)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
/*
|
||||
* checks if the accessible range equals the requested RAM size.
|
||||
* returns true if successful, false otherwise
|
||||
*/
|
||||
bool tq_som_ram_check_size(long ram_size)
|
||||
{
|
||||
long size;
|
||||
|
||||
size = get_ram_size((void *)PHYS_SDRAM, ram_size);
|
||||
debug("SPL: requested RAM size %lu MiB. accessible %lu MiB\n",
|
||||
ram_size / (SZ_1M), size / (SZ_1M));
|
||||
|
||||
return (size == ram_size);
|
||||
}
|
||||
35
board/tq/common/tq_som.h
Normal file
35
board/tq/common/tq_som.h
Normal file
@ -0,0 +1,35 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright (c) 2025-2026 TQ-Systems GmbH <u-boot@ew.tq-group.com>,
|
||||
* D-82229 Seefeld, Germany.
|
||||
* Author: Alexander Feilke, Max Merchel
|
||||
*/
|
||||
|
||||
#ifndef __TQ_SOM_H
|
||||
#define __TQ_SOM_H
|
||||
|
||||
#include <init.h>
|
||||
#include <asm/io.h>
|
||||
#include <linux/iopoll.h>
|
||||
|
||||
void tq_som_ram_init(void);
|
||||
|
||||
/* used as a wrapper to write to specific register addresses */
|
||||
static inline void tq_som_init_write_reg(u32 address, u32 value)
|
||||
{
|
||||
writel_relaxed(value, address);
|
||||
}
|
||||
|
||||
/*
|
||||
* checks if the accessible range equals the requested ram size.
|
||||
* returns true if successful, false otherwise
|
||||
*/
|
||||
bool tq_som_ram_check_size(long ram_size);
|
||||
|
||||
static inline void tq_som_check_bits_set(u32 address, u32 mask)
|
||||
{
|
||||
u32 val;
|
||||
readl_poll_timeout(address, val, (val & mask) == mask, 1000);
|
||||
}
|
||||
|
||||
#endif /* __TQ_SOM_H */
|
||||
Loading…
x
Reference in New Issue
Block a user