Lines Matching full:tile
33 static int pcode_mailbox_status(struct xe_tile *tile) in pcode_mailbox_status() argument
48 err = xe_mmio_read32(&tile->mmio, PCODE_MAILBOX) & PCODE_ERROR_MASK; in pcode_mailbox_status()
50 drm_err(&tile_to_xe(tile)->drm, "PCODE Mailbox failed: %d %s", err, in pcode_mailbox_status()
58 static int __pcode_mailbox_rw(struct xe_tile *tile, u32 mbox, u32 *data0, u32 *data1, in __pcode_mailbox_rw() argument
62 struct xe_mmio *mmio = &tile->mmio; in __pcode_mailbox_rw()
65 if (tile_to_xe(tile)->info.skip_pcode) in __pcode_mailbox_rw()
86 return pcode_mailbox_status(tile); in __pcode_mailbox_rw()
89 static int pcode_mailbox_rw(struct xe_tile *tile, u32 mbox, u32 *data0, u32 *data1, in pcode_mailbox_rw() argument
93 if (tile_to_xe(tile)->info.skip_pcode) in pcode_mailbox_rw()
96 lockdep_assert_held(&tile->pcode.lock); in pcode_mailbox_rw()
98 return __pcode_mailbox_rw(tile, mbox, data0, data1, timeout_ms, return_data, atomic); in pcode_mailbox_rw()
101 int xe_pcode_write_timeout(struct xe_tile *tile, u32 mbox, u32 data, int timeout) in xe_pcode_write_timeout() argument
105 mutex_lock(&tile->pcode.lock); in xe_pcode_write_timeout()
106 err = pcode_mailbox_rw(tile, mbox, &data, NULL, timeout, false, false); in xe_pcode_write_timeout()
107 mutex_unlock(&tile->pcode.lock); in xe_pcode_write_timeout()
112 int xe_pcode_write64_timeout(struct xe_tile *tile, u32 mbox, u32 data0, u32 data1, int timeout) in xe_pcode_write64_timeout() argument
116 mutex_lock(&tile->pcode.lock); in xe_pcode_write64_timeout()
117 err = pcode_mailbox_rw(tile, mbox, &data0, &data1, timeout, false, false); in xe_pcode_write64_timeout()
118 mutex_unlock(&tile->pcode.lock); in xe_pcode_write64_timeout()
123 int xe_pcode_read(struct xe_tile *tile, u32 mbox, u32 *val, u32 *val1) in xe_pcode_read() argument
127 mutex_lock(&tile->pcode.lock); in xe_pcode_read()
128 err = pcode_mailbox_rw(tile, mbox, val, val1, 1, true, false); in xe_pcode_read()
129 mutex_unlock(&tile->pcode.lock); in xe_pcode_read()
134 static int pcode_try_request(struct xe_tile *tile, u32 mbox, in pcode_try_request() argument
140 xe_tile_assert(tile, timeout_us > 0); in pcode_try_request()
144 *status = pcode_mailbox_rw(tile, mbox, &request, NULL, 1, true, in pcode_try_request()
147 *status = __pcode_mailbox_rw(tile, mbox, &request, NULL, 1, true, in pcode_try_request()
164 * @tile: tile
181 int xe_pcode_request(struct xe_tile *tile, u32 mbox, u32 request, in xe_pcode_request() argument
187 xe_tile_assert(tile, timeout_base_ms <= 3); in xe_pcode_request()
189 mutex_lock(&tile->pcode.lock); in xe_pcode_request()
191 ret = pcode_try_request(tile, mbox, request, reply_mask, reply, &status, in xe_pcode_request()
206 drm_err(&tile_to_xe(tile)->drm, in xe_pcode_request()
209 ret = pcode_try_request(tile, mbox, request, reply_mask, reply, &status, in xe_pcode_request()
214 mutex_unlock(&tile->pcode.lock); in xe_pcode_request()
219 * @tile: tile instance
242 int xe_pcode_init_min_freq_table(struct xe_tile *tile, u32 min_gt_freq, in xe_pcode_init_min_freq_table() argument
248 if (!tile_to_xe(tile)->info.has_llc) in xe_pcode_init_min_freq_table()
254 mutex_lock(&tile->pcode.lock); in xe_pcode_init_min_freq_table()
258 ret = pcode_mailbox_rw(tile, PCODE_WRITE_MIN_FREQ_TABLE, in xe_pcode_init_min_freq_table()
265 mutex_unlock(&tile->pcode.lock); in xe_pcode_init_min_freq_table()
274 * PCODE init mailbox is polled only on root gt of root tile
275 * as the root tile provides the initialization is complete only
285 struct xe_tile *tile = xe_device_get_root_tile(xe); in xe_pcode_ready() local
296 mutex_lock(&tile->pcode.lock); in xe_pcode_ready()
298 ret = pcode_try_request(tile, DGFX_PCODE_STATUS, request, in xe_pcode_ready()
304 mutex_unlock(&tile->pcode.lock); in xe_pcode_ready()
315 * @tile: tile instance
320 void xe_pcode_init(struct xe_tile *tile) in xe_pcode_init() argument
322 drmm_mutex_init(&tile_to_xe(tile)->drm, &tile->pcode.lock); in xe_pcode_init()
346 struct xe_tile *tile = xe_device_get_root_tile(xe); in intel_pcode_read() local
348 return xe_pcode_read(tile, mbox, val, val1); in intel_pcode_read()
354 struct xe_tile *tile = xe_device_get_root_tile(xe); in intel_pcode_write_timeout() local
356 return xe_pcode_write_timeout(tile, mbox, val, timeout_ms); in intel_pcode_write_timeout()
363 struct xe_tile *tile = xe_device_get_root_tile(xe); in intel_pcode_request() local
365 return xe_pcode_request(tile, mbox, request, reply_mask, reply, timeout_base_ms); in intel_pcode_request()