On Tue, May 30, 2023 at 5:22 PM Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx> wrote: > > On 30/05/2023 17:13:12+0800, Keguang Zhang wrote: > > On Tue, May 30, 2023 at 4:40 PM Alexandre Belloni > > <alexandre.belloni@xxxxxxxxxxx> wrote: > > > > > > On 30/05/2023 10:17:43+0200, Krzysztof Kozlowski wrote: > > > > On 29/05/2023 10:31, Binbin Zhou wrote: > > > > > Hi Krzysztof: > > > > > > > > > > Excuse me. > > > > > We have different opinions on how to better describe rtc-loongson compatible. > > > > > > > > > > Based on my previous communication with you, I think we should list > > > > > all the Socs in the driver and drop the wildcards. > > > > > > > > Suggestion was about the bindings. Not in the driver. I never said to > > > > list all compatibles in the driver... > > > > > > > > > This should be clearer and more straightforward: > > > > > > > > > > { .compatible = "loongson,ls1b-rtc", .data = &ls1x_rtc_config > > > > > }, //ls1b soc > > > > > { .compatible = "loongson,ls1c-rtc", .data = &ls1x_rtc_config > > > > > }, //ls1c soc > > > > > { .compatible = "loongson,ls7a-rtc", .data = > > > > > &generic_rtc_config }, //ls7a bridge chip > > > > > { .compatible = "loongson,ls2k0500-rtc", .data = > > > > > &generic_rtc_config }, // ls2k0500 soc > > > > > { .compatible = "loongson,ls2k2000-rtc", .data = > > > > > &generic_rtc_config }, // ls2k2000 soc > > > > > { .compatible = "loongson,ls2k1000-rtc", .data = > > > > > &ls2k1000_rtc_config }, // ls2k1000 soc > > > > > > > > I would suggest to use fallbacks as suggested by Conor at least for some > > > > of them. You referred to my previous comments about wildcards. > > > > Wildcard != fallback. > > > > > > > > > > > > > > And Conor thought it should be rendered using a fallback compatible > > > > > form based on ".data". > > > > > > > > Based on common (compatible) programming model unless you already have > > > > clear hardware differences making them incompatible. > > > > > > > > > > > > > > "loongson,ls1b-rtc" > > > > > "loongson,ls1c-rtc", "loongson,ls1b-rtc" > > > > > "loongson,ls7a-rtc" > > > > > "loongson,ls2k0500-rtc", "loongson,ls7a-rtc" > > > > > "longson,ls2k2000-rtc", "longson,ls7a-rtc" > > > > > "loonson,ls2k1000-rtc" > > > > > > > > > > { .compatible = "loongson,ls1b-rtc", .data = &ls1x_rtc_config } > > > > > { .compatible = "loongson,ls7a-rtc", .data = &generic_rtc_config } > > > > > { .compatible = "loongson,ls2k1000-rtc", .data = &ls2k1000_rtc_config } > > > > > > > > > > In this form, I think it might not be possible to show very > > > > > graphically which chips are using the driver. > > > > > > > > ??? How is it impossible? For all other SoCs and architectures it is > > > > possible, so what is special for Loongson? > > > > > > > > > Also, for example, "ls7a" is a bridge chip, while > > > > > "ls2k2000"/"ls2k0500" are soc chips, and it seems inappropriate to > > > > > integrate them into one item. > > > > > > > > Why it is inappropriate? I don't see the issue here... what is a > > > > "bridge" chip? Isn't this also an SoC? > > > > > > > > > > > > > > > > > > Which one do you think is more suitable for us? > > > > > > > > Use fallbacks for some. You pointed difference in alarm for ls1x, right? > > > > If so, then they can stay separate. > > > > > > From what I seen the IP and register set is the same, it is just the > > > integration on the SoC that differs. > > > > > Actually, ls1c RTC registers are not the same as ls1b. > > ls1c doesn't have the following resgisters. > > +#define TOY_MATCH0_REG 0x34 /* TOY timing interrupt 0 */ > > +#define TOY_MATCH1_REG 0x38 /* TOY timing interrupt 1 */ > > +#define TOY_MATCH2_REG 0x3c /* TOY timing interrupt 2 */ > > > > +#define RTC_CTRL_REG 0x40 /* TOY and RTC control register */ > > +#define RTC_TRIM_REG 0x60 /* Must be initialized to 0 */ > > +#define RTC_WRITE0_REG 0x64 /* RTC counters value (write-only) */ > > +#define RTC_READ0_REG 0x68 /* RTC counters value (read-only) */ > > +#define RTC_MATCH0_REG 0x6c /* RTC timing interrupt 0 */ > > +#define RTC_MATCH1_REG 0x70 /* RTC timing interrupt 1 */ > > +#define RTC_MATCH2_REG 0x74 /* RTC timing interrupt 2 */ > > > > As you can see, it doesn't support match function, which is why ls1c > > doesn't support RTC interrupt. > > They are in the Loongson1C Processor User Manual I have which states: > > 21.2.6 SYS_TOYMATCH0/1/2 (no register in 1C2) > I'm afraid that your user manual is outdated. The latest 1C300 user manual (v1.5) doesn't have section 21.2.6 at all. Sorry, I can't find English version. Here is the Chinese version: https://www.loongson.cn/uploads/images/2022051616223977135.%E9%BE%99%E8%8A%AF1C300%E5%A4%84%E7%90%86%E5%99%A8%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C.pdf > -- > Alexandre Belloni, co-owner and COO, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com -- Best regards, Keguang Zhang