|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 1/2] xen/arm64: Add Support for Allwinner H5 (sun50i)
Hi,
On 10/04/2017 02:26 PM, Andre Przywara wrote:
> Hi Awais,
>
> On 04/10/17 10:16, Awais Masood wrote:
>> Hi,
>>
>> On 09/29/2017 09:35 PM, Andre Przywara wrote:
>>> Hi,
>>>
>>> On 09/28/2017 03:49 PM, Andre Przywara wrote:
>>>> Hi,
>>>>
>>>> On 09/28/2017 01:03 PM, Julien Grall wrote:
>>>>> Hi,
>>>>>
>>>>> On 09/26/2017 10:37 AM, Awais Masood wrote:
>>>>>> This patch adds support for Allwinner H5/sun50i SoC.
>>>>>>
>>>>>> Makefile updated to enable ARM64 compilation for sunxi.c.
>>>
>>> ...
>>>
>>>>>> --- a/xen/arch/arm/platforms/sunxi.c
>>>>>> +++ b/xen/arch/arm/platforms/sunxi.c
>>>>>> @@ -22,18 +22,18 @@
>>>>>> #include <asm/io.h>
>>>>>> /* Watchdog constants: */
>>>>>> -#define SUNXI_WDT_BASE 0x01c20c90
>>>>>> +#define SUNXI_WDT_A20_BASE 0x01c20c90
>>>>>> +#define SUNXI_WDT_H5_BASE 0x01c20cA0
>>>>>
>>>>> I know that we hardcoded this value for the A20. However, I am wondering
>>>>> if we could find this address from the Device-Tree?
>>>>
>>>> Yes, both sun7i-a20.dtsi and the H5 .dts have the WDT.
>>>> Its compatible strings are sun4i-a10-wdt and sun6i-a31-wdt, respectively.
>>>> I have to check what the differences are, but I guess for our purposes
>>>> these should be small.
>>>> That seems like a call to some proper DT driven timer/WDT driver?
>>>
>>> Scratch that. I just see that this is solely used for the reset function.
>>> So we should not need this for the H5 (and the A64 for that matter). We may
>>> need this for the H3 (Cortex-A7) support, however, which seems quite
>>> popular on cheap boards.
>>>
>>
>> Since reset routine will not be required with PSCI, I assume should revert
>> the reset code changes for this H5 patch and leave the DT retrieval for
>> another patch that adds H3 support. Or should I try that stuff for next
>> version of this patch?
>
> Thanks for the offer, but I already made a patch that adds support for
> basically all virtualization capable Allwinner SoCs (both v7 and v8
> ones). This looks into the DT for ARMv7 SoCs, but relies entirely on
> PSCI for ARMv8 SoCs. I just need to test it, then will send it out.
>
> So actually we won't need anything from that patch here at all, since my
> patch supersedes it in a more generic way.
> Do you plan on reworking/resending the UART fix (which should come
> first, btw, as it is a prerequisite for H5 enablement)?
>
> You could either send the UART fix on its own if there are changes or I
> include it as patch 1/2 of my Allwinner "series".
I'll send the latest version of UART fix as a standalone patch.
Awais
>
> Thanks!
> Andre.
>
>>> Cheers,
>>> Andre
>>>
>>>>>> #define SUNXI_WDT_MODE 0x04
>>>>>> -#define SUNXI_WDT_MODEADDR (SUNXI_WDT_BASE + SUNXI_WDT_MODE)
>>>>>> #define SUNXI_WDT_MODE_EN (1 << 0)
>>>>>> #define SUNXI_WDT_MODE_RST_EN (1 << 1)
>>>>>> -static void sunxi_reset(void)
>>>>>> +static void sunxi_reset(u32 base)
>>>>>> {
>>>>>> void __iomem *wdt;
>>>>>> - wdt = ioremap_nocache(SUNXI_WDT_MODEADDR & PAGE_MASK, PAGE_SIZE);
>>>>>> + wdt = ioremap_nocache((base + SUNXI_WDT_MODE) & PAGE_MASK,
>>>>>> PAGE_SIZE);
>>>>>> if ( !wdt )
>>>>>> {
>>>>>> dprintk(XENLOG_ERR, "Unable to map watchdog register!\n");
>>>>>> @@ -42,19 +42,35 @@ static void sunxi_reset(void)
>>>>>> /* Enable watchdog to trigger a reset after 500 ms: */
>>>>>> writel(SUNXI_WDT_MODE_EN | SUNXI_WDT_MODE_RST_EN,
>>>>>> - wdt + (SUNXI_WDT_MODEADDR & ~PAGE_MASK));
>>>>>> + wdt + ((base + SUNXI_WDT_MODE) & ~PAGE_MASK));
>>>>>> iounmap(wdt); >
>>>>>> for (;;)
>>>>>> wfi();
>>>>>> }
>>>>>>
>>>>>> -static const char * const sunxi_dt_compat[] __initconst =
>>>>>> +static void sunxi_a20_reset(void)
>>>>>> +{
>>>>>> + sunxi_reset(SUNXI_WDT_A20_BASE);
>>>>>> +}
>>>>>> +
>>>>>> +static void sunxi_h5_reset(void)
>>>>>> +{
>>>>>> + sunxi_reset(SUNXI_WDT_H5_BASE);
>>>>>
>>>>> If I read correctly the Device-Tree for
>>>>> (linux/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi), the firmware is
>>>>> supporting PSCI 0.2.
>>>>>
>>>>> PSCI 0.2 provides call for power-off/reset, so implementation the reset
>>>>> callback should not be necessary.
>>>>
>>>> Yes, indeed, on the H5 PSCI 0.2 reset works via ATF.
>>>>
>>>>> Similarly the cubietrucks we have in osstest are using PSCI 0.2 and
>>>>> should not need the reset. Andre do you know if it is the case for all
>>>>> the A20?
>>>>
>>>> It claims 0.2, but in fact it seems not to be fully compliant, as (from
>>>> looking at the code) U-Boot lacks the reset and poweroff calls. But it
>>>> looks rather straight-forward to add them, as U-Boot knows how to reset
>>>> and one would just need to wire up psci_system_reset to this.
>>>>
>>>>> For H5, I would impose PSCI 0.2 as the way to reset the platform.
>>>>
>>>> Yes.
>>>>
>>>>> I am leaning towards the same for A20 given that it would just be a
>>>>> matter of upgrading the bootloader. Most likely you would have already
>>>>> done that to get fixes.
>>>>
>>>> Not sure we should push people to upgrade U-Boot in general to be able to
>>>> use Xen, but as even current mainline U-Boot doesn't seem to support it, I
>>>> would rather leave the current reset support code in. Last time I checked
>>>> Linux does the same.
>>>>
>>>> Cheers,
>>>> Andre.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |