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. > > -- > Alexandre Belloni, co-owner and COO, Bootlin > Embedded Linux and Kernel engineering > https://bootlin.com -- Best regards, Keguang Zhang