Beispiel #1
0
static void g15_led_mr_brightness_set(struct led_classdev *led_cdev,
				      enum led_brightness value)
{
	g15_led_set(led_cdev, value, G15_LED_MR);
}
Beispiel #2
0
static int g15_input_get_keycode(struct input_dev * dev,
                                 unsigned int scancode,
                                 unsigned int * keycode)
{
	int retval;
	
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)
	
	struct input_keymap_entry ke = {
		.flags    = 0,
		.len      = sizeof(scancode),
		.index    = scancode,
		.scancode = { scancode },
	};
	
	retval   = input_get_keycode(dev, &ke);
	*keycode = ke.keycode;
	
#else
	
	retval   = input_get_keycode(dev, scancode, keycode);
	
#endif
	
	return retval;
}

static void g15_msg_send(struct hid_device *hdev, u8 msg, u8 value1, u8 value2)
{
	struct g15_data *data = hid_get_g15data(hdev);

	data->led_report->field[0]->value[0] = msg;
	data->led_report->field[0]->value[1] = value1;
	data->led_report->field[0]->value[2] = value2;

	usbhid_submit_report(hdev, data->led_report, USB_DIR_OUT);
}

static void g15_led_set(struct led_classdev *led_cdev,
			 enum led_brightness value,
			 int led_num)
{
	struct device *dev;
	struct hid_device *hdev;
	struct g15_data *data;
	u8 mask;

	/* Get the device associated with the led */
	dev = led_cdev->dev->parent;

	/* Get the hid associated with the device */
	hdev = container_of(dev, struct hid_device, dev);

	/* Get the underlying data value */
	data = hid_get_g15data(hdev);

	mask = 0x01<<led_num;
	if (value)
		data->led |= mask;
	else
		data->led &= ~mask;

	g15_msg_send(hdev, 0x04, ~(data->led), 0);
}

static void g15_led_m1_brightness_set(struct led_classdev *led_cdev,
				      enum led_brightness value)
{
	g15_led_set(led_cdev, value, G15_LED_M1);
}