static void enable_oled(struct asus_oled_dev *odev, uint8_t enabl) { int retval; int act_len; struct asus_oled_packet *packet; packet = kzalloc(sizeof(struct asus_oled_packet), GFP_KERNEL); if (!packet) { dev_err(&odev->udev->dev, "out of memory\n"); return; } setup_packet_header(packet, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00); if (enabl) packet->bitmap[0] = 0xaf; else packet->bitmap[0] = 0xae; retval = usb_bulk_msg(odev->udev, usb_sndbulkpipe(odev->udev, 2), packet, sizeof(struct asus_oled_header) + 1, &act_len, -1); if (retval) dev_dbg(&odev->udev->dev, "retval = %d\n", retval); odev->enabled = enabl; kfree(packet); }
static void send_packets(struct usb_device *udev, struct asus_oled_packet *packet, char *buf, uint8_t p_type, size_t p_num) { size_t i; int act_len; for (i = 0; i < p_num; i++) { int retval; switch (p_type) { case ASUS_OLED_ROLL: setup_packet_header(packet, 0x40, 0x80, p_num, i + 1, 0x00, 0x01, 0xff); break; case ASUS_OLED_STATIC: setup_packet_header(packet, 0x10 + i, 0x80, 0x01, 0x01, 0x00, 0x01, 0x00); break; case ASUS_OLED_FLASH: setup_packet_header(packet, 0x10 + i, 0x80, 0x01, 0x01, 0x00, 0x00, 0xff); break; } memcpy(packet->bitmap, buf + (ASUS_OLED_PACKET_BUF_SIZE*i), ASUS_OLED_PACKET_BUF_SIZE); retval = usb_bulk_msg(udev, usb_sndctrlpipe(udev, 2), packet, sizeof(struct asus_oled_packet), &act_len, -1); if (retval) dev_dbg(&udev->dev, "retval = %d\n", retval); } }
static void send_packet(struct usb_device *udev, struct asus_oled_packet *packet, size_t offset, size_t len, char *buf, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5, uint8_t b6) { int retval; int act_len; setup_packet_header(packet, b1, b2, b3, b4, b5, b6, 0x00); memcpy(packet->bitmap, buf + offset, len); retval = usb_bulk_msg(udev, usb_sndctrlpipe(udev, 2), packet, sizeof(struct asus_oled_packet), &act_len, -1); if (retval) dev_dbg(&udev->dev, "retval = %d\n", retval); }