Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
0709efbe
Commit
0709efbe
authored
Sep 23, 2018
by
Jorge Ramirez-Ortiz
Committed by
ldts
Oct 17, 2018
Browse files
rcar_gen3: drivers: rom api
Signed-off-by:
ldts
<
jramirez@baylibre.com
>
parent
32c70e40
Changes
2
Show whitespace changes
Inline
Side-by-side
drivers/renesas/rcar/rom/rom_api.c
0 → 100644
View file @
0709efbe
/*
* Copyright (c) 2015-2018, Renesas Electronics Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <mmio.h>
#include <stdint.h>
#include "rcar_def.h"
#include "rom_api.h"
typedef
uint32_t
(
*
rom_secure_boot_api_f
)
(
uint32_t
*
key
,
uint32_t
*
cert
,
rom_read_flash_f
pFuncReadFlash
);
typedef
uint32_t
(
*
rom_get_lcs_api_f
)
(
uint32_t
*
lcs
);
#define OLD_API_TABLE1 (0U)
/* H3 Ver.1.0/Ver.1.1 */
#define OLD_API_TABLE2 (1U)
/* H3 Ver.2.0 */
#define OLD_API_TABLE3 (2U)
/* M3 Ver.1.0 */
#define NEW_API_TABLE (3U)
/* H3 Ver.3.0, M3 Ver.1.1 or later, M3N, E3 */
#define API_TABLE_MAX (4U)
/* table max */
/* Later than H3 Ver.2.0 */
static
uint32_t
get_table_index
(
void
)
{
uint32_t
product
;
uint32_t
cut_ver
;
uint32_t
index
;
product
=
mmio_read_32
(
RCAR_PRR
)
&
RCAR_PRODUCT_MASK
;
cut_ver
=
mmio_read_32
(
RCAR_PRR
)
&
RCAR_CUT_MASK
;
switch
(
product
)
{
case
RCAR_PRODUCT_H3
:
if
(
cut_ver
==
RCAR_CUT_VER10
)
index
=
OLD_API_TABLE1
;
else
if
(
cut_ver
==
RCAR_CUT_VER11
)
index
=
OLD_API_TABLE1
;
else
if
(
cut_ver
==
RCAR_CUT_VER20
)
index
=
OLD_API_TABLE2
;
else
/* Later than H3 Ver.2.0 */
index
=
NEW_API_TABLE
;
break
;
case
RCAR_PRODUCT_M3
:
if
(
cut_ver
==
RCAR_CUT_VER10
)
index
=
OLD_API_TABLE3
;
else
/* M3 Ver.1.1 or later */
index
=
NEW_API_TABLE
;
break
;
default:
index
=
NEW_API_TABLE
;
break
;
}
return
index
;
}
uint32_t
rcar_rom_secure_boot_api
(
uint32_t
*
key
,
uint32_t
*
cert
,
rom_read_flash_f
read_flash
)
{
static
const
uintptr_t
rom_api_table
[
API_TABLE_MAX
]
=
{
0xEB10DD64U
,
/* H3 Ver.1.0/Ver.1.1 */
0xEB116ED4U
,
/* H3 Ver.2.0 */
0xEB1102FCU
,
/* M3 Ver.1.0 */
0xEB100180U
/* H3 Ver.3.0, M3 Ver.1.1 or later, M3N, E3 */
};
rom_secure_boot_api_f
secure_boot
;
uint32_t
index
;
index
=
get_table_index
();
secure_boot
=
(
rom_secure_boot_api_f
)
rom_api_table
[
index
];
return
secure_boot
(
key
,
cert
,
read_flash
);
}
uint32_t
rcar_rom_get_lcs
(
uint32_t
*
lcs
)
{
static
const
uintptr_t
rom_get_lcs_table
[
API_TABLE_MAX
]
=
{
0xEB10DFE0U
,
/* H3 Ver.1.0/Ver.1.1 */
0xEB117150U
,
/* H3 Ver.2.0 */
0xEB110578U
,
/* M3 Ver.1.0 */
0xEB10018CU
/* H3 Ver.3.0, M3 Ver.1.1 or later, M3N, E3 */
};
rom_get_lcs_api_f
get_lcs
;
uint32_t
index
;
index
=
get_table_index
();
get_lcs
=
(
rom_get_lcs_api_f
)
rom_get_lcs_table
[
index
];
return
get_lcs
(
lcs
);
}
drivers/renesas/rcar/rom/rom_api.h
0 → 100644
View file @
0709efbe
/*
* Copyright (c) 2015-2017, Renesas Electronics Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef ROM_API_H__
#define ROM_API_H__
#include <stdint.h>
#define SBROM_OK (0x00000000U)
#define SBROM_ILLEGAL_INPUT_PARAM_ERR (0x0B000001U)
#define SBROM_ILLEGAL_OEM_HASH_VALUE_ERR (0x0B000008U)
#define SBROM_ILLEGAL_LCS_FOR_OPERATION_ERR (0x0B000010U)
#define SBROM_HASH_NOT_PROGRAMMED_ERR (0x0B000100U)
#define SBROM_PUB_KEY_HASH_VALIDATION_FAILURE (0xF1000006U)
#define SBROM_RSA_SIG_VERIFICATION_FAILED (0xF1000007U)
#define LCS_CM (0x0U)
#define LCS_DM (0x1U)
#define LCS_SD (0x3U)
#define LCS_SE (0x5U)
#define LCS_FA (0x7U)
typedef
uint32_t
(
*
rom_read_flash_f
)
(
uint64_t
src
,
uint8_t
*
dst
,
uint32_t
len
);
uint32_t
rcar_rom_secure_boot_api
(
uint32_t
*
key
,
uint32_t
*
cert
,
rom_read_flash_f
f
);
uint32_t
rcar_rom_get_lcs
(
uint32_t
*
lcs
);
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment