summaryrefslogtreecommitdiff
path: root/wiki/Chat_log/20160803-mm-chatlog
blob: d26a6ab814b66e68636cd4a8d123fda9dfc3a885 (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
Multimedia-chat-meeting-2016-08-03

<neg> hi all  [16:22]
<pinchartl> hello
<uli___> hello
<pinchartl> I don't think Kieran or Magnus will join us today  [16:24]
<pinchartl> so everybody is here
<pinchartl> let's thus get started  [16:25]
<morimoto> hi
<pinchartl> I've asked you all to send task status by e-mail before the
	    meeting, and you have all done so
<pinchartl> thank you :-)
<pinchartl> let's see if we can speed this up, we'll cap the meeting to one
	    hour max  [16:26]
<pinchartl> we also don't have to go through task status in details
<pinchartl> we can try the scrum-style meeting and just report work done, work
	    planned, and blockers/issues  [16:27]
<neg> really sorry I need to let the postman in at the door, brb please go
      head without me
<pinchartl> an announcement first
<pinchartl> I've submitted additional tasks for Q3 to Morimoto-san  [16:28]
<pinchartl> we have exchanged a few e-mails about them, hopefully everything
	    is on track now
<pinchartl> morimoto: do you still need more information from me ? is there
	    anything I can do to help ?
<morimoto> Now, shimoda-san and our boss is checking it.
<pinchartl> or is everything fine ?
<pinchartl> is that a good sign ? :-)  [16:29]
<morimoto> pinchartl: please wait. please start meeting first  [16:30]
<pinchartl> well, I'll assume it's not a bad sign :-)
<pinchartl> that's all I wanted to announce on this topic
<pinchartl> I've also noticed that Salvator-X M3 boards have started shipping
								        [16:31]
<pinchartl> so let's get ready for integration work and testing on M3
<morimoto> pinchartl: starting "paper work", not shipping ;P  [16:32]
<morimoto> pinchartl: I send question mail to you. please check it
<pinchartl> well, paperwork is the first step for shipping :-)
<pinchartl> I will right after the meeting
<neg> back, sorry about that
<pinchartl> neg: no worries
<pinchartl> I'll give you a minute to read the log. any question ?  [16:33]
<neg> thx, I'm good
<pinchartl> ok, let's go round the (virtual) table then  [16:34]
<pinchartl> in alphabetical order as usual
<pinchartl> using the real alphabetical order this time, I'll start
<pinchartl> since last meeting in Japan three weeks ago
<pinchartl> - there was RenesasCon and LinuxCon Japan  [16:35]
<pinchartl> followed by a week of holidays
<pinchartl> leaving a week and a half of work
<pinchartl> - I've continued working on the request API. Hans Verkuil is back
	    from holidays, I've discussed contention points with him and
	    Sakari Ailus  [16:36]
<pinchartl> in the end there was no more disagreement with my proposal, so
	    I've continued working on the implementation  [16:37]
<pinchartl> - I've also started IPMMU + DU integration, targetting Gen3
<pinchartl> the result can't be tested properly on H3 as the IPMMU is known to
	    be faulty
<pinchartl> partial tests will be performed on Gen2 by hooking the VSP1 to the
	    DU the same way as we do on Gen3  [16:38]
<pinchartl> - last but not least, I acted as Magnus' deputy for additional
	    tasks negotiation
<pinchartl> during the next two weeks, I will  [16:39]
<pinchartl> - continue working on IPMMU + DU and the request API
<pinchartl> - continue Kieran's work on the VSP image partitioning
	    implementation
<pinchartl> (Kieran has left for his honeymoon and will be back at the end of
	    the month)  [16:40]
<pinchartl> issues and blockers:
<pinchartl> - the IPMMU is faulty on H3, blocking full testing of the IPMMU +
	    DU integration, but that's a known problem and not a blocker as
	    explained above  [16:41]
<pinchartl> no other issue for me
<pinchartl> ah, I will also during the next two weeks try to get the VSP HGO
	    support upstreamed  [16:42]
<pinchartl> a new iteration of the patch series might be needed with minor
	    changes, I don't expect any problem
<pinchartl> that's it for me
<pinchartl> Morimoto-san, you're next in the alphabetical order  [16:43]
<morimoto> OK,
<morimoto> I have posted cleanup patches which is needed for OF graph.  [16:44]
<morimoto> but still no responce from maintainer. I wonder is Europe under
	   summer vacation now ??
<morimoto> 1 - 1.5 month, no responce
<pinchartl> some people must be  [16:45]
<morimoto> OK
<pinchartl> who is the maintainer ?
<pinchartl> Mark Brown ?
<morimoto> Yes
<morimoto> Do you know his situation ??
<pinchartl> he has been quite active on the kernel summit mailing list lately,
	    so he's definitely alive
<morimoto> OK alive. but no responce...  [16:46]
<morimoto> Anyway, because of this, I started to solve other headache
<pinchartl> he doesn't seem to be on vacation
<pinchartl> you can ping him
<morimoto> Sometimes, he post his mail, but he doesn't accept patches, not
	   only me.  [16:47]
<morimoto> So now, I started to solve other headache which is "unload" issue
	   on ALSA SoC  [16:48]
<pinchartl> ah
<pinchartl> a big one
<pinchartl> I've seen your e-mails on that
<pinchartl> the topic was also mentioned by Lars in the kernel summit mailing
	    list
<morimoto> Yes. ALSA SoC has same issue   [16:49]
<pinchartl> that's related to hotplug support, right ?
<morimoto> Yes.
<morimoto> especially, hot-unplug  [16:50]
<pinchartl> ok
<morimoto> I'm not sure how to solve this issue, but I started to investigate
	   ALSA SoC framework, and I noticed that it has many duplicate
	   implementation.
<morimoto> It makes hotplug support difficult I think  [16:51]
<morimoto> So, I would like to cleanup ALSA SoC
<pinchartl> I think you can discuss it with Lars if needed, he seems quite
	    interested in this topic as well
<morimoto> Now, I'm asking about it ot ML.
<morimoto> Nice idea.  [16:52]
<morimoto> I think I can have a chance to talk him on next ELCE ?
<pinchartl> I would expect so, yes
<pinchartl> Mark Brown should hopefully be there too
<morimoto> I hope so
<pinchartl> maybe you should schedule a meeting with them at ELCE
<pinchartl> I would be interested in joining
<morimoto> sounds nice for me  [16:53]
<morimoto> with beer ?
<morimoto> Anyway, this is current my status.
<pinchartl> :-)
<morimoto> I think this "hotplug" is requested for HDMI ?  [16:54]
<pinchartl> yes
<pinchartl> well, I don't know how HDMI audio is implemented in ALSA
<pinchartl> and whether unplugging the cable will remove the device or not
<morimoto> In my understand, "unplugging cable" and "unload driver" are
	   different problem.  [16:55]
<morimoto> But, some of them can be related ?
<morimoto> no sure
<pinchartl> they can be, but that depends on how ALSA handles it. I don't know
<pinchartl> is that something you can investigate ?
<morimoto> I think so.  [16:56]
<pinchartl> thanks
<pinchartl> what is your plan for the next two weeks ?
<morimoto> For this purpose, my 1st step is cleanup framework. It is now tasty
	   spaghetti
<morimoto> 1) continue OF graph related patch work  [16:57]
<morimoto> 2) investigate and cleanup ALSA SoC
<morimoto> It is related Mark's situation
<pinchartl> any issue or blocker, apart from Mark being unresponsive ?  [16:58]
<morimoto> no blocker.
<pinchartl> thank you  [16:59]
<morimoto> Oops, export paper work sometimes block me :)
<pinchartl> :-)
<pinchartl> neg: you're next
<neg> since last time: Working on addaptions to rcar-vin to keep up with
      patches posted for adv7180 and help out Sergie with his problem. Added
      ALTERNATE field support to rcar-vin
<neg> plan: Keep pushig for those patches and once they are picked up start to
      break out patches from my Gen3 VIN series and post them in smaller
      chunks to try and get some tracktion on them
<neg> issues: No reviews on the VIN Gen3 and CSI-2 patches and unclear how to
      handle ADV7482 tasks.
<pinchartl> I suppose the "no review" is a hint for me ? :-)  [17:00]
<neg> :-)
<pinchartl> I'll get to that  [17:01]
<pinchartl> regarding ADV7482, would you like to discuss it at some point ?
<neg> np, if you are super swamped maybe you can hold off abit untill I start
      sending out break out parts of the Gen3 series and review them
<pinchartl> early next week would work best for me if that's fine with you
								        [17:02]
<pinchartl> Monday or Tuesday
<neg> yes I would like to discuss ADV7482, just let me know when you have some
      time
<pinchartl> (I'll be unavailable next Wednesday)
<pinchartl> ok  [17:03]
<neg> sure, Monday morning and between 15-17 I will have builders starting
      construction but other than that just ping me when you have time
<pinchartl> Monday 13:00 your time ?
<neg> works
<pinchartl> ok  [17:04]
<pinchartl> uli___: you're next
<uli___> for work done, see the status update
<uli___> planned is to start on the additional tasks, plus deal with this:
<uli___> issue:
<uli___> the hdmi gen3 output needs to read the product register to handle
	 es1.1  [17:05]
<pinchartl> ouch
<uli___> right now, that is a hardcoded register access
<uli___> which people dislike
<uli___> in response, dirk behme wrote a driver
<uli___> which people consider overkill, i guess :)
<uli___> the last alternative is to code that in the DT, which i consider a
	 technical fail, considering it can be autodetected
<uli___> any opinions on how to tackle this?  [17:06]
<pinchartl> why does the hdmi code need the product register value ?
<pinchartl> what is handled differently ?
<uli___> i must admit i have not looked into what it exactly does :) maybe
	 morimoto knows?
<morimoto> about ES1.1 ?  [17:07]
<uli___> yes
<morimoto> Unfortunately, ES1.0 and ES1.1 have different behavior  [17:08]
<morimoto> on HDMI
<pinchartl> is the code that handles the ES1.0/ES1.1 differences public ?
<uli___> it's from the bsp  [17:09]
<pinchartl> where I can get it from ?
<uli___> morimoto-san sent an email about that to periperi  [17:10]
<uli___> as a response to a group meeting summary
<uli___> Then, apply this new version of DPLL support patch from BSP.
<uli___> But, you will get conflict, but it is not difficult to fix.
<uli___>         01b4818ac558f17f7c74505003c5cca2fc149de1
<uli___>         (drm: rcar-du: Add DPLL support)
<uli___> Above DPLL support needs new header from BSP.
<uli___>         9c4c8fb9e6c11fb9594e3edaccc1c73976e0cfe6
<uli___>         (soc: renesas: Add product register helpers)
<pinchartl> what's the mail's subject ?
<uli___> "Renesas Multimedia Group Meeting" :)  [17:11]
<morimoto> Re: [periperi] Renesas Multimedia Group Meeting
<uli___> it's from june 2
<morimoto> Date: Thu, 2 Jun 2016 01:17:13 +0000
<morimoto> 
<pinchartl> got it
<pinchartl> I will have a look
<morimoto> It came from BSP
<pinchartl> uli___: when do you plan to address that ?  [17:12]
<pinchartl> (to know what my deadline is to look at the issue)
<uli___> in the not too distant future, if possible
<uli___> i actually wanted to send it out yesterday, then i remembered that
	 this isn't addressed yet  [17:13]
<pinchartl> could you be slightly more precise ? :-)
<uli___> in a week?
<uli___> or two?  [17:14]
<pinchartl> ok, I'll try to check that on Monday too  [17:15]
<pinchartl> is that fine ?
<uli___> yes, perfectly fine. thanks.
<pinchartl> you're welcome
<morimoto> I and Magnus had discussed about that, we can use Geert's DT
	   compatible magic ? I believe it will add es version on compatible.
<morimoto> "r8a7795-salvator" -> "r8a7795-salvator-es1.1" "r8a7795-salvator"
<uli___> that's the option i'd like to avoid if at all possible
<morimoto> OK  [17:16]
<uli___> but i can deal with it, if necessary
<pinchartl> I also wonder how much work we should put into that, given that es
	    1.0 is meant to disappear
<pinchartl> whatever solution we come up with, it must not make es 1.1 support
	    too complex or dirty
<pinchartl> anyway, I'll have a look  [17:18]
<uli___> ok, thank you
<pinchartl> any last comment from anyone ?
<pinchartl> I'll take that as a no  [17:19]
<neg> thanks for steping up as Magnus deputy :-)
<pinchartl> you're welcome
<pinchartl> I propose scheduling the next meeting in two weeks, Wednesday the
	    17th, at the usual time (half an hour later than today)
<pinchartl> would that be fine for everybody ?
<neg> OK for me  [17:20]
<uli___> fine for me
<morimoto> Not OK for me
<pinchartl> :-/
<morimoto> it is under summer vacation
<pinchartl> when are your summer vacation ?
<morimoto> 13 - 21
<morimoto> 13th Aug to 21th Aug I mean  [17:21]
<pinchartl> I give you permission to skip the meeting then :-)
<morimoto> :) 
<pinchartl> if you could send a status report either before leaving for
	    vacation, or after coming back, it would be appreciated
<neg> I will be in Berlin from tomorrow to sunday, so I might be slow in
      responding during that time  [17:22]
<morimoto> pinchartl: OK, I will try
<pinchartl> morimoto: thank you
<pinchartl> neg: ok, thanks for the information
<pinchartl> on the same topic, I will be on vacation from Saturday the 20th to
	    Sunday the 28th  [17:23]
<pinchartl> we've reached the one hour limit
<pinchartl> and we're done with the meeting, so it's a good timing
<pinchartl> thank you everybody, and have a nice day in Europe or evening in
	    Japan  [17:24]
<neg> thanks all
<morimoto> Thanks !
lass="hl opt">, int idx) { ffb_fbcPtr ffb = fpriv->regs; struct ffb_hw_context *ctx; int i; ctx = fpriv->hw_state[idx - 1]; if (idx == 0 || ctx == NULL) return; if (ctx->is_2d_only) { /* 2D applications only care about certain pieces * of state. */ ctx->drawop = upa_readl(&ffb->drawop); ctx->ppc = upa_readl(&ffb->ppc); ctx->wid = upa_readl(&ffb->wid); ctx->fg = upa_readl(&ffb->fg); ctx->bg = upa_readl(&ffb->bg); ctx->xclip = upa_readl(&ffb->xclip); ctx->fbc = upa_readl(&ffb->fbc); ctx->rop = upa_readl(&ffb->rop); ctx->cmp = upa_readl(&ffb->cmp); ctx->matchab = upa_readl(&ffb->matchab); ctx->magnab = upa_readl(&ffb->magnab); ctx->pmask = upa_readl(&ffb->pmask); ctx->xpmask = upa_readl(&ffb->xpmask); ctx->lpat = upa_readl(&ffb->lpat); ctx->fontxy = upa_readl(&ffb->fontxy); ctx->fontw = upa_readl(&ffb->fontw); ctx->fontinc = upa_readl(&ffb->fontinc); /* stencil/stencilctl only exists on FFB2+ and later * due to the introduction of 3DRAM-III. */ if (fpriv->ffb_type == ffb2_vertical_plus || fpriv->ffb_type == ffb2_horizontal_plus) { ctx->stencil = upa_readl(&ffb->stencil); ctx->stencilctl = upa_readl(&ffb->stencilctl); } for (i = 0; i < 32; i++) ctx->area_pattern[i] = upa_readl(&ffb->pattern[i]); ctx->ucsr = upa_readl(&ffb->ucsr); return; } /* Fetch drawop. */ ctx->drawop = upa_readl(&ffb->drawop); /* If we were saving the vertex registers, this is where * we would do it. We would save 32 32-bit words starting * at ffb->suvtx. */ /* Capture rendering attributes. */ ctx->ppc = upa_readl(&ffb->ppc); /* Pixel Processor Control */ ctx->wid = upa_readl(&ffb->wid); /* Current WID */ ctx->fg = upa_readl(&ffb->fg); /* Constant FG color */ ctx->bg = upa_readl(&ffb->bg); /* Constant BG color */ ctx->consty = upa_readl(&ffb->consty); /* Constant Y */ ctx->constz = upa_readl(&ffb->constz); /* Constant Z */ ctx->xclip = upa_readl(&ffb->xclip); /* X plane clip */ ctx->dcss = upa_readl(&ffb->dcss); /* Depth Cue Scale Slope */ ctx->vclipmin = upa_readl(&ffb->vclipmin); /* Primary XY clip, minimum */ ctx->vclipmax = upa_readl(&ffb->vclipmax); /* Primary XY clip, maximum */ ctx->vclipzmin = upa_readl(&ffb->vclipzmin); /* Primary Z clip, minimum */ ctx->vclipzmax = upa_readl(&ffb->vclipzmax); /* Primary Z clip, maximum */ ctx->dcsf = upa_readl(&ffb->dcsf); /* Depth Cue Scale Front Bound */ ctx->dcsb = upa_readl(&ffb->dcsb); /* Depth Cue Scale Back Bound */ ctx->dczf = upa_readl(&ffb->dczf); /* Depth Cue Scale Z Front */ ctx->dczb = upa_readl(&ffb->dczb); /* Depth Cue Scale Z Back */ ctx->blendc = upa_readl(&ffb->blendc); /* Alpha Blend Control */ ctx->blendc1 = upa_readl(&ffb->blendc1); /* Alpha Blend Color 1 */ ctx->blendc2 = upa_readl(&ffb->blendc2); /* Alpha Blend Color 2 */ ctx->fbc = upa_readl(&ffb->fbc); /* Frame Buffer Control */ ctx->rop = upa_readl(&ffb->rop); /* Raster Operation */ ctx->cmp = upa_readl(&ffb->cmp); /* Compare Controls */ ctx->matchab = upa_readl(&ffb->matchab); /* Buffer A/B Match Ops */ ctx->matchc = upa_readl(&ffb->matchc); /* Buffer C Match Ops */ ctx->magnab = upa_readl(&ffb->magnab); /* Buffer A/B Magnitude Ops */ ctx->magnc = upa_readl(&ffb->magnc); /* Buffer C Magnitude Ops */ ctx->pmask = upa_readl(&ffb->pmask); /* RGB Plane Mask */ ctx->xpmask = upa_readl(&ffb->xpmask); /* X Plane Mask */ ctx->ypmask = upa_readl(&ffb->ypmask); /* Y Plane Mask */ ctx->zpmask = upa_readl(&ffb->zpmask); /* Z Plane Mask */ /* Auxiliary Clips. */ ctx->auxclip0min = upa_readl(&ffb->auxclip[0].min); ctx->auxclip0max = upa_readl(&ffb->auxclip[0].max); ctx->auxclip1min = upa_readl(&ffb->auxclip[1].min); ctx->auxclip1max = upa_readl(&ffb->auxclip[1].max); ctx->auxclip2min = upa_readl(&ffb->auxclip[2].min); ctx->auxclip2max = upa_readl(&ffb->auxclip[2].max); ctx->auxclip3min = upa_readl(&ffb->auxclip[3].min); ctx->auxclip3max = upa_readl(&ffb->auxclip[3].max); ctx->lpat = upa_readl(&ffb->lpat); /* Line Pattern */ ctx->fontxy = upa_readl(&ffb->fontxy); /* XY Font Coordinate */ ctx->fontw = upa_readl(&ffb->fontw); /* Font Width */ ctx->fontinc = upa_readl(&ffb->fontinc); /* Font X/Y Increment */ /* These registers/features only exist on FFB2 and later chips. */ if (fpriv->ffb_type >= ffb2_prototype) { ctx->dcss1 = upa_readl(&ffb->dcss1); /* Depth Cue Scale Slope 1 */ ctx->dcss2 = upa_readl(&ffb->dcss2); /* Depth Cue Scale Slope 2 */ ctx->dcss2 = upa_readl(&ffb->dcss3); /* Depth Cue Scale Slope 3 */ ctx->dcs2 = upa_readl(&ffb->dcs2); /* Depth Cue Scale 2 */ ctx->dcs3 = upa_readl(&ffb->dcs3); /* Depth Cue Scale 3 */ ctx->dcs4 = upa_readl(&ffb->dcs4); /* Depth Cue Scale 4 */ ctx->dcd2 = upa_readl(&ffb->dcd2); /* Depth Cue Depth 2 */ ctx->dcd3 = upa_readl(&ffb->dcd3); /* Depth Cue Depth 3 */ ctx->dcd4 = upa_readl(&ffb->dcd4); /* Depth Cue Depth 4 */ /* And stencil/stencilctl only exists on FFB2+ and later * due to the introduction of 3DRAM-III. */ if (fpriv->ffb_type == ffb2_vertical_plus || fpriv->ffb_type == ffb2_horizontal_plus) { ctx->stencil = upa_readl(&ffb->stencil); ctx->stencilctl = upa_readl(&ffb->stencilctl); } } /* Save the 32x32 area pattern. */ for (i = 0; i < 32; i++) ctx->area_pattern[i] = upa_readl(&ffb->pattern[i]); /* Finally, stash away the User Constol/Status Register. */ ctx->ucsr = upa_readl(&ffb->ucsr); } static void ffb_restore_context(ffb_dev_priv_t *fpriv, int old, int idx) { ffb_fbcPtr ffb = fpriv->regs; struct ffb_hw_context *ctx; int i; ctx = fpriv->hw_state[idx - 1]; if (idx == 0 || ctx == NULL) return; if (ctx->is_2d_only) { /* 2D applications only care about certain pieces * of state. */ upa_writel(ctx->drawop, &ffb->drawop); /* If we were restoring the vertex registers, this is where * we would do it. We would restore 32 32-bit words starting * at ffb->suvtx. */ upa_writel(ctx->ppc, &ffb->ppc); upa_writel(ctx->wid, &ffb->wid); upa_writel(ctx->fg, &ffb->fg); upa_writel(ctx->bg, &ffb->bg); upa_writel(ctx->xclip, &ffb->xclip); upa_writel(ctx->fbc, &ffb->fbc); upa_writel(ctx->rop, &ffb->rop); upa_writel(ctx->cmp, &ffb->cmp); upa_writel(ctx->matchab, &ffb->matchab); upa_writel(ctx->magnab, &ffb->magnab); upa_writel(ctx->pmask, &ffb->pmask); upa_writel(ctx->xpmask, &ffb->xpmask); upa_writel(ctx->lpat, &ffb->lpat); upa_writel(ctx->fontxy, &ffb->fontxy); upa_writel(ctx->fontw, &ffb->fontw); upa_writel(ctx->fontinc, &ffb->fontinc); /* stencil/stencilctl only exists on FFB2+ and later * due to the introduction of 3DRAM-III. */ if (fpriv->ffb_type == ffb2_vertical_plus || fpriv->ffb_type == ffb2_horizontal_plus) { upa_writel(ctx->stencil, &ffb->stencil); upa_writel(ctx->stencilctl, &ffb->stencilctl); upa_writel(0x80000000, &ffb->fbc); upa_writel((ctx->stencilctl | 0x80000), &ffb->rawstencilctl); upa_writel(ctx->fbc, &ffb->fbc); } for (i = 0; i < 32; i++) upa_writel(ctx->area_pattern[i], &ffb->pattern[i]); upa_writel((ctx->ucsr & 0xf0000), &ffb->ucsr); return; } /* Restore drawop. */ upa_writel(ctx->drawop, &ffb->drawop); /* If we were restoring the vertex registers, this is where * we would do it. We would restore 32 32-bit words starting * at ffb->suvtx. */ /* Restore rendering attributes. */ upa_writel(ctx->ppc, &ffb->ppc); /* Pixel Processor Control */ upa_writel(ctx->wid, &ffb->wid); /* Current WID */ upa_writel(ctx->fg, &ffb->fg); /* Constant FG color */ upa_writel(ctx->bg, &ffb->bg); /* Constant BG color */ upa_writel(ctx->consty, &ffb->consty); /* Constant Y */ upa_writel(ctx->constz, &ffb->constz); /* Constant Z */ upa_writel(ctx->xclip, &ffb->xclip); /* X plane clip */ upa_writel(ctx->dcss, &ffb->dcss); /* Depth Cue Scale Slope */ upa_writel(ctx->vclipmin, &ffb->vclipmin); /* Primary XY clip, minimum */ upa_writel(ctx->vclipmax, &ffb->vclipmax); /* Primary XY clip, maximum */ upa_writel(ctx->vclipzmin, &ffb->vclipzmin); /* Primary Z clip, minimum */ upa_writel(ctx->vclipzmax, &ffb->vclipzmax); /* Primary Z clip, maximum */ upa_writel(ctx->dcsf, &ffb->dcsf); /* Depth Cue Scale Front Bound */ upa_writel(ctx->dcsb, &ffb->dcsb); /* Depth Cue Scale Back Bound */ upa_writel(ctx->dczf, &ffb->dczf); /* Depth Cue Scale Z Front */ upa_writel(ctx->dczb, &ffb->dczb); /* Depth Cue Scale Z Back */ upa_writel(ctx->blendc, &ffb->blendc); /* Alpha Blend Control */ upa_writel(ctx->blendc1, &ffb->blendc1); /* Alpha Blend Color 1 */ upa_writel(ctx->blendc2, &ffb->blendc2); /* Alpha Blend Color 2 */ upa_writel(ctx->fbc, &ffb->fbc); /* Frame Buffer Control */ upa_writel(ctx->rop, &ffb->rop); /* Raster Operation */ upa_writel(ctx->cmp, &ffb->cmp); /* Compare Controls */ upa_writel(ctx->matchab, &ffb->matchab); /* Buffer A/B Match Ops */ upa_writel(ctx->matchc, &ffb->matchc); /* Buffer C Match Ops */ upa_writel(ctx->magnab, &ffb->magnab); /* Buffer A/B Magnitude Ops */ upa_writel(ctx->magnc, &ffb->magnc); /* Buffer C Magnitude Ops */ upa_writel(ctx->pmask, &ffb->pmask); /* RGB Plane Mask */ upa_writel(ctx->xpmask, &ffb->xpmask); /* X Plane Mask */ upa_writel(ctx->ypmask, &ffb->ypmask); /* Y Plane Mask */ upa_writel(ctx->zpmask, &ffb->zpmask); /* Z Plane Mask */ /* Auxiliary Clips. */ upa_writel(ctx->auxclip0min, &ffb->auxclip[0].min); upa_writel(ctx->auxclip0max, &ffb->auxclip[0].max); upa_writel(ctx->auxclip1min, &ffb->auxclip[1].min); upa_writel(ctx->auxclip1max, &ffb->auxclip[1].max); upa_writel(ctx->auxclip2min, &ffb->auxclip[2].min); upa_writel(ctx->auxclip2max, &ffb->auxclip[2].max); upa_writel(ctx->auxclip3min, &ffb->auxclip[3].min); upa_writel(ctx->auxclip3max, &ffb->auxclip[3].max); upa_writel(ctx->lpat, &ffb->lpat); /* Line Pattern */ upa_writel(ctx->fontxy, &ffb->fontxy); /* XY Font Coordinate */