blob: 253d9fac8110a2d977b947f99c1572a101800b9e [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _STM32_PLAT_H_
#define _STM32_PLAT_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <stdbool.h>
#include <seos.h>
enum PlatSleepDevID
{
Stm32sleepDevTim2, /* we use this for short sleeps in WFI mode */
Stm32sleepDevTim4, /* input capture uses this, potentially */
Stm32sleepDevTim5, /* input capture uses this, potentially */
Stm32sleepDevTim9, /* input capture uses this, potentially */
Stm32sleepWakeup, /* we use this to wakeup from AP */
Stm32sleepDevSpi2, /* we use this to prevent stop mode during spi2 xfers */
Stm32sleepDevSpi3, /* we use this to prevent stop mode during spi3 xfers */
Stm32sleepDevI2c1, /* we use this to prevent stop mode during i2c1 xfers */
Stm32sleepDevNum, //must be last always, and must be <= PLAT_MAX_SLEEP_DEVS
};
static inline const struct AppHdr* platGetInternalAppList(uint32_t *numAppsP)
{
extern const struct AppHdr __internal_app_start, __internal_app_end;
*numAppsP = &__internal_app_end - &__internal_app_start;
return &__internal_app_start;
}
static inline uint8_t* platGetSharedAreaInfo(uint32_t *areaSzP)
{
extern uint8_t __shared_start[];
extern uint8_t __shared_end[];
*areaSzP = __shared_end - __shared_start;
return __shared_start;
}
//used for dropbox
void* platGetPersistentRamStore(uint32_t *bytes);
static inline void platWake(void)
{
}
// GCC aligns 64-bit types on an 8-byte boundary, but Cortex-M4 only requires
// 4-byte alignment for these types. So limit the return value, as we're
// interested in the minimum alignment requirement.
#if defined(__GNUC__) && !defined(alignof)
#define alignof(type) ((__alignof__(type) > 4) ? 4 : __alignof__(type))
#endif
#ifdef __cplusplus
}
#endif
#endif