162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci#ifndef __BUDGET_DVB__ 462306a36Sopenharmony_ci#define __BUDGET_DVB__ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include <media/dvb_frontend.h> 762306a36Sopenharmony_ci#include <media/dvbdev.h> 862306a36Sopenharmony_ci#include <media/demux.h> 962306a36Sopenharmony_ci#include <media/dvb_demux.h> 1062306a36Sopenharmony_ci#include <media/dmxdev.h> 1162306a36Sopenharmony_ci#include <media/dvb_net.h> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#include <linux/module.h> 1462306a36Sopenharmony_ci#include <linux/mutex.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#include <media/drv-intf/saa7146.h> 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciextern int budget_debug; 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#ifdef dprintk 2162306a36Sopenharmony_ci#undef dprintk 2262306a36Sopenharmony_ci#endif 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci#define dprintk(level, fmt, arg...) do { \ 2562306a36Sopenharmony_ci if (level & budget_debug) \ 2662306a36Sopenharmony_ci printk(KERN_DEBUG KBUILD_MODNAME ": %s(): " fmt, \ 2762306a36Sopenharmony_ci __func__, ##arg); \ 2862306a36Sopenharmony_ci} while (0) 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci#define TS_SIZE 188 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_cistruct budget_info { 3362306a36Sopenharmony_ci char *name; 3462306a36Sopenharmony_ci int type; 3562306a36Sopenharmony_ci}; 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci/* place to store all the necessary device information */ 3862306a36Sopenharmony_cistruct budget { 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci /* devices */ 4162306a36Sopenharmony_ci struct dvb_device dvb_dev; 4262306a36Sopenharmony_ci struct dvb_net dvb_net; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci struct saa7146_dev *dev; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci struct i2c_adapter i2c_adap; 4762306a36Sopenharmony_ci struct budget_info *card; 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci unsigned char *grabbing; 5062306a36Sopenharmony_ci struct saa7146_pgtable pt; 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci struct tasklet_struct fidb_tasklet; 5362306a36Sopenharmony_ci struct tasklet_struct vpe_tasklet; 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci struct dmxdev dmxdev; 5662306a36Sopenharmony_ci struct dvb_demux demux; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci struct dmx_frontend hw_frontend; 5962306a36Sopenharmony_ci struct dmx_frontend mem_frontend; 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci int ci_present; 6262306a36Sopenharmony_ci int video_port; 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci u32 buffer_width; 6562306a36Sopenharmony_ci u32 buffer_height; 6662306a36Sopenharmony_ci u32 buffer_size; 6762306a36Sopenharmony_ci u32 buffer_warning_threshold; 6862306a36Sopenharmony_ci u32 buffer_warnings; 6962306a36Sopenharmony_ci unsigned long buffer_warning_time; 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci u32 ttbp; 7262306a36Sopenharmony_ci int feeding; 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci spinlock_t feedlock; 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci spinlock_t debilock; 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ci struct dvb_adapter dvb_adapter; 7962306a36Sopenharmony_ci struct dvb_frontend *dvb_frontend; 8062306a36Sopenharmony_ci int (*read_fe_status)(struct dvb_frontend *fe, enum fe_status *status); 8162306a36Sopenharmony_ci int fe_synced; 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci void *priv; 8462306a36Sopenharmony_ci}; 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci#define MAKE_BUDGET_INFO(x_var,x_name,x_type) \ 8762306a36Sopenharmony_cistatic struct budget_info x_var ## _info = { \ 8862306a36Sopenharmony_ci .name=x_name, \ 8962306a36Sopenharmony_ci .type=x_type }; \ 9062306a36Sopenharmony_cistatic struct saa7146_pci_extension_data x_var = { \ 9162306a36Sopenharmony_ci .ext_priv = &x_var ## _info, \ 9262306a36Sopenharmony_ci .ext = &budget_extension }; 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci#define BUDGET_TT 0 9562306a36Sopenharmony_ci#define BUDGET_TT_HW_DISEQC 1 9662306a36Sopenharmony_ci#define BUDGET_PATCH 3 9762306a36Sopenharmony_ci#define BUDGET_FS_ACTIVY 4 9862306a36Sopenharmony_ci#define BUDGET_CIN1200S 5 9962306a36Sopenharmony_ci#define BUDGET_CIN1200C 6 10062306a36Sopenharmony_ci#define BUDGET_CIN1200T 7 10162306a36Sopenharmony_ci#define BUDGET_KNC1S 8 10262306a36Sopenharmony_ci#define BUDGET_KNC1C 9 10362306a36Sopenharmony_ci#define BUDGET_KNC1T 10 10462306a36Sopenharmony_ci#define BUDGET_KNC1SP 11 10562306a36Sopenharmony_ci#define BUDGET_KNC1CP 12 10662306a36Sopenharmony_ci#define BUDGET_KNC1TP 13 10762306a36Sopenharmony_ci#define BUDGET_TVSTAR 14 10862306a36Sopenharmony_ci#define BUDGET_CIN1200C_MK3 15 10962306a36Sopenharmony_ci#define BUDGET_KNC1C_MK3 16 11062306a36Sopenharmony_ci#define BUDGET_KNC1CP_MK3 17 11162306a36Sopenharmony_ci#define BUDGET_KNC1S2 18 11262306a36Sopenharmony_ci#define BUDGET_KNC1C_TDA10024 19 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci#define BUDGET_VIDEO_PORTA 0 11562306a36Sopenharmony_ci#define BUDGET_VIDEO_PORTB 1 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ciextern int ttpci_budget_init(struct budget *budget, struct saa7146_dev *dev, 11862306a36Sopenharmony_ci struct saa7146_pci_extension_data *info, 11962306a36Sopenharmony_ci struct module *owner, short *adapter_nums); 12062306a36Sopenharmony_ciextern void ttpci_budget_init_hooks(struct budget *budget); 12162306a36Sopenharmony_ciextern int ttpci_budget_deinit(struct budget *budget); 12262306a36Sopenharmony_ciextern void ttpci_budget_irq10_handler(struct saa7146_dev *dev, u32 * isr); 12362306a36Sopenharmony_ciextern void ttpci_budget_set_video_port(struct saa7146_dev *dev, int video_port); 12462306a36Sopenharmony_ciextern int ttpci_budget_debiread(struct budget *budget, u32 config, int addr, int count, 12562306a36Sopenharmony_ci int uselocks, int nobusyloop); 12662306a36Sopenharmony_ciextern int ttpci_budget_debiwrite(struct budget *budget, u32 config, int addr, int count, u32 value, 12762306a36Sopenharmony_ci int uselocks, int nobusyloop); 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ci#endif 130