public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Heiko Schocher <hs@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] i2c: samsung: register i2c busses for Exynso5420 and Exynos5250
Date: Fri, 06 Dec 2013 07:16:18 +0100	[thread overview]
Message-ID: <52A16BB2.8020402@denx.de> (raw)
In-Reply-To: <CAHfPSqB3YoXhJ2ZKX8Fc5FZ+j055EeWxM6_1KTjR+p5_ABnm7Q@mail.gmail.com>

Hello Naveen,

Am 06.12.2013 06:47, schrieb Naveen Krishna Ch:
> Hello Heiko,
>
> On 5 December 2013 18:17, Heiko Schocher<hs@denx.de>  wrote:
>> Hello Naveen,
>>
>> Am 05.12.2013 13:21, schrieb Naveen Krishna Ch:
>>
>>> Hello Heiko,
>>>
>>> On 5 December 2013 16:56, Heiko Schocher<hs@denx.de>   wrote:
>>>>
>>>> Hello Naveen,
>>>>
>>>> Sorry for the late reply ...
>>>>
>>>> Am 25.11.2013 12:28, schrieb Naveen Krishna Ch:
>>>>
>>>>> This patch adds the U_BOOT_I2C_ADAP_COMPLETE defines for channels
>>>>> on Exynos5420 and Exynos5250 and also adds support for init function
>>>>> for hsi2c channels
>>>>>
>>>>> Signed-off-by: Naveen Krishna Chatradhi<ch.naveen@samsung.com>
>>>>>
>>>>> ---
>>>>> README                    |    6 ++
>>>>>     drivers/i2c/s3c24x0_i2c.c |  222
>>>>> +++++++++++++++++++++++++++++++++++----------
>>>>>     2 files changed, 180 insertions(+), 48 deletions(-)
>>>>>
>>>>> diff --git a/README b/README
>>>>> index c97ff0a..c04e352 100644
>>>>> --- a/README
>>>>> +++ b/README
>>>>> @@ -2076,6 +2076,12 @@ CBFS (Coreboot Filesystem) support
>>>>>                     - set CONFIG_SYS_I2C_ZYNQ_SPEED for speed setting
>>>>>                     - set CONFIG_SYS_I2C_ZYNQ_SLAVE for slave addr
>>>>>
>>>>> +               - drivers/i2c/s3c24x0_i2c.c:
>>>>> +                 - activate this driver with CONFIG_SYS_I2C_S3C24X0
>>>>> +                 - This driver adds i2c buses (11 for Exynos5250,
>>>>> Exynos5420
>>>>> +                   9 i2c buses for Exynos4 and 1 for S3C24X0 SoCs from
>>>>> Samsung)
>>>>> +                   with a fix speed from 100000 and the slave addr 0!
>>>>> +
>>>>>                   additional defines:
>>>>>
>>>>>                   CONFIG_SYS_NUM_I2C_BUSES
>>>>> diff --git a/drivers/i2c/s3c24x0_i2c.c b/drivers/i2c/s3c24x0_i2c.c
>>>>> index 1e9dba0..6e719ec 100644
>>>>> --- a/drivers/i2c/s3c24x0_i2c.c
>>>>> +++ b/drivers/i2c/s3c24x0_i2c.c
>>>>> @@ -721,6 +721,15 @@ static unsigned int
>>>>> s3c24x0_i2c_set_bus_speed(struct
>>>>> i2c_adapter *adap,
>>>>>           return 0;
>>>>>     }
>>>>>
>>>>> +static void exynos_i2c_init(struct i2c_adapter *adap, int speed, int
>>>>> slaveaddr)
>>>>> +{
>>>>> +       /* This will override the speed selected in the fdt for that
>>>>> port
>>>>> */
>>>>> +       debug("i2c_init(speed=%u, slaveaddr=0x%x)\n", speed, slaveaddr);
>>>>> +       if (i2c_set_bus_speed(speed))
>>>>> +               printf("i2c_init: failed to init bus %d for speed =
>>>>> %d\n",
>>>>> +                                               adap->hwadapnr, speed);
>>>>> +}
>>>
>>> This init is not used for Exynos4 and lower series SoCs
>>>>>
>>>>> +
>>>>>     /*
>>>>>      * cmd_type is 0 for write, 1 for read.
>>>>>      *
>>>>> @@ -1071,51 +1080,168 @@ int i2c_reset_port_fdt(const void *blob, int
>>>>> node)
>>>>>     /*
>>>>>      * Register s3c24x0 i2c adapters
>>>>>      */
>>>>> -U_BOOT_I2C_ADAP_COMPLETE(s3c24x0_0, s3c24x0_i2c_init,
>>>>> s3c24x0_i2c_probe,
[...]
>>>>> +U_BOOT_I2C_ADAP_COMPLETE(i2c08, s3c24x0_i2c_init, s3c24x0_i2c_probe,
>>>>> +                       s3c24x0_i2c_read, s3c24x0_i2c_write,
>>>>> +                       s3c24x0_i2c_set_bus_speed,
>>>>> +                       CONFIG_SYS_I2C_S3C24X0_SPEED,
>>>>> +                       CONFIG_SYS_I2C_S3C24X0_SLAVE, 8
> Is missing the closing braces. My local changes has it so i couldnt
> see the problem.

Ups?

>>>> leads in a compile error for trats and trats2, could you please fix?
>>>
>>> I ran "MAKEALL -v samsung"
>>> s3c24x0_i2c.c:724:13: warning: 'exynos_i2c_init' defined but not used
>>> [-Wunused-function]
>>> is the warning seen for trats and trats2 boards
>>> If you are talking about this one, will fix it in the next versio.
>>
>>
>> No, there is a missing ")" at the end!
>>
>> pollux:u-boot hs [master] $ ./MAKEALL trats
>> Configuring for trats board...
>> s3c24x0_i2c.c:1247:0: error: unterminated argument list invoking macro
>> "U_BOOT_I2C_ADAP_COMPLETE"
>> s3c24x0_i2c.c:1236:1: error: expected '=', ',', ';', 'asm' or
>> '__attribute__' at end of input
>> arm-linux-gnueabi-size: './u-boot': No such file
>> s3c24x0_i2c.c:1247:0: error: unterminated argument list invoking macro
>> "U_BOOT_I2C_ADAP_COMPLETE"
>> s3c24x0_i2c.c:1236:1: error: expected '=', ',', ';', 'asm' or
>> '__attribute__' at end of input
>>
>> s3c24x0_i2c.c:724:13: warning: 'exynos_i2c_init' defined but not used
>> [-Wunused-function]
>> make[1]: *** [s3c24x0_i2c.o] Fehler 1
>> make[1]: *** Warte auf noch nicht beendete Prozesse...
>> make: *** [drivers/i2c/built-in.o] Fehler 2
>> make: *** Warte auf noch nicht beendete Prozesse...
>>
>> --------------------- SUMMARY ----------------------------
>> Boards compiled: 1
>> Boards with errors: 1 ( trats )
>> ----------------------------------------------------------
> #pwclient git-am 292705
> #pwclient git-am 293889
> #pwclient git-am 292706
> #./MAKEALL trats
> Shows me this errors. Thanks for the catch.

Puuh...

>> pollux:u-boot hs [master] $
>>
>> pollux:u-boot hs [(kein Zweig, Neuaufbau begonnen bei master)] $ git bisect
>> log
>> git bisect start
>> # bad: [f5f40408ce3b00637c652fdabfb6f3c4e0d09635] arm: omap: i2c: don't zero
>> cnt in i2c_write
>> git bisect bad f5f40408ce3b00637c652fdabfb6f3c4e0d09635
>> # good: [f44483b57c49282299da0e5c10073b909cdad979] Merge branch 'serial' of
>> git://git.denx.de/u-boot-microblaze
>> git bisect good f44483b57c49282299da0e5c10073b909cdad979
>> # bad: [4d06a7c5707f813f4bc7fd7a9d700606c63fa4de] i2c: fti2c010: cosmetic:
>> coding style cleanup
>> git bisect bad 4d06a7c5707f813f4bc7fd7a9d700606c63fa4de
>> # good: [a6756bbdac43474193472b43309626e2c28d8100] driver:i2c:s3c24x0: fix
>> clock init for hsi2c
>> git bisect good a6756bbdac43474193472b43309626e2c28d8100
>> # bad: [c3b6bba20862ff6476c99aa6d3168f7097a5b4b2] i2c: samsung: register i2c
>> busses for Exynso5420 and Exynos5250
>> git bisect bad c3b6bba20862ff6476c99aa6d3168f7097a5b4b2
>> # first bad commit: [c3b6bba20862ff6476c99aa6d3168f7097a5b4b2] i2c: samsung:
>> register i2c busses for Exynso5420 and Exynos5250
>> pollux:u-boot hs [(kein Zweig, Neuaufbau begonnen bei master)] $
>>
>>
>>>>
>>>> Hmm... could you reformat this very long list in something like this:
>>>>
>>>> U_BOOT_I2C_ADAP_COMPLETE(s3c0, s3c24x0_i2c_init, s3c24x0_i2c_probe,
>>>> if defined(CONFIG_EXYNOS4) || defined(CONFIG_EXYNOS5420) ||
>>>> defined(CONFIG_EXYNOS5420)
>>>> U_BOOT_I2C_ADAP_COMPLETE(s3c1, s3c24x0_i2c_init, s3c24x0_i2c_probe,
>>>> [...]
>>>> U_BOOT_I2C_ADAP_COMPLETE(s3c8, s3c24x0_i2c_init, s3c24x0_i2c_probe,
>>>> #endif
>>>> if defined(CONFIG_EXYNOS5420) || defined(CONFIG_EXYNOS5420)
>>>> U_BOOT_I2C_ADAP_COMPLETE(s3c9, s3c24x0_i2c_init, s3c24x0_i2c_probe,
>>>> U_BOOT_I2C_ADAP_COMPLETE(s3c10, s3c24x0_i2c_init, s3c24x0_i2c_probe,
>>>> #endif
> Even if we implement a common init function and reduce this list. The
> speeds would
> be fixed and the user need to set the speeds by calling i2c speed or
> the corresponding
> function.

Ok, I see... so please just sent the compileerrorfree patch, thanks!

>>> Basically, s3c24x0_i2c.c now support both HighSpeed I2C modules and
>>> Standard I2C
>>> Modules. They have different init functions.
>>> Exynos5250/5260 has 4 hsi2c channels hsi2c 0 ~ 3 and 7 i2c channels 4 ~ 10
>>> Exynos5420 has 4 i2c channels i2c 0 ~ 3 and 7 hsi2c channels 4 ~ 10
>>> Exynos4 has 9 i2c channels
>>> Hence, the long list. It would be helpful if anyone can suggest a way
>>> to reduce this list.
>>
>>
>> Ah, now I see it, thanks!
>>
>> Maybe we can define one s3c24x0_i2c_init function, and call from there
>> the SoC / adapater specific init func? So we can prevent this long list?
> I can think of something like this
> +static void samsung_i2c_init(struct i2c_adapter *adap, int speed, int slaveadd)
> +{
> +
> +#ifdef CONFIG_EXYNOS5
> +#ifdef CONFIG_EXYNOS5420
> +       if(adap->hwadapnr>  3)
> +               s3c24x0_i2c_init(adap, speed, slaveadd);
> +       else
> +               exynos_i2c_init(adap, speed, slaveadd);
> +#elif defined(CONFIG_EXYNOS5250) || defined(CONFIG_EXYNOS5260)
> +       if(adap->hwadapnr>  3)
> +               exynos_i2c_init(adap, speed, slaveadd);
> +       else
> +               s3c24x0_i2c_init(adap, speed, slaveadd);
> +#endif
> +#else
> +       s3c24x0_i2c_init(adap, speed, slaveadd);
> +#endif
> +}
>
> But, as mentioned earlier the speeds needs to be set from a seperate function
> for each board.
>>
>>
>>> Is U_BOOT_I2C_ADAP_COMPLETE is the only (best) way to register to new i2c
>>> framework ?
>
>>
>>
>> Yes.
> Is there any work going on to simplyfy U_BOOT_I2C_ADAP_COMPLETE ?

No, what do you thinking of? Simplify patches are always welcome!

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

  reply	other threads:[~2013-12-06  6:16 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-12 10:58 [U-Boot] [PATCH] i2c: s3c24xx: add hsi2c controller support Naveen Krishna Chatradhi
2013-03-12 13:11 ` Simon Glass
2013-03-12 14:03   ` Naveen Krishna Ch
2013-04-06  1:37 ` [U-Boot] [PATCH v4] " Naveen Krishna Chatradhi
2013-04-13  4:42   ` Naveen Krishna Ch
2013-04-15  5:48     ` Heiko Schocher
2013-04-15 12:48       ` Tom Rini
2013-04-26  3:08       ` Naveen Krishna Ch
2013-04-29  6:36         ` Minkyu Kang
2013-04-30  4:14         ` Heiko Schocher
2013-05-01 19:04           ` Naveen Krishna Ch
2013-05-02 10:06             ` Heiko Schocher
2013-05-02 17:52               ` Naveen Krishna Ch
2013-09-30  6:58 ` [U-Boot] [PATCH 0/3] i2c: improve s3c24x0 with High-speed and new SYS_I2C framework support Naveen Krishna Chatradhi
2013-09-30  6:58   ` [U-Boot] [PATCH 1/4] exynos: i2c: Fix i2c driver to handle NACKs properly Naveen Krishna Chatradhi
2013-10-02 13:51     ` Heiko Schocher
2013-09-30  6:58   ` [U-Boot] [PATCH 2/4] exynos: i2c: Change FDT bus setup code to enumerate ports correctly Naveen Krishna Chatradhi
2013-10-03 11:23     ` [U-Boot] [PATCH 2/3 v2] " Naveen Krishna Chatradhi
2013-10-15 10:32     ` [U-Boot] [PATCH 2/3 v4] " Naveen Krishna Chatradhi
2013-10-17  6:31       ` [U-Boot] [U-Boot, 2/3, " Heiko Schocher
2013-09-30  6:58   ` [U-Boot] [PATCH v5 3/4] i2c: s3c24xx: add hsi2c controller support Naveen Krishna Chatradhi
2013-09-30  6:58   ` [U-Boot] [PATCH] RFC: samsung: i2c: Enable new CONFIG_SYS_I2C framework Naveen Krishna Chatradhi
2013-10-14  6:06     ` Heiko Schocher
2013-11-08  7:45       ` Piotr Wilczek
2013-11-08  7:59         ` Naveen Krishna Ch
2013-11-20 10:50     ` [U-Boot] [PATCH 2/2 v2] " Naveen Krishna Chatradhi
2013-11-25 11:28       ` [U-Boot] [PATCH] i2c: samsung: register i2c busses for Exynso5420 and Exynos5250 Naveen Krishna Chatradhi
2013-11-25 11:31         ` Naveen Krishna Ch
2013-12-05 11:26         ` [U-Boot] " Heiko Schocher
2013-12-05 12:21           ` Naveen Krishna Ch
2013-12-05 12:47             ` Heiko Schocher
2013-12-06  5:47               ` Naveen Krishna Ch
2013-12-06  6:16                 ` Heiko Schocher [this message]
2013-12-06  6:42         ` [U-Boot] [PATCH v2] " Naveen Krishna Chatradhi
2013-12-09  6:58           ` [U-Boot] [U-Boot, " Heiko Schocher
2013-09-30  8:05   ` [U-Boot] [PATCH 0/3] i2c: improve s3c24x0 with High-speed and new SYS_I2C framework support Heiko Schocher
2013-09-30 10:03     ` Naveen Krishna Ch
2013-10-01  6:05       ` Heiko Schocher
2013-10-01  6:19         ` Naveen Krishna Ch
2013-10-01  6:36           ` Heiko Schocher
2013-10-03 11:22   ` [U-Boot] [PATCH 1/3 v2] exynos: i2c: Fix i2c driver to handle NACKs properly Naveen Krishna Chatradhi
2013-10-14  6:29     ` Heiko Schocher
2013-10-15  4:48       ` Naveen Krishna Ch
2013-10-15  5:10         ` Heiko Schocher
2013-10-15  6:34           ` Lukasz Majewski
2013-10-15 10:31     ` [U-Boot] [PATCH 1/3 v4] " Naveen Krishna Chatradhi
2013-10-17  6:29       ` [U-Boot] [U-Boot, 1/3, " Heiko Schocher
2013-10-15  6:07   ` [U-Boot] [PATCH 1/3 v3] " Naveen Krishna Chatradhi
2013-10-15  6:07     ` [U-Boot] [PATCH 2/3 v3] exynos: i2c: Change FDT bus setup code to enumerate ports correctly Naveen Krishna Chatradhi
2013-10-15  6:07     ` [U-Boot] [PATCH 3/3 v6] i2c: s3c24xx: add hsi2c controller support Naveen Krishna Chatradhi
2013-10-15  6:40       ` Heiko Schocher
2013-10-15  9:34         ` Naveen Krishna Ch
2013-10-15  9:39           ` Heiko Schocher
2013-10-15  9:44             ` Naveen Krishna Ch
2013-10-03 11:24 ` [U-Boot] [PATCH 3/3 v2]: " Naveen Krishna Chatradhi
2013-10-15 10:32 ` [U-Boot] [PATCH 3/3 v7] " Naveen Krishna Chatradhi
2013-10-17  6:32   ` [U-Boot] [U-Boot, 3/3, " Heiko Schocher

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=52A16BB2.8020402@denx.de \
    --to=hs@denx.de \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox