[U-Boot] [PATCH 2/9] rtc: mc146818: Use probe() to set up the device

Bin Meng bmeng.cn at gmail.com
Mon Oct 19 04:32:51 CEST 2015


Hi Simon,

On Mon, Oct 19, 2015 at 10:26 AM, Simon Glass <sjg at chromium.org> wrote:
> Hi Bin,
>
> On 18 October 2015 at 20:22, Bin Meng <bmeng.cn at gmail.com> wrote:
>> Hi Simon,
>>
>> On Mon, Oct 19, 2015 at 5:55 AM, Simon Glass <sjg at chromium.org> wrote:
>>> At present this driver uses bind() to set up the device. The bind() method
>>> should not touch the hardware, so move the init code to probe().
>>>
>>
>> I think RTC should be initialized anyway. If moving it to probe, it
>> may not be initialized by U-Boot before jumping to kernel.
>
> That's fine, but the correct way to do this is to probe the device,
> not put the init code into the bind() method.

Yes, I agree. So maybe we explicitly trigger the probe somewhere in
the initialization path?

>
>>
>>> Signed-off-by: Simon Glass <sjg at chromium.org>
>>> ---
>>>
>>>  drivers/rtc/mc146818.c | 4 ++--
>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/rtc/mc146818.c b/drivers/rtc/mc146818.c
>>> index 9e94a80..da804d5 100644
>>> --- a/drivers/rtc/mc146818.c
>>> +++ b/drivers/rtc/mc146818.c
>>> @@ -225,7 +225,7 @@ static int rtc_mc146818_write8(struct udevice *dev, unsigned int reg, int val)
>>>         return 0;
>>>  }
>>>
>>> -static int rtc_mc146818_bind(struct udevice *dev)
>>> +static int rtc_mc146818_probe(struct udevice *dev)
>>>  {
>>>         mc146818_init();
>>>
>>> @@ -249,7 +249,7 @@ U_BOOT_DRIVER(rtc_mc146818) = {
>>>         .name = "rtc_mc146818",
>>>         .id = UCLASS_RTC,
>>>         .of_match = rtc_mc146818_ids,
>>> -       .bind = rtc_mc146818_bind,
>>> +       .probe = rtc_mc146818_probe,
>>>         .ops = &rtc_mc146818_ops,
>>>  };
>>>
>>> --
>>

Regards,
Bin


More information about the U-Boot mailing list