On 05/08/2018 08:49 AM, Ley Foon Tan wrote:
> On Thu, Apr 19, 2018 at 10:53 AM, Marek Vasut <ma...@denx.de> wrote:
>> On 04/19/2018 11:50 AM, Ley Foon Tan wrote:
>>> Add mailbox support for Stratix SoC
>>>
>>> Signed-off-by: Ley Foon Tan <ley.foon....@intel.com>
>>> Signed-off-by: Chin Liang See <chin.liang....@intel.com>
>>> ---

[...]

>>> +static __always_inline int mbox_polling_resp(u32 rout)
>>> +{
>>> +     static const struct socfpga_mailbox *mbox_base =
>>> +                                     (void *)SOCFPGA_MAILBOX_ADDRESS;
>>> +     u32 rin;
>>> +     unsigned long i = ~0;
>>> +
>>> +     while (i) {
>>> +             rin = readl(&mbox_base->rin);
>>> +             if (rout != rin)
>>> +                     return 0;
>>
>> This looks like include/wait_bit.h reimplementation
> The reason we use this method instead of using wait_bit because this
> function will use in Secure Monitor Call (SMC) call as well.
> When run in secure section, timer is not available.  So, we can't use
> wait_for_bit.

Can't you just do timer_init() then ?

>>> +/* Send command only without waiting for responses from SDM */
>>> +static __always_inline int __mbox_send_cmd_only(u8 id, u32 cmd,
>>> +                                             u8 is_indirect, u32 len,
>>> +                                             u32 *arg)
>>> +{
>>> +     int ret = mbox_prepare_cmd_only(id, cmd, is_indirect, len, arg);
>>> +     /* write doorbell */
>>> +     writel(1, MBOX_DOORBELL_TO_SDM_REG);
>>> +
>>> +     return ret;
>>> +}
>>> +
>>> +/* Return number of responses received in buffer */
>>> +static __always_inline int __mbox_rcv_resp(u32 *resp_buf, u32 
>>> resp_buf_max_len)
>>
>> __always_inline is nonsense, drop it. Let the compiler do it's thing.
> This function used in SMC call as well, so it needs to be inline when
> in secure section.

Why ?

-- 
Best regards,
Marek Vasut
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to