12dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming/*
22dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *
32dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *  Copyright (C) 2006 Luming Yu <luming.yu@intel.com>
42dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *
52dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *
72dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *  This program is free software; you can redistribute it and/or modify
82dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *  it under the terms of the GNU General Public License as published by
92dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *  the Free Software Foundation; either version 2 of the License, or (at
102dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *  your option) any later version.
112dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *
122dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *  This program is distributed in the hope that it will be useful, but
132dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *  WITHOUT ANY WARRANTY; without even the implied warranty of
142dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
152dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *  General Public License for more details.
162dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *
172dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *  You should have received a copy of the GNU General Public License along
182dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *  with this program; if not, write to the Free Software Foundation, Inc.,
192dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
202dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming *
212dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
222dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming */
232dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming#ifndef _LINUX_VIDEO_OUTPUT_H
242dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming#define _LINUX_VIDEO_OUTPUT_H
252dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming#include <linux/device.h>
263353bebe7c89725ab2f476b9d8d618259402d52eLen Brown#include <linux/err.h>
272dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Lumingstruct output_device;
282dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Lumingstruct output_properties {
292dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming	int (*set_state)(struct output_device *);
302dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming	int (*get_status)(struct output_device *);
312dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming};
322dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Lumingstruct output_device {
332dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming	int request_state;
342dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming	struct output_properties *props;
3560043428a561a5d431ad479b7ecb79805ed04efctonyj@suse.de	struct device dev;
362dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming};
3760043428a561a5d431ad479b7ecb79805ed04efctonyj@suse.de#define to_output_device(obj) container_of(obj, struct output_device, dev)
383353bebe7c89725ab2f476b9d8d618259402d52eLen Brown#if	defined(CONFIG_VIDEO_OUTPUT_CONTROL) || defined(CONFIG_VIDEO_OUTPUT_CONTROL_MODULE)
392dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Lumingstruct output_device *video_output_register(const char *name,
402dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming	struct device *dev,
412dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming	void *devdata,
422dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming	struct output_properties *op);
432dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Lumingvoid video_output_unregister(struct output_device *dev);
443353bebe7c89725ab2f476b9d8d618259402d52eLen Brown#else
453353bebe7c89725ab2f476b9d8d618259402d52eLen Brownstatic struct output_device *video_output_register(const char *name,
463353bebe7c89725ab2f476b9d8d618259402d52eLen Brown        struct device *dev,
473353bebe7c89725ab2f476b9d8d618259402d52eLen Brown        void *devdata,
483353bebe7c89725ab2f476b9d8d618259402d52eLen Brown        struct output_properties *op)
493353bebe7c89725ab2f476b9d8d618259402d52eLen Brown{
503353bebe7c89725ab2f476b9d8d618259402d52eLen Brown	return ERR_PTR(-ENODEV);
513353bebe7c89725ab2f476b9d8d618259402d52eLen Brown}
523353bebe7c89725ab2f476b9d8d618259402d52eLen Brownstatic void video_output_unregister(struct output_device *dev)
533353bebe7c89725ab2f476b9d8d618259402d52eLen Brown{
543353bebe7c89725ab2f476b9d8d618259402d52eLen Brown	return;
553353bebe7c89725ab2f476b9d8d618259402d52eLen Brown}
563353bebe7c89725ab2f476b9d8d618259402d52eLen Brown#endif
572dec3ba8d872aa3ffbcdb8f6f8a2c0bcd44e9910Yu Luming#endif
58