1355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman/* include/linux/timed_output.h
2355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman *
3355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman * Copyright (C) 2008 Google, Inc.
4355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman *
5355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman * This software is licensed under the terms of the GNU General Public
6355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman * License version 2, as published by the Free Software Foundation, and
7355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman * may be copied, distributed, and modified under those terms.
8355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman *
9355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman * This program is distributed in the hope that it will be useful,
10355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman * but WITHOUT ANY WARRANTY; without even the implied warranty of
11355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman * GNU General Public License for more details.
13355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman *
14355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman*/
15355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman
16355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman#ifndef _LINUX_TIMED_OUTPUT_H
17355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman#define _LINUX_TIMED_OUTPUT_H
18355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman
19355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartmanstruct timed_output_dev {
20355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman	const char	*name;
21355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman
22355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman	/* enable the output and set the timer */
23355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman	void	(*enable)(struct timed_output_dev *sdev, int timeout);
24355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman
25355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman	/* returns the current number of milliseconds remaining on the timer */
26355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman	int		(*get_time)(struct timed_output_dev *sdev);
27355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman
28355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman	/* private data */
29355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman	struct device	*dev;
30355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman	int		index;
31355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman	int		state;
32355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman};
33355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman
34355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartmanextern int timed_output_dev_register(struct timed_output_dev *dev);
35355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartmanextern void timed_output_dev_unregister(struct timed_output_dev *dev);
36355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman
37355b0502f6efea0ff9492753888772c96972d2a3Greg Kroah-Hartman#endif
38