Commit 2229d582 authored by Ranjani Vaidyanathan's avatar Ranjani Vaidyanathan Committed by Jason Liu
Browse files

MLK16263 - Update uboot to the latest SCFW API



Update uboot to the latest SCFW based on commit:
"
commit 129c16e312334af7b07d71d6dccac1cda1808b93
Author: Ranjani Vaidyanathan <ranjani.vaidyanathan@nxp.com>
Date:   Thu Aug 24 16:50:59 2017 -0500

    Add support to change DRC clock rate.
"
Signed-off-by: default avatarRanjani Vaidyanathan <Ranjani.Vaidyanathan@nxp.com>
parent 593372c1
......@@ -37,10 +37,10 @@ typedef enum pad_func_e
PAD_FUNC_GET_ALL = 10, /*!< Index for pad_get_all() RPC call */
PAD_FUNC_SET = 15, /*!< Index for pad_set() RPC call */
PAD_FUNC_GET = 16, /*!< Index for pad_get() RPC call */
PAD_FUNC_SET_GP_28LPP = 3, /*!< Index for pad_set_gp_28lpp() RPC call */
PAD_FUNC_GET_GP_28LPP = 8, /*!< Index for pad_get_gp_28lpp() RPC call */
PAD_FUNC_SET_GP_28FDSOI = 11, /*!< Index for pad_set_gp_28fdsoi() RPC call */
PAD_FUNC_GET_GP_28FDSOI = 12, /*!< Index for pad_get_gp_28fdsoi() RPC call */
PAD_FUNC_SET_GP_28FDSOI_HSIC = 3, /*!< Index for pad_set_gp_28fdsoi_hsic() RPC call */
PAD_FUNC_GET_GP_28FDSOI_HSIC = 8, /*!< Index for pad_get_gp_28fdsoi_hsic() RPC call */
PAD_FUNC_SET_GP_28FDSOI_COMP = 13, /*!< Index for pad_set_gp_28fdsoi_comp() RPC call */
PAD_FUNC_GET_GP_28FDSOI_COMP = 14, /*!< Index for pad_get_gp_28fdsoi_comp() RPC call */
} pad_func_t;
......
......@@ -238,23 +238,19 @@ sc_err_t sc_pad_get(sc_ipc_t ipc, sc_pad_t pad, uint32_t *val)
return (sc_err_t) result;
}
sc_err_t sc_pad_set_gp_28lpp(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28lpp_dse_t dse, bool sre, bool hys, bool pe,
sc_pad_28lpp_ps_t ps)
sc_err_t sc_pad_set_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28fdsoi_dse_t dse, sc_pad_28fdsoi_ps_t ps)
{
sc_rpc_msg_t msg;
uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
RPC_SVC(&msg) = SC_RPC_SVC_PAD;
RPC_FUNC(&msg) = PAD_FUNC_SET_GP_28LPP;
RPC_FUNC(&msg) = PAD_FUNC_SET_GP_28FDSOI;
RPC_U16(&msg, 0) = pad;
RPC_U8(&msg, 2) = dse;
RPC_U8(&msg, 3) = ps;
RPC_U8(&msg, 4) = sre;
RPC_U8(&msg, 5) = hys;
RPC_U8(&msg, 6) = pe;
RPC_SIZE(&msg) = 3;
RPC_SIZE(&msg) = 2;
sc_call_rpc(ipc, &msg, false);
......@@ -262,16 +258,15 @@ sc_err_t sc_pad_set_gp_28lpp(sc_ipc_t ipc, sc_pad_t pad,
return (sc_err_t) result;
}
sc_err_t sc_pad_get_gp_28lpp(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28lpp_dse_t *dse, bool *sre, bool *hys, bool *pe,
sc_pad_28lpp_ps_t *ps)
sc_err_t sc_pad_get_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28fdsoi_dse_t *dse, sc_pad_28fdsoi_ps_t *ps)
{
sc_rpc_msg_t msg;
uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
RPC_SVC(&msg) = SC_RPC_SVC_PAD;
RPC_FUNC(&msg) = PAD_FUNC_GET_GP_28LPP;
RPC_FUNC(&msg) = PAD_FUNC_GET_GP_28FDSOI;
RPC_U16(&msg, 0) = pad;
RPC_SIZE(&msg) = 2;
......@@ -282,28 +277,26 @@ sc_err_t sc_pad_get_gp_28lpp(sc_ipc_t ipc, sc_pad_t pad,
*dse = RPC_U8(&msg, 0);
if (ps != NULL)
*ps = RPC_U8(&msg, 1);
if (sre != NULL)
*sre = RPC_U8(&msg, 2);
if (hys != NULL)
*hys = RPC_U8(&msg, 3);
if (pe != NULL)
*pe = RPC_U8(&msg, 4);
return (sc_err_t) result;
}
sc_err_t sc_pad_set_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28fdsoi_dse_t dse, sc_pad_28fdsoi_ps_t ps)
sc_err_t sc_pad_set_gp_28fdsoi_hsic(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28fdsoi_dse_t dse, bool hys, sc_pad_28fdsoi_pus_t pus,
bool pke, bool pue)
{
sc_rpc_msg_t msg;
uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
RPC_SVC(&msg) = SC_RPC_SVC_PAD;
RPC_FUNC(&msg) = PAD_FUNC_SET_GP_28FDSOI;
RPC_FUNC(&msg) = PAD_FUNC_SET_GP_28FDSOI_HSIC;
RPC_U16(&msg, 0) = pad;
RPC_U8(&msg, 2) = dse;
RPC_U8(&msg, 3) = ps;
RPC_SIZE(&msg) = 2;
RPC_U8(&msg, 3) = pus;
RPC_U8(&msg, 4) = hys;
RPC_U8(&msg, 5) = pke;
RPC_U8(&msg, 6) = pue;
RPC_SIZE(&msg) = 3;
sc_call_rpc(ipc, &msg, false);
......@@ -311,15 +304,16 @@ sc_err_t sc_pad_set_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
return (sc_err_t) result;
}
sc_err_t sc_pad_get_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28fdsoi_dse_t *dse, sc_pad_28fdsoi_ps_t *ps)
sc_err_t sc_pad_get_gp_28fdsoi_hsic(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28fdsoi_dse_t *dse, bool *hys, sc_pad_28fdsoi_pus_t *pus,
bool *pke, bool *pue)
{
sc_rpc_msg_t msg;
uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
RPC_SVC(&msg) = SC_RPC_SVC_PAD;
RPC_FUNC(&msg) = PAD_FUNC_GET_GP_28FDSOI;
RPC_FUNC(&msg) = PAD_FUNC_GET_GP_28FDSOI_HSIC;
RPC_U16(&msg, 0) = pad;
RPC_SIZE(&msg) = 2;
......@@ -328,14 +322,20 @@ sc_err_t sc_pad_get_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
result = RPC_R8(&msg);
if (dse != NULL)
*dse = RPC_U8(&msg, 0);
if (ps != NULL)
*ps = RPC_U8(&msg, 1);
if (pus != NULL)
*pus = RPC_U8(&msg, 1);
if (hys != NULL)
*hys = RPC_U8(&msg, 2);
if (pke != NULL)
*pke = RPC_U8(&msg, 3);
if (pue != NULL)
*pue = RPC_U8(&msg, 4);
return (sc_err_t) result;
}
sc_err_t sc_pad_set_gp_28fdsoi_comp(sc_ipc_t ipc, sc_pad_t pad,
uint8_t compen, bool fastfrz, uint8_t rasrcp, uint8_t rasrcn,
bool nasrc_sel)
bool nasrc_sel, bool psw_ovr)
{
sc_rpc_msg_t msg;
uint8_t result;
......@@ -349,6 +349,7 @@ sc_err_t sc_pad_set_gp_28fdsoi_comp(sc_ipc_t ipc, sc_pad_t pad,
RPC_U8(&msg, 4) = rasrcn;
RPC_U8(&msg, 5) = fastfrz;
RPC_U8(&msg, 6) = nasrc_sel;
RPC_U8(&msg, 7) = psw_ovr;
RPC_SIZE(&msg) = 3;
sc_call_rpc(ipc, &msg, false);
......@@ -359,7 +360,7 @@ sc_err_t sc_pad_set_gp_28fdsoi_comp(sc_ipc_t ipc, sc_pad_t pad,
sc_err_t sc_pad_get_gp_28fdsoi_comp(sc_ipc_t ipc, sc_pad_t pad,
uint8_t *compen, bool *fastfrz, uint8_t *rasrcp, uint8_t *rasrcn,
bool *nasrc_sel, bool *compok, uint8_t *nasrc)
bool *nasrc_sel, bool *compok, uint8_t *nasrc, bool *psw_ovr)
{
sc_rpc_msg_t msg;
uint8_t result;
......@@ -387,6 +388,8 @@ sc_err_t sc_pad_get_gp_28fdsoi_comp(sc_ipc_t ipc, sc_pad_t pad,
*nasrc_sel = RPC_U8(&msg, 5);
if (compok != NULL)
*compok = RPC_U8(&msg, 6);
if (psw_ovr != NULL)
*psw_ovr = RPC_U8(&msg, 7);
return (sc_err_t) result;
}
......
......@@ -37,6 +37,7 @@ typedef enum rm_func_e
RM_FUNC_MOVE_ALL = 7, /*!< Index for rm_move_all() RPC call */
RM_FUNC_ASSIGN_RESOURCE = 8, /*!< Index for rm_assign_resource() RPC call */
RM_FUNC_SET_RESOURCE_MOVABLE = 9, /*!< Index for rm_set_resource_movable() RPC call */
RM_FUNC_SET_SUBSYS_RSRC_MOVABLE = 28, /*!< Index for rm_set_subsys_rsrc_movable() RPC call */
RM_FUNC_SET_MASTER_ATTRIBUTES = 10, /*!< Index for rm_set_master_attributes() RPC call */
RM_FUNC_SET_MASTER_SID = 11, /*!< Index for rm_set_master_sid() RPC call */
RM_FUNC_SET_PERIPHERAL_PERMISSIONS = 12, /*!< Index for rm_set_peripheral_permissions() RPC call */
......@@ -45,7 +46,9 @@ typedef enum rm_func_e
RM_FUNC_IS_RESOURCE_PERIPHERAL = 15, /*!< Index for rm_is_resource_peripheral() RPC call */
RM_FUNC_GET_RESOURCE_INFO = 16, /*!< Index for rm_get_resource_info() RPC call */
RM_FUNC_MEMREG_ALLOC = 17, /*!< Index for rm_memreg_alloc() RPC call */
RM_FUNC_MEMREG_SPLIT = 29, /*!< Index for rm_memreg_split() RPC call */
RM_FUNC_MEMREG_FREE = 18, /*!< Index for rm_memreg_free() RPC call */
RM_FUNC_FIND_MEMREG = 30, /*!< Index for rm_find_memreg() RPC call */
RM_FUNC_ASSIGN_MEMREG = 19, /*!< Index for rm_assign_memreg() RPC call */
RM_FUNC_SET_MEMREG_PERMISSIONS = 20, /*!< Index for rm_set_memreg_permissions() RPC call */
RM_FUNC_IS_MEMREG_OWNED = 21, /*!< Index for rm_is_memreg_owned() RPC call */
......@@ -53,6 +56,7 @@ typedef enum rm_func_e
RM_FUNC_ASSIGN_PAD = 23, /*!< Index for rm_assign_pad() RPC call */
RM_FUNC_SET_PAD_MOVABLE = 24, /*!< Index for rm_set_pad_movable() RPC call */
RM_FUNC_IS_PAD_OWNED = 25, /*!< Index for rm_is_pad_owned() RPC call */
RM_FUNC_DUMP = 27, /*!< Index for rm_dump() RPC call */
} rm_func_t;
/* Functions */
......
......@@ -216,6 +216,25 @@ sc_err_t sc_rm_set_resource_movable(sc_ipc_t ipc, sc_rsrc_t resource_fst,
return (sc_err_t) result;
}
sc_err_t sc_rm_set_subsys_rsrc_movable(sc_ipc_t ipc, sc_rsrc_t resource,
bool movable)
{
sc_rpc_msg_t msg;
uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
RPC_SVC(&msg) = SC_RPC_SVC_RM;
RPC_FUNC(&msg) = RM_FUNC_SET_SUBSYS_RSRC_MOVABLE;
RPC_U16(&msg, 0) = resource;
RPC_U8(&msg, 2) = movable;
RPC_SIZE(&msg) = 2;
sc_call_rpc(ipc, &msg, false);
result = RPC_R8(&msg);
return (sc_err_t) result;
}
sc_err_t sc_rm_set_master_attributes(sc_ipc_t ipc, sc_rsrc_t resource,
sc_rm_spa_t sa, sc_rm_spa_t pa, bool smmu_bypass)
{
......@@ -370,6 +389,30 @@ sc_err_t sc_rm_memreg_alloc(sc_ipc_t ipc, sc_rm_mr_t *mr,
return (sc_err_t) result;
}
sc_err_t sc_rm_memreg_split(sc_ipc_t ipc, sc_rm_mr_t mr,
sc_rm_mr_t *mr_ret, sc_faddr_t addr_start, sc_faddr_t addr_end)
{
sc_rpc_msg_t msg;
uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
RPC_SVC(&msg) = SC_RPC_SVC_RM;
RPC_FUNC(&msg) = RM_FUNC_MEMREG_SPLIT;
RPC_U32(&msg, 0) = addr_start >> 32;
RPC_U32(&msg, 4) = addr_start;
RPC_U32(&msg, 8) = addr_end >> 32;
RPC_U32(&msg, 12) = addr_end;
RPC_U8(&msg, 16) = mr;
RPC_SIZE(&msg) = 6;
sc_call_rpc(ipc, &msg, false);
result = RPC_R8(&msg);
if (mr_ret != NULL)
*mr_ret = RPC_U8(&msg, 0);
return (sc_err_t) result;
}
sc_err_t sc_rm_memreg_free(sc_ipc_t ipc, sc_rm_mr_t mr)
{
sc_rpc_msg_t msg;
......@@ -387,6 +430,29 @@ sc_err_t sc_rm_memreg_free(sc_ipc_t ipc, sc_rm_mr_t mr)
return (sc_err_t) result;
}
sc_err_t sc_rm_find_memreg(sc_ipc_t ipc, sc_rm_mr_t *mr,
sc_faddr_t addr_start, sc_faddr_t addr_end)
{
sc_rpc_msg_t msg;
uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
RPC_SVC(&msg) = SC_RPC_SVC_RM;
RPC_FUNC(&msg) = RM_FUNC_FIND_MEMREG;
RPC_U32(&msg, 0) = addr_start >> 32;
RPC_U32(&msg, 4) = addr_start;
RPC_U32(&msg, 8) = addr_end >> 32;
RPC_U32(&msg, 12) = addr_end;
RPC_SIZE(&msg) = 5;
sc_call_rpc(ipc, &msg, false);
result = RPC_R8(&msg);
if (mr != NULL)
*mr = RPC_U8(&msg, 0);
return (sc_err_t) result;
}
sc_err_t sc_rm_assign_memreg(sc_ipc_t ipc, sc_rm_pt_t pt, sc_rm_mr_t mr)
{
sc_rpc_msg_t msg;
......@@ -519,5 +585,19 @@ bool sc_rm_is_pad_owned(sc_ipc_t ipc, sc_pad_t pad)
return (bool) result;
}
void sc_rm_dump(sc_ipc_t ipc)
{
sc_rpc_msg_t msg;
RPC_VER(&msg) = SC_RPC_VERSION;
RPC_SVC(&msg) = SC_RPC_SVC_RM;
RPC_FUNC(&msg) = RM_FUNC_DUMP;
RPC_SIZE(&msg) = 1;
sc_call_rpc(ipc, &msg, false);
return;
}
/**@}*/
......@@ -42,7 +42,11 @@
* info on these can be found in the associated Reference Manual.
*
* Pads are managed as a resource by the Resource Manager (RM). They have
* assigned owners and only the owners can configure the pads.
* assigned owners and only the owners can configure the pads. Some of the
* pads are reserved for use by the SCFW itself and this can be overriden
* with the implementation of board_config_sc(). Additionally, pads may
* be assigned to various other partitions via SCD or via the implementation
* of board_system_config().
*
* @{
*/
......@@ -84,16 +88,6 @@
#define SC_PAD_ISO_ON 3 /*!< ISO latched data is held */
/*@}*/
/*!
* @name Defines for sc_pad_28lpp_dse_t
*/
/*@{*/
#define SC_PAD_28LPP_DSE_x1 0 /*!< Drive strength x1 */
#define SC_PAD_28LPP_DSE_x4 1 /*!< Drive strength x4 */
#define SC_PAD_28LPP_DSE_x2 2 /*!< Drive strength x2 */
#define SC_PAD_28LPP_DSE_x6 3 /*!< Drive strength x6 */
/*@}*/
/*!
* @name Defines for sc_pad_28fdsoi_dse_t
*/
......@@ -105,23 +99,13 @@
#define SC_PAD_28FDSOI_DSE_18V_8MA 4 /*!< Drive strength of 8mA for 1.8v */
#define SC_PAD_28FDSOI_DSE_18V_10MA 5 /*!< Drive strength of 10mA for 1.8v */
#define SC_PAD_28FDSOI_DSE_18V_12MA 6 /*!< Drive strength of 12mA for 1.8v */
#define SC_PAD_28FDSOI_DSE_18V_HS 7 /*!< High-speed drive strength for 1.8v */
#define SC_PAD_28FDSOI_DSE_33V_2MA 0 /*!< Drive strength of 2mA for 3.3v */
#define SC_PAD_28FDSOI_DSE_33V_4MA 1 /*!< Drive strength of 4mA for 3.3v */
#define SC_PAD_28FDSOI_DSE_33V_8MA 2 /*!< Drive strength of 8mA for 3.3v */
#define SC_PAD_28FDSOI_DSE_33V_12MA 3 /*!< Drive strength of 12mA for 3.3v */
#define SC_PAD_28FDSOI_DSE_33V_HS 7 /*!< High-speed drive strength for 1.8v */
#define SC_PAD_28FDSOI_DSE_DV_LOW 0 /*!< Low drive strength for dual volt */
#define SC_PAD_28FDSOI_DSE_DV_HIGH 1 /*!< High drive strength for dual volt */
/*@}*/
/*!
* @name Defines for sc_pad_28lpp_ps_t
*/
/*@{*/
#define SC_PAD_28LPP_PS_PD 0 /*!< Pull down */
#define SC_PAD_28LPP_PS_PU_5K 1 /*!< 5K pull up */
#define SC_PAD_28LPP_PS_PU_47K 2 /*!< 47K pull up */
#define SC_PAD_28LPP_PS_PU_100K 3 /*!< 100K pull up */
#define SC_PAD_28FDSOI_DSE_DV_HIGH 0 /*!< High drive strength for dual volt */
#define SC_PAD_28FDSOI_DSE_DV_LOW 1 /*!< Low drive strength for dual volt */
/*@}*/
/*!
......@@ -134,6 +118,16 @@
#define SC_PAD_28FDSOI_PS_NONE 3 /*!< No pull (disabled) */
/*@}*/
/*!
* @name Defines for sc_pad_28fdsoi_pus_t
*/
/*@{*/
#define SC_PAD_28FDSOI_PUS_30K_PD 0 /*!< 30K pull-down */
#define SC_PAD_28FDSOI_PUS_100K_PU 1 /*!< 100K pull-up */
#define SC_PAD_28FDSOI_PUS_3K_PU 2 /*!< 3K pull-up */
#define SC_PAD_28FDSOI_PUS_30K_PU 3 /*!< 30K pull-up */
/*@}*/
/*!
* @name Defines for sc_pad_wakeup_t
*/
......@@ -165,12 +159,6 @@ typedef uint8_t sc_pad_config_t;
*/
typedef uint8_t sc_pad_iso_t;
/*!
* This type is used to declare a drive strength. Note it is specific
* to 28LPP.
*/
typedef uint8_t sc_pad_28lpp_dse_t;
/*!
* This type is used to declare a drive strength. Note it is specific
* to 28FDSOI. Also note that valid values depend on the pad type.
......@@ -179,15 +167,15 @@ typedef uint8_t sc_pad_28fdsoi_dse_t;
/*!
* This type is used to declare a pull select. Note it is specific
* to 28LPP.
* to 28FDSOI.
*/
typedef uint8_t sc_pad_28lpp_ps_t;
typedef uint8_t sc_pad_28fdsoi_ps_t;
/*!
* This type is used to declare a pull select. Note it is specific
* to 28FDSOI.
* This type is used to declare a pull-up select. Note it is specific
* to 28FDSOI HSIC pads.
*/
typedef uint8_t sc_pad_28fdsoi_ps_t;
typedef uint8_t sc_pad_28fdsoi_pus_t;
/*!
* This type is used to declare a wakeup mode of a pad.
......@@ -422,14 +410,11 @@ sc_err_t sc_pad_get(sc_ipc_t ipc, sc_pad_t pad, uint32_t *val);
*/
/*!
* This function configures the pad control specific to 28LPP.
* This function configures the pad control specific to 28FDSOI.
*
* @param[in] ipc IPC handle
* @param[in] pad pad to configure
* @param[in] dse drive strength
* @param[in] sre slew rate
* @param[in] hys hysteresis
* @param[in] pe pull enable
* @param[in] ps pull select
*
* @return Returns an error code (SC_ERR_NONE = success).
......@@ -441,19 +426,15 @@ sc_err_t sc_pad_get(sc_ipc_t ipc, sc_pad_t pad, uint32_t *val);
*
* Refer to the SoC [Pad List](@ref PADS) for valid pad values.
*/
sc_err_t sc_pad_set_gp_28lpp(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28lpp_dse_t dse, bool sre, bool hys, bool pe,
sc_pad_28lpp_ps_t ps);
sc_err_t sc_pad_set_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28fdsoi_dse_t dse, sc_pad_28fdsoi_ps_t ps);
/*!
* This function gets the pad control specific to 28LPP.
* This function gets the pad control specific to 28FDSOI.
*
* @param[in] ipc IPC handle
* @param[in] pad pad to query
* @param[out] dse pointer to return drive strength
* @param[out] sre pointer to return slew rate
* @param[out] hys pointer to return hysteresis
* @param[out] pe pointer to return pull enable
* @param[out] ps pointer to return pull select
*
* @return Returns an error code (SC_ERR_NONE = success).
......@@ -465,9 +446,8 @@ sc_err_t sc_pad_set_gp_28lpp(sc_ipc_t ipc, sc_pad_t pad,
*
* Refer to the SoC [Pad List](@ref PADS) for valid pad values.
*/
sc_err_t sc_pad_get_gp_28lpp(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28lpp_dse_t *dse, bool *sre, bool *hys, bool *pe,
sc_pad_28lpp_ps_t *ps);
sc_err_t sc_pad_get_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28fdsoi_dse_t *dse, sc_pad_28fdsoi_ps_t *ps);
/*!
* This function configures the pad control specific to 28FDSOI.
......@@ -475,7 +455,10 @@ sc_err_t sc_pad_get_gp_28lpp(sc_ipc_t ipc, sc_pad_t pad,
* @param[in] ipc IPC handle
* @param[in] pad pad to configure
* @param[in] dse drive strength
* @param[in] ps pull select
* @param[in] hys hysteresis
* @param[in] pus pull-up select
* @param[in] pke pull keeper enable
* @param[in] pue pull-up enable
*
* @return Returns an error code (SC_ERR_NONE = success).
*
......@@ -486,8 +469,9 @@ sc_err_t sc_pad_get_gp_28lpp(sc_ipc_t ipc, sc_pad_t pad,
*
* Refer to the SoC [Pad List](@ref PADS) for valid pad values.
*/
sc_err_t sc_pad_set_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28fdsoi_dse_t dse, sc_pad_28fdsoi_ps_t ps);
sc_err_t sc_pad_set_gp_28fdsoi_hsic(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28fdsoi_dse_t dse, bool hys, sc_pad_28fdsoi_pus_t pus,
bool pke, bool pue);
/*!
* This function gets the pad control specific to 28FDSOI.
......@@ -495,7 +479,10 @@ sc_err_t sc_pad_set_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
* @param[in] ipc IPC handle
* @param[in] pad pad to query
* @param[out] dse pointer to return drive strength
* @param[out] ps pointer to return pull select
* @param[out] hys pointer to return hysteresis
* @param[out] pus pointer to return pull-up select
* @param[out] pke pointer to return pull keeper enable
* @param[out] pue pointer to return pull-up enable
*
* @return Returns an error code (SC_ERR_NONE = success).
*
......@@ -506,8 +493,9 @@ sc_err_t sc_pad_set_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
*
* Refer to the SoC [Pad List](@ref PADS) for valid pad values.
*/
sc_err_t sc_pad_get_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28fdsoi_dse_t *dse, sc_pad_28fdsoi_ps_t *ps);
sc_err_t sc_pad_get_gp_28fdsoi_hsic(sc_ipc_t ipc, sc_pad_t pad,
sc_pad_28fdsoi_dse_t *dse, bool *hys, sc_pad_28fdsoi_pus_t *pus,
bool *pke, bool *pue);
/*!
* This function configures the compensation control specific to 28FDSOI.
......@@ -519,6 +507,7 @@ sc_err_t sc_pad_get_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
* @param[in] rasrcp compensation code for PMOS
* @param[in] rasrcn compensation code for NMOS
* @param[in] nasrc_sel NASRC read select
* @param[in] psw_ovr 2.5v override
*
* @return Returns an error code (SC_ERR_NONE = success).
*
......@@ -528,23 +517,27 @@ sc_err_t sc_pad_get_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
* - SC_ERR_UNAVAILABLE if process not applicable
*
* Refer to the SoC [Pad List](@ref PADS) for valid pad values.
*
* Note \a psw_ovr is only applicable to pads supporting 2.5 volt
* operation (e.g. some Ethernet pads).
*/
sc_err_t sc_pad_set_gp_28fdsoi_comp(sc_ipc_t ipc, sc_pad_t pad,
uint8_t compen, bool fastfrz, uint8_t rasrcp, uint8_t rasrcn,
bool nasrc_sel);
bool nasrc_sel, bool psw_ovr);
/*!
* This function gets the compensation control specific to 28FDSOI.
*
* @param[in] ipc IPC handle
* @param[in] pad pad to query
* @param[in] compen pointer to return compensation/freeze mode
* @param[in] fastfrz pointer to return fast freeze
* @param[in] rasrcp pointer to return compensation code for PMOS
* @param[in] rasrcn pointer to return compensation code for NMOS
* @param[in] nasrc_sel pointer to return NASRC read select
* @param[in] compok pointer to return compensation status
* @param[in] nasrc pointer to return NASRCP/NASRCN
* @param[out] compen pointer to return compensation/freeze mode
* @param[out] fastfrz pointer to return fast freeze
* @param[out] rasrcp pointer to return compensation code for PMOS
* @param[out] rasrcn pointer to return compensation code for NMOS
* @param[out] nasrc_sel pointer to return NASRC read select
* @param[out] compok pointer to return compensation status
* @param[out] nasrc pointer to return NASRCP/NASRCN
* @param[out] psw_ovr pointer to return the 2.5v override
*
* @return Returns an error code (SC_ERR_NONE = success).
*
......@@ -557,7 +550,7 @@ sc_err_t sc_pad_set_gp_28fdsoi_comp(sc_ipc_t ipc, sc_pad_t pad,
*/
sc_err_t sc_pad_get_gp_28fdsoi_comp(sc_ipc_t ipc, sc_pad_t pad,
uint8_t *compen, bool *fastfrz, uint8_t *rasrcp, uint8_t *rasrcn,
bool *nasrc_sel, bool *compok, uint8_t *nasrc);
bool *nasrc_sel, bool *compok, uint8_t *nasrc, bool *psw_ovr);
/* @} */
......
......@@ -226,6 +226,11 @@ sc_err_t sc_pm_get_sys_power_mode(sc_ipc_t ipc, sc_rm_pt_t pt,
* will return an error. Resources set to SC_PM_PW_MODE_ON will reflect the
* power mode of the partition and will change as that changes.
*
* Note some resources are still not accessible even when powered up if bus
* transactions go through a fabric not powered up. Examples of this are
* resources in display and capture subsystems which require the display
* controller or the imaging subsytem to be powered up first.
*
* @see sc_pm_set_sys_power_mode().
*/
sc_err_t sc_pm_set_resource_power_mode(sc_ipc_t ipc, sc_rsrc_t resource,
......
......@@ -332,6 +332,25 @@ sc_err_t sc_rm_assign_resource(sc_ipc_t ipc, sc_rm_pt_t pt,
sc_err_t sc_rm_set_resource_movable(sc_ipc_t ipc, sc_rsrc_t resource_fst,
sc_rsrc_t resource_lst, bool movable);
/*!
* This function flags all of a subsystem's resources as movable
* or not.
*
* @param[in] ipc IPC handle
* @param[in] resource resource to use to identify subsystem
* @param[in] movable movable flag (true) is movable
*
* @return Returns an error code (SC_ERR_NONE = success).
*
* Return errors:
* - SC_ERR_PARM if a function argument is out of range
*
* Note \a resource is used to find the associated subsystem. Only
* resources owned by the caller are set.
*/
sc_err_t sc_rm_set_subsys_rsrc_movable(sc_ipc_t ipc, sc_rsrc_t resource,
bool movable);
/*!
* This function sets attributes for a resource which is a bus master (i.e.
* capable of DMA).
......@@ -490,6 +509,33 @@ sc_err_t sc_rm_get_resource_info(sc_ipc_t ipc, sc_rsrc_t resource,
sc_err_t sc_rm_memreg_alloc(sc_ipc_t ipc, sc_rm_mr_t *mr,
sc_faddr_t addr_start, sc_faddr_t addr_end);
/*!
* This function requests that the SC split a memory region.
*
* @param[in] ipc IPC handle
* @param[in] mr handle of memory region to split
* @param[out] mr_ret return handle for new region; used for
* subsequent function calls
* associated with this region
* @param[in] addr_start start address of region (physical)
* @param[in] addr_end end address of region (physical)
*
* @return Returns an error code (SC_ERR_NONE = success).
*
* Return errors:
* - SC_ERR_PARM if the new memory region is not start/end part of mr,
* - SC_ERR_LOCKED if caller's partition is locked,
* - SC_ERR_PARM if the new memory region spans multiple existing regions,
* - SC_ERR_NOACCESS if caller's partition does not own the memory containing
* the new region,