Skip to content

Commit

Permalink
V4L/DVB (11061): au8522: move shared state and common functions into …
Browse files Browse the repository at this point in the history
…a separate header files

Move the au8522 state structure, as well as exposing functions needed by the
analog side of the demodulator into a common header file.

Thanks to Michael Krufky <mkrufky@linuxtv.org> and Steven Toth
<stoth@linuxtv.org> for providing sample hardware, engineering level support,
and testing.

Signed-off-by: Devin Heitmueller <dheitmueller@linuxtv.org>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Devin Heitmueller authored and Mauro Carvalho Chehab committed Mar 30, 2009
1 parent f56738c commit 0c44bf3
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 20 deletions.
25 changes: 5 additions & 20 deletions drivers/media/dvb/frontends/au8522_dig.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,7 @@
#include <linux/delay.h>
#include "dvb_frontend.h"
#include "au8522.h"

struct au8522_state {

struct i2c_adapter *i2c;

/* configuration settings */
const struct au8522_config *config;

struct dvb_frontend frontend;

u32 current_frequency;
fe_modulation_t current_modulation;

u32 fe_status;
unsigned int led_state;
};
#include "au8522_priv.h"

static int debug;

Expand All @@ -52,7 +37,7 @@ static int debug;
} while (0)

/* 16 bit registers, 8 bit values */
static int au8522_writereg(struct au8522_state *state, u16 reg, u8 data)
int au8522_writereg(struct au8522_state *state, u16 reg, u8 data)
{
int ret;
u8 buf [] = { reg >> 8, reg & 0xff, data };
Expand All @@ -69,7 +54,7 @@ static int au8522_writereg(struct au8522_state *state, u16 reg, u8 data)
return (ret != 1) ? -1 : 0;
}

static u8 au8522_readreg(struct au8522_state *state, u16 reg)
u8 au8522_readreg(struct au8522_state *state, u16 reg)
{
int ret;
u8 b0 [] = { reg >> 8, reg & 0xff };
Expand Down Expand Up @@ -528,7 +513,7 @@ static int au8522_set_frontend(struct dvb_frontend *fe,

/* Reset the demod hardware and reset all of the configuration registers
to a default state. */
static int au8522_init(struct dvb_frontend *fe)
int au8522_init(struct dvb_frontend *fe)
{
struct au8522_state *state = fe->demodulator_priv;
dprintk("%s()\n", __func__);
Expand Down Expand Up @@ -624,7 +609,7 @@ static int au8522_led_ctrl(struct au8522_state *state, int led)
return 0;
}

static int au8522_sleep(struct dvb_frontend *fe)
int au8522_sleep(struct dvb_frontend *fe)
{
struct au8522_state *state = fe->demodulator_priv;
dprintk("%s()\n", __func__);
Expand Down
57 changes: 57 additions & 0 deletions drivers/media/dvb/frontends/au8522_priv.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
Auvitek AU8522 QAM/8VSB demodulator driver
Copyright (C) 2008 Steven Toth <stoth@linuxtv.org>
Copyright (C) 2008 Devin Heitmueller <dheitmueller@linuxtv.org>
Copyright (C) 2005-2008 Auvitek International, Ltd.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
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.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/string.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/videodev2.h>
#include <media/v4l2-device.h>
#include <linux/i2c.h>
#include "dvb_frontend.h"
#include "au8522.h"
#include "tuner-i2c.h"

struct au8522_state {
struct i2c_adapter *i2c;

/* configuration settings */
const struct au8522_config *config;

struct dvb_frontend frontend;

u32 current_frequency;
fe_modulation_t current_modulation;

u32 fe_status;
unsigned int led_state;
};

/* These are routines shared by both the VSB/QAM demodulator and the analog
decoder */
int au8522_writereg(struct au8522_state *state, u16 reg, u8 data);
u8 au8522_readreg(struct au8522_state *state, u16 reg);
int au8522_init(struct dvb_frontend *fe);
int au8522_sleep(struct dvb_frontend *fe);

0 comments on commit 0c44bf3

Please sign in to comment.