Lines Matching defs:gm12u320

35 #define DRIVER_NAME		"gm12u320"
51 DRM_DEV_ERROR(gm12u320->dev.dev, fmt, ##__VA_ARGS__)
161 static inline struct usb_device *gm12u320_to_usb_device(struct gm12u320_device *gm12u320)
163 return interface_to_usbdev(to_usb_interface(gm12u320->dev.dev));
166 static int gm12u320_usb_alloc(struct gm12u320_device *gm12u320)
171 gm12u320->cmd_buf = drmm_kmalloc(&gm12u320->dev, CMD_SIZE, GFP_KERNEL);
172 if (!gm12u320->cmd_buf)
184 gm12u320->data_buf[i] = drmm_kzalloc(&gm12u320->dev,
186 if (!gm12u320->data_buf[i])
189 memcpy(gm12u320->data_buf[i], hdr, DATA_BLOCK_HEADER_SIZE);
190 memcpy(gm12u320->data_buf[i] +
198 static int gm12u320_misc_request(struct gm12u320_device *gm12u320,
202 struct usb_device *udev = gm12u320_to_usb_device(gm12u320);
205 memcpy(gm12u320->cmd_buf, &cmd_misc, CMD_SIZE);
206 gm12u320->cmd_buf[20] = req_a;
207 gm12u320->cmd_buf[21] = req_b;
208 gm12u320->cmd_buf[22] = arg_a;
209 gm12u320->cmd_buf[23] = arg_b;
210 gm12u320->cmd_buf[24] = arg_c;
211 gm12u320->cmd_buf[25] = arg_d;
215 gm12u320->cmd_buf, CMD_SIZE, &len, CMD_TIMEOUT);
223 gm12u320->cmd_buf, MISC_VALUE_SIZE, &len,
233 gm12u320->cmd_buf, READ_STATUS_SIZE, &len,
253 static void gm12u320_copy_fb_to_blocks(struct gm12u320_device *gm12u320)
260 mutex_lock(&gm12u320->fb_update.lock);
262 if (!gm12u320->fb_update.fb)
265 fb = gm12u320->fb_update.fb;
266 x1 = gm12u320->fb_update.rect.x1;
267 x2 = gm12u320->fb_update.rect.x2;
268 y1 = gm12u320->fb_update.rect.y1;
269 y2 = gm12u320->fb_update.rect.y2;
270 vaddr = gm12u320->fb_update.src_map.vaddr; /* TODO: Use mapping abstraction properly */
299 gm12u320->data_buf[block] + dst_offset,
306 gm12u320->data_buf[block] + dst_offset,
315 gm12u320->fb_update.fb = NULL;
317 mutex_unlock(&gm12u320->fb_update.lock);
322 struct gm12u320_device *gm12u320 =
325 struct usb_device *udev = gm12u320_to_usb_device(gm12u320);
329 gm12u320_copy_fb_to_blocks(gm12u320);
338 memcpy(gm12u320->cmd_buf, cmd_data, CMD_SIZE);
339 gm12u320->cmd_buf[8] = block_size & 0xff;
340 gm12u320->cmd_buf[9] = block_size >> 8;
341 gm12u320->cmd_buf[20] = 0xfc - block * 4;
342 gm12u320->cmd_buf[21] =
343 block | (gm12u320->fb_update.frame << 7);
347 gm12u320->cmd_buf, CMD_SIZE, &len,
355 gm12u320->data_buf[block], block_size,
363 gm12u320->cmd_buf, READ_STATUS_SIZE, &len,
370 memcpy(gm12u320->cmd_buf, cmd_draw, CMD_SIZE);
372 gm12u320->cmd_buf, CMD_SIZE, &len, CMD_TIMEOUT);
378 gm12u320->cmd_buf, READ_STATUS_SIZE, &len,
379 gm12u320->fb_update.draw_status_timeout);
383 gm12u320->fb_update.draw_status_timeout = CMD_TIMEOUT;
384 gm12u320->fb_update.frame = !gm12u320->fb_update.frame;
390 queue_delayed_work(system_long_wq, &gm12u320->fb_update.work,
404 struct gm12u320_device *gm12u320 = to_gm12u320(fb->dev);
408 mutex_lock(&gm12u320->fb_update.lock);
410 if (gm12u320->fb_update.fb != fb) {
411 old_fb = gm12u320->fb_update.fb;
413 gm12u320->fb_update.fb = fb;
414 gm12u320->fb_update.rect = *dirty;
415 gm12u320->fb_update.src_map = *map;
418 struct drm_rect *rect = &gm12u320->fb_update.rect;
426 mutex_unlock(&gm12u320->fb_update.lock);
429 mod_delayed_work(system_long_wq, &gm12u320->fb_update.work, 0);
435 static void gm12u320_stop_fb_update(struct gm12u320_device *gm12u320)
439 cancel_delayed_work_sync(&gm12u320->fb_update.work);
441 mutex_lock(&gm12u320->fb_update.lock);
442 old_fb = gm12u320->fb_update.fb;
443 gm12u320->fb_update.fb = NULL;
444 iosys_map_clear(&gm12u320->fb_update.src_map);
445 mutex_unlock(&gm12u320->fb_update.lock);
450 static int gm12u320_set_ecomode(struct gm12u320_device *gm12u320)
452 return gm12u320_misc_request(gm12u320, MISC_REQ_GET_SET_ECO_A,
458 /* gm12u320 connector */
548 static int gm12u320_conn_init(struct gm12u320_device *gm12u320)
550 drm_connector_helper_add(&gm12u320->conn, &gm12u320_conn_helper_funcs);
551 return drm_connector_init(&gm12u320->dev, &gm12u320->conn,
556 /* gm12u320 (simple) display pipe */
563 struct gm12u320_device *gm12u320 = to_gm12u320(pipe->crtc.dev);
566 gm12u320->fb_update.draw_status_timeout = FIRST_FRAME_TIMEOUT;
572 struct gm12u320_device *gm12u320 = to_gm12u320(pipe->crtc.dev);
574 gm12u320_stop_fb_update(gm12u320);
628 struct gm12u320_device *gm12u320;
634 * The gm12u320 presents itself to the system as 2 usb mass-storage
640 gm12u320 = devm_drm_dev_alloc(&interface->dev, &gm12u320_drm_driver,
642 if (IS_ERR(gm12u320))
643 return PTR_ERR(gm12u320);
644 dev = &gm12u320->dev;
654 INIT_DELAYED_WORK(&gm12u320->fb_update.work, gm12u320_fb_update_work);
655 mutex_init(&gm12u320->fb_update.lock);
667 ret = gm12u320_usb_alloc(gm12u320);
671 ret = gm12u320_set_ecomode(gm12u320);
675 ret = gm12u320_conn_init(gm12u320);
679 ret = drm_simple_display_pipe_init(&gm12u320->dev,
680 &gm12u320->pipe,
685 &gm12u320->conn);
720 struct gm12u320_device *gm12u320 = to_gm12u320(dev);
722 gm12u320_set_ecomode(gm12u320);
734 .name = "gm12u320",