commit
6cbf17d114
|
@ -20,6 +20,7 @@
|
||||||
#include <smccc_helpers.h>
|
#include <smccc_helpers.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <std_svc.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <types.h>
|
#include <types.h>
|
||||||
#include <utils.h>
|
#include <utils.h>
|
||||||
|
|
|
@ -37,10 +37,10 @@ void clear_mem_regions(mem_region_t *tbl, size_t nregions);
|
||||||
* in a way that they minimize the number of entries used in the
|
* in a way that they minimize the number of entries used in the
|
||||||
* translation tables.
|
* translation tables.
|
||||||
*/
|
*/
|
||||||
void clear_map_dyn_mem_regions(mem_region_t *region,
|
void clear_map_dyn_mem_regions(struct mem_region *regions,
|
||||||
size_t nregions,
|
size_t nregions,
|
||||||
uintptr_t va,
|
uintptr_t va,
|
||||||
size_t chunk_size);
|
size_t chunk);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* checks that a region (addr + nbytes-1) of memory is totally covered by
|
* checks that a region (addr + nbytes-1) of memory is totally covered by
|
||||||
|
|
|
@ -50,7 +50,7 @@ void clear_mem_regions(mem_region_t *tbl, size_t nregions)
|
||||||
* be cleared, and chunk is the amount of memory mapped and
|
* be cleared, and chunk is the amount of memory mapped and
|
||||||
* cleared in every iteration.
|
* cleared in every iteration.
|
||||||
*/
|
*/
|
||||||
void clear_map_dyn_mem_regions(mem_region_t *regions,
|
void clear_map_dyn_mem_regions(struct mem_region *regions,
|
||||||
size_t nregions,
|
size_t nregions,
|
||||||
uintptr_t va,
|
uintptr_t va,
|
||||||
size_t chunk)
|
size_t chunk)
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#include "css_mhu_doorbell.h"
|
#include "css_mhu_doorbell.h"
|
||||||
#include "../scmi/scmi.h"
|
#include "../scmi/scmi.h"
|
||||||
|
|
||||||
void mhu_ring_doorbell(scmi_channel_plat_info_t *plat_info)
|
void mhu_ring_doorbell(struct scmi_channel_plat_info *plat_info)
|
||||||
{
|
{
|
||||||
MHU_RING_DOORBELL(plat_info->db_reg_addr,
|
MHU_RING_DOORBELL(plat_info->db_reg_addr,
|
||||||
plat_info->db_modify_mask,
|
plat_info->db_modify_mask,
|
||||||
|
@ -17,7 +17,7 @@ void mhu_ring_doorbell(scmi_channel_plat_info_t *plat_info)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mhuv2_ring_doorbell(scmi_channel_plat_info_t *plat_info)
|
void mhuv2_ring_doorbell(struct scmi_channel_plat_info *plat_info)
|
||||||
{
|
{
|
||||||
/* wake receiver */
|
/* wake receiver */
|
||||||
MHU_V2_ACCESS_REQUEST(MHUV2_BASE_ADDR);
|
MHU_V2_ACCESS_REQUEST(MHUV2_BASE_ADDR);
|
||||||
|
|
|
@ -142,7 +142,7 @@ void css_scp_suspend(const struct psci_power_state *target_state)
|
||||||
* Helper function to turn off a CPU power domain and its parent power domains
|
* Helper function to turn off a CPU power domain and its parent power domains
|
||||||
* if applicable.
|
* if applicable.
|
||||||
*/
|
*/
|
||||||
void css_scp_off(const psci_power_state_t *target_state)
|
void css_scp_off(const struct psci_power_state *target_state)
|
||||||
{
|
{
|
||||||
int lvl = 0, ret;
|
int lvl = 0, ret;
|
||||||
uint32_t scmi_pwr_state = 0;
|
uint32_t scmi_pwr_state = 0;
|
||||||
|
@ -298,7 +298,7 @@ void __dead2 css_scp_sys_reboot(void)
|
||||||
css_scp_system_off(SCMI_SYS_PWR_COLD_RESET);
|
css_scp_system_off(SCMI_SYS_PWR_COLD_RESET);
|
||||||
}
|
}
|
||||||
|
|
||||||
scmi_channel_plat_info_t plat_css_scmi_plat_info = {
|
static scmi_channel_plat_info_t plat_css_scmi_plat_info = {
|
||||||
.scmi_mbx_mem = CSS_SCMI_PAYLOAD_BASE,
|
.scmi_mbx_mem = CSS_SCMI_PAYLOAD_BASE,
|
||||||
.db_reg_addr = PLAT_CSS_MHU_BASE + CSS_SCMI_MHU_DB_REG_OFF,
|
.db_reg_addr = PLAT_CSS_MHU_BASE + CSS_SCMI_MHU_DB_REG_OFF,
|
||||||
.db_preserve_mask = 0xfffffffe,
|
.db_preserve_mask = 0xfffffffe,
|
||||||
|
|
|
@ -47,7 +47,7 @@ void css_scp_suspend(const struct psci_power_state *target_state)
|
||||||
* if applicable. Since SCPI doesn't differentiate between OFF and suspend, we
|
* if applicable. Since SCPI doesn't differentiate between OFF and suspend, we
|
||||||
* call the suspend helper here.
|
* call the suspend helper here.
|
||||||
*/
|
*/
|
||||||
void css_scp_off(const psci_power_state_t *target_state)
|
void css_scp_off(const struct psci_power_state *target_state)
|
||||||
{
|
{
|
||||||
css_scp_suspend(target_state);
|
css_scp_suspend(target_state);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <delay_timer.h>
|
#include <delay_timer.h>
|
||||||
#include <platform.h>
|
#include <platform.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include "css_scp.h"
|
||||||
#include "../sds/sds.h"
|
#include "../sds/sds.h"
|
||||||
|
|
||||||
int css_scp_boot_image_xfer(void *image, unsigned int image_size)
|
int css_scp_boot_image_xfer(void *image, unsigned int image_size)
|
||||||
|
|
|
@ -80,7 +80,7 @@ typedef enum {
|
||||||
} sds_access_mode_t;
|
} sds_access_mode_t;
|
||||||
|
|
||||||
int sds_init(void);
|
int sds_init(void);
|
||||||
int sds_struct_exists(uint32_t structure_id);
|
int sds_struct_exists(unsigned int structure_id);
|
||||||
int sds_struct_read(uint32_t structure_id, unsigned int fld_off, void *data,
|
int sds_struct_read(uint32_t structure_id, unsigned int fld_off, void *data,
|
||||||
size_t size, sds_access_mode_t mode);
|
size_t size, sds_access_mode_t mode);
|
||||||
int sds_struct_write(uint32_t structure_id, unsigned int fld_off, void *data,
|
int sds_struct_write(uint32_t structure_id, unsigned int fld_off, void *data,
|
||||||
|
|
Loading…
Reference in New Issue