1*2a0c2806SHans Verkuil /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*2a0c2806SHans Verkuil /* 3*2a0c2806SHans Verkuil * Zoran zr36057/zr36067 PCI controller driver, for the 4*2a0c2806SHans Verkuil * Pinnacle/Miro DC10/DC10+/DC30/DC30+, Iomega Buz, Linux 5*2a0c2806SHans Verkuil * Media Labs LML33/LML33R10. 6*2a0c2806SHans Verkuil * 7*2a0c2806SHans Verkuil * This part handles card-specific data and detection 8*2a0c2806SHans Verkuil * 9*2a0c2806SHans Verkuil * Copyright (C) 2000 Serguei Miridonov <mirsev@cicese.mx> 10*2a0c2806SHans Verkuil */ 11*2a0c2806SHans Verkuil 12*2a0c2806SHans Verkuil #ifndef __ZORAN_DEVICE_H__ 13*2a0c2806SHans Verkuil #define __ZORAN_DEVICE_H__ 14*2a0c2806SHans Verkuil 15*2a0c2806SHans Verkuil /* general purpose I/O */ 16*2a0c2806SHans Verkuil void GPIO(struct zoran *zr, int bit, unsigned int value); 17*2a0c2806SHans Verkuil 18*2a0c2806SHans Verkuil /* codec (or actually: guest bus) access */ 19*2a0c2806SHans Verkuil int post_office_wait(struct zoran *zr); 20*2a0c2806SHans Verkuil int post_office_write(struct zoran *zr, unsigned int guest, unsigned int reg, 21*2a0c2806SHans Verkuil unsigned int value); 22*2a0c2806SHans Verkuil int post_office_read(struct zoran *zr, unsigned int guest, unsigned int reg); 23*2a0c2806SHans Verkuil 24*2a0c2806SHans Verkuil void jpeg_codec_sleep(struct zoran *zr, int sleep); 25*2a0c2806SHans Verkuil int jpeg_codec_reset(struct zoran *zr); 26*2a0c2806SHans Verkuil 27*2a0c2806SHans Verkuil /* zr360x7 access to raw capture */ 28*2a0c2806SHans Verkuil void zr36057_set_memgrab(struct zoran *zr, int mode); 29*2a0c2806SHans Verkuil int wait_grab_pending(struct zoran *zr); 30*2a0c2806SHans Verkuil 31*2a0c2806SHans Verkuil /* interrupts */ 32*2a0c2806SHans Verkuil void print_interrupts(struct zoran *zr); 33*2a0c2806SHans Verkuil void clear_interrupt_counters(struct zoran *zr); 34*2a0c2806SHans Verkuil irqreturn_t zoran_irq(int irq, void *dev_id); 35*2a0c2806SHans Verkuil 36*2a0c2806SHans Verkuil /* JPEG codec access */ 37*2a0c2806SHans Verkuil void jpeg_start(struct zoran *zr); 38*2a0c2806SHans Verkuil void zr36057_enable_jpg(struct zoran *zr, enum zoran_codec_mode mode); 39*2a0c2806SHans Verkuil void zoran_feed_stat_com(struct zoran *zr); 40*2a0c2806SHans Verkuil 41*2a0c2806SHans Verkuil /* general */ 42*2a0c2806SHans Verkuil void zoran_set_pci_master(struct zoran *zr, int set_master); 43*2a0c2806SHans Verkuil void zoran_init_hardware(struct zoran *zr); 44*2a0c2806SHans Verkuil void zr36057_restart(struct zoran *zr); 45*2a0c2806SHans Verkuil 46*2a0c2806SHans Verkuil extern const struct zoran_format zoran_formats[]; 47*2a0c2806SHans Verkuil 48*2a0c2806SHans Verkuil extern int pass_through; 49*2a0c2806SHans Verkuil 50*2a0c2806SHans Verkuil /* i2c */ 51*2a0c2806SHans Verkuil #define decoder_call(zr, o, f, args...) \ 52*2a0c2806SHans Verkuil v4l2_subdev_call((zr)->decoder, o, f, ##args) 53*2a0c2806SHans Verkuil #define encoder_call(zr, o, f, args...) \ 54*2a0c2806SHans Verkuil v4l2_subdev_call((zr)->encoder, o, f, ##args) 55*2a0c2806SHans Verkuil 56*2a0c2806SHans Verkuil #endif /* __ZORAN_DEVICE_H__ */ 57