summaryrefslogtreecommitdiff
path: root/wiki/Chat_log/20151020-core-chatlog
blob: dcbf5733e0c77c05f95da2fe1b919501b06aaff6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
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 =)