mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-06-29 01:51:55 +00:00
ARM: Samsung: Add Exynos5422-based Odroid HC1 support
Odroid HC1 board is based on Odroid XU4 board, but it has no HDMI, no eMMC, no build-in USB3.0 hub, no extension port pins, and no GPIO button. USB3.0 ports are used for build-in JMicron USB to SATA bridge and Gigabit R8152 ethernet chips. HC1 uses only passive cooling. This patch also updates Odroid's ADCmax array and reduces ADC tolerance to 1% to ensure that XU4 and HC1 revisions are properly detected. I've tested this with XU3, XU3-lite, XU4 and HC1 boards. In case of my test boards I got following values from ADC register: 372, 370, 1281 and 1313. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Reviewed-by: Lukasz Majewski <lukma@denx.de> Tested-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
This commit is contained in:
parent
d8b385b708
commit
7090ead3f2
4 changed files with 25 additions and 10 deletions
|
@ -25,17 +25,22 @@ static const struct udevice_id board_ids[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Odroix XU3/4 board revisions:
|
* Odroix XU3/XU4/HC1 board revisions (from HC1_MAIN_REV0.1_20170630.pdf):
|
||||||
* Rev ADCmax Board
|
* Rev ADCmax Board
|
||||||
* 0.1 0 XU3 0.1
|
* 0.1 0 XU3 0.1
|
||||||
* 0.2 410 XU3 0.2 | XU3L - no DISPLAYPORT (probe I2C0:0x40 / INA231)
|
* 0.2 372 XU3 0.2 | XU3L - no DISPLAYPORT (probe I2C0:0x40 / INA231)
|
||||||
* 0.3 1408 XU4 0.1
|
* 0.3 1280 XU4 0.1
|
||||||
* Use +10 % for ADC value tolerance.
|
* 0.4 739 XU4 0.2
|
||||||
|
* 0.5 1016 XU4+Air0.1 (Passive cooling)
|
||||||
|
* 0.6 1308 XU4S 0.1 (HC1)
|
||||||
|
* Use +1% for ADC value tolerance in the array below, the code loops until
|
||||||
|
* the measured ADC value is lower than then ADCmax from the array.
|
||||||
*/
|
*/
|
||||||
struct odroid_rev_info odroid_info[] = {
|
struct odroid_rev_info odroid_info[] = {
|
||||||
{ EXYNOS5_BOARD_ODROID_XU3_REV01, 1, 10, "xu3" },
|
{ EXYNOS5_BOARD_ODROID_XU3_REV01, 1, 10, "xu3" },
|
||||||
{ EXYNOS5_BOARD_ODROID_XU3_REV02, 2, 410, "xu3" },
|
{ EXYNOS5_BOARD_ODROID_XU3_REV02, 2, 375, "xu3" },
|
||||||
{ EXYNOS5_BOARD_ODROID_XU4_REV01, 1, 1408, "xu4" },
|
{ EXYNOS5_BOARD_ODROID_XU4_REV01, 1, 1293, "xu4" },
|
||||||
|
{ EXYNOS5_BOARD_ODROID_HC1_REV01, 1, 1321, "hc1" },
|
||||||
{ EXYNOS5_BOARD_ODROID_UNKNOWN, 0, 4095, "unknown" },
|
{ EXYNOS5_BOARD_ODROID_UNKNOWN, 0, 4095, "unknown" },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -61,7 +66,7 @@ static int odroid_get_board_type(void)
|
||||||
goto rev_default;
|
goto rev_default;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(odroid_info); i++) {
|
for (i = 0; i < ARRAY_SIZE(odroid_info); i++) {
|
||||||
/* ADC tolerance: +20 % */
|
/* ADC tolerance: +1% */
|
||||||
if (adcval < odroid_info[i].adc_val)
|
if (adcval < odroid_info[i].adc_val)
|
||||||
return odroid_info[i].board_type;
|
return odroid_info[i].board_type;
|
||||||
}
|
}
|
||||||
|
@ -132,6 +137,14 @@ bool board_is_odroidxu4(void)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool board_is_odroidhc1(void)
|
||||||
|
{
|
||||||
|
if (gd->board_type == EXYNOS5_BOARD_ODROID_HC1_REV01)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool board_is_generic(void)
|
bool board_is_generic(void)
|
||||||
{
|
{
|
||||||
if (gd->board_type == EXYNOS5_BOARD_GENERIC)
|
if (gd->board_type == EXYNOS5_BOARD_GENERIC)
|
||||||
|
|
|
@ -176,7 +176,7 @@ char *get_dfu_alt_system(char *interface, char *devstr)
|
||||||
{
|
{
|
||||||
char *info = "Not supported!";
|
char *info = "Not supported!";
|
||||||
|
|
||||||
if (board_is_odroidxu4())
|
if (board_is_odroidxu4() || board_is_odroidhc1())
|
||||||
return info;
|
return info;
|
||||||
|
|
||||||
return env_get("dfu_alt_system");
|
return env_get("dfu_alt_system");
|
||||||
|
@ -189,7 +189,7 @@ char *get_dfu_alt_boot(char *interface, char *devstr)
|
||||||
char *alt_boot;
|
char *alt_boot;
|
||||||
int dev_num;
|
int dev_num;
|
||||||
|
|
||||||
if (board_is_odroidxu4())
|
if (board_is_odroidxu4() || board_is_odroidhc1())
|
||||||
return info;
|
return info;
|
||||||
|
|
||||||
dev_num = simple_strtoul(devstr, NULL, 10);
|
dev_num = simple_strtoul(devstr, NULL, 10);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_ARCH_EXYNOS=y
|
CONFIG_ARCH_EXYNOS=y
|
||||||
CONFIG_ARCH_EXYNOS5=y
|
CONFIG_ARCH_EXYNOS5=y
|
||||||
CONFIG_IDENT_STRING=" for ODROID-XU3"
|
CONFIG_IDENT_STRING=" for ODROID-XU3/XU4/HC1"
|
||||||
CONFIG_DEFAULT_DEVICE_TREE="exynos5422-odroidxu3"
|
CONFIG_DEFAULT_DEVICE_TREE="exynos5422-odroidxu3"
|
||||||
CONFIG_DISTRO_DEFAULTS=y
|
CONFIG_DISTRO_DEFAULTS=y
|
||||||
# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
||||||
|
|
|
@ -8,6 +8,7 @@ enum {
|
||||||
EXYNOS5_BOARD_ODROID_XU3_REV01,
|
EXYNOS5_BOARD_ODROID_XU3_REV01,
|
||||||
EXYNOS5_BOARD_ODROID_XU3_REV02,
|
EXYNOS5_BOARD_ODROID_XU3_REV02,
|
||||||
EXYNOS5_BOARD_ODROID_XU4_REV01,
|
EXYNOS5_BOARD_ODROID_XU4_REV01,
|
||||||
|
EXYNOS5_BOARD_ODROID_HC1_REV01,
|
||||||
EXYNOS5_BOARD_ODROID_UNKNOWN,
|
EXYNOS5_BOARD_ODROID_UNKNOWN,
|
||||||
|
|
||||||
EXYNOS5_BOARD_COUNT,
|
EXYNOS5_BOARD_COUNT,
|
||||||
|
@ -23,5 +24,6 @@ struct odroid_rev_info {
|
||||||
bool board_is_generic(void);
|
bool board_is_generic(void);
|
||||||
bool board_is_odroidxu3(void);
|
bool board_is_odroidxu3(void);
|
||||||
bool board_is_odroidxu4(void);
|
bool board_is_odroidxu4(void);
|
||||||
|
bool board_is_odroidhc1(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue