aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-06-06 11:16:33 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-06-06 11:16:33 -0400
commit135c5504a600ff9b06e321694fbcac78a9530cd4 (patch)
tree8d22ed739b0e85954010a964a9aeadf3c692c977 /include/linux
parentaf6c5d5e01ad9f2c9ca38cccaae6b5d67ddd241f (diff)
parent568cf2e6aa0c762f14d2d0d481a006f93c63ab7a (diff)
Merge tag 'drm-next-2018-06-06-1' of git://anongit.freedesktop.org/drm/drm
Pull drm updates from Dave Airlie: "This starts to support NVIDIA volta hardware with nouveau, and adds amdgpu support for the GPU in the Kabylake-G (the intel + radeon single package chip), along with some initial Intel icelake enabling. Summary: New Drivers: - v3d - driver for broadcom V3D V3.x+ hardware - xen-front - XEN PV display frontend core: - handle zpos normalization in the core - stop looking at legacy pointers in atomic paths - improved scheduler documentation - improved aspect ratio validation - aspect ratio support for 64:27 and 256:135 - drop unused control node code. i915: - Icelake (ICL) enabling - GuC/HuC refactoring - PSR/PSR2 enabling and fixes - DPLL management refactoring - DP MST fixes - NV12 enabling - HDCP improvements - GEM/Execlist/reset improvements - GVT improvements - stolen memory first 4k fix amdgpu: - Vega 20 support - VEGAM support (Kabylake-G) - preOS scanout buffer reservation - power management gfxoff support for raven - SR-IOV fixes - Vega10 power profiles and clock voltage control - scatter/gather display support on CZ/ST amdkfd: - GFX9 dGPU support - userptr memory mapping nouveau: - major refactoring for Volta GV100 support tda998x: - HDMI i2c CEC support etnaviv: - removed unused logging code - license text cleanups - MMU handling improvements - timeout fence fix for 50 days uptime tegra: - IOMMU support in gr2d/gr3d drivers - zpos support vc4: - syncobj support - CTM, plane alpha and async cursor support analogix_dp: - HPD and aux chan fixes sun4i: - MIPI DSI support tilcdc: - clock divider fixes for OMAP-l138 LCDK board rcar-du: - R8A77965 support - dma-buf fences fixes - hardware indexed crtc/du group handling - generic zplane property support atmel-hclcdc: - generic zplane property support mediatek: - use generic video mode function exynos: - S5PV210 FIMD variant support - IPP v2 framework - more HW overlays support" * tag 'drm-next-2018-06-06-1' of git://anongit.freedesktop.org/drm/drm: (1286 commits) drm/amdgpu: fix 32-bit build warning drm/exynos: fimc: signedness bug in fimc_setup_clocks() drm/exynos: scaler: fix static checker warning drm/amdgpu: Use dev_info() to report amdkfd is not supported for this ASIC drm/amd/display: Remove use of division operator for long longs drm/amdgpu: Update GFX info structure to match what vega20 used drm/amdgpu/pp: remove duplicate assignment drm/sched: add rcu_barrier after entity fini drm/amdgpu: move VM BOs on LRU again drm/amdgpu: consistenly use VM moved flag drm/amdgpu: kmap PDs/PTs in amdgpu_vm_update_directories drm/amdgpu: further optimize amdgpu_vm_handle_moved drm/amdgpu: cleanup amdgpu_vm_validate_pt_bos v2 drm/amdgpu: rework VM state machine lock handling v2 drm/amdgpu: Add runtime VCN PG support drm/amdgpu: Enable VCN static PG by default on RV drm/amdgpu: Add VCN static PG support on RV drm/amdgpu: Enable VCN CG by default on RV drm/amdgpu: Add static CG control for VCN on RV drm/exynos: Fix default value for zpos plane property ...
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/dma-fence.h236
-rw-r--r--include/linux/host1x.h24
-rw-r--r--include/linux/platform_data/tda9950.h16
3 files changed, 177 insertions, 99 deletions
diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
index 4c008170fe65..eb9b05aa5aea 100644
--- a/include/linux/dma-fence.h
+++ b/include/linux/dma-fence.h
@@ -94,11 +94,11 @@ typedef void (*dma_fence_func_t)(struct dma_fence *fence,
94 struct dma_fence_cb *cb); 94 struct dma_fence_cb *cb);
95 95
96/** 96/**
97 * struct dma_fence_cb - callback for dma_fence_add_callback 97 * struct dma_fence_cb - callback for dma_fence_add_callback()
98 * @node: used by dma_fence_add_callback to append this struct to fence::cb_list 98 * @node: used by dma_fence_add_callback() to append this struct to fence::cb_list
99 * @func: dma_fence_func_t to call 99 * @func: dma_fence_func_t to call
100 * 100 *
101 * This struct will be initialized by dma_fence_add_callback, additional 101 * This struct will be initialized by dma_fence_add_callback(), additional
102 * data can be passed along by embedding dma_fence_cb in another struct. 102 * data can be passed along by embedding dma_fence_cb in another struct.
103 */ 103 */
104struct dma_fence_cb { 104struct dma_fence_cb {
@@ -108,75 +108,143 @@ struct dma_fence_cb {
108 108
109/** 109/**
110 * struct dma_fence_ops - operations implemented for fence 110 * struct dma_fence_ops - operations implemented for fence
111 * @get_driver_name: returns the driver name.
112 * @get_timeline_name: return the name of the context this fence belongs to.
113 * @enable_signaling: enable software signaling of fence.
114 * @signaled: [optional] peek whether the fence is signaled, can be null.
115 * @wait: custom wait implementation, or dma_fence_default_wait.
116 * @release: [optional] called on destruction of fence, can be null
117 * @fill_driver_data: [optional] callback to fill in free-form debug info
118 * Returns amount of bytes filled, or -errno.
119 * @fence_value_str: [optional] fills in the value of the fence as a string
120 * @timeline_value_str: [optional] fills in the current value of the timeline
121 * as a string
122 * 111 *
123 * Notes on enable_signaling:
124 * For fence implementations that have the capability for hw->hw
125 * signaling, they can implement this op to enable the necessary
126 * irqs, or insert commands into cmdstream, etc. This is called
127 * in the first wait() or add_callback() path to let the fence
128 * implementation know that there is another driver waiting on
129 * the signal (ie. hw->sw case).
130 *
131 * This function can be called from atomic context, but not
132 * from irq context, so normal spinlocks can be used.
133 *
134 * A return value of false indicates the fence already passed,
135 * or some failure occurred that made it impossible to enable
136 * signaling. True indicates successful enabling.
137 *
138 * fence->error may be set in enable_signaling, but only when false is
139 * returned.
140 *
141 * Calling dma_fence_signal before enable_signaling is called allows
142 * for a tiny race window in which enable_signaling is called during,
143 * before, or after dma_fence_signal. To fight this, it is recommended
144 * that before enable_signaling returns true an extra reference is
145 * taken on the fence, to be released when the fence is signaled.
146 * This will mean dma_fence_signal will still be called twice, but
147 * the second time will be a noop since it was already signaled.
148 *
149 * Notes on signaled:
150 * May set fence->error if returning true.
151 *
152 * Notes on wait:
153 * Must not be NULL, set to dma_fence_default_wait for default implementation.
154 * the dma_fence_default_wait implementation should work for any fence, as long
155 * as enable_signaling works correctly.
156 *
157 * Must return -ERESTARTSYS if the wait is intr = true and the wait was
158 * interrupted, and remaining jiffies if fence has signaled, or 0 if wait
159 * timed out. Can also return other error values on custom implementations,
160 * which should be treated as if the fence is signaled. For example a hardware
161 * lockup could be reported like that.
162 *
163 * Notes on release:
164 * Can be NULL, this function allows additional commands to run on
165 * destruction of the fence. Can be called from irq context.
166 * If pointer is set to NULL, kfree will get called instead.
167 */ 112 */
168
169struct dma_fence_ops { 113struct dma_fence_ops {
114 /**
115 * @get_driver_name:
116 *
117 * Returns the driver name. This is a callback to allow drivers to
118 * compute the name at runtime, without having it to store permanently
119 * for each fence, or build a cache of some sort.
120 *
121 * This callback is mandatory.
122 */
170 const char * (*get_driver_name)(struct dma_fence *fence); 123 const char * (*get_driver_name)(struct dma_fence *fence);
124
125 /**
126 * @get_timeline_name:
127 *
128 * Return the name of the context this fence belongs to. This is a
129 * callback to allow drivers to compute the name at runtime, without
130 * having it to store permanently for each fence, or build a cache of
131 * some sort.
132 *
133 * This callback is mandatory.
134 */
171 const char * (*get_timeline_name)(struct dma_fence *fence); 135 const char * (*get_timeline_name)(struct dma_fence *fence);
136
137 /**
138 * @enable_signaling:
139 *
140 * Enable software signaling of fence.
141 *
142 * For fence implementations that have the capability for hw->hw
143 * signaling, they can implement this op to enable the necessary
144 * interrupts, or insert commands into cmdstream, etc, to avoid these
145 * costly operations for the common case where only hw->hw
146 * synchronization is required. This is called in the first
147 * dma_fence_wait() or dma_fence_add_callback() path to let the fence
148 * implementation know that there is another driver waiting on the
149 * signal (ie. hw->sw case).
150 *
151 * This function can be called from atomic context, but not
152 * from irq context, so normal spinlocks can be used.
153 *
154 * A return value of false indicates the fence already passed,
155 * or some failure occurred that made it impossible to enable
156 * signaling. True indicates successful enabling.
157 *
158 * &dma_fence.error may be set in enable_signaling, but only when false
159 * is returned.
160 *
161 * Since many implementations can call dma_fence_signal() even when before
162 * @enable_signaling has been called there's a race window, where the
163 * dma_fence_signal() might result in the final fence reference being
164 * released and its memory freed. To avoid this, implementations of this
165 * callback should grab their own reference using dma_fence_get(), to be
166 * released when the fence is signalled (through e.g. the interrupt
167 * handler).
168 *
169 * This callback is mandatory.
170 */
172 bool (*enable_signaling)(struct dma_fence *fence); 171 bool (*enable_signaling)(struct dma_fence *fence);
172
173 /**
174 * @signaled:
175 *
176 * Peek whether the fence is signaled, as a fastpath optimization for
177 * e.g. dma_fence_wait() or dma_fence_add_callback(). Note that this
178 * callback does not need to make any guarantees beyond that a fence
179 * once indicates as signalled must always return true from this
180 * callback. This callback may return false even if the fence has
181 * completed already, in this case information hasn't propogated throug
182 * the system yet. See also dma_fence_is_signaled().
183 *
184 * May set &dma_fence.error if returning true.
185 *
186 * This callback is optional.
187 */
173 bool (*signaled)(struct dma_fence *fence); 188 bool (*signaled)(struct dma_fence *fence);
189
190 /**
191 * @wait:
192 *
193 * Custom wait implementation, or dma_fence_default_wait.
194 *
195 * Must not be NULL, set to dma_fence_default_wait for default implementation.
196 * the dma_fence_default_wait implementation should work for any fence, as long
197 * as enable_signaling works correctly.
198 *
199 * Must return -ERESTARTSYS if the wait is intr = true and the wait was
200 * interrupted, and remaining jiffies if fence has signaled, or 0 if wait
201 * timed out. Can also return other error values on custom implementations,
202 * which should be treated as if the fence is signaled. For example a hardware
203 * lockup could be reported like that.
204 *
205 * This callback is mandatory.
206 */
174 signed long (*wait)(struct dma_fence *fence, 207 signed long (*wait)(struct dma_fence *fence,
175 bool intr, signed long timeout); 208 bool intr, signed long timeout);
209
210 /**
211 * @release:
212 *
213 * Called on destruction of fence to release additional resources.
214 * Can be called from irq context. This callback is optional. If it is
215 * NULL, then dma_fence_free() is instead called as the default
216 * implementation.
217 */
176 void (*release)(struct dma_fence *fence); 218 void (*release)(struct dma_fence *fence);
177 219
220 /**
221 * @fill_driver_data:
222 *
223 * Callback to fill in free-form debug info.
224 *
225 * Returns amount of bytes filled, or negative error on failure.
226 *
227 * This callback is optional.
228 */
178 int (*fill_driver_data)(struct dma_fence *fence, void *data, int size); 229 int (*fill_driver_data)(struct dma_fence *fence, void *data, int size);
230
231 /**
232 * @fence_value_str:
233 *
234 * Callback to fill in free-form debug info specific to this fence, like
235 * the sequence number.
236 *
237 * This callback is optional.
238 */
179 void (*fence_value_str)(struct dma_fence *fence, char *str, int size); 239 void (*fence_value_str)(struct dma_fence *fence, char *str, int size);
240
241 /**
242 * @timeline_value_str:
243 *
244 * Fills in the current value of the timeline as a string, like the
245 * sequence number. This should match what @fill_driver_data prints for
246 * the most recently signalled fence (assuming no delayed signalling).
247 */
180 void (*timeline_value_str)(struct dma_fence *fence, 248 void (*timeline_value_str)(struct dma_fence *fence,
181 char *str, int size); 249 char *str, int size);
182}; 250};
@@ -189,7 +257,7 @@ void dma_fence_free(struct dma_fence *fence);
189 257
190/** 258/**
191 * dma_fence_put - decreases refcount of the fence 259 * dma_fence_put - decreases refcount of the fence
192 * @fence: [in] fence to reduce refcount of 260 * @fence: fence to reduce refcount of
193 */ 261 */
194static inline void dma_fence_put(struct dma_fence *fence) 262static inline void dma_fence_put(struct dma_fence *fence)
195{ 263{
@@ -199,7 +267,7 @@ static inline void dma_fence_put(struct dma_fence *fence)
199 267
200/** 268/**
201 * dma_fence_get - increases refcount of the fence 269 * dma_fence_get - increases refcount of the fence
202 * @fence: [in] fence to increase refcount of 270 * @fence: fence to increase refcount of
203 * 271 *
204 * Returns the same fence, with refcount increased by 1. 272 * Returns the same fence, with refcount increased by 1.
205 */ 273 */
@@ -213,7 +281,7 @@ static inline struct dma_fence *dma_fence_get(struct dma_fence *fence)
213/** 281/**
214 * dma_fence_get_rcu - get a fence from a reservation_object_list with 282 * dma_fence_get_rcu - get a fence from a reservation_object_list with
215 * rcu read lock 283 * rcu read lock
216 * @fence: [in] fence to increase refcount of 284 * @fence: fence to increase refcount of
217 * 285 *
218 * Function returns NULL if no refcount could be obtained, or the fence. 286 * Function returns NULL if no refcount could be obtained, or the fence.
219 */ 287 */
@@ -227,7 +295,7 @@ static inline struct dma_fence *dma_fence_get_rcu(struct dma_fence *fence)
227 295
228/** 296/**
229 * dma_fence_get_rcu_safe - acquire a reference to an RCU tracked fence 297 * dma_fence_get_rcu_safe - acquire a reference to an RCU tracked fence
230 * @fencep: [in] pointer to fence to increase refcount of 298 * @fencep: pointer to fence to increase refcount of
231 * 299 *
232 * Function returns NULL if no refcount could be obtained, or the fence. 300 * Function returns NULL if no refcount could be obtained, or the fence.
233 * This function handles acquiring a reference to a fence that may be 301 * This function handles acquiring a reference to a fence that may be
@@ -289,14 +357,16 @@ void dma_fence_enable_sw_signaling(struct dma_fence *fence);
289/** 357/**
290 * dma_fence_is_signaled_locked - Return an indication if the fence 358 * dma_fence_is_signaled_locked - Return an indication if the fence
291 * is signaled yet. 359 * is signaled yet.
292 * @fence: [in] the fence to check 360 * @fence: the fence to check
293 * 361 *
294 * Returns true if the fence was already signaled, false if not. Since this 362 * Returns true if the fence was already signaled, false if not. Since this
295 * function doesn't enable signaling, it is not guaranteed to ever return 363 * function doesn't enable signaling, it is not guaranteed to ever return
296 * true if dma_fence_add_callback, dma_fence_wait or 364 * true if dma_fence_add_callback(), dma_fence_wait() or
297 * dma_fence_enable_sw_signaling haven't been called before. 365 * dma_fence_enable_sw_signaling() haven't been called before.
298 * 366 *
299 * This function requires fence->lock to be held. 367 * This function requires &dma_fence.lock to be held.
368 *
369 * See also dma_fence_is_signaled().
300 */ 370 */
301static inline bool 371static inline bool
302dma_fence_is_signaled_locked(struct dma_fence *fence) 372dma_fence_is_signaled_locked(struct dma_fence *fence)
@@ -314,17 +384,19 @@ dma_fence_is_signaled_locked(struct dma_fence *fence)
314 384
315/** 385/**
316 * dma_fence_is_signaled - Return an indication if the fence is signaled yet. 386 * dma_fence_is_signaled - Return an indication if the fence is signaled yet.
317 * @fence: [in] the fence to check 387 * @fence: the fence to check
318 * 388 *
319 * Returns true if the fence was already signaled, false if not. Since this 389 * Returns true if the fence was already signaled, false if not. Since this
320 * function doesn't enable signaling, it is not guaranteed to ever return 390 * function doesn't enable signaling, it is not guaranteed to ever return
321 * true if dma_fence_add_callback, dma_fence_wait or 391 * true if dma_fence_add_callback(), dma_fence_wait() or
322 * dma_fence_enable_sw_signaling haven't been called before. 392 * dma_fence_enable_sw_signaling() haven't been called before.
323 * 393 *
324 * It's recommended for seqno fences to call dma_fence_signal when the 394 * It's recommended for seqno fences to call dma_fence_signal when the
325 * operation is complete, it makes it possible to prevent issues from 395 * operation is complete, it makes it possible to prevent issues from
326 * wraparound between time of issue and time of use by checking the return 396 * wraparound between time of issue and time of use by checking the return
327 * value of this function before calling hardware-specific wait instructions. 397 * value of this function before calling hardware-specific wait instructions.
398 *
399 * See also dma_fence_is_signaled_locked().
328 */ 400 */
329static inline bool 401static inline bool
330dma_fence_is_signaled(struct dma_fence *fence) 402dma_fence_is_signaled(struct dma_fence *fence)
@@ -342,8 +414,8 @@ dma_fence_is_signaled(struct dma_fence *fence)
342 414
343/** 415/**
344 * __dma_fence_is_later - return if f1 is chronologically later than f2 416 * __dma_fence_is_later - return if f1 is chronologically later than f2
345 * @f1: [in] the first fence's seqno 417 * @f1: the first fence's seqno
346 * @f2: [in] the second fence's seqno from the same context 418 * @f2: the second fence's seqno from the same context
347 * 419 *
348 * Returns true if f1 is chronologically later than f2. Both fences must be 420 * Returns true if f1 is chronologically later than f2. Both fences must be
349 * from the same context, since a seqno is not common across contexts. 421 * from the same context, since a seqno is not common across contexts.
@@ -355,8 +427,8 @@ static inline bool __dma_fence_is_later(u32 f1, u32 f2)
355 427
356/** 428/**
357 * dma_fence_is_later - return if f1 is chronologically later than f2 429 * dma_fence_is_later - return if f1 is chronologically later than f2
358 * @f1: [in] the first fence from the same context 430 * @f1: the first fence from the same context
359 * @f2: [in] the second fence from the same context 431 * @f2: the second fence from the same context
360 * 432 *
361 * Returns true if f1 is chronologically later than f2. Both fences must be 433 * Returns true if f1 is chronologically later than f2. Both fences must be
362 * from the same context, since a seqno is not re-used across contexts. 434 * from the same context, since a seqno is not re-used across contexts.
@@ -372,8 +444,8 @@ static inline bool dma_fence_is_later(struct dma_fence *f1,
372 444
373/** 445/**
374 * dma_fence_later - return the chronologically later fence 446 * dma_fence_later - return the chronologically later fence
375 * @f1: [in] the first fence from the same context 447 * @f1: the first fence from the same context
376 * @f2: [in] the second fence from the same context 448 * @f2: the second fence from the same context
377 * 449 *
378 * Returns NULL if both fences are signaled, otherwise the fence that would be 450 * Returns NULL if both fences are signaled, otherwise the fence that would be
379 * signaled last. Both fences must be from the same context, since a seqno is 451 * signaled last. Both fences must be from the same context, since a seqno is
@@ -398,7 +470,7 @@ static inline struct dma_fence *dma_fence_later(struct dma_fence *f1,
398 470
399/** 471/**
400 * dma_fence_get_status_locked - returns the status upon completion 472 * dma_fence_get_status_locked - returns the status upon completion
401 * @fence: [in] the dma_fence to query 473 * @fence: the dma_fence to query
402 * 474 *
403 * Drivers can supply an optional error status condition before they signal 475 * Drivers can supply an optional error status condition before they signal
404 * the fence (to indicate whether the fence was completed due to an error 476 * the fence (to indicate whether the fence was completed due to an error
@@ -422,8 +494,8 @@ int dma_fence_get_status(struct dma_fence *fence);
422 494
423/** 495/**
424 * dma_fence_set_error - flag an error condition on the fence 496 * dma_fence_set_error - flag an error condition on the fence
425 * @fence: [in] the dma_fence 497 * @fence: the dma_fence
426 * @error: [in] the error to store 498 * @error: the error to store
427 * 499 *
428 * Drivers can supply an optional error status condition before they signal 500 * Drivers can supply an optional error status condition before they signal
429 * the fence, to indicate that the fence was completed due to an error 501 * the fence, to indicate that the fence was completed due to an error
@@ -449,8 +521,8 @@ signed long dma_fence_wait_any_timeout(struct dma_fence **fences,
449 521
450/** 522/**
451 * dma_fence_wait - sleep until the fence gets signaled 523 * dma_fence_wait - sleep until the fence gets signaled
452 * @fence: [in] the fence to wait on 524 * @fence: the fence to wait on
453 * @intr: [in] if true, do an interruptible wait 525 * @intr: if true, do an interruptible wait
454 * 526 *
455 * This function will return -ERESTARTSYS if interrupted by a signal, 527 * This function will return -ERESTARTSYS if interrupted by a signal,
456 * or 0 if the fence was signaled. Other error values may be 528 * or 0 if the fence was signaled. Other error values may be
@@ -459,6 +531,8 @@ signed long dma_fence_wait_any_timeout(struct dma_fence **fences,
459 * Performs a synchronous wait on this fence. It is assumed the caller 531 * Performs a synchronous wait on this fence. It is assumed the caller
460 * directly or indirectly holds a reference to the fence, otherwise the 532 * directly or indirectly holds a reference to the fence, otherwise the
461 * fence might be freed before return, resulting in undefined behavior. 533 * fence might be freed before return, resulting in undefined behavior.
534 *
535 * See also dma_fence_wait_timeout() and dma_fence_wait_any_timeout().
462 */ 536 */
463static inline signed long dma_fence_wait(struct dma_fence *fence, bool intr) 537static inline signed long dma_fence_wait(struct dma_fence *fence, bool intr)
464{ 538{
diff --git a/include/linux/host1x.h b/include/linux/host1x.h
index ddf7f9ca86cc..89110d896d72 100644
--- a/include/linux/host1x.h
+++ b/include/linux/host1x.h
@@ -192,13 +192,6 @@ struct host1x_reloc {
192 unsigned long shift; 192 unsigned long shift;
193}; 193};
194 194
195struct host1x_waitchk {
196 struct host1x_bo *bo;
197 u32 offset;
198 u32 syncpt_id;
199 u32 thresh;
200};
201
202struct host1x_job { 195struct host1x_job {
203 /* When refcount goes to zero, job can be freed */ 196 /* When refcount goes to zero, job can be freed */
204 struct kref ref; 197 struct kref ref;
@@ -209,19 +202,15 @@ struct host1x_job {
209 /* Channel where job is submitted to */ 202 /* Channel where job is submitted to */
210 struct host1x_channel *channel; 203 struct host1x_channel *channel;
211 204
212 u32 client; 205 /* client where the job originated */
206 struct host1x_client *client;
213 207
214 /* Gathers and their memory */ 208 /* Gathers and their memory */
215 struct host1x_job_gather *gathers; 209 struct host1x_job_gather *gathers;
216 unsigned int num_gathers; 210 unsigned int num_gathers;
217 211
218 /* Wait checks to be processed at submit time */
219 struct host1x_waitchk *waitchk;
220 unsigned int num_waitchk;
221 u32 waitchk_mask;
222
223 /* Array of handles to be pinned & unpinned */ 212 /* Array of handles to be pinned & unpinned */
224 struct host1x_reloc *relocarray; 213 struct host1x_reloc *relocs;
225 unsigned int num_relocs; 214 unsigned int num_relocs;
226 struct host1x_job_unpin_data *unpins; 215 struct host1x_job_unpin_data *unpins;
227 unsigned int num_unpins; 216 unsigned int num_unpins;
@@ -261,10 +250,9 @@ struct host1x_job {
261}; 250};
262 251
263struct host1x_job *host1x_job_alloc(struct host1x_channel *ch, 252struct host1x_job *host1x_job_alloc(struct host1x_channel *ch,
264 u32 num_cmdbufs, u32 num_relocs, 253 u32 num_cmdbufs, u32 num_relocs);
265 u32 num_waitchks); 254void host1x_job_add_gather(struct host1x_job *job, struct host1x_bo *bo,
266void host1x_job_add_gather(struct host1x_job *job, struct host1x_bo *mem_id, 255 unsigned int words, unsigned int offset);
267 u32 words, u32 offset);
268struct host1x_job *host1x_job_get(struct host1x_job *job); 256struct host1x_job *host1x_job_get(struct host1x_job *job);
269void host1x_job_put(struct host1x_job *job); 257void host1x_job_put(struct host1x_job *job);
270int host1x_job_pin(struct host1x_job *job, struct device *dev); 258int host1x_job_pin(struct host1x_job *job, struct device *dev);
diff --git a/include/linux/platform_data/tda9950.h b/include/linux/platform_data/tda9950.h
new file mode 100644
index 000000000000..c65efd461102
--- /dev/null
+++ b/include/linux/platform_data/tda9950.h
@@ -0,0 +1,16 @@
1#ifndef LINUX_PLATFORM_DATA_TDA9950_H
2#define LINUX_PLATFORM_DATA_TDA9950_H
3
4struct device;
5
6struct tda9950_glue {
7 struct device *parent;
8 unsigned long irq_flags;
9 void *data;
10 int (*init)(void *);
11 void (*exit)(void *);
12 int (*open)(void *);
13 void (*release)(void *);
14};
15
16#endif