| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * Copyright (C) 2021-2023 Digiteq Automotive |
| * author: Martin Tuma <martin.tuma@digiteqautomotive.com> |
| */ |
| |
| #ifndef __MGB4_CORE_H__ |
| #define __MGB4_CORE_H__ |
| |
| #include <linux/spi/flash.h> |
| #include <linux/mtd/partitions.h> |
| #include <linux/mutex.h> |
| #include <linux/dmaengine.h> |
| #include "mgb4_regs.h" |
| |
| #define MGB4_VIN_DEVICES 2 |
| #define MGB4_VOUT_DEVICES 2 |
| |
| #define MGB4_MGB4_BAR_ID 0 |
| #define MGB4_XDMA_BAR_ID 1 |
| |
| #define MGB4_IS_GMSL(mgbdev) \ |
| ((mgbdev)->module_version >> 4 == 2) |
| #define MGB4_IS_FPDL3(mgbdev) \ |
| ((mgbdev)->module_version >> 4 == 1) |
| |
| struct mgb4_dma_channel { |
| struct dma_chan *chan; |
| struct completion req_compl; |
| }; |
| |
| struct mgb4_dev { |
| struct pci_dev *pdev; |
| struct platform_device *xdev; |
| struct mgb4_vin_dev *vin[MGB4_VIN_DEVICES]; |
| struct mgb4_vout_dev *vout[MGB4_VOUT_DEVICES]; |
| |
| struct mgb4_dma_channel c2h_chan[MGB4_VIN_DEVICES]; |
| struct mgb4_dma_channel h2c_chan[MGB4_VOUT_DEVICES]; |
| struct dma_slave_map slave_map[MGB4_VIN_DEVICES + MGB4_VOUT_DEVICES]; |
| |
| struct mgb4_regs video; |
| struct mgb4_regs cmt; |
| |
| struct clk_hw *i2c_clk; |
| struct clk_lookup *i2c_cl; |
| struct platform_device *i2c_pdev; |
| struct i2c_adapter *i2c_adap; |
| struct mutex i2c_lock; /* I2C bus access lock */ |
| |
| struct platform_device *spi_pdev; |
| struct flash_platform_data flash_data; |
| struct mtd_partition partitions[2]; |
| char flash_name[16]; |
| char fw_part_name[16]; |
| char data_part_name[16]; |
| char channel_names[MGB4_VIN_DEVICES + MGB4_VOUT_DEVICES][16]; |
| |
| struct iio_dev *indio_dev; |
| #if IS_REACHABLE(CONFIG_HWMON) |
| struct device *hwmon_dev; |
| #endif |
| |
| unsigned long io_reconfig; |
| |
| u8 module_version; |
| u32 serial_number; |
| |
| #ifdef CONFIG_DEBUG_FS |
| struct dentry *debugfs; |
| #endif |
| }; |
| |
| #endif |