diff mbox series

ARM: Samsung: Add Exynos5422-based Odroid HC1 support

Message ID 20171103083030.31723-1-m.szyprowski@samsung.com
State Accepted
Commit 7090ead3f2a821c6f043ecbb5f7cecf6ffecdebb
Headers show
Series ARM: Samsung: Add Exynos5422-based Odroid HC1 support | expand

Commit Message

Marek Szyprowski Nov. 3, 2017, 8:30 a.m. UTC
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>
---
 board/samsung/common/exynos5-dt-types.c | 27 ++++++++++++++++++++-------
 board/samsung/common/exynos5-dt.c       |  4 ++--
 configs/odroid-xu3_defconfig            |  2 +-
 include/samsung/exynos5-dt-types.h      |  2 ++
 4 files changed, 25 insertions(+), 10 deletions(-)

Comments

Lukasz Majewski Nov. 4, 2017, 9:27 p.m. UTC | #1
Hi Marek,

> 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>

> ---

>  board/samsung/common/exynos5-dt-types.c | 27

> ++++++++++++++++++++------- board/samsung/common/exynos5-dt.c

> |  4 ++-- configs/odroid-xu3_defconfig            |  2 +-

>  include/samsung/exynos5-dt-types.h      |  2 ++

>  4 files changed, 25 insertions(+), 10 deletions(-)

> 

> diff --git a/board/samsung/common/exynos5-dt-types.c

> b/board/samsung/common/exynos5-dt-types.c index

> 48fd1f7d966..03d3a3112a1 100644 ---

> a/board/samsung/common/exynos5-dt-types.c +++

> b/board/samsung/common/exynos5-dt-types.c @@ -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

>   * 0.1     0     XU3 0.1

> - * 0.2   410     XU3 0.2 | XU3L - no DISPLAYPORT (probe I2C0:0x40 /

> INA231)

> - * 0.3  1408     XU4 0.1

> - * Use +10 % for ADC value tolerance.

> + * 0.2   372     XU3 0.2 | XU3L - no DISPLAYPORT (probe I2C0:0x40 /

> INA231)

> + * 0.3  1280     XU4 0.1

> + * 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[] = {

>  	{ EXYNOS5_BOARD_ODROID_XU3_REV01, 1, 10, "xu3" },

> -	{ EXYNOS5_BOARD_ODROID_XU3_REV02, 2, 410, "xu3" },

> -	{ EXYNOS5_BOARD_ODROID_XU4_REV01, 1, 1408, "xu4" },

> +	{ EXYNOS5_BOARD_ODROID_XU3_REV02, 2, 375, "xu3" },

> +	{ EXYNOS5_BOARD_ODROID_XU4_REV01, 1, 1293, "xu4" },

> +	{ EXYNOS5_BOARD_ODROID_HC1_REV01, 1, 1321, "hc1" },

>  	{ EXYNOS5_BOARD_ODROID_UNKNOWN, 0, 4095, "unknown" },

>  };

>  

> @@ -61,7 +66,7 @@ static int odroid_get_board_type(void)

>  		goto rev_default;

>  

>  	for (i = 0; i < ARRAY_SIZE(odroid_info); i++) {

> -		/* ADC tolerance: +20 % */

> +		/* ADC tolerance: +1% */

>  		if (adcval < odroid_info[i].adc_val)

>  			return odroid_info[i].board_type;

>  	}

> @@ -132,6 +137,14 @@ bool board_is_odroidxu4(void)

>  	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)

>  {

>  	if (gd->board_type == EXYNOS5_BOARD_GENERIC)

> diff --git a/board/samsung/common/exynos5-dt.c

> b/board/samsung/common/exynos5-dt.c index 0d17f30712c..a4eb3514051

> 100644 --- a/board/samsung/common/exynos5-dt.c

> +++ b/board/samsung/common/exynos5-dt.c

> @@ -176,7 +176,7 @@ char *get_dfu_alt_system(char *interface, char

> *devstr) {

>  	char *info = "Not supported!";

>  

> -	if (board_is_odroidxu4())

> +	if (board_is_odroidxu4() || board_is_odroidhc1())

>  		return info;

>  

>  	return env_get("dfu_alt_system");

> @@ -189,7 +189,7 @@ char *get_dfu_alt_boot(char *interface, char

> *devstr) char *alt_boot;

>  	int dev_num;

>  

> -	if (board_is_odroidxu4())

> +	if (board_is_odroidxu4() || board_is_odroidhc1())

>  		return info;

>  

>  	dev_num = simple_strtoul(devstr, NULL, 10);

> diff --git a/configs/odroid-xu3_defconfig

> b/configs/odroid-xu3_defconfig index 76b1d35b2aa..976c06a29d3 100644

> --- a/configs/odroid-xu3_defconfig

> +++ b/configs/odroid-xu3_defconfig

> @@ -1,7 +1,7 @@

>  CONFIG_ARM=y

>  CONFIG_ARCH_EXYNOS=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_DISTRO_DEFAULTS=y

>  # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set

> diff --git a/include/samsung/exynos5-dt-types.h

> b/include/samsung/exynos5-dt-types.h index 479e2e793dc..8e11af30d18

> 100644 --- a/include/samsung/exynos5-dt-types.h

> +++ b/include/samsung/exynos5-dt-types.h

> @@ -8,6 +8,7 @@ enum {

>  	EXYNOS5_BOARD_ODROID_XU3_REV01,

>  	EXYNOS5_BOARD_ODROID_XU3_REV02,

>  	EXYNOS5_BOARD_ODROID_XU4_REV01,

> +	EXYNOS5_BOARD_ODROID_HC1_REV01,

>  	EXYNOS5_BOARD_ODROID_UNKNOWN,

>  

>  	EXYNOS5_BOARD_COUNT,

> @@ -23,5 +24,6 @@ struct odroid_rev_info {

>  bool board_is_generic(void);

>  bool board_is_odroidxu3(void);

>  bool board_is_odroidxu4(void);

> +bool board_is_odroidhc1(void);

>  

>  #endif


Reviwed-by: Lukasz Majewski <lukma@denx.de>

Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
Krzysztof Kozlowski Nov. 10, 2017, 7:54 p.m. UTC | #2
On Fri, Nov 03, 2017 at 09:30:30AM +0100, Marek Szyprowski wrote:
> 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>
> ---
>  board/samsung/common/exynos5-dt-types.c | 27 ++++++++++++++++++++-------
>  board/samsung/common/exynos5-dt.c       |  4 ++--
>  configs/odroid-xu3_defconfig            |  2 +-
>  include/samsung/exynos5-dt-types.h      |  2 ++
>  4 files changed, 25 insertions(+), 10 deletions(-)
>

Tested on Odroid HC1 with tftpboot:
Tested-by: Krzysztof Kozlowski <krzk@kernel.org>

Best regards,
Krzysztof
Minkyu Kang Dec. 7, 2017, 7:53 a.m. UTC | #3
Hi,

2017. 11. 11. 05:19에 "Krzysztof Kozlowski" <krzk@kernel.org>님이 작성:

On Fri, Nov 03, 2017 at 09:30:30AM +0100, Marek Szyprowski wrote:
> 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>
> ---
>  board/samsung/common/exynos5-dt-types.c | 27 ++++++++++++++++++++-------
>  board/samsung/common/exynos5-dt.c       |  4 ++--
>  configs/odroid-xu3_defconfig            |  2 +-
>  include/samsung/exynos5-dt-types.h      |  2 ++
>  4 files changed, 25 insertions(+), 10 deletions(-)
>

Tested on Odroid HC1 with tftpboot:
Tested-by: Krzysztof Kozlowski <krzk@kernel.org>

Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/board/samsung/common/exynos5-dt-types.c b/board/samsung/common/exynos5-dt-types.c
index 48fd1f7d966..03d3a3112a1 100644
--- a/board/samsung/common/exynos5-dt-types.c
+++ b/board/samsung/common/exynos5-dt-types.c
@@ -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
  * 0.1     0     XU3 0.1
- * 0.2   410     XU3 0.2 | XU3L - no DISPLAYPORT (probe I2C0:0x40 / INA231)
- * 0.3  1408     XU4 0.1
- * Use +10 % for ADC value tolerance.
+ * 0.2   372     XU3 0.2 | XU3L - no DISPLAYPORT (probe I2C0:0x40 / INA231)
+ * 0.3  1280     XU4 0.1
+ * 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[] = {
 	{ EXYNOS5_BOARD_ODROID_XU3_REV01, 1, 10, "xu3" },
-	{ EXYNOS5_BOARD_ODROID_XU3_REV02, 2, 410, "xu3" },
-	{ EXYNOS5_BOARD_ODROID_XU4_REV01, 1, 1408, "xu4" },
+	{ EXYNOS5_BOARD_ODROID_XU3_REV02, 2, 375, "xu3" },
+	{ EXYNOS5_BOARD_ODROID_XU4_REV01, 1, 1293, "xu4" },
+	{ EXYNOS5_BOARD_ODROID_HC1_REV01, 1, 1321, "hc1" },
 	{ EXYNOS5_BOARD_ODROID_UNKNOWN, 0, 4095, "unknown" },
 };
 
@@ -61,7 +66,7 @@  static int odroid_get_board_type(void)
 		goto rev_default;
 
 	for (i = 0; i < ARRAY_SIZE(odroid_info); i++) {
-		/* ADC tolerance: +20 % */
+		/* ADC tolerance: +1% */
 		if (adcval < odroid_info[i].adc_val)
 			return odroid_info[i].board_type;
 	}
@@ -132,6 +137,14 @@  bool board_is_odroidxu4(void)
 	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)
 {
 	if (gd->board_type == EXYNOS5_BOARD_GENERIC)
diff --git a/board/samsung/common/exynos5-dt.c b/board/samsung/common/exynos5-dt.c
index 0d17f30712c..a4eb3514051 100644
--- a/board/samsung/common/exynos5-dt.c
+++ b/board/samsung/common/exynos5-dt.c
@@ -176,7 +176,7 @@  char *get_dfu_alt_system(char *interface, char *devstr)
 {
 	char *info = "Not supported!";
 
-	if (board_is_odroidxu4())
+	if (board_is_odroidxu4() || board_is_odroidhc1())
 		return info;
 
 	return env_get("dfu_alt_system");
@@ -189,7 +189,7 @@  char *get_dfu_alt_boot(char *interface, char *devstr)
 	char *alt_boot;
 	int dev_num;
 
-	if (board_is_odroidxu4())
+	if (board_is_odroidxu4() || board_is_odroidhc1())
 		return info;
 
 	dev_num = simple_strtoul(devstr, NULL, 10);
diff --git a/configs/odroid-xu3_defconfig b/configs/odroid-xu3_defconfig
index 76b1d35b2aa..976c06a29d3 100644
--- a/configs/odroid-xu3_defconfig
+++ b/configs/odroid-xu3_defconfig
@@ -1,7 +1,7 @@ 
 CONFIG_ARM=y
 CONFIG_ARCH_EXYNOS=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_DISTRO_DEFAULTS=y
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
diff --git a/include/samsung/exynos5-dt-types.h b/include/samsung/exynos5-dt-types.h
index 479e2e793dc..8e11af30d18 100644
--- a/include/samsung/exynos5-dt-types.h
+++ b/include/samsung/exynos5-dt-types.h
@@ -8,6 +8,7 @@  enum {
 	EXYNOS5_BOARD_ODROID_XU3_REV01,
 	EXYNOS5_BOARD_ODROID_XU3_REV02,
 	EXYNOS5_BOARD_ODROID_XU4_REV01,
+	EXYNOS5_BOARD_ODROID_HC1_REV01,
 	EXYNOS5_BOARD_ODROID_UNKNOWN,
 
 	EXYNOS5_BOARD_COUNT,
@@ -23,5 +24,6 @@  struct odroid_rev_info {
 bool board_is_generic(void);
 bool board_is_odroidxu3(void);
 bool board_is_odroidxu4(void);
+bool board_is_odroidhc1(void);
 
 #endif