brintos

brintos / linux-shallow public Read only

0
0
Text · 1.8 KiB · 19ff66e Raw
76 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 *4 * iPAQ microcontroller backlight support5 * Author : Linus Walleij <linus.walleij@linaro.org>6 */7 8#include <linux/backlight.h>9#include <linux/err.h>10#include <linux/init.h>11#include <linux/mfd/ipaq-micro.h>12#include <linux/module.h>13#include <linux/platform_device.h>14 15static int micro_bl_update_status(struct backlight_device *bd)16{17	struct ipaq_micro *micro = dev_get_drvdata(&bd->dev);18	int intensity = backlight_get_brightness(bd);19	struct ipaq_micro_msg msg = {20		.id = MSG_BACKLIGHT,21		.tx_len = 3,22	};23 24	/*25	 * Message format:26	 * Byte 0: backlight instance (usually 1)27	 * Byte 1: on/off28	 * Byte 2: intensity, 0-25529	 */30	msg.tx_data[0] = 0x01;31	msg.tx_data[1] = intensity > 0 ? 1 : 0;32	msg.tx_data[2] = intensity;33	return ipaq_micro_tx_msg_sync(micro, &msg);34}35 36static const struct backlight_ops micro_bl_ops = {37	.options = BL_CORE_SUSPENDRESUME,38	.update_status  = micro_bl_update_status,39};40 41static const struct backlight_properties micro_bl_props = {42	.type = BACKLIGHT_RAW,43	.max_brightness = 255,44	.power = BACKLIGHT_POWER_ON,45	.brightness = 64,46};47 48static int micro_backlight_probe(struct platform_device *pdev)49{50	struct backlight_device *bd;51	struct ipaq_micro *micro = dev_get_drvdata(pdev->dev.parent);52 53	bd = devm_backlight_device_register(&pdev->dev, "ipaq-micro-backlight",54					    &pdev->dev, micro, &micro_bl_ops,55					    &micro_bl_props);56	if (IS_ERR(bd))57		return PTR_ERR(bd);58 59	platform_set_drvdata(pdev, bd);60	backlight_update_status(bd);61 62	return 0;63}64 65static struct platform_driver micro_backlight_device_driver = {66	.driver = {67		.name    = "ipaq-micro-backlight",68	},69	.probe   = micro_backlight_probe,70};71module_platform_driver(micro_backlight_device_driver);72 73MODULE_LICENSE("GPL v2");74MODULE_DESCRIPTION("driver for iPAQ Atmel micro backlight");75MODULE_ALIAS("platform:ipaq-micro-backlight");76