All of lore.kernel.org
 help / color / mirror / Atom feed
From: Przemyslaw Marczak <p.marczak@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 7/7] exynos5-dt: add board detection for Odroid XU3/XU3L/XU4.
Date: Fri, 04 Sep 2015 17:04:35 +0200	[thread overview]
Message-ID: <55E9B303.40607@samsung.com> (raw)
In-Reply-To: <CAPnjgZ0zh9tPpHQ2RfFo6Rg95djKkQ+UKThYSKGBbe1yQw+YXA@mail.gmail.com>

Hello,

On 09/01/2015 02:33 AM, Simon Glass wrote:
> Hi Przemyslaw,
>
> On 28 August 2015 at 07:59, Przemyslaw Marczak <p.marczak@samsung.com> wrote:
>> There are few revisions of Odroid XU3/XU4:
>>   Rev   ADC   Board
>>   0.1     0   XU3 0.1
>>   0.2   372   XU3 0.2 | XU3L - no DISPLAYPORT
>>   0.3   739   XU4 0.1
>>
>> This commit adds implementation of functions:
>> - set_board_type()     - read ADC and set type
>> - get_board_rev()      - returns board revision: 1..3
>> - board_is_odroidxu3() - returns bool
>> - board_is_odroidxu4() - returns bool
>> - get_board_type()     - returns board type string
>>
>> After I2C controller init, the last function can check
>> if the board is "Lite" variant for XU3, by probing chip
>> 0x40 on I2C0 (INA231 - exists only on non-lite).
>> This is useful for setting fdt file name at misc_init_r().
>>
>> The enabled configs:
>> - CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
>> - CONFIG_ODROID_REV_AIN
>> - CONFIG_REVISION_TAG
>> - CONFIG_MISC_INIT_R
>> - CONFIG_BOARD_TYPES
>>
>> This also redefines CONFIG_SYS_BOARD to "odroid".
>>
>> Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
>> ---
>>   board/samsung/common/exynos5-dt.c | 114 ++++++++++++++++++++++++++++++++++++++
>>   include/configs/odroid_xu3.h      |  12 ++++
>>   2 files changed, 126 insertions(+)
>>
>> diff --git a/board/samsung/common/exynos5-dt.c b/board/samsung/common/exynos5-dt.c
>> index 7d1b88a..41141df 100644
>> --- a/board/samsung/common/exynos5-dt.c
>> +++ b/board/samsung/common/exynos5-dt.c
>> @@ -18,6 +18,7 @@
>>   #include <usb.h>
>>   #include <video_bridge.h>
>>   #include <asm/gpio.h>
>> +#include <asm/arch/adc.h>
>>   #include <asm/arch/cpu.h>
>>   #include <asm/arch/dwmmc.h>
>>   #include <asm/arch/mmc.h>
>> @@ -28,6 +29,7 @@
>>   #include <power/max77686_pmic.h>
>>   #include <power/regulator.h>
>>   #include <power/s5m8767.h>
>> +#include <power/s2mps11.h>
>>   #include <tmu.h>
>>
>>   DECLARE_GLOBAL_DATA_PTR;
>> @@ -360,3 +362,115 @@ char *get_dfu_alt_boot(char *interface, char *devstr)
>>          return alt_boot;
>>   }
>>   #endif
>> +
>> +#ifdef CONFIG_REVISION_TAG
>
> Can we check the compatible string instead? It would be good to avoid
> #ifdef in common code.
>

Ok, I will add some lines to check it.

>> +/**
>> + * Odroix XU3/4 board revisions:
>> + * Rev   ADC   Board
>> + * 0.1     0   XU3 0.1
>> + * 0.2   372   XU3 0.2 | XU3L - no DISPLAYPORT (probe I2C0:0x40 / INA231)
>> + * 0.3   739   XU4 0.1
>> + * Use +/-20 for ADC value tolerance.
>> + */
>> +enum {
>> +       ODROID_XU3_REV01,
>> +       ODROID_XU3_REV02,
>> +       ODROID_XU4_REV01,
>> +       ODROID_UNKNOWN_REV,
>> +       ODROID_REV_COUNT,
>> +};
>> +
>> +struct odroid_type {
>> +       int board_type;
>> +       int rev;
>> +       int adc_val;
>> +       const char *name;
>> +};
>> +
>> +struct odroid_type odroid_type[] = {
>> +       { ODROID_XU3_REV01, 1, 0, "xu3" },
>> +       { ODROID_XU3_REV02, 2, 372, "xu3" },
>> +       { ODROID_XU4_REV01, 1, 739, "xu4" },
>> +       { ODROID_UNKNOWN_REV, 0, 4095, "unknown" },
>> +};
>> +
>> +bool board_is_odroidxu3(void)
>> +{
>> +       if (gd->board_type < ODROID_XU4_REV01)
>> +               return true;
>> +
>> +       return false;
>> +}
>> +
>> +bool board_is_odroidxu4(void)
>> +{
>> +       if (gd->board_type > ODROID_XU3_REV02)
>> +               return true;
>> +
>> +       return false;
>> +}
>> +
>> +int set_board_type(void)
>> +{
>> +       int adcval, i;
>> +
>> +       adcval = exynos_adc_read_channel(CONFIG_ODROID_REV_AIN);
>> +       if (adcval < 0)
>> +               return adcval;
>> +
>> +       for (i = 0; i < ODROID_REV_COUNT; i++) {
>> +               /* ADC tolerance: +20 */
>> +               if (adcval < odroid_type[i].adc_val + 20) {
>> +                       gd->board_type = i;
>> +                       return i;
>> +               }
>> +       }
>> +
>> +       return ODROID_UNKNOWN_REV;
>> +}
>> +
>> +int get_board_rev(void)
>> +{
>> +       return odroid_type[gd->board_type].rev;
>> +}
>> +
>> +/**
>> + * get_board_type - returns pointer to one of the board type string.
>> + * Board types: "xu3", "xu3-lite", "xu4". However the "xu3itel" can be
>> + * detected only when the i2c controller is ready to use. Fortunately,
>> + * XU3 and XU3L are compatible, and the information about board lite
>> + * revision is needed before boot linux, to set proper environment
>> + * variable: $fdtfile.
>> + */
>> +const char *get_board_type(void)
>> +{
>> +       const char *type_xu3l = "xu3-lite";
>> +       struct udevice *dev, *chip;
>> +       int ret;
>> +
>> +       if (gd->board_type != ODROID_XU3_REV02)
>> +               goto exit;
>> +
>> +       ret = pmic_get("s2mps11", &dev);
>> +       if (ret)
>> +               goto exit;
>> +
>> +       /* Enable LDO26: 3.0V */
>> +       ret = pmic_reg_write(dev, S2MPS11_REG_L26CTRL,
>> +                            S2MPS11_LDO26_ENABLE);
>> +       if (ret)
>> +               goto exit;
>> +
>> +       /* Check XU3Lite by probe INA231 I2C0:0x40 */
>> +       ret = uclass_get_device(UCLASS_I2C, 0, &dev);
>> +       if (ret)
>> +               goto exit;
>> +
>> +       ret = dm_i2c_probe(dev, 0x40, 0x0, &chip);
>> +       if (ret)
>> +               return type_xu3l;
>> +
>> +exit:
>> +       return odroid_type[gd->board_type].name;
>> +}
>> +#endif
>> diff --git a/include/configs/odroid_xu3.h b/include/configs/odroid_xu3.h
>> index 3c70158..648e48b 100644
>> --- a/include/configs/odroid_xu3.h
>> +++ b/include/configs/odroid_xu3.h
>> @@ -94,6 +94,8 @@
>>          "boot.scr fat 0 1;"                 \
>>          "boot.cmd fat 0 1;"                 \
>>          "exynos5422-odroidxu3.dtb fat 0 1;" \
>> +       "exynos5422-odroidxu3-lite.dtb fat 0 1;" \
>> +       "exynos5422-odroidxu4.dtb fat 0 1;" \
>>          "boot part 0 1;"                    \
>>          "root part 0 2\0"
>>
>> @@ -113,9 +115,19 @@
>>
>>   /* Enable: board/samsung/common/misc.c to use set_dfu_alt_info() */
>>   #define CONFIG_MISC_COMMON
>> +#define CONFIG_MISC_INIT_R
>>   #define CONFIG_SET_DFU_ALT_INFO
>>   #define CONFIG_SET_DFU_ALT_BUF_LEN     (SZ_1K)
>>
>> +/* Set soc_rev, soc_id, board_rev, boardname, fdtfile */
>> +#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
>> +#define CONFIG_ODROID_REV_AIN                  9
>> +#define CONFIG_REVISION_TAG
>> +#define CONFIG_BOARD_TYPES
>> +
>> +#undef CONFIG_SYS_BOARD
>> +#define CONFIG_SYS_BOARD       "odroid"
>> +
>>   /* Define new extra env settings, including DFU settings */
>>   #undef CONFIG_EXTRA_ENV_SETTINGS
>>   #define CONFIG_EXTRA_ENV_SETTINGS \
>> --
>> 1.9.1
>>
>
> Regards,
> Simon
>

Thanks,
-- 
Przemyslaw Marczak
Samsung R&D Institute Poland
Samsung Electronics
p.marczak at samsung.com

  reply	other threads:[~2015-09-04 15:04 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-28 13:59 [U-Boot] [PATCH 0/7] Add board detection for Odroid XU3 / XU3Lite / XU4 Przemyslaw Marczak
2015-08-28 13:59 ` [U-Boot] [PATCH 1/7] s5p: cpu_info: use defined CPU name if available Przemyslaw Marczak
2015-09-01  0:33   ` Simon Glass
2015-09-04 15:04     ` Przemyslaw Marczak
2015-08-28 13:59 ` [U-Boot] [PATCH 2/7] peach-pi: define CPU name for SoC Exynos5800 Przemyslaw Marczak
2015-08-28 13:59 ` [U-Boot] [PATCH 3/7] Exynos5422/5800: set cpu id to 0x5422 Przemyslaw Marczak
2015-09-01  0:33   ` Simon Glass
2015-08-28 13:59 ` [U-Boot] [PATCH 4/7] dm: pmic: add s2mps11 PMIC I/O driver Przemyslaw Marczak
2015-09-01  0:33   ` Simon Glass
2015-09-04 15:04     ` Przemyslaw Marczak
2015-09-07  0:11   ` Minkyu Kang
2015-09-09 10:31     ` Przemyslaw Marczak
2015-08-28 13:59 ` [U-Boot] [PATCH 5/7] odroid-xu3: enable s2mps11 PMIC support Przemyslaw Marczak
2015-09-01  0:33   ` Simon Glass
2015-08-28 13:59 ` [U-Boot] [PATCH 6/7] Exynos: add internal ADC driver Przemyslaw Marczak
2015-09-01  0:33   ` Simon Glass
2015-09-04 15:04     ` Przemyslaw Marczak
2015-08-28 13:59 ` [U-Boot] [PATCH 7/7] exynos5-dt: add board detection for Odroid XU3/XU3L/XU4 Przemyslaw Marczak
2015-09-01  0:33   ` Simon Glass
2015-09-04 15:04     ` Przemyslaw Marczak [this message]
2015-08-30 19:03 ` [U-Boot] [PATCH 0/7] Add board detection for Odroid XU3 / XU3Lite / XU4 Anand Moon
2015-08-31 12:17   ` Przemyslaw Marczak
2015-10-21  1:58   ` Siarhei Siamashka
2015-10-21  9:47     ` Anand Moon
2015-10-21  9:57     ` Anand Moon
2015-10-21 10:13       ` Przemyslaw Marczak
2015-08-31 13:22 ` Simon Glass
2015-08-31 18:29   ` Przemyslaw Marczak
2015-08-31 23:13     ` Simon Glass
2015-09-04 15:04       ` Przemyslaw Marczak
2015-09-21 12:26 ` [U-Boot] [PATCH V2 00/11] " Przemyslaw Marczak
2015-09-21 12:26   ` [U-Boot] [PATCH V2 01/11] samsung: board/misc: check returned pointer for get_board_type() calls Przemyslaw Marczak
2015-10-03 14:27     ` Simon Glass
2015-09-21 12:26   ` [U-Boot] [PATCH V2 02/11] s5p: cpu_info: print "cpu-model" if exists in dts Przemyslaw Marczak
2015-10-03 14:27     ` Simon Glass
2015-10-13 11:57       ` Przemyslaw Marczak
2015-09-21 12:26   ` [U-Boot] [PATCH V2 03/11] Peach-Pi: dts: add cpu-model string Przemyslaw Marczak
2015-10-03 14:28     ` Simon Glass
2015-10-13 11:57       ` Przemyslaw Marczak
2015-09-21 12:26   ` [U-Boot] [PATCH V2 04/11] Exynos5422/5800: set cpu id to 0x5422 Przemyslaw Marczak
2015-09-21 12:47     ` Jaehoon Chung
2015-09-21 13:01       ` Przemyslaw Marczak
2015-09-21 12:26   ` [U-Boot] [PATCH V2 05/11] dm: pmic: add s2mps11 PMIC I/O driver Przemyslaw Marczak
2015-10-03 14:28     ` Simon Glass
2015-10-13 11:57       ` Przemyslaw Marczak
2015-09-21 12:26   ` [U-Boot] [PATCH V2 06/11] dm: adc: add simple ADC uclass implementation Przemyslaw Marczak
2015-10-03 14:28     ` Simon Glass
2015-10-13 11:57       ` Przemyslaw Marczak
2015-09-21 12:26   ` [U-Boot] [PATCH V2 07/11] dm: adc: add Exynos54xx compatible ADC driver Przemyslaw Marczak
2015-10-03 14:28     ` Simon Glass
2015-10-13 11:58       ` Przemyslaw Marczak
2015-10-19  2:20         ` Simon Glass
2015-09-21 12:26   ` [U-Boot] [PATCH V2 08/11] Odroid-XU3: enable s2mps11 PMIC support Przemyslaw Marczak
2015-10-03 14:28     ` Simon Glass
2015-09-21 12:26   ` [U-Boot] [PATCH V2 09/11] Exynos54xx: dts: add ADC node Przemyslaw Marczak
2015-10-03 14:28     ` Simon Glass
2015-09-21 12:26   ` [U-Boot] [PATCH V2 10/11] Odroid-XU3: dts: enable ADC, with request for pre-reloc bind Przemyslaw Marczak
2015-10-03 14:28     ` Simon Glass
2015-09-21 12:26   ` [U-Boot] [PATCH V2 11/11] exynos5-dt-types: add board detection for Odroid XU3/XU3L/XU4 Przemyslaw Marczak
2015-10-03 14:28     ` Simon Glass
2015-10-13 11:59       ` Przemyslaw Marczak
2015-10-19  2:21         ` Simon Glass
2015-09-27 12:20   ` [U-Boot] [PATCH V2 00/11] Add board detection for Odroid XU3 / XU3Lite / XU4 Anand Moon
2015-09-28 10:19     ` Przemyslaw Marczak
2015-10-01 11:07   ` Przemyslaw Marczak
2015-10-03 14:30     ` Simon Glass
2015-10-13 11:59       ` Przemyslaw Marczak
2015-10-27 12:07   ` [U-Boot] [PATCH V3 00/14] " Przemyslaw Marczak
2015-10-27 12:07     ` [U-Boot] [PATCH V3 01/14] samsung: board/misc: check returned pointer for get_board_type() calls Przemyslaw Marczak
2015-10-28 18:50       ` Simon Glass
2015-10-30  3:00         ` Anand Moon
2015-10-27 12:07     ` [U-Boot] [PATCH V3 02/14] s5p: cpu_info: print "cpu-model" if exists in dts Przemyslaw Marczak
2015-10-28 18:50       ` Simon Glass
2015-10-30  3:01       ` Anand Moon
2015-10-27 12:07     ` [U-Boot] [PATCH V3 03/14] Peach-Pi: dts: add cpu-model string Przemyslaw Marczak
2015-10-28 18:50       ` Simon Glass
2015-10-30  3:02       ` Anand Moon
2015-10-27 12:07     ` [U-Boot] [PATCH V3 04/14] Exynos5422/5800: set cpu id to 0x5422 Przemyslaw Marczak
2015-10-30  3:03       ` Anand Moon
2015-10-27 12:07     ` [U-Boot] [PATCH V3 05/14] dm: pmic: add s2mps11 PMIC I/O driver Przemyslaw Marczak
2015-10-28 18:50       ` Simon Glass
2015-10-30  3:04       ` Anand Moon
2015-10-27 12:07     ` [U-Boot] [PATCH V3 06/14] dm: regulator: add function device_get_supply_regulator() Przemyslaw Marczak
2015-11-05 18:25       ` Simon Glass
2015-10-27 12:08     ` [U-Boot] [PATCH V3 07/14] dm: adc: add simple ADC uclass implementation Przemyslaw Marczak
2015-10-27 13:53       ` Przemyslaw Marczak
2015-11-05 18:25       ` Simon Glass
2015-10-27 12:08     ` [U-Boot] [PATCH V3 08/14] dm: adc: add Exynos54xx compatible ADC driver Przemyslaw Marczak
2015-11-06  0:15       ` Simon Glass
2015-10-27 12:08     ` [U-Boot] [PATCH V3 09/14] Odroid-XU3: enable s2mps11 PMIC support Przemyslaw Marczak
2015-10-30  3:09       ` Anand Moon
2015-10-27 12:08     ` [U-Boot] [PATCH V3 10/14] Exynos54xx: dts: add ADC node Przemyslaw Marczak
2015-10-28 18:50       ` Simon Glass
2015-10-29 13:58         ` Przemyslaw Marczak
2015-11-06  3:15           ` Simon Glass
2015-11-06  8:48             ` Przemyslaw Marczak
2015-10-27 12:08     ` [U-Boot] [PATCH V3 11/14] Odroid-XU3: dts: enable ADC, with request for pre-reloc bind Przemyslaw Marczak
2015-10-27 12:08     ` [U-Boot] [PATCH V3 12/14] exynos5-dt-types: add board detection for Odroid XU3/XU3L/XU4 Przemyslaw Marczak
2015-10-30  3:06       ` Anand Moon
2015-10-27 12:08     ` [U-Boot] [PATCH V3 13/14] sandbox: add ADC driver Przemyslaw Marczak
2015-11-04  9:52       ` [U-Boot] [PATCH] Add missing file: include/sandbox-adc.h Przemyslaw Marczak
2015-11-06 12:07         ` Simon Glass
2015-11-06  0:15       ` [U-Boot] [PATCH V3 13/14] sandbox: add ADC driver Simon Glass
2015-10-27 12:08     ` [U-Boot] [PATCH V3 14/14] sandbox: add ADC unit tests Przemyslaw Marczak
2015-11-06  0:15       ` Simon Glass
2015-11-02  5:37     ` [U-Boot] [PATCH V3 00/14] Add board detection for Odroid XU3 / XU3Lite / XU4 Minkyu Kang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55E9B303.40607@samsung.com \
    --to=p.marczak@samsung.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.