162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Realtek RTD1195 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (c) 2017-2019 Andreas Färber 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include <linux/memblock.h> 962306a36Sopenharmony_ci#include <asm/mach/arch.h> 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_cistatic void __init rtd1195_memblock_remove(phys_addr_t base, phys_addr_t size) 1262306a36Sopenharmony_ci{ 1362306a36Sopenharmony_ci int ret; 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci ret = memblock_remove(base, size); 1662306a36Sopenharmony_ci if (ret) 1762306a36Sopenharmony_ci pr_err("Failed to remove memblock %pa (%d)\n", &base, ret); 1862306a36Sopenharmony_ci} 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_cistatic void __init rtd1195_reserve(void) 2162306a36Sopenharmony_ci{ 2262306a36Sopenharmony_ci /* Exclude boot ROM from RAM */ 2362306a36Sopenharmony_ci rtd1195_memblock_remove(0x00000000, 0x0000a800); 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci /* Exclude peripheral register spaces from RAM */ 2662306a36Sopenharmony_ci rtd1195_memblock_remove(0x18000000, 0x00070000); 2762306a36Sopenharmony_ci rtd1195_memblock_remove(0x18100000, 0x01000000); 2862306a36Sopenharmony_ci} 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_cistatic const char *const rtd1195_dt_compat[] __initconst = { 3162306a36Sopenharmony_ci "realtek,rtd1195", 3262306a36Sopenharmony_ci NULL 3362306a36Sopenharmony_ci}; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciDT_MACHINE_START(rtd1195, "Realtek RTD1195") 3662306a36Sopenharmony_ci .dt_compat = rtd1195_dt_compat, 3762306a36Sopenharmony_ci .reserve = rtd1195_reserve, 3862306a36Sopenharmony_ci .l2c_aux_val = 0x0, 3962306a36Sopenharmony_ci .l2c_aux_mask = ~0x0, 4062306a36Sopenharmony_ciMACHINE_END 41