This is a driver for DVB cards based on SAA7160/61/62 PCIe bridges from Philips/NXP. The most important of these cards, at least for me, is the TechnoTrend S2-6400, a high-definition full-featured DVB-S2 card, the successor of the famous ttpci decoder cards for use with applications like vdr. Although equipped with a decoder, the S2-6400 is not able to send the decoded video back over PCIe, so the output part of this card cannot be used with applications like kaffeine. Other cards supported by this driver: Technisat SkyStar 2 eXpress HD TurboSight 6281 (DVB-T/T2/C) TurboSight 6285 (DVB-T/T2/C) Twinhan/Azurewave VP-6090 The driver was taken from [1], converted to git and moved to drivers/media/pci. It is adapted for current mainline (v5.1-rc1) with lots of clean-up work done. This driver was licensed "GPL" from the beginning. S2-6400 firmware is available at [2]. I preserved the development history of the driver, since this is mainly work of Andreas Regel, Manu Abraham, and Oliver Endriss. Additional support for TBS cards was provided by Luis Alves and Tycho Lürsen. Also thanks to Tobias Klausmann and Uwe Scheffler for their code contributions and testing work. Unfortunately Andreas seems not to take care of this driver anymore, he also did not answer my requests to integrate patches for newer kernel versions. So I send this upstream. Changes since v1 of this pull request [3]: - rebased and adapted to linux-5.1-rc1 - added support for TBS cards - fixed IRQ/MSI init - fixed module dependencies - converted logging to pci_info/dbg/err - submitted for media/pci, not staging/media, all clean-up work done Remaining checkpatch warnings for lines over 80 characters are only to keep message strings and "code tables" intact. There was a request to convert the DVB API output part in this driver to "something more modern", apparently under the wrong assumption that this API is used here as some older version of a v4l2 decoder API. But the S2-6400 is a completely different class of hardware, with different and much simpler API requirements. The S2-6400 hardware is not able to send the decoded video back over PCIe. This driver has no access to the decoded video, and it is not in charge of controlling the video decoder on this card. The only available hardware interface for the dvb audio/video device is a fifo buffer to receive a DVB transport stream. So this driver only uses following calls from the DVB output API: - write a TS to the fifo via the video device node - 3 ioctls: reset fifo, get time stamp of packet at receiving end of fifo, switch from fifo interface to DVB frontend (or back) for received TS >From an API point of view, this driver does not even know that there is a video decoder behind the fifo. It could as well be a transmission line, or a dvb modulator. This simple DVB transport stream output API very well meets the needs of the vdr application, I don't see why and how this should be converted to something different. Note: there is a debug access to a single decoded image in this driver, this is gated by a module option and disabled by default. Due to bandwith limitations on the card this should not be used in parallel to normal vdr operation. [1] https://bitbucket.org/powARman/v4l-dvb-saa716x/ [2] http://www.aregel.de/downloads/ [3] https://www.mail-archive.com/linux-media@xxxxxxxxxxxxxxx/msg115690.html The following changes since commit 9e98c678c2d6ae3a17cb2de55d17f69dddaa231b: Linux 5.1-rc1 (2019-03-17 14:22:26 -0700) are available in the Git repository at: https://github.com/s-moch/linux-saa716x for-media-v2 for you to fetch changes up to 33590a6a58a3d350678cd8aef4ea1578d66494fa: saa716x: Add MAINTAINERS entry (2019-03-25 08:53:42 +0100) ---------------------------------------------------------------- Andreas Regel (127): saa716x: Simplified the code for I2C transfers. saa716x: Transport stream ports can be configured now. saa716x_ff: Disable frontend support through STi7109 firmware. saa716x_ff: Initialize the frontend of the TT S2-6400. saa716x_ff: Add VIDEO_GET_PTS ioctl. saa716x_ff: Add audio device for TT S2-6400. saa716x_ff: Use separate interrupts for OSD commands. saa716x_ff: Use third TS input of the STi7109 for playback saa716x_ff: Set error code when boot of firmware failed. saa716x_ff: Added 10ms sleep after configuring the FPGA. saa716x: Reduce compiler warnings saa716x: fix kernel oops caused by missing initialisation saa716x: fixed double frontend detach saa716x: 1ms is enough when waiting for the PLL saa716x_ff: Adapted frontend init to latest driver changes. saa716x: Improve PHI performance by shorten timings a bit. saa716x_ff: use double buffering for block transfers. saa716x_ff: Reset block_done after receiving it. saa716x_ff: add interrupt source for firmware log messages saa716x_ff: read FPGA version register saa716x_ff: fixed PTS/STC signed/unsigned issue saa716x_ff: query and print loader and firmware versions saa716x: disable debug printk osd.h: Add const keyword to struct members saa716x_ff: implement ioctl VIDEO_GET_SIZE saa716x_ff: support production version of the S2-6400 saa716x: disable OVERFLOW and AV interrupts in FGPI saa716x_ff: add some FPGA register definitions saa716x_ff: restart TS capturing in case of non-aligned TS error saa716x_ff: don't clear FGPI interrupts in IRQ routine. saa716x: comment out SPI functions that are not needed currently saa716x: add changes needed for kernel 2.6.36 and up. saa716x: support building with media_build_experimental saa716x_ff: use tasklet for FIFO transfer saa716x: fix not working MSI saa716x: Disable shared IRQ when using MSI mode. saa716x_ff: Do an explicit demodulator reset. saa716x: enable wait for PLL lock when setting clocks of all ports. saa716x_ff: add counting of interrupts saa716x: don't set i2c_adapter id field saa716x_ff: support non-aligned TS data saa716x_ff: Use a TS clock of 135Mhz instead of 90 Mhz. saa716x_ff: Ignore false remote events. saa716x_ff: Fix possible crash in IRQ handler. saa716x_ff: move firmware command interface code to separate file. saa716x_ff: Allow to have osd device opened twice. saa716x_ff: support correct TS mux setting for FPGA 1.10. saa716x_budget: Add missing GPIO initialization. saa716x_hybrid: Add missing GPIO initialization. saa716x_hybrid: fix tuner settings for nemo reference board saa716x_hybrid: TS capturing on the nemo reference board works. saa716x_hybrid: Make TS capturing code more generic. saa716x: remove unused members from struct saa716x_config. saa716x: Add function saa716x_fgpi_get_write_index. saa716x_hybrid: Use saa716x_fgpi_get_write_index to simplify code. saa716x_ff: Use saa716x_fgpi_get_write_index to simplify code. saa716x: Set maximum number of adapters per saa716x to 4. saa716x_budget: Add TS capturing code. saa716x_hybrid: Do some cleanups. saa716x: remove unused load_config functions. saa716x_budget: Started with SkyStar 2 eXpress HD. saa716x_hybrid: Add support for KWorld Dual DVB-T PE310. saa716x: Fix I2C bus assignment on SAA7160ET. saa716x: Fix stack corruption when parsing ROM info. saa716x: Fix memory leak in ROM parsing. saa716x: Skip unknown device descriptors when parsing the ROM saa716x: change verbose level for some dprintk saa716x_ff: Enable now working EEPROM parsing. saa716x_ff: Add error message when FPGA is not responding. saa716x_budget: Add frontend attach for the Skystar2 eXpress HD. saa716x_ff: Reset the frontend on the SkyStar2 eXpress HD. saa716x_ff: support CEC remote codes. saa716x: Use interrupts for I2C writes instead of polling. saa716x: separate I2C reading and writing into two functions. saa716x_ff: change remote event printk to hexadecimal output. saa716x: Support buffered I2C transaction using interrupts. saa716x_ff: Use buffered I2C interrupt mode. saa716x_ff: Don't use dvb_generic_ioctl. saa716x_budget: Use GPIO 26 for reset on the Skystar 2 eXpress HD. saa716x_budget: Use I2C B for accessing the frontend on the Skystar. saa716x_budget: Get the Skystar 2 eXpress HD to work. saa716x_budget: Implement LNB power switching for Skystar 2 eXpress HD. saa716x_ff: Fix memory leak. saa716x_ff: Fix missing copy user <-> kernel space. saa716x: FGPI DMA buffer size is passed to saa716x_fgpi_init. saa716x: Fix FGPI settings for SD video capture. saa716x: Export some FGPI functions. saa716x: Remove unused header file. saa716x: Remove duplicate definition. saa716x: Make BAM register macros more generic. saa716x: Use global macros for MMU register access. saa716x: Add VI module implementation. saa716x: Support one-shot video capturing. saa716x_ff: Extend interrupt counters. saa716x: Change video capture format from YUYV to UYUV. saa716x_ff: Support capturing digital video coming from STi7109. saa716x_ff: Protect reading of the captured video with a mutex. saa716x_ff: Rename functions. saa716x_ff: video capture refactoring. saa716x: Use pitch value from stream params when setting FGPI_STRIDE. saa716x: use offset from stream params instead of fixed value. saa716x: Clear DMA buffer after allocatiion saa716x: Support capturing raw data via FGPI unit saa716x: Reset FGPI read index in saa716x_fgpi_start saa716x_ff: Cancel data transfer in case of a block timeout saa716x_ff: print decimal digits for firmware version. saa716x: include fix for in-kernel build saa716x: support directory structure of linux-3.7+ saa716x: section mismatch fixes saa716x: remove __devinit and friends saa716x: convert fifo_worker tasklet to workqueue saa716x: TS output buffer cleanup saa716x: Fix PHI address space offsets, cleanup register definitions. saa716x: Clean up PHI configuration. saa716x: Reset PHI on init. saa716x: Print EEPROM content on DEBUG verbosity only. saa716x: Fix errors and improve saa716x_set_clk. saa716x_ff: Fix not setting command result length to 0 per default. saa716x: move card specific PHI code to saa716x_ff driver saa716x_ff: use special phi_fifo_write function saa716x_ff: Add write-combining PCI iomem window for PHI1 access. saa716x_ff: implement PHI speedup saa716x: IO memory of upper PHI1 regions is mapped in saa716x_ff driver. saa716x_ff: Optimize access to FIFO. saa716x_ff: Align block data on 32 bytes for firmware 0.5.0 and up saa716x_ff: Do not return on command ready timeout saa716x_ff: Usa faster EMI timings only for FPGA version 1.10 and later Luis Alves (1): saa716x: Add support for tbs 6281 and tbs 6285 cards. Manu Abraham (137): saa716x: Initial framework driver to support SAA7160, SAA7161, SAA7162 chips saa716x: Add missing return, to avoid falling through the error codes saa716x: Updated board definitions saa716x: Add some register definitions saa716x: Add Read/Write macros saa716x: Initial attempt to Boot the core saa716x: Initial attempt to initialize the I2C core saa716x: Setup CGU saa716x: Whitespace cleanup saa716x: Use subsystem Vendor ID saa716x: Small cleanups saa716x: Enable all inputs saa716x: Initial go at MSI setup saa716x: Update I2C register definitions and fields saa716x: Initial go at the I2C implementation saa716x: Remove unused definitions saa716x: Move i2c related stuff to it's own header saa716x: Add some labels saa716x: Rename files saa716x: Fix subdevice ID saa716x: Add more register definitions saa716x: Update/Reorganize register definitions saa716x: Implement internal Boot mode saa716x: Update register definitions saa716x: Still scratching saa716x: Initialize MSI saa716x: Cleanup internal Boot configuration saa716x: Cleanup external Boot configuration saa716x: Initialize CGU and MSI modules saa716x: Enable more debugging saa716x: Check DMA availability saa716x: Small cleanups and fixes saa716x: Fix typo saa716x: Reset internal modules saa716x: Still debugging saa716x: Code simplification saa716x: Terminate PCI ID list saa716x: Rename Rd/Wr operations saa716x: Fix usage of wrong datatypes saa716x: CGU related fixes saa716x: Continue MSI-X implementation saa716x: Add routines to handle clock related events saa716x: Add support for Avermedia HC82 PCIe expresscard saa716x: Disable BAR2 access saa716x: Code cleanup saa716x: Register SAA716x Adapter saa716x: Add initial support for the second adapter saa716x: Initialize adapters on the budget device saa716x: Register only the relevant adapters for a specific device saa716x: Add Avermedia HC82 specific device configuration saa716x: Fix typo saa716x: Register an array of devices saa716x: Add support for the Avermedia H788 device saa716x: Add support for the Azurewave VP-6002 device saa716x: Usea separate frontend_attach for each of the devices saa716x: Use a separate IRQ handler for separate modules saa716x: Try to attach the demodulator saa716x: Fix typo in register definitions saa716x: Updates and Code simplification - Initialize the I2C clock - Disable core reset for hybrid cards saa716x: Check device revision for I2C bus orderring saa716x: Add support for the NXP Atlantis reference design saa716x: Free IRQ before module unload saa716x: Code reorganization saa716x: Add support for the KNC1 Dual S2 device saa716x: Add support for the VP-3071 DVB-T dual device saa716x: Add GPIO control functions saa716x: Use power and reset controls within a sig\ngle loop saa716x: Use a configuration per adapter saa716x: VP-1028: add power, reset configuration saa716x: H788: Add power, reset configuration saa716x: HC82: Add power, reset configuration saa716x: Display Bus status saa716x: Bug: Address needs to be shifted one bit saa716x: Initial go at DMA routines saa716x: Print warning, if MSI module is not supported saa716x: Handle MSI in a generic manner saa716x: Add PHI port definitions saa716x: Initialize PHI bus saa716x: Add GREG routines saa716x: Reorganize CGU related routines saa716x: Do not initialize the CGU twice saa716x: Add more debug info, initialize handler count saa716x: Add/remove I2C MSI vectors saa716x: Add interrupt debugging saa716x: Return error on MSI enable failure saa716x: Initialize FPGI pagetables saa716x: Setup FGPI parameters saa716x: Use a separate module to handle Full fledged cards saa716x: NULL terminate PCI ID list saa716x: Read the mask bits instead saa716x: Reduce a bit of noise in the handler debug mode saa716x: Sleep a little while before enabling interrupts again saa716x: Use individual handlers saa716x: Transmit D is programmed, not S data saa716x: Print return values saa716x: Use adapter ordering saa716x: Disable debugging osd.h: Kickstart the TT S2 6400 Dual HD Premium - OSD update saa716x: Kickstart the TT S2 6400 Dual HD Premium saa716x: Code simplification, Overhaul, ROM dump saa716x: Set the default rate for the NEMO reference design saa716x: Code simplification, Overhauling, I2C related fixes Initial test with the NEMO reference device saa716x: Try to attach the frontends saa716x: Don't cast pointers to 32 bit int saa716x: Partial rework of SPI I/O saa716x: Add video device support saa716x: S2-6400: Try to attach the frontend saa716x: Handle multiple I2C messages saa716x: Fix ROM parser saa716x: Setup default I2C rates saa716x: Fix BUS ordering saa716x: Fix swapped I2C buses saa716x: Print wait time, reduce number of loops saa716x: Fix missing address in single write operation saa716x: make register definitions specific to each of the modules saa716x: Fix register definition typo saa716x: Add function declaration saa716x: Fix FGPI internal clock divider state saa716x: Fix dmabuf allocation saa716x: Cleanup debug prints saa716x: Handle failure correctly saa716x: Handle proper buffer flush saa716x: FGPI DMA handling fixes saa716x: Finally! we have stream capture saa716x: Make the framework buildable saa716x: Fix build issues saa716x: Deinitialize I2C interrupts on exit saa716x: Factorize register/detach routines to common code saa716x: Start DMA engine as and when requested saa716x: Enable timeout for modules having no clock saa716x: Reset the frontend after powerup saa716x: GPIO fix saa716x: Fix powerup/reset saa716x: Use the correct I2C Bus saa716x: Code simplification saa716x: Try to attach frontend on the Nemo reference board saa716x: Do not report non-fatal errors to avoid issues with buggy BIOS's Oliver Endriss (3): saa716x_ff: Rename saa716x_ff.c to saa716x_ff_main.c saa716x_ff: Support remote control receiver saa716x: Use tasklet to transfer data to the demuxer (TT S2-6400) Soeren Moch (94): saa716x: i2c_del_adapter() fix saa716x_ff: init frontends to low-power mode saa716x_ff: Add linux-4.5 support saa716x_ff: Avoid sleeping in fifo_worker saa716x: remove unused saa716x_msi_handler saa716x: pci: Remove asm includes for compatibility with linux-4.6 saa716x: add linux-4.10 support saa716x: Remove broken MSI-X support saa716x: Use %zu printk format for sizeof return values saa716x_budget: Fix build in linux-4.13 saa716x_hybrid: Fix build in linux-4.13 saa716x_ff: Remove autorepeat handling saa716x_ff: Convert to new timer API saa716x: adapt for moved header files media: dvb/audio.h: re-add AUDIO_GET_PTS saa716x: remove kernel version conditionals saa716x: fix include directories saa716x: fix module dependencies saa716x: simplify irq registration saa716x: remove unused multi-vector MSI support saa716x: remove unused i2c irq code saa716x: simplify MSI init saa716x: perform soft reset on device probe saa716x: remove separate msi reset saa716x_ff: move phi reset to probe function saa716x: also soft-reset greg and gpio blocks on device probe saa716x: move demux_worker to saa716x_adap saa716x: remove rom debug code saa716x: remove unused audio input port code saa716x: remove unused spi code saa716x: remove unused audio function prototypes saa716x: remove boot function prototypes from saa716x_priv.h saa716x: remove unused greg code saa716x: remove unused gpio code saa716x: remove unused private config and adapter entries saa716x: remove decoder resets from common code saa716x: move function headers from priv.h to own header files saa716x_hybrid: remove incomplete Avermedia H-788 support saa716x_hybrid: remove incomplete Avermedia HC-82 support saa716x_hybrid: remove incomplete Twinhan VP-6090 DVB-S support saa716x_budget: remove incomplete KNC1 Dual S2 support saa716x_budget: remove incomplete Twinhan VP-6002 support saa716x_budget: remove incomplete Twinhan VP-3071 support saa716x_budget: remove incomplete Twinhan VP-1028 support saa716x_budget: document Technisat Skystar 2 Express HD support saa716x: allow individual configuration of video ports saa716x_ff: cleanup POINTER_LOCATION checkpatch errors saa716x: cleanup SPACING checkpatch errors saa716x: cleanup ASSIGN_IN_IF checkpatch errors saa716x: cleanup COMPLEX_MACRO checkpatch errors saa716x: cleanup OPEN_BRACE and ELSE_AFTER_BRACE checkpatch errors saa716x: cleanup CODE_INDENT and SWITCH_CASE_INDENT_LEVEL checkpatch errors saa716x: cleanup SPACE_BEFORE_TAB checkpatch warnings saa716x: cleanup Kconfig saa716x_ff: constify structs saa716x_budget: constify config structs saa716x_hybrid: constify config structs saa716x: convert printk to pci_info/err/dbg saa716x_ff: convert printk to pci_info/err/dbg saa716x_budget: convert printk to pci_err/dbg saa716x_hybrid: convert printk to pci_err/dbg saa716x: remove dprintk macro saa716x_ff: remove interrupt counting debug code saa716x: cleanup RETURN_VOID checkpatch warnings saa716x: remove unused adap_lock saa716x: #include cleanup saa716x: use kcalloc for array memory allocation saa716x_ff: cleanup CONSTANT_COMPARISON checkpatch warning saa716x_hybrid: cleanup UNNECESSARY_ELSE checkpatch warning saa716x: cleanup dma buffer sg list allocation saa716x_ff: use common device struct saa716x_ff: cleanup LINE_SPACING checkpatch warning saa716x: cleanup BRACES checkpatch warnings saa716x_budget: cleanup BRACES checkpatch warnings saa716x_hybrid: cleanup BRACES checkpatch warnings saa716x_ff: cleanup BRACES checkpatch warnings saa716x_ff: add SPDX license identifier saa716x_budget: add SPDX license identifier saa716x_hybrid: add SPDX license identifier saa716x: add SPDX license identifier saa716x_ff: cleanup comment style and length saa716x_budget: cleanup comment style saa716x: cleanup comment style and length saa716x_budget: cleanup LONG_LINE checkpatch warnings saa716x_hybrid: cleanup LONG_LINE checkpatch warnings saa716x_ff: cleanup LONG_LINE checkpatch warnings saa716x: cleanup LONG_LINE checkpatch warnings saa716x: do not report recoverable i2c transfer errors saa716x_ff: simplify PHI code saa716x_budget/ff/hybrid: autoselect PCI interrupt mode saa716x_ff: autoselect phi_mode saa716x_budget: simplify TBS frontend attach code saa716x: hook up driver in drivers/media/pci saa716x: Add MAINTAINERS entry Tobias Klausmann (1): saa716x: add frontend selects to kconfig Tycho Lürsen (1): saa716x: constify pci_device_id. Uwe Scheffler (1): saa716x_ff : reduce ir repeat delay and period Documentation/media/uapi/dvb/audio-get-pts.rst | 65 + .../media/uapi/dvb/audio_function_calls.rst | 1 + MAINTAINERS | 6 + drivers/media/pci/Kconfig | 1 + drivers/media/pci/Makefile | 1 + drivers/media/pci/saa716x/Kconfig | 55 + drivers/media/pci/saa716x/Makefile | 22 + drivers/media/pci/saa716x/saa716x_adap.c | 327 ++++ drivers/media/pci/saa716x/saa716x_adap.h | 11 + drivers/media/pci/saa716x/saa716x_aip_reg.h | 64 + drivers/media/pci/saa716x/saa716x_boot.c | 95 ++ drivers/media/pci/saa716x/saa716x_boot.h | 13 + drivers/media/pci/saa716x/saa716x_budget.c | 503 ++++++ drivers/media/pci/saa716x/saa716x_budget.h | 14 + drivers/media/pci/saa716x/saa716x_cgu.c | 542 +++++++ drivers/media/pci/saa716x/saa716x_cgu.h | 65 + drivers/media/pci/saa716x/saa716x_cgu_reg.h | 180 +++ drivers/media/pci/saa716x/saa716x_dcs_reg.h | 58 + drivers/media/pci/saa716x/saa716x_dma.c | 297 ++++ drivers/media/pci/saa716x/saa716x_dma.h | 65 + drivers/media/pci/saa716x/saa716x_dma_reg.h | 204 +++ drivers/media/pci/saa716x/saa716x_ff.h | 186 +++ drivers/media/pci/saa716x/saa716x_ff_cmd.c | 450 ++++++ drivers/media/pci/saa716x/saa716x_ff_cmd.h | 18 + drivers/media/pci/saa716x/saa716x_ff_ir.c | 194 +++ drivers/media/pci/saa716x/saa716x_ff_ir.h | 27 + drivers/media/pci/saa716x/saa716x_ff_main.c | 1598 ++++++++++++++++++++ drivers/media/pci/saa716x/saa716x_ff_phi.c | 103 ++ drivers/media/pci/saa716x/saa716x_ff_phi.h | 15 + drivers/media/pci/saa716x/saa716x_fgpi.c | 397 +++++ drivers/media/pci/saa716x/saa716x_fgpi.h | 94 ++ drivers/media/pci/saa716x/saa716x_fgpi_reg.h | 76 + drivers/media/pci/saa716x/saa716x_gpio.c | 77 + drivers/media/pci/saa716x/saa716x_gpio.h | 22 + drivers/media/pci/saa716x/saa716x_gpio_reg.h | 49 + drivers/media/pci/saa716x/saa716x_greg_reg.h | 96 ++ drivers/media/pci/saa716x/saa716x_hybrid.c | 471 ++++++ drivers/media/pci/saa716x/saa716x_hybrid.h | 12 + drivers/media/pci/saa716x/saa716x_i2c.c | 578 +++++++ drivers/media/pci/saa716x/saa716x_i2c.h | 52 + drivers/media/pci/saa716x/saa716x_i2c_reg.h | 147 ++ drivers/media/pci/saa716x/saa716x_mod.h | 27 + drivers/media/pci/saa716x/saa716x_msi_reg.h | 145 ++ drivers/media/pci/saa716x/saa716x_pci.c | 167 ++ drivers/media/pci/saa716x/saa716x_pci.h | 9 + drivers/media/pci/saa716x/saa716x_phi_reg.h | 96 ++ drivers/media/pci/saa716x/saa716x_priv.h | 105 ++ drivers/media/pci/saa716x/saa716x_spi_reg.h | 29 + drivers/media/pci/saa716x/saa716x_vip.c | 396 +++++ drivers/media/pci/saa716x/saa716x_vip.h | 60 + drivers/media/pci/saa716x/saa716x_vip_reg.h | 143 ++ include/uapi/linux/dvb/audio.h | 13 + include/uapi/linux/dvb/osd.h | 16 + 53 files changed, 8457 insertions(+) create mode 100644 Documentation/media/uapi/dvb/audio-get-pts.rst create mode 100644 drivers/media/pci/saa716x/Kconfig create mode 100644 drivers/media/pci/saa716x/Makefile create mode 100644 drivers/media/pci/saa716x/saa716x_adap.c create mode 100644 drivers/media/pci/saa716x/saa716x_adap.h create mode 100644 drivers/media/pci/saa716x/saa716x_aip_reg.h create mode 100644 drivers/media/pci/saa716x/saa716x_boot.c create mode 100644 drivers/media/pci/saa716x/saa716x_boot.h create mode 100644 drivers/media/pci/saa716x/saa716x_budget.c create mode 100644 drivers/media/pci/saa716x/saa716x_budget.h create mode 100644 drivers/media/pci/saa716x/saa716x_cgu.c create mode 100644 drivers/media/pci/saa716x/saa716x_cgu.h create mode 100644 drivers/media/pci/saa716x/saa716x_cgu_reg.h create mode 100644 drivers/media/pci/saa716x/saa716x_dcs_reg.h create mode 100644 drivers/media/pci/saa716x/saa716x_dma.c create mode 100644 drivers/media/pci/saa716x/saa716x_dma.h create mode 100644 drivers/media/pci/saa716x/saa716x_dma_reg.h create mode 100644 drivers/media/pci/saa716x/saa716x_ff.h create mode 100644 drivers/media/pci/saa716x/saa716x_ff_cmd.c create mode 100644 drivers/media/pci/saa716x/saa716x_ff_cmd.h create mode 100644 drivers/media/pci/saa716x/saa716x_ff_ir.c create mode 100644 drivers/media/pci/saa716x/saa716x_ff_ir.h create mode 100644 drivers/media/pci/saa716x/saa716x_ff_main.c create mode 100644 drivers/media/pci/saa716x/saa716x_ff_phi.c create mode 100644 drivers/media/pci/saa716x/saa716x_ff_phi.h create mode 100644 drivers/media/pci/saa716x/saa716x_fgpi.c create mode 100644 drivers/media/pci/saa716x/saa716x_fgpi.h create mode 100644 drivers/media/pci/saa716x/saa716x_fgpi_reg.h create mode 100644 drivers/media/pci/saa716x/saa716x_gpio.c create mode 100644 drivers/media/pci/saa716x/saa716x_gpio.h create mode 100644 drivers/media/pci/saa716x/saa716x_gpio_reg.h create mode 100644 drivers/media/pci/saa716x/saa716x_greg_reg.h create mode 100644 drivers/media/pci/saa716x/saa716x_hybrid.c create mode 100644 drivers/media/pci/saa716x/saa716x_hybrid.h create mode 100644 drivers/media/pci/saa716x/saa716x_i2c.c create mode 100644 drivers/media/pci/saa716x/saa716x_i2c.h create mode 100644 drivers/media/pci/saa716x/saa716x_i2c_reg.h create mode 100644 drivers/media/pci/saa716x/saa716x_mod.h create mode 100644 drivers/media/pci/saa716x/saa716x_msi_reg.h create mode 100644 drivers/media/pci/saa716x/saa716x_pci.c create mode 100644 drivers/media/pci/saa716x/saa716x_pci.h create mode 100644 drivers/media/pci/saa716x/saa716x_phi_reg.h create mode 100644 drivers/media/pci/saa716x/saa716x_priv.h create mode 100644 drivers/media/pci/saa716x/saa716x_spi_reg.h create mode 100644 drivers/media/pci/saa716x/saa716x_vip.c create mode 100644 drivers/media/pci/saa716x/saa716x_vip.h create mode 100644 drivers/media/pci/saa716x/saa716x_vip_reg.h