This target adds support for the Allwinner D1 RISC-V based SoCs. - RISC-V single-core T-Head C906 (RV64GCV) - Tensilica HiFi4 DSP - DDR2/DDR3 support - 10/100/1000M ethernet - usual peripherals like USB2, SPI, I2C, PWM, etc. Four boards are supported: - Dongshan Nezha STU - 512Mb RAM - ethernet - LicheePi RV Dock - 512Mb RAM - wireless-only (RTL8723DS) - MangoPi MQ-Pro - 512Mb RAM - there are pads available for an SPI flash - wireless-only (RTL8723DS) - Nezha D1 - 512Mb/1Gb/2Gb RAM - 256Mb NAND flash - ethernet, wireless Installation: Standard SD-card installation via dd-ing the generated image to an SD-card of at least 256Mb. Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
82 lines
3.8 KiB
Diff
82 lines
3.8 KiB
Diff
From b6af4b7f6f75904509747c08e87d91c1bb607bd4 Mon Sep 17 00:00:00 2001
|
|
From: Samuel Holland <samuel@sholland.org>
|
|
Date: Thu, 22 Sep 2022 00:39:36 -0500
|
|
Subject: [PATCH 098/117] riscv: Move cast inside kernel_mapping_[pv]a_to_[vp]a
|
|
|
|
Before commit 44c922572952 ("RISC-V: enable XIP"), these macros cast
|
|
their argument to unsigned long. That commit moved the cast after an
|
|
assignment to an unsigned long variable, rendering it ineffectual.
|
|
Move the cast back, so we can remove the cast at each call site.
|
|
|
|
Series-to: Palmer Dabbelt <palmer@dabbelt.com>
|
|
Series-to: linux-riscv@lists.infradead.org
|
|
|
|
Series-version: 2
|
|
|
|
Reviewed-by: Alexandre Ghiti <alexandre.ghiti@canonical.com>
|
|
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
|
|
Signed-off-by: Samuel Holland <samuel@sholland.org>
|
|
---
|
|
arch/riscv/include/asm/page.h | 18 +++++++++---------
|
|
arch/riscv/mm/init.c | 16 ++++++++--------
|
|
2 files changed, 17 insertions(+), 17 deletions(-)
|
|
|
|
--- a/arch/riscv/include/asm/page.h
|
|
+++ b/arch/riscv/include/asm/page.h
|
|
@@ -123,20 +123,20 @@ extern phys_addr_t phys_ram_base;
|
|
((x) >= PAGE_OFFSET && (!IS_ENABLED(CONFIG_64BIT) || (x) < PAGE_OFFSET + KERN_VIRT_SIZE))
|
|
|
|
#define linear_mapping_pa_to_va(x) ((void *)((unsigned long)(x) + kernel_map.va_pa_offset))
|
|
-#define kernel_mapping_pa_to_va(y) ({ \
|
|
- unsigned long _y = y; \
|
|
- (IS_ENABLED(CONFIG_XIP_KERNEL) && _y < phys_ram_base) ? \
|
|
- (void *)((unsigned long)(_y) + kernel_map.va_kernel_xip_pa_offset) : \
|
|
- (void *)((unsigned long)(_y) + kernel_map.va_kernel_pa_offset + XIP_OFFSET); \
|
|
+#define kernel_mapping_pa_to_va(y) ({ \
|
|
+ unsigned long _y = (unsigned long)(y); \
|
|
+ (IS_ENABLED(CONFIG_XIP_KERNEL) && _y < phys_ram_base) ? \
|
|
+ (void *)(_y + kernel_map.va_kernel_xip_pa_offset) : \
|
|
+ (void *)(_y + kernel_map.va_kernel_pa_offset + XIP_OFFSET); \
|
|
})
|
|
#define __pa_to_va_nodebug(x) linear_mapping_pa_to_va(x)
|
|
|
|
#define linear_mapping_va_to_pa(x) ((unsigned long)(x) - kernel_map.va_pa_offset)
|
|
#define kernel_mapping_va_to_pa(y) ({ \
|
|
- unsigned long _y = y; \
|
|
- (IS_ENABLED(CONFIG_XIP_KERNEL) && _y < kernel_map.virt_addr + XIP_OFFSET) ? \
|
|
- ((unsigned long)(_y) - kernel_map.va_kernel_xip_pa_offset) : \
|
|
- ((unsigned long)(_y) - kernel_map.va_kernel_pa_offset - XIP_OFFSET); \
|
|
+ unsigned long _y = (unsigned long)(y); \
|
|
+ (IS_ENABLED(CONFIG_XIP_KERNEL) && _y < kernel_map.virt_addr + XIP_OFFSET) ? \
|
|
+ (_y - kernel_map.va_kernel_xip_pa_offset) : \
|
|
+ (_y - kernel_map.va_kernel_pa_offset - XIP_OFFSET); \
|
|
})
|
|
|
|
#define __va_to_pa_nodebug(x) ({ \
|
|
--- a/arch/riscv/mm/init.c
|
|
+++ b/arch/riscv/mm/init.c
|
|
@@ -903,15 +903,15 @@ static void __init pt_ops_set_early(void
|
|
*/
|
|
static void __init pt_ops_set_fixmap(void)
|
|
{
|
|
- pt_ops.alloc_pte = kernel_mapping_pa_to_va((uintptr_t)alloc_pte_fixmap);
|
|
- pt_ops.get_pte_virt = kernel_mapping_pa_to_va((uintptr_t)get_pte_virt_fixmap);
|
|
+ pt_ops.alloc_pte = kernel_mapping_pa_to_va(alloc_pte_fixmap);
|
|
+ pt_ops.get_pte_virt = kernel_mapping_pa_to_va(get_pte_virt_fixmap);
|
|
#ifndef __PAGETABLE_PMD_FOLDED
|
|
- pt_ops.alloc_pmd = kernel_mapping_pa_to_va((uintptr_t)alloc_pmd_fixmap);
|
|
- pt_ops.get_pmd_virt = kernel_mapping_pa_to_va((uintptr_t)get_pmd_virt_fixmap);
|
|
- pt_ops.alloc_pud = kernel_mapping_pa_to_va((uintptr_t)alloc_pud_fixmap);
|
|
- pt_ops.get_pud_virt = kernel_mapping_pa_to_va((uintptr_t)get_pud_virt_fixmap);
|
|
- pt_ops.alloc_p4d = kernel_mapping_pa_to_va((uintptr_t)alloc_p4d_fixmap);
|
|
- pt_ops.get_p4d_virt = kernel_mapping_pa_to_va((uintptr_t)get_p4d_virt_fixmap);
|
|
+ pt_ops.alloc_pmd = kernel_mapping_pa_to_va(alloc_pmd_fixmap);
|
|
+ pt_ops.get_pmd_virt = kernel_mapping_pa_to_va(get_pmd_virt_fixmap);
|
|
+ pt_ops.alloc_pud = kernel_mapping_pa_to_va(alloc_pud_fixmap);
|
|
+ pt_ops.get_pud_virt = kernel_mapping_pa_to_va(get_pud_virt_fixmap);
|
|
+ pt_ops.alloc_p4d = kernel_mapping_pa_to_va(alloc_p4d_fixmap);
|
|
+ pt_ops.get_p4d_virt = kernel_mapping_pa_to_va(get_p4d_virt_fixmap);
|
|
#endif
|
|
}
|
|
|