diff options
Diffstat (limited to 'wiki/Chat_log/20151020-core-chatlog')
-rw-r--r-- | wiki/Chat_log/20151020-core-chatlog | 291 |
1 files changed, 291 insertions, 0 deletions
diff --git a/wiki/Chat_log/20151020-core-chatlog b/wiki/Chat_log/20151020-core-chatlog new file mode 100644 index 0000000..dcbf573 --- /dev/null +++ b/wiki/Chat_log/20151020-core-chatlog @@ -0,0 +1,291 @@ +11:02 < geertu> Welcome to today's Renesas Core Group Chat +11:03 < geertu> Today we have a special guest: Mike Turquette (thx!) +11:03 < dammsan> \O/ +11:03 < mturquette> My pleasure to attend! +11:03 < mturquette> Thank you for the invitation. +11:04 < geertu> Agenda: +11:04 < geertu> 1. Upcoming Gen3 development for the Core group, +11:04 < geertu> 2. New CPG/MSSR Driver, +11:04 < geertu> 3. rcar-dmac: pick up the patches, fix the DMA engine API and save the world, +11:04 < geertu> 4. Status check for tasks from last meeting - what is remaining? +11:04 < dammsan> mturquette: thanks for joining +11:04 < geertu> Given Mike's presence, I think we should start with Topic 2. +11:04 < mturquette> dammsan: :-) +11:05 < dammsan> geertu: your proposal looks all good to me - the only nit i have is the compat string +11:05 < geertu> Mike: I hope the bindings (and driver) I posted are in-line with your remaps? +11:05 < mturquette> geertu: yes. I've reviewed the binding it looks great. +11:05 < geertu> s/remaps/remarks/ +11:05 < mturquette> I'm still going through the driver changes, but the binding perfectly fits our discussion from ELC-E +11:06 < geertu> dammsan: What's your nit? +11:06 < dammsan> i feel that the "mssr" bit is something unknown +11:07 < dammsan> but i guess the mssr portion is outside the cpg? +11:07 < dammsan> s/bit/part of the name/g +11:08 < mturquette> Follow on question to dammsan: are the descriptions of the "mssr" bit fields in the same chapter/section as the cpg register descriptions in your internal documentation? +11:08 < mturquette> if so, it might be easier to just name the whole thing "cpg" +11:08 < geertu> Datasheet (for Gen2) says: +11:08 < geertu> 7. Clock Pulse Generator (CPG) +11:08 < geertu> 7A. Module Standby and Software Reset +11:08 < geertu> 7B. Advanced Power Management Unit for AP-System Core (APMU) +11:09 < mturquette> ah +11:09 < geertu> The registers in 7A are inside the same 4 KiB block of the CPG registers +11:09 < geertu> The registers in 7B are in a separate 4 KiB block +11:09 < dammsan> mturquette: i think so +11:11 < dammsan> I guess 7B needs to be managed by PSCI firmware +11:11 < geertu> Same for Gen3 (chapters 8/8A/8B) +11:11 < dammsan> geertu: do you have any strong feelings about the compat string name? +11:12 < geertu> The CPG and MSSR registers are really mixed, so you cannot separate them +11:13 < dammsan> right, so this is a good match for the single DT node approach +11:13 < geertu> dammsan: I just came up with a name that describes the block "renesas,r8a7795-cpg-mssr" +11:14 < geertu> Do you have a better suggestion? +11:14 < dammsan> geertu: i'm ok with that, but i would simply go with "r8a7795-cpg" +11:14 < geertu> (the old bindings for CPG only use e.g. ""renesas,r8a7790-cpg-clocks", and +11:14 < dammsan> and keep the mssr abstraction in C +11:14 < mturquette> I'm fine with either compat string name. Hopefully future chips will call the IP block something like Clock And Reset (CAR) or Reset and Clock Manager (RCM) or something :-) +11:14 < geertu> "renesas,rcar-gen2-cpg-clocks" +11:15 < dammsan> so our only concern at this point is the compat string? =) +11:15 < mturquette> I did have one other quick question +11:15 < mturquette> Do you plan to introduce reset framework bits into drivers/clk/shmobile/ ? +11:15 < geertu> If the technical side is OK, we can start bikeshedding +11:15 < geertu> mturquette: Yes, that's the plan +11:15 < mturquette> geertu: OK, great. +11:16 < geertu> tegra does it that way, too, IIRC +11:16 < mturquette> geertu: for the binding I'm very happy with it. +11:16 < geertu> I'm running the code here on r8a7795 and r8a7791, so that part works, too. +11:16 < mturquette> geertu: I don't have any review comments for the driver implementation at this time, so I'll post them later today on the list if I have anything, otherwise I can merge the series. +11:16 < dammsan> good! +11:16 < geertu> For the resets, it's still to be seen how good that works, and how it is to be used +11:17 < mturquette> geertu: or, do you plan to package things up in a PR? +11:17 < geertu> (resets have to be used explicitly by each individual driver?) +11:18 < dammsan> if everyone is happy - when can we see it in -next? +11:18 < dammsan> (i mainly care about the binding) +11:18 < geertu> Does anyone have any comment w.r.t. #defining all clocks in include/dt-bindings/clock/r8a7795-cpg-mssr.h upfront, or only having the ones we curently need? +11:19 < dammsan> geertu: as long as error handling is sane anything is fine with me +11:19 < dammsan> (running new DTB on old kernel) +11:20 < geertu> dammsan: new DTB on old kernel won't work +11:20 < geertu> dammsan: old DTB on new kernel should work if you include the old driver +11:20 < dammsan> geertu: but when you add clocks you increase support level in the driver, right? +11:21 < geertu> dammsan: another question is how complex we want the logic in drivers/sh/pm_runtime.c for the legacy clock domain to be +11:21 < mturquette> RE: defining all clocks, I'm of course fine with that, but the header is part of the "stable" binding. +11:21 < geertu> dammsan: yes, the cpg-mssr driver so far only implements the clocks we use +11:21 < mturquette> geertu: so it might be a safer approach to only add clocks as you need them. removing clocks breaks backwards compatibility. +11:21 < geertu> mturquette: of course. So it's append only. +11:21 < mturquette> geertu: but the choice is yours. i'm fine either way. +11:22 < dammsan> geertu: so say you add clocks to upstream +11:22 < dammsan> geertu: and people use the latest DTB with an old kernel +11:22 < dammsan> geertu: then the new clocks should fail to register, but shall the system halt? +11:23 < dammsan> geertu: in my mind it makes sense to keep the system working +11:23 < geertu> mturquette: My main thinking there is to switch over Gen2 (so far there's a single SoC in Gen3 only): do we (try to) keep numbers in sync between different SoCs of the same family? Syncing means we will have gaps in the numbering, but it may make the C code simpler. +11:23 < mturquette> geertu: i don't see why keeping the numbers the same is important +11:24 < mturquette> geertu: you're using preprocessor macros/defines for the numbers, right? +11:24 < mturquette> geertu: the symbols are the only thing that need to be sync'd between Linux kernel and the binding +11:24 < geertu> dammsan: It will print an error message that it can't handle the clock (cfr. the "default" switch case) +11:24 < dammsan> geertu: thats fine if the rest of the system works +11:24 < geertu> mturquette: For the CPG core clock outputs we use #defines. +11:25 < geertu> dammsan: and it will continue +11:25 < dammsan> geertu: wondershon +11:25 < geertu> mturquette: For the module clocks (and future resets) we use hardcoded numbers +11:25 < geertu> as these match the datasheet +11:26 < geertu> The CPG core clock numbers are numbers we come up with ourselves. +11:26 < mturquette> geertu: OK. the only problem there is if you have a NR_CLKS or NR_RESETS value that changes as new entries are added. +11:26 < dammsan> geertu: those hard coded numbers match the documentation 100%, right? +11:26 < geertu> dammsan: yes, they're the old "MSTP numbers" +11:27 < geertu> mturquette: NR_CLOCKS is only in the driver (C code) +11:27 < dammsan> geertu: right, and they are kind of sparsely populated I think +11:27 < mturquette> geertu: sounds good to me. +11:27 < geertu> mturquette: About numbering for different SoCs +11:27 < mturquette> geertu: i prefer a non-sparse list for "fake" numbers, but of course it makes sense to use a sparse list if you are matching the hardware. +11:28 < geertu> E.g. r8a7790 has more CPG core clocks than r8a7791. +11:28 < geertu> But both have QSPI. So R8A7790_CLK_QSPI may be different from R8A7791_CLK_QSPI +11:29 < geertu> Currently I use the CLK_TYPE_GEN2_QSPI clock type (internal to the C driver) to handle that. +11:30 < dammsan> geertu: on gen2 with mssr, will you use a generic compat string, or break out per SoC? +11:30 < mturquette> Hmm, I'll take a look at that. +11:30 < geertu> dammsan: yes, module clocks are sparsely populated. and more may show up or disappear with a revision of the datasheet :-) +11:30 < mturquette> On other implementations I see typically a big list of clocks in the driver which are common. And then various other smaller lists which break out the SoC-specific bits. +11:31 < dammsan> geertu: right. so matching the data sheet directly makes sense +11:31 < geertu> dammsan: per SoC, as the core clock registers are different (mainly about existence vs. non-existence) +11:31 < dammsan> geertu: sounds ggggggggood +11:32 < dammsan> mturquette: this is how to split the common code and soc-specific in C, right? +11:32 < dammsan> or does it affect the DT ABI? +11:32 < mturquette> dammsan: correct. It prevents from having to register two qspi clocks by accident +11:32 < dammsan> makes sense +11:32 < mturquette> dammsan: and thus it does not matter if the DT binding uses the same number for the qspi clocks on different SoCs +11:33 < dammsan> mturquette: so you have one name space per SoC? +11:33 < mturquette> and since you are using per-SoC compat strings, its easy to match on this +11:33 < mturquette> dammsan: right. +11:33 < dammsan> the numbers may or may not be shared +11:33 < geertu> On problem is we don't know in advance which clocks are common and which are SoC-specific (or become SoC-specific once a new derived SoC is released which lacks a hardware block) +11:33 < dammsan> between SoCs +11:33 < mturquette> but, generally you can describe 90% of your clocks in one big array which are shared by all the SoCs in the same family +11:34 < mturquette> and even if a new SoC comes out and changes this, you don't break DT compat, since its just an internal driver change to migrate a clock out of the "common" array into soc-specific arrays +11:34 < mturquette> geertu: ^^^ I think the point above addresses that. +11:34 < dammsan> mturquette: sure, sounds good +11:35 < mturquette> as long as the shuffling happens in the C driver and doesn't break compat, then its fine. +11:35 < mturquette> new kernels with different tables of per-soc clocks should still work with old DTBs +11:35 < geertu> So having the (intermediate) CLK_TYPE_GEN2_* defines is good, as it allows to isolate different SoCs +11:36 < geertu> And the SoC-specific numbers can be contiguous +11:36 < dammsan> mturquette: so you dont care how the DT ABI numbers are allocated? +11:36 < dammsan> as long as they are kept working +11:36 < dammsan> ? +11:37 < geertu> dammsan: Mike said before he prefers a non-sparse list +11:37 < dammsan> geertu: ok thanks, sorry for being slow +11:37 < mturquette> geertu: dammsan: I won't NAK a patch based on the list type. its really your choice. +11:38 < mturquette> geertu: I searched for CLK_TYPE_GEN2 in the v4 series and I don't see it? +11:38 < dammsan> so the current gen2 approach, is it good or bad? +11:38 < dammsan> (i mean the old upstream way with separate CPG and MSTP) +11:39 < dammsan> (the CPG clocks are virtual and non-sparse) +11:39 < geertu> mturquette: I didn't post the Gen2 driver, only the Gen3 one +11:39 < mturquette> geertu: ah, I see. Thanks. +11:39 < geertu> so you want to look for CLK_TYPE_GEN3\ +11:40 < geertu> For Gen3 we support a single SoC only +11:40 < geertu> I mainly did the Gen2 version (for r8a7791 only) to validate the approach, as we have more hardware support there +11:41 < geertu> To support SoC-family and SoC-specific tables, I just need to split cpg_mssr_info.core_clks[] into two arrays +11:41 < mturquette> geertu: I see. Thanks. +11:42 < geertu> and call the SoC-family cpg_clk_register() from the SoC-specific .cpg_clk_register() callback +11:42 < mturquette> geertu: using an enum/flag or splitting it per-clock/per-soc tables, either way is fine with me. +11:42 < dammsan> geertu: i think your code looks clean and easy to read +11:42 < mturquette> ack. +11:43 < mturquette> and it looks like the array of clock data follows the hierarchy? that's always nice. +11:43 < mturquette> (at least for cpg) +11:43 < geertu> mturquette: yes, each entry has a parent clock +11:43 < geertu> (div6 clocks with multiple parents are not yet supported) +11:44 < geertu> (but support can be added, of course) +11:44 < dammsan> geertu: it looks like your V4 series is based on the old Gen3 driver? +11:44 < dammsan> clk-rcar-gen3.o +11:45 < dammsan> i mean the code base includes the old driver, but it is not used +11:46 < dammsan> or am i misunderstanding? +11:47 < geertu> dammsan: you mean in renesas-drivers.git? +11:48 < dammsan> i suppose you simply based your tree on the old implementation +11:48 < geertu> yes +11:48 < dammsan> i mean the V4 series +11:48 < dammsan> The [5/5] Makefile hunk gives you away =) +11:49 < geertu> one moment please, there's a delivery here... +11:53 < dammsan> mturquette: so on your side, with the DT binding, when do you think it can end up in -next? +11:53 < dammsan> (we tend to treat it as semi-stable once it hits -next) +11:53 < dammsan> maybe semifreddo is a better word =) +11:55 < mturquette> geertu: are you planning to send a PR? +11:55 < mturquette> dammsan: I have answered your question with a question. +11:59 < dammsan> mturquette: a question to me, or to geertu? =) +11:59 < dammsan> (i can't seem to locate the answer/question in my history) +12:00 < geertu> mturquette: it's just patches 1 and 2 of the series, right? +12:01 < geertu> Is it worth sending a pull request for that? +12:01 < mturquette> geertu: I'm confused. I will finish reviewing all 5 patches later today. I can either merge them directly (if there are no problems) or you can send me a PR with any other outstanding renesas clk patches. +12:02 < mturquette> geertu: but I'm confused by your comment about "just patches 1 and 2" +12:02 < geertu> mturquette: bindings are patches 1 (binding doc) and 2 (clock defines) +12:02 < dammsan> geertu: do you feel the driver bits need more time to stabilize before merging upstream? +12:02 < geertu> mturquette: 3-5 are implementation, which can use some review and need a bit of rework +12:03 < geertu> dammsan: there are FIXMEs and too many debug prints +12:03 < mturquette> geertu: Then lets keep all 5 together. No reason to merge "dead code" +12:03 < dammsan> geertu: ok, no problem +12:03 < geertu> Does that mean we postpone everything to v4.5? +12:04 < geertu> I thought the plan was to get the bindings accepted in v4.4 +12:04 < geertu> so we know what we're working against (binding-wise) for v4.5 +12:04 < dammsan> that would be very nice yes +12:04 < mturquette> geertu: that's fine, i can merge them if you would like. +12:05 < dammsan> so a separate PR with patch 1 + 2? +12:05 < mturquette> geertu: but once a Linux release is made they considered somewhat stable +12:05 < mturquette> No PR necessary. I was only asking if geertu planned to send a PR already. +12:05 < dammsan> ok sweet +12:06 < geertu> yes, thx +12:06 < dammsan> geertu: so i looked through patch 1 + 2 +12:06 < mturquette> (I prefer PRs because I invariably miss something when it is left up to me to pick patches ;-) +12:06 < dammsan> and they look good +12:06 < geertu> Has anyone reviewed include/dt-bindings/clock/r8a7795-cpg-mssr.h? +12:06 < dammsan> geertu: do you need anything from me? +12:06 < geertu> OK, will send a PR later today +12:06 < geertu> for patches 1 and 2 +12:07 < geertu> dammsan: Reviewed-by? +12:07 < dammsan> sure, i will go through once more tonight and reply to public space +12:07 < mturquette> geertu: feel free to add my Ack to both patches +12:08 < geertu> The defines are based on Table 8.2a +12:08 < geertu> ("List of Clocks [R-Car H3]") +12:08 < dammsan> thanks, will check +12:09 < dammsan> will get back to you later tonight JST +12:10 < geertu> mturquette: ok, thx +12:13 < geertu> BTW, the bindings mention r8a7791 too. I guess I better leave that out for now. +12:16 < geertu> Any other clock related topics? +12:16 < mturquette> geertu: None from me. +12:16 < geertu> OK, next topic +12:16 < geertu> 1. Upcoming Gen3 development for the Core group, +12:17 < geertu> shimoda-san/morimoto-san? +12:17 < shimoda> yes, please wait.. +12:20 < shimoda> ipmmu, and rcar-dmac is needed by end of Nov. +12:20 < shimoda> dammsan is working for ipmmu now +12:21 < shimoda> who is working for rcar-dmac? but, it is not needed for gen3 binding? +12:21 < geertu> No one is working on rcar-dmac. +12:21 < shimoda> about ipmmu, it is a prototype code +12:21 < dammsan> shimoda: yes, and i have not managed to get the ipmmu working yet +12:22 < geertu> If ipmmu and rcar-dmac are the only items, and ipmmu is being worked on, I guess we should move to Topic 3. rcar-dmac: pick up the patches, fix the DMA engine API and save the world +12:22 < shimoda> geertu: yes, let's move to topic 3 +12:23 < geertu> So several patches have been sent by Hamza from Visteon, who is using SCIFA on H2 to talk to Bluetooth +12:24 < geertu> Laurent is the most knowledgeable about the rcar-dmac driber, but he has no time/no mandate to work on it +12:24 < geertu> Several issues can be traced back to core DMA engine API issues +12:25 < geertu> Lars-Peter Clausen has planned to work on DMA engine issues +12:25 < dammsan> geertu: to reproduce these issues, would it make sense to create a loopback SCIF setup for everyone? +12:25 < geertu> None of the above is Gen3-specific though +12:26 < geertu> dammsan: That's one option. +12:26 < dammsan> do we have any better test target? +12:27 < geertu> dammsan: Better would be one SCIF(A) to another SCIF(A) +12:27 < dammsan> (i have much faith in the current state of the SCIF driver, as opposed to other drivers) +12:27 < dammsan> sure +12:27 < geertu> Plain SCIF doesn't work well with "high" (read: medium) speeds +12:27 < dammsan> ideally we would like to test both, right? +12:27 < geertu> Note that Gen3 doesn't have SCIFA, but HSCIF +12:27 < dammsan> ah, right +12:27 < geertu> My breadboard wiring setup doesn't work well for multi-Mbps +12:28 < dammsan> is that on gen2? +12:28 < geertu> If you use loopback, the same spinlock is taken for RX and TX paths +12:28 < geertu> dammsan: yes, koelsch +12:29 < geertu> dammsan: haven't done much with the Salvator-X yet +12:29 < dammsan> loopback = external loopback circuit, or in-uart config? +12:29 < geertu> (except for CPG ;-) +12:29 < dammsan> right, no stress =) +12:29 < geertu> dammsan: I was thinking about external loopback, but SCIF indeed has internal loopback, too +12:29 < geertu> dammsan: no pinctrl nor EXIO connectors needed for internal loopback ;-) +12:30 < dammsan> right, but SCIF only +12:30 < dammsan> or how about HSCIF? +12:30 < geertu> same for HSCIF +12:30 < geertu> (HSCIF is SCIF on steroids) +12:30 < geertu> (SCIFA is SCIF on different steroids) +12:31 < geertu> (SCIFB is SCIFA on more steroids) +12:31 < geertu> What do we do with rcar-dmac? +12:33 < shimoda> How about loopback test of HSCIF? +12:33 < pinchartl> (hello) +12:34 < shimoda> hello! +12:35 < geertu> (Lars-Peter Clausen is already posting DMA engine API patches, cool) +12:36 < geertu> pinchartl: Right on time ;-) +12:36 < pinchartl> give or take an hour and a half, yes. sorry about that +12:37 < geertu> For now I'll add a task to start caring for rcar-dmac +12:37 < pinchartl> regarding rcar-dmac +12:37 < pinchartl> I don't have much time to spend on it +12:37 < pinchartl> but I can find time to review patches +12:37 < pinchartl> including dma engine core patches +12:38 < geertu> good to hear that! +12:38 < pinchartl> I believe a discussion with Lars, Vinod and possibly others would be useful to draft a future for the dma engine API +12:38 < pinchartl> it's growing in an uncontrolled fashion today +12:39 < geertu> Both were at ELCE. Will they be at Kernel Summit? +12:39 < pinchartl> unfortunately not +12:40 < geertu> As we're running (ran) out of time... +12:40 < geertu> 4. Status check for tasks from last meeting - what is remaining? +12:40 < geertu> https://osdr.renesas.com/projects/linux-kernel-development/wiki/Core-todo-list +12:41 < geertu> Not much has happened here +12:41 < geertu> Except for "Propose API to obtain mode pin values in a generic way" +12:41 < geertu> which Magnus wanted to discuss, but horms is not here? +12:42 < dammsan> right +12:42 < dammsan> CMA is not yet enabled I think +12:42 < dammsan> but it can wait a bit longer +12:42 < dammsan> (same as other stuff) +12:42 < dammsan> maybe simon will join next time +12:43 < dammsan> and we can discuss the boot mode API then +12:43 < geertu> ok +12:44 < geertu> Anything else to discuss in the -14 minutes we have left? +12:44 < dammsan> not from my side =) +12:44 < pinchartl> speaking of next time, geertu, could you please CC me when you'll send the next invitation ? I'll then add it to my calendar immediately. I had missed this one +12:45 < geertu> pinchartl: sorry, aren't you on periperi? +12:45 < pinchartl> yes I am +12:45 < pinchartl> but mails on CC have less chance to slip through the cracks +12:46 < pinchartl> I read periperi +12:46 < pinchartl> but I've missed that mail for some reason +12:46 < geertu> oops +12:46 < geertu> Thanks for joining, CU next time! +12:46 < geertu> Bye +12:47 < dammsan> thanks, see you in 2 weeks =) |