diff mbox

[U-Boot,2/2] i.MX6: mx6q_sabrelite: add SATA bindings

Message ID 4F7070B6.6090200@boundarydevices.com
State Changes Requested
Delegated to: Stefano Babic
Headers show

Commit Message

Eric Nelson March 26, 2012, 1:35 p.m. UTC
On 03/26/2012 01:35 AM, Stefano Babic wrote:
> On 26/03/2012 01:00, Eric Nelson wrote:
>> V2 has been stripped of the board-independent changes and
>> uses clrsetbits_le32() instead of twiddling bits by hand.
>>
>> Signed-off-by: Eric Nelson<eric.nelson@boundarydevices.com>
>> ---
>
> Hi Eric,
>
>>   board/freescale/mx6qsabrelite/mx6qsabrelite.c |   32 +++++++++++++++++++++++++
>>   include/configs/mx6qsabrelite.h               |   13 ++++++++++
>>   2 files changed, 45 insertions(+), 0 deletions(-)
>>
>> diff --git a/board/freescale/mx6qsabrelite/mx6qsabrelite.c b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
>> index 1d09a72..afb1245 100644
>> --- a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
>> +++ b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
>> @@ -25,6 +25,8 @@
>>   #include<asm/arch/imx-regs.h>
>>   #include<asm/arch/mx6x_pins.h>
>>   #include<asm/arch/iomux-v3.h>
>> +#include<asm/arch/ccm_regs.h>
>> +#include<asm/arch/clock.h>
>>   #include<asm/errno.h>
>>   #include<asm/gpio.h>
>>   #include<mmc.h>
>> @@ -267,6 +269,32 @@ int board_eth_init(bd_t *bis)
>>   	return 0;
>>   }
>>
>> +#ifdef CONFIG_CMD_SATA
>> +
>> +int setup_sata(void)
>> +{
>> +	int rval = enable_sata_clock();
>
> What about to return at this point if there is an error ?
>

I'm not sure I understand. Do you mean re-structure the code with
two returns like this?

Comments

Stefano Babic March 26, 2012, 1:42 p.m. UTC | #1
On 26/03/2012 15:35, Eric Nelson wrote:
> On 03/26/2012 01:35 AM, Stefano Babic wrote:
>> On 26/03/2012 01:00, Eric Nelson wrote:
>>> V2 has been stripped of the board-independent changes and
>>> uses clrsetbits_le32() instead of twiddling bits by hand.
>>>
>>> Signed-off-by: Eric Nelson<eric.nelson@boundarydevices.com>
>>> ---
>>
>> Hi Eric,
>>
>>>   board/freescale/mx6qsabrelite/mx6qsabrelite.c |   32
>>> +++++++++++++++++++++++++
>>>   include/configs/mx6qsabrelite.h               |   13 ++++++++++
>>>   2 files changed, 45 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
>>> b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
>>> index 1d09a72..afb1245 100644
>>> --- a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
>>> +++ b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
>>> @@ -25,6 +25,8 @@
>>>   #include<asm/arch/imx-regs.h>
>>>   #include<asm/arch/mx6x_pins.h>
>>>   #include<asm/arch/iomux-v3.h>
>>> +#include<asm/arch/ccm_regs.h>
>>> +#include<asm/arch/clock.h>
>>>   #include<asm/errno.h>
>>>   #include<asm/gpio.h>
>>>   #include<mmc.h>
>>> @@ -267,6 +269,32 @@ int board_eth_init(bd_t *bis)
>>>       return 0;
>>>   }
>>>
>>> +#ifdef CONFIG_CMD_SATA
>>> +
>>> +int setup_sata(void)
>>> +{
>>> +    int rval = enable_sata_clock();
>>
>> What about to return at this point if there is an error ?
>>
> 
> I'm not sure I understand. Do you mean re-structure the code with
> two returns like this?


No, much easier - I find the code is easy to understand if it looks like
if the function returns immediately in case of error.

	if (do_something())
		return ERROR;

	< code when no error happens>

Your  enable_sata_clock() return only -1 in case of error. You could
easy write:

	if (enable_sata_clock())
		return -1 (or better a value in errno.h)
        struct iomuxc_base_regs *const iomuxc_regs
                   = (struct iomuxc_base_regs *) IOMUXC_BASE_ADDR;
        clrsetbits_le32(&iomuxc_regs->gpr[13],
                       IOMUXC_GPR13_SATA_MASK,
                       IOMUXC_GPR13_SATA_PHY_8_RXEQ_3P0DB
                       |IOMUXC_GPR13_SATA_PHY_7_SATA2M
                       |IOMUXC_GPR13_SATA_SPEED_3G
                       |(3<<IOMUXC_GPR13_SATA_PHY_6_SHIFT)
                       |IOMUXC_GPR13_SATA_SATA_PHY_5_SS_DISABLED
                       |IOMUXC_GPR13_SATA_SATA_PHY_4_ATTEN_9_16
                       |IOMUXC_GPR13_SATA_PHY_3_TXBOOST_0P00_DB
                       |IOMUXC_GPR13_SATA_PHY_2_TX_1P104V
                       |IOMUXC_GPR13_SATA_PHY_1_SLOW);

	return 0;	


Best regards,
Stefano Babic
Eric Nelson March 26, 2012, 4:59 p.m. UTC | #2
On 03/26/2012 06:42 AM, Stefano Babic wrote:
> On 26/03/2012 15:35, Eric Nelson wrote:
>> On 03/26/2012 01:35 AM, Stefano Babic wrote:
>>> On 26/03/2012 01:00, Eric Nelson wrote:
>>>> V2 has been stripped of the board-independent changes and
>>>>
 >>>> <snip>
 >>>>
>>>> +#ifdef CONFIG_CMD_SATA
>>>> +
>>>> +int setup_sata(void)
>>>> +{
>>>> +    int rval = enable_sata_clock();
>>>
>>> What about to return at this point if there is an error ?
>>>
>> I'm not sure I understand. Do you mean re-structure the code with
>> two returns like this?
>
> No, much easier - I find the code is easy to understand if it looks like
> if the function returns immediately in case of error.
>
> 	if (do_something())
> 		return ERROR;
>
> 	<  code when no error happens>
>
> Your  enable_sata_clock() return only -1 in case of error. You could
> easy write:
>
> 	if (enable_sata_clock())
> 		return -1 (or better a value in errno.h)
 >
The choice of error code is better made inside enable_sata_clock(),
although I'm not really sure what error code to choose.

The error occurs if the PLL fails to lock and would indicate that
something's horribly wrong.

I'm guessing -EIO is probably the right choice.

If you agree, I'll send V2 of "i.MX6: add enable_sata_clock()" and
V3 of "i.MX6: mx6q_sabrelite: add SATA bindings".

Please advise,


Eric
Eric Nelson April 25, 2012, 11:12 p.m. UTC | #3
On 03/26/2012 09:59 AM, Eric Nelson wrote:
> On 03/26/2012 06:42 AM, Stefano Babic wrote:
>> On 26/03/2012 15:35, Eric Nelson wrote:
>>> On 03/26/2012 01:35 AM, Stefano Babic wrote:
>>>> On 26/03/2012 01:00, Eric Nelson wrote:
>>>>> V2 has been stripped of the board-independent changes and
>>>>>
>  >>>> <snip>
>  >>>>
>>>>> +#ifdef CONFIG_CMD_SATA
>>>>> +
>>>>> +int setup_sata(void)
>>>>> +{
>>>>> + int rval = enable_sata_clock();
>>>>
>>>> What about to return at this point if there is an error ?
>>>>
>>> I'm not sure I understand. Do you mean re-structure the code with
>>> two returns like this?
>>
>> No, much easier - I find the code is easy to understand if it looks like
>> if the function returns immediately in case of error.
>>
>> if (do_something())
>> return ERROR;
>>
>> < code when no error happens>
>>
>> Your enable_sata_clock() return only -1 in case of error. You could
>> easy write:
>>
>> if (enable_sata_clock())
>> return -1 (or better a value in errno.h)
>  >
> The choice of error code is better made inside enable_sata_clock(),
> although I'm not really sure what error code to choose.
>
> The error occurs if the PLL fails to lock and would indicate that
> something's horribly wrong.
>
> I'm guessing -EIO is probably the right choice.
>
> If you agree, I'll send V2 of "i.MX6: add enable_sata_clock()" and
> V3 of "i.MX6: mx6q_sabrelite: add SATA bindings".
>
Hi Stefano,

It looks like I was waiting for you and never did send V3 of this patch.

I'll forward one shortly.

Regards,


Eric
diff mbox

Patch

diff --git a/board/freescale/mx6qsabrelite/mx6qsabrelite.c 
b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
index afb1245..0d625af 100644
--- a/board/freescale/mx6qsabrelite/mx6qsabrelite.c
+++ b/board/freescale/mx6qsabrelite/mx6qsabrelite.c
@@ -273,23 +273,23 @@  int board_eth_init(bd_t *bis)

  int setup_sata(void)
  {
+       struct iomuxc_base_regs *const iomuxc_regs
+               = (struct iomuxc_base_regs *) IOMUXC_BASE_ADDR;
         int rval = enable_sata_clock();
-       if (rval == 0) {
-               struct iomuxc_base_regs *const iomuxc_regs
-                       = (struct iomuxc_base_regs *) IOMUXC_BASE_ADDR;
-               clrsetbits_le32(&iomuxc_regs->gpr[13],
-                               IOMUXC_GPR13_SATA_MASK,
-                               IOMUXC_GPR13_SATA_PHY_8_RXEQ_3P0DB
-                               |IOMUXC_GPR13_SATA_PHY_7_SATA2M
-                               |IOMUXC_GPR13_SATA_SPEED_3G
-                               |(3<<IOMUXC_GPR13_SATA_PHY_6_SHIFT)
-                               |IOMUXC_GPR13_SATA_SATA_PHY_5_SS_DISABLED
-                               |IOMUXC_GPR13_SATA_SATA_PHY_4_ATTEN_9_16
-                               |IOMUXC_GPR13_SATA_PHY_3_TXBOOST_0P00_DB
-                               |IOMUXC_GPR13_SATA_PHY_2_TX_1P104V
-                               |IOMUXC_GPR13_SATA_PHY_1_SLOW);
-               rval = 0;
-       }
+       if (rval)
+               return rval ;
+
+       clrsetbits_le32(&iomuxc_regs->gpr[13],
+                       IOMUXC_GPR13_SATA_MASK,
+                       IOMUXC_GPR13_SATA_PHY_8_RXEQ_3P0DB
+                       |IOMUXC_GPR13_SATA_PHY_7_SATA2M
+                       |IOMUXC_GPR13_SATA_SPEED_3G
+                       |(3<<IOMUXC_GPR13_SATA_PHY_6_SHIFT)
+                       |IOMUXC_GPR13_SATA_SATA_PHY_5_SS_DISABLED
+                       |IOMUXC_GPR13_SATA_SATA_PHY_4_ATTEN_9_16
+                       |IOMUXC_GPR13_SATA_PHY_3_TXBOOST_0P00_DB
+                       |IOMUXC_GPR13_SATA_PHY_2_TX_1P104V
+                       |IOMUXC_GPR13_SATA_PHY_1_SLOW);

         return rval;
  }