Lines Matching refs:gm12u320
48 DRM_DEV_ERROR(&gm12u320->udev->dev, fmt, ##__VA_ARGS__)
159 static int gm12u320_usb_alloc(struct gm12u320_device *gm12u320) in gm12u320_usb_alloc() argument
164 gm12u320->cmd_buf = drmm_kmalloc(&gm12u320->dev, CMD_SIZE, GFP_KERNEL); in gm12u320_usb_alloc()
165 if (!gm12u320->cmd_buf) in gm12u320_usb_alloc()
177 gm12u320->data_buf[i] = drmm_kzalloc(&gm12u320->dev, in gm12u320_usb_alloc()
179 if (!gm12u320->data_buf[i]) in gm12u320_usb_alloc()
182 memcpy(gm12u320->data_buf[i], hdr, DATA_BLOCK_HEADER_SIZE); in gm12u320_usb_alloc()
183 memcpy(gm12u320->data_buf[i] + in gm12u320_usb_alloc()
191 static int gm12u320_misc_request(struct gm12u320_device *gm12u320, in gm12u320_misc_request() argument
197 memcpy(gm12u320->cmd_buf, &cmd_misc, CMD_SIZE); in gm12u320_misc_request()
198 gm12u320->cmd_buf[20] = req_a; in gm12u320_misc_request()
199 gm12u320->cmd_buf[21] = req_b; in gm12u320_misc_request()
200 gm12u320->cmd_buf[22] = arg_a; in gm12u320_misc_request()
201 gm12u320->cmd_buf[23] = arg_b; in gm12u320_misc_request()
202 gm12u320->cmd_buf[24] = arg_c; in gm12u320_misc_request()
203 gm12u320->cmd_buf[25] = arg_d; in gm12u320_misc_request()
206 ret = usb_bulk_msg(gm12u320->udev, in gm12u320_misc_request()
207 usb_sndbulkpipe(gm12u320->udev, MISC_SND_EPT), in gm12u320_misc_request()
208 gm12u320->cmd_buf, CMD_SIZE, &len, CMD_TIMEOUT); in gm12u320_misc_request()
215 ret = usb_bulk_msg(gm12u320->udev, in gm12u320_misc_request()
216 usb_rcvbulkpipe(gm12u320->udev, MISC_RCV_EPT), in gm12u320_misc_request()
217 gm12u320->cmd_buf, MISC_VALUE_SIZE, &len, in gm12u320_misc_request()
226 ret = usb_bulk_msg(gm12u320->udev, in gm12u320_misc_request()
227 usb_rcvbulkpipe(gm12u320->udev, MISC_RCV_EPT), in gm12u320_misc_request()
228 gm12u320->cmd_buf, READ_STATUS_SIZE, &len, in gm12u320_misc_request()
248 static void gm12u320_copy_fb_to_blocks(struct gm12u320_device *gm12u320) in gm12u320_copy_fb_to_blocks() argument
255 mutex_lock(&gm12u320->fb_update.lock); in gm12u320_copy_fb_to_blocks()
257 if (!gm12u320->fb_update.fb) in gm12u320_copy_fb_to_blocks()
260 fb = gm12u320->fb_update.fb; in gm12u320_copy_fb_to_blocks()
261 x1 = gm12u320->fb_update.rect.x1; in gm12u320_copy_fb_to_blocks()
262 x2 = gm12u320->fb_update.rect.x2; in gm12u320_copy_fb_to_blocks()
263 y1 = gm12u320->fb_update.rect.y1; in gm12u320_copy_fb_to_blocks()
264 y2 = gm12u320->fb_update.rect.y2; in gm12u320_copy_fb_to_blocks()
302 gm12u320->data_buf[block] + dst_offset, in gm12u320_copy_fb_to_blocks()
309 gm12u320->data_buf[block] + dst_offset, in gm12u320_copy_fb_to_blocks()
325 gm12u320->fb_update.fb = NULL; in gm12u320_copy_fb_to_blocks()
327 mutex_unlock(&gm12u320->fb_update.lock); in gm12u320_copy_fb_to_blocks()
332 struct gm12u320_device *gm12u320 = in gm12u320_fb_update_work() local
338 gm12u320_copy_fb_to_blocks(gm12u320); in gm12u320_fb_update_work()
347 memcpy(gm12u320->cmd_buf, cmd_data, CMD_SIZE); in gm12u320_fb_update_work()
348 gm12u320->cmd_buf[8] = block_size & 0xff; in gm12u320_fb_update_work()
349 gm12u320->cmd_buf[9] = block_size >> 8; in gm12u320_fb_update_work()
350 gm12u320->cmd_buf[20] = 0xfc - block * 4; in gm12u320_fb_update_work()
351 gm12u320->cmd_buf[21] = in gm12u320_fb_update_work()
352 block | (gm12u320->fb_update.frame << 7); in gm12u320_fb_update_work()
354 ret = usb_bulk_msg(gm12u320->udev, in gm12u320_fb_update_work()
355 usb_sndbulkpipe(gm12u320->udev, DATA_SND_EPT), in gm12u320_fb_update_work()
356 gm12u320->cmd_buf, CMD_SIZE, &len, in gm12u320_fb_update_work()
362 ret = usb_bulk_msg(gm12u320->udev, in gm12u320_fb_update_work()
363 usb_sndbulkpipe(gm12u320->udev, DATA_SND_EPT), in gm12u320_fb_update_work()
364 gm12u320->data_buf[block], block_size, in gm12u320_fb_update_work()
370 ret = usb_bulk_msg(gm12u320->udev, in gm12u320_fb_update_work()
371 usb_rcvbulkpipe(gm12u320->udev, DATA_RCV_EPT), in gm12u320_fb_update_work()
372 gm12u320->cmd_buf, READ_STATUS_SIZE, &len, in gm12u320_fb_update_work()
379 memcpy(gm12u320->cmd_buf, cmd_draw, CMD_SIZE); in gm12u320_fb_update_work()
380 ret = usb_bulk_msg(gm12u320->udev, in gm12u320_fb_update_work()
381 usb_sndbulkpipe(gm12u320->udev, DATA_SND_EPT), in gm12u320_fb_update_work()
382 gm12u320->cmd_buf, CMD_SIZE, &len, CMD_TIMEOUT); in gm12u320_fb_update_work()
387 ret = usb_bulk_msg(gm12u320->udev, in gm12u320_fb_update_work()
388 usb_rcvbulkpipe(gm12u320->udev, DATA_RCV_EPT), in gm12u320_fb_update_work()
389 gm12u320->cmd_buf, READ_STATUS_SIZE, &len, in gm12u320_fb_update_work()
390 gm12u320->fb_update.draw_status_timeout); in gm12u320_fb_update_work()
394 gm12u320->fb_update.draw_status_timeout = CMD_TIMEOUT; in gm12u320_fb_update_work()
395 gm12u320->fb_update.frame = !gm12u320->fb_update.frame; in gm12u320_fb_update_work()
401 queue_delayed_work(system_long_wq, &gm12u320->fb_update.work, in gm12u320_fb_update_work()
414 struct gm12u320_device *gm12u320 = to_gm12u320(fb->dev); in gm12u320_fb_mark_dirty() local
418 mutex_lock(&gm12u320->fb_update.lock); in gm12u320_fb_mark_dirty()
420 if (gm12u320->fb_update.fb != fb) { in gm12u320_fb_mark_dirty()
421 old_fb = gm12u320->fb_update.fb; in gm12u320_fb_mark_dirty()
423 gm12u320->fb_update.fb = fb; in gm12u320_fb_mark_dirty()
424 gm12u320->fb_update.rect = *dirty; in gm12u320_fb_mark_dirty()
427 struct drm_rect *rect = &gm12u320->fb_update.rect; in gm12u320_fb_mark_dirty()
435 mutex_unlock(&gm12u320->fb_update.lock); in gm12u320_fb_mark_dirty()
438 mod_delayed_work(system_long_wq, &gm12u320->fb_update.work, 0); in gm12u320_fb_mark_dirty()
444 static void gm12u320_stop_fb_update(struct gm12u320_device *gm12u320) in gm12u320_stop_fb_update() argument
448 cancel_delayed_work_sync(&gm12u320->fb_update.work); in gm12u320_stop_fb_update()
450 mutex_lock(&gm12u320->fb_update.lock); in gm12u320_stop_fb_update()
451 old_fb = gm12u320->fb_update.fb; in gm12u320_stop_fb_update()
452 gm12u320->fb_update.fb = NULL; in gm12u320_stop_fb_update()
453 mutex_unlock(&gm12u320->fb_update.lock); in gm12u320_stop_fb_update()
458 static int gm12u320_set_ecomode(struct gm12u320_device *gm12u320) in gm12u320_set_ecomode() argument
460 return gm12u320_misc_request(gm12u320, MISC_REQ_GET_SET_ECO_A, in gm12u320_set_ecomode()
549 static int gm12u320_conn_init(struct gm12u320_device *gm12u320) in gm12u320_conn_init() argument
551 drm_connector_helper_add(&gm12u320->conn, &gm12u320_conn_helper_funcs); in gm12u320_conn_init()
552 return drm_connector_init(&gm12u320->dev, &gm12u320->conn, in gm12u320_conn_init()
564 struct gm12u320_device *gm12u320 = to_gm12u320(pipe->crtc.dev); in gm12u320_pipe_enable() local
566 gm12u320->fb_update.draw_status_timeout = FIRST_FRAME_TIMEOUT; in gm12u320_pipe_enable()
572 struct gm12u320_device *gm12u320 = to_gm12u320(pipe->crtc.dev); in gm12u320_pipe_disable() local
574 gm12u320_stop_fb_update(gm12u320); in gm12u320_pipe_disable()
610 struct gm12u320_device *gm12u320 = to_gm12u320(dev); in gm12u320_gem_prime_import() local
612 if (!gm12u320->dmadev) in gm12u320_gem_prime_import()
615 return drm_gem_prime_import_dev(dev, dma_buf, gm12u320->dmadev); in gm12u320_gem_prime_import()
643 struct gm12u320_device *gm12u320; in gm12u320_usb_probe() local
654 gm12u320 = devm_drm_dev_alloc(&interface->dev, &gm12u320_drm_driver, in gm12u320_usb_probe()
656 if (IS_ERR(gm12u320)) in gm12u320_usb_probe()
657 return PTR_ERR(gm12u320); in gm12u320_usb_probe()
658 dev = &gm12u320->dev; in gm12u320_usb_probe()
660 gm12u320->dmadev = usb_intf_get_dma_device(to_usb_interface(dev->dev)); in gm12u320_usb_probe()
661 if (!gm12u320->dmadev) in gm12u320_usb_probe()
664 gm12u320->udev = interface_to_usbdev(interface); in gm12u320_usb_probe()
665 INIT_DELAYED_WORK(&gm12u320->fb_update.work, gm12u320_fb_update_work); in gm12u320_usb_probe()
666 mutex_init(&gm12u320->fb_update.lock); in gm12u320_usb_probe()
678 ret = gm12u320_usb_alloc(gm12u320); in gm12u320_usb_probe()
682 ret = gm12u320_set_ecomode(gm12u320); in gm12u320_usb_probe()
686 ret = gm12u320_conn_init(gm12u320); in gm12u320_usb_probe()
690 ret = drm_simple_display_pipe_init(&gm12u320->dev, in gm12u320_usb_probe()
691 &gm12u320->pipe, in gm12u320_usb_probe()
696 &gm12u320->conn); in gm12u320_usb_probe()
712 put_device(gm12u320->dmadev); in gm12u320_usb_probe()
719 struct gm12u320_device *gm12u320 = to_gm12u320(dev); in gm12u320_usb_disconnect() local
721 put_device(gm12u320->dmadev); in gm12u320_usb_disconnect()
722 gm12u320->dmadev = NULL; in gm12u320_usb_disconnect()
738 struct gm12u320_device *gm12u320 = to_gm12u320(dev); in gm12u320_resume() local
740 gm12u320_set_ecomode(gm12u320); in gm12u320_resume()