mirror of
https://github.com/Fishwaldo/opensbi.git
synced 2025-03-15 19:31:32 +00:00
platform: andes: Factor out is_andes() helper
We will need is_andes(45) in the following patch, so factor out the code that parses marchid to make it reusable for checking any Andes CPU variants. Also improves the comment in ae350_hart_start(). Signed-off-by: Yu Chien Peter Lin <peterlin@andestech.com> Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
parent
0b3262efc6
commit
009ae4e602
2 changed files with 13 additions and 9 deletions
|
@ -24,16 +24,14 @@ static struct smu_data smu = { 0 };
|
|||
extern void __ae350_enable_coherency_warmboot(void);
|
||||
extern void __ae350_disable_coherency(void);
|
||||
|
||||
static __always_inline bool is_andes25(void)
|
||||
{
|
||||
ulong marchid = csr_read(CSR_MARCHID);
|
||||
return !!(EXTRACT_FIELD(marchid, CSR_MARCHID_MICROID) == 0xa25);
|
||||
}
|
||||
|
||||
static int ae350_hart_start(u32 hartid, ulong saddr)
|
||||
{
|
||||
/* Don't send wakeup command at boot-time */
|
||||
if (!sbi_init_count(hartid) || (is_andes25() && hartid == 0))
|
||||
/*
|
||||
* Don't send wakeup command when:
|
||||
* 1) boot-time
|
||||
* 2) the target hart is non-sleepable 25-series hart0
|
||||
*/
|
||||
if (!sbi_init_count(hartid) || (is_andes(25) && hartid == 0))
|
||||
return sbi_ipi_raw_send(sbi_hartid_to_hartindex(hartid));
|
||||
|
||||
/* Write wakeup command to the sleep hart */
|
||||
|
@ -52,7 +50,7 @@ static int ae350_hart_stop(void)
|
|||
* L2-cache, instead of turning it off, it should fall
|
||||
* through and jump to warmboot_addr.
|
||||
*/
|
||||
if (is_andes25() && hartid == 0)
|
||||
if (is_andes(25) && hartid == 0)
|
||||
return SBI_ENOTSUPP;
|
||||
|
||||
if (!smu_support_sleep_mode(&smu, DEEPSLEEP_MODE, hartid))
|
||||
|
|
|
@ -43,6 +43,12 @@
|
|||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
#define is_andes(series) \
|
||||
({ \
|
||||
char value = csr_read(CSR_MARCHID) & 0xff; \
|
||||
(series) == (value >> 4) * 10 + (value & 0x0f); \
|
||||
})
|
||||
|
||||
#define has_andes_pmu() \
|
||||
({ \
|
||||
(((csr_read(CSR_MMSC_CFG) & \
|
||||
|
|
Loading…
Add table
Reference in a new issue