Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions drivers/media/pci/intel/ipu7/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,6 @@ intel-ipu7-isys-objs += ipu7-isys.o \
ipu7-isys-queue.o \
ipu7-isys-subdev.o

ifdef CONFIG_VIDEO_INTEL_IPU7_MGC
intel-ipu7-isys-objs += ipu7-isys-tpg.o
endif
obj-$(CONFIG_VIDEO_INTEL_IPU7) += intel-ipu7-isys.o

obj-$(CONFIG_VIDEO_INTEL_IPU7) += psys/
Expand Down
16 changes: 6 additions & 10 deletions drivers/media/pci/intel/ipu7/abi/ipu7_fw_boot_abi.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,18 +113,14 @@ struct ia_gofo_secondary_boot_config {
#define IA_GOFO_DOUBLE_EXCEPTION_ERR 0xdead0806U
#define IA_GOFO_BIST_DMEM_FAULT_DETECTION_ERR 0xdead1000U
#define IA_GOFO_BIST_DATA_INTEGRITY_FAILURE 0xdead1010U
#define IA_GOFO_BOOT_STATE_UNINIT 0x57a7e000U
#define IA_GOFO_BOOT_STATE_STARTING_0 0x57a7d000U
#define IA_GOFO_BOOT_STATE_CACHE_INIT_DONE 0x57a7d010U
#define IA_GOFO_BOOT_STATE_MEM_INIT_DONE 0x57a7d020U
#define IA_GOFO_BOOT_STATE_STACK_INIT_DONE 0x57a7d030U

enum ia_gofo_boot_state {
IA_GOFO_FW_BOOT_STATE_SECONDARY_BOOT_CONFIG_READY = 0x57a7b000U,
IA_GOFO_FW_BOOT_STATE_UNINIT = IA_GOFO_BOOT_STATE_UNINIT,
IA_GOFO_FW_BOOT_STATE_STARTING_0 = IA_GOFO_BOOT_STATE_STARTING_0,
IA_GOFO_FW_BOOT_STATE_CACHE_INIT_DONE = IA_GOFO_BOOT_STATE_CACHE_INIT_DONE,
IA_GOFO_FW_BOOT_STATE_MEM_INIT_DONE = IA_GOFO_BOOT_STATE_MEM_INIT_DONE,
IA_GOFO_FW_BOOT_STATE_STACK_INIT_DONE = IA_GOFO_BOOT_STATE_STACK_INIT_DONE,
IA_GOFO_FW_BOOT_STATE_UNINIT = 0x57a7e000U,
IA_GOFO_FW_BOOT_STATE_STARTING_0 = 0x57a7d000U,
IA_GOFO_FW_BOOT_STATE_CACHE_INIT_DONE = 0x57a7d010U,
IA_GOFO_FW_BOOT_STATE_MEM_INIT_DONE = 0x57a7d020U,
IA_GOFO_FW_BOOT_STATE_STACK_INIT_DONE = 0x57a7d030U,
IA_GOFO_FW_BOOT_STATE_EARLY_BOOT_DONE = 0x57a7d100U,
IA_GOFO_FW_BOOT_STATE_BOOT_CONFIG_START = 0x57a7d200U,
IA_GOFO_FW_BOOT_STATE_QUEUE_INIT_DONE = 0x57a7d300U,
Expand Down
82 changes: 59 additions & 23 deletions drivers/media/pci/intel/ipu7/abi/ipu7_fw_isys_abi.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,15 @@ enum ipu7_insys_frame_format_type {
IPU_INSYS_FRAME_FORMAT_ARGB888 = 31,
IPU_INSYS_FRAME_FORMAT_BGRA888 = 32,
IPU_INSYS_FRAME_FORMAT_ABGR888 = 33,
IPU_INSYS_FRAME_FORMAT_RGB888 = 34,
IPU_INSYS_FRAME_FORMAT_YUV420_LEGACY = 35,
IPU_INSYS_FRAME_FORMAT_RAW6 = 36,
IPU_INSYS_FRAME_FORMAT_RAW7 = 37,
IPU_INSYS_FRAME_FORMAT_RGB444 = 38,
IPU_INSYS_FRAME_FORMAT_RGB666 = 39,
IPU_INSYS_FRAME_FORMAT_RAW20 = 40,
IPU_INSYS_FRAME_FORMAT_P010 = 41,
IPU_INSYS_FRAME_FORMAT_RGB555 = 42,
N_IPU_INSYS_FRAME_FORMAT
};

Expand Down Expand Up @@ -251,13 +260,16 @@ struct ipu7_insys_output_link {
u8 pad[2];
};

struct ipu7_insys_output_cropping_v1 {
u16 line_top;
u16 line_bottom;
};

struct ipu7_insys_output_cropping {
u16 line_top;
u16 line_bottom;
#ifdef IPU8_INSYS_NEW_ABI
u16 column_left;
u16 column_right;
#endif
};

struct ipu7_insys_output_dpcm {
Expand All @@ -267,7 +279,6 @@ struct ipu7_insys_output_dpcm {
u8 pad;
};

#ifdef IPU8_INSYS_NEW_ABI
enum ipu_insys_cfa_dim {
IPU_INSYS_CFA_DIM_2x2 = 0,
IPU_INSYS_CFA_DIM_4x4 = 1,
Expand All @@ -294,28 +305,31 @@ struct ipu7_insys_capture_output_pin_cfg {
ia_gofo_addr_t upipe_capture_cfg;
};

#endif
struct ipu7_insys_output_pin_v1 {
struct ipu7_insys_output_link link;
struct ipu7_insys_output_cropping_v1 crop;
struct ipu7_insys_output_dpcm dpcm;
u32 stride;
u16 ft;
u8 send_irq;
u8 input_pin_id;
u8 early_ack_en;
u8 pad[3];
};

struct ipu7_insys_output_pin {
struct ipu7_insys_output_link link;
struct ipu7_insys_output_cropping crop;
struct ipu7_insys_output_dpcm dpcm;
#ifdef IPU8_INSYS_NEW_ABI
struct ipu7_insys_upipe_output_pin upipe_pin_cfg;
#endif
u32 stride;
u16 ft;
#ifdef IPU8_INSYS_NEW_ABI
u8 upipe_enable;
#endif
u8 send_irq;
u8 input_pin_id;
u8 early_ack_en;
#ifdef IPU8_INSYS_NEW_ABI
u8 cfa_dim;
u8 binning_factor;
#else
u8 pad[3];
#endif
};

struct ipu7_insys_input_pin {
Expand All @@ -328,6 +342,17 @@ struct ipu7_insys_input_pin {
u8 pad[2];
};

struct ipu7_insys_stream_cfg_v1 {
struct ipu7_insys_input_pin input_pins[4];
struct ipu7_insys_output_pin_v1 output_pins[4];
u16 stream_msg_map;
u8 port_id;
u8 vc;
u8 nof_input_pins;
u8 nof_output_pins;
u8 pad[2];
};

struct ipu7_insys_stream_cfg {
struct ipu7_insys_input_pin input_pins[4];
struct ipu7_insys_output_pin output_pins[4];
Expand All @@ -339,35 +364,48 @@ struct ipu7_insys_stream_cfg {
u8 pad[2];
};

struct ipu7_insys_buffset_v1 {
struct ipu7_insys_capture_output_pin_payload output_pins[4];
u8 capture_msg_map;
u8 frame_id;
u8 skip_frame;
u8 pad[5];
};

struct ipu7_insys_buffset {
#ifdef IPU8_INSYS_NEW_ABI
struct ipu7_insys_capture_output_pin_cfg output_pins[4];
#else
struct ipu7_insys_capture_output_pin_payload output_pins[4];
#endif
u8 capture_msg_map;
u8 frame_id;
u8 skip_frame;
u8 pad[5];
};

struct ipu7_insys_resp_v1 {
u64 buf_id;
struct ipu7_insys_capture_output_pin_payload pin;
struct ia_gofo_msg_err error_info;
u32 timestamp[2];
u8 type;
u8 msg_link_streaming_mode;
u8 stream_id;
u8 pin_id;
u8 frame_id;
u8 skip_frame;
u16 mipi_fn;
};

struct ipu7_insys_resp {
u64 buf_id;
struct ipu7_insys_capture_output_pin_payload pin;
struct ia_gofo_msg_err error_info;
u32 timestamp[2];
#ifdef IPU8_INSYS_NEW_ABI
u16 mipi_fn;
#endif
u8 type;
u8 msg_link_streaming_mode;
u8 stream_id;
u8 pin_id;
u8 frame_id;
u8 skip_frame;
#ifndef IPU8_INSYS_NEW_ABI
u16 mipi_fn;
#endif
};

struct ipu7_insys_resp_queue_token {
Expand Down Expand Up @@ -424,14 +462,12 @@ enum insys_msg_err_stream {
INSYS_MSG_ERR_STREAM_INSUFFICIENT_RESOURCES_OUTPUT = 36,
INSYS_MSG_ERR_STREAM_WIDTH_OUTPUT_SIZE = 37,
INSYS_MSG_ERR_STREAM_CLOSED = 38,
#ifdef IPU8_INSYS_NEW_ABI
INSYS_MSG_ERR_STREAM_BINNING_FACTOR_NOT_SUPPORTED = 39,
INSYS_MSG_ERR_STREAM_CFA_DIM_NOT_SUPPORTED = 40,
INSYS_MSG_ERR_STREAM_INVALID_UPIPE_ENABLE = 41,
INSYS_MSG_ERR_STREAM_INVALID_UPIPE_UOB_SINGLE = 42,
INSYS_MSG_ERR_STREAM_INVALID_UPIPE_UOB_SHARED = 43,
INSYS_MSG_ERR_STREAM_INVALID_UPIPE_OPAQUE_PIN_CFG = 44,
#endif
INSYS_MSG_ERR_STREAM_N
};

Expand Down
13 changes: 10 additions & 3 deletions drivers/media/pci/intel/ipu7/ipu7-dma.c
Original file line number Diff line number Diff line change
Expand Up @@ -265,12 +265,16 @@ void ipu7_dma_free(struct ipu7_bus_device *sys, size_t size, void *vaddr,
{
struct ipu7_mmu *mmu = sys->mmu;
struct pci_dev *pdev = sys->isp->pdev;
struct iova *iova = find_iova(&mmu->dmap->iovad, PHYS_PFN(dma_handle));
struct iova *iova;
dma_addr_t pci_dma_addr, ipu7_iova;
struct vm_info *info;
struct page **pages;
unsigned int i;

if (!mmu || !mmu->dmap)
return;

iova = find_iova(&mmu->dmap->iovad, PHYS_PFN(dma_handle));
if (WARN_ON(!iova))
return;

Expand Down Expand Up @@ -356,15 +360,18 @@ void ipu7_dma_unmap_sg(struct ipu7_bus_device *sys, struct scatterlist *sglist,
{
struct device *dev = &sys->auxdev.dev;
struct ipu7_mmu *mmu = sys->mmu;
struct iova *iova = find_iova(&mmu->dmap->iovad,
PHYS_PFN(sg_dma_address(sglist)));
struct iova *iova;
struct scatterlist *sg;
dma_addr_t pci_dma_addr;
unsigned int i;

if (!nents)
return;

if (!mmu || !mmu->dmap)
return;

iova = find_iova(&mmu->dmap->iovad, PHYS_PFN(sg_dma_address(sglist)));
if (WARN_ON(!iova))
return;

Expand Down
Loading
Loading