92 lines · 2.3 KB · C
RawDownload
/* * Retu power button driver. * * Copyright (C) 2004-2010 Nokia Corporation * * Original code written by Ari Saastamoinen, Juha Yrjölä and Felipe Balbi. * Rewritten by Aaro Koskinen. * * This file is subject to the terms and conditions of the GNU General * Public License. See the file "COPYING" in the main directory of this * archive for more details. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include <linux/irq.h>#include <linux/slab.h>#include <linux/errno.h>#include <linux/input.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/mfd/retu.h>#include <linux/interrupt.h>#include <linux/platform_device.h> #define RETU_STATUS_PWRONX (1 << 5) static irqreturn_t retu_pwrbutton_irq(int irq, void *_pwr){	struct input_dev *idev = _pwr;	struct retu_dev *rdev = input_get_drvdata(idev);	bool state; 	state = !(retu_read(rdev, RETU_REG_STATUS) & RETU_STATUS_PWRONX);	input_report_key(idev, KEY_POWER, state);	input_sync(idev); 	return IRQ_HANDLED;} static int retu_pwrbutton_probe(struct platform_device *pdev){	struct retu_dev *rdev = dev_get_drvdata(pdev->dev.parent);	struct input_dev *idev;	int irq;	int error; 	irq = platform_get_irq(pdev, 0);	if (irq < 0)		return irq; 	idev = devm_input_allocate_device(&pdev->dev);	if (!idev)		return -ENOMEM; 	idev->name = "retu-pwrbutton";	idev->dev.parent = &pdev->dev; 	input_set_capability(idev, EV_KEY, KEY_POWER);	input_set_drvdata(idev, rdev); 	error = devm_request_threaded_irq(&pdev->dev, irq,					  NULL, retu_pwrbutton_irq,					  IRQF_ONESHOT,					  "retu-pwrbutton", idev);	if (error)		return error; 	error = input_register_device(idev);	if (error)		return error; 	return 0;} static struct platform_driver retu_pwrbutton_driver = {	.probe		= retu_pwrbutton_probe,	.driver		= {		.name	= "retu-pwrbutton",	},};module_platform_driver(retu_pwrbutton_driver); MODULE_ALIAS("platform:retu-pwrbutton");MODULE_DESCRIPTION("Retu Power Button");MODULE_AUTHOR("Ari Saastamoinen");MODULE_AUTHOR("Felipe Balbi");MODULE_AUTHOR("Aaro Koskinen <aaro.koskinen@iki.fi>");MODULE_LICENSE("GPL");

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t