Files
2026-08-24 10:03:24 +08:00

46 lines
1.4 KiB
C

/*
* Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
*
* SPDX-License-Identifier: MIT
*/
#ifndef N200_PSO_H
#define N200_PSO_H
#include <stdio.h>
#include "soc.h"
#include "lscript.h"
#define AOCPU_WFI_AUTO_PSO
#define PSO_SAVE_AREA_SIZE PSO_AREA_SIZE
#define PSO_SAVE_AREA_BASE (configMEM_START + configMEM_LEN)
#define PSO_SAVE_AREA_SIZE_W (PSO_SAVE_AREA_SIZE / 4)
#define PSO_SAVE_CHECK_BASE PSO_SAVE_AREA_BASE
#define PSO_SAVE_CHECK_SIZE (1 * 4)
#define PSO_SAVE_PMP_BASE (PSO_SAVE_CHECK_BASE + PSO_SAVE_CHECK_SIZE)
#define PSO_SAVE_PMP_SIZE (10 * 4)
#define PSO_SAVE_ECLIC_BASE (PSO_SAVE_PMP_BASE + PSO_SAVE_PMP_SIZE)
#define PSO_SAVE_ECLIC_INT_BASE (PSO_SAVE_PMP_BASE + PSO_SAVE_PMP_SIZE)
#define PSO_SAVE_ECLIC_INT_SIZE (ECLIC_NUM_INTERRUPTS * 4)
#define PSO_SAVE_ECLIC_MTH_BASE (PSO_SAVE_ECLIC_INT_BASE + PSO_SAVE_ECLIC_INT_SIZE)
#define PSO_SAVE_ECLIC_MTH_SIZE (1 * 4)
#define PSO_SAVE_AO_IRQ_SEL_BASE (PSO_SAVE_ECLIC_MTH_BASE + PSO_SAVE_ECLIC_MTH_SIZE)
#ifdef AOCPU_IRQ_SEL8
#define PSO_SAVE_AO_IRQ_SEL_SIZE_W 16
#else
#define PSO_SAVE_AO_IRQ_SEL_SIZE_W 8
#endif
extern uint32_t eclic_interrupt_inner[SOC_ECLIC_NUM_INTERRUPTS];
void add_hw_pwrctrl_fsm_awake_irq(uint16_t sel_irq);
void remove_hw_pwrctrl_fsm_awake_irq(uint16_t sel_irq);
void pso_cut_off_power(unsigned long ra);
void pso_power_off(void);
void pso_resume(void);
void pso_context_save(void);
extern void pso_context_restore(void);
#endif