File Index
Files and directories
Sign in
FILE

ipu6-buttress.h

File preview with syntax highlighting.

linux-6.19.14/drivers/media/pci/intel/ipu6/ipu6-buttress.h C
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/* Copyright (C) 2013--2024 Intel Corporation */
 3
 4#ifndef IPU6_BUTTRESS_H
 5#define IPU6_BUTTRESS_H
 6
 7#include <linux/completion.h>
 8#include <linux/irqreturn.h>
 9#include <linux/list.h>
10#include <linux/mutex.h>
11
12struct device;
13struct firmware;
14struct ipu6_device;
15struct ipu6_bus_device;
16
17#define BUTTRESS_PS_FREQ_STEP		25U
18#define BUTTRESS_MIN_FORCE_PS_FREQ	(BUTTRESS_PS_FREQ_STEP * 8)
19#define BUTTRESS_MAX_FORCE_PS_FREQ	(BUTTRESS_PS_FREQ_STEP * 32)
20
21#define BUTTRESS_IS_FREQ_STEP		25U
22#define BUTTRESS_MIN_FORCE_IS_FREQ	(BUTTRESS_IS_FREQ_STEP * 8)
23#define BUTTRESS_MAX_FORCE_IS_FREQ	(BUTTRESS_IS_FREQ_STEP * 22)
24
25struct ipu6_buttress_ctrl {
26	u32 freq_ctl, pwr_sts_shift, pwr_sts_mask, pwr_sts_on, pwr_sts_off;
27	unsigned int ratio;
28	unsigned int qos_floor;
29};
30
31struct ipu6_buttress_ipc {
32	struct completion send_complete;
33	struct completion recv_complete;
34	u32 nack;
35	u32 nack_mask;
36	u32 recv_data;
37	u32 csr_out;
38	u32 csr_in;
39	u32 db0_in;
40	u32 db0_out;
41	u32 data0_out;
42	u32 data0_in;
43};
44
45struct ipu6_buttress {
46	struct mutex power_mutex, auth_mutex, cons_mutex, ipc_mutex;
47	struct ipu6_buttress_ipc cse;
48	struct list_head constraints;
49	u32 wdt_cached_value;
50	bool force_suspend;
51	u32 ref_clk;
52};
53
54struct ipu6_ipc_buttress_bulk_msg {
55	u32 cmd;
56	u32 expected_resp;
57	bool require_resp;
58	u8 cmd_size;
59};
60
61int ipu6_buttress_ipc_reset(struct ipu6_device *isp,
62			    struct ipu6_buttress_ipc *ipc);
63int ipu6_buttress_map_fw_image(struct ipu6_bus_device *sys,
64			       const struct firmware *fw,
65			       struct sg_table *sgt);
66void ipu6_buttress_unmap_fw_image(struct ipu6_bus_device *sys,
67				  struct sg_table *sgt);
68int ipu6_buttress_power(struct device *dev,
69			const struct ipu6_buttress_ctrl *ctrl, bool on);
70bool ipu6_buttress_get_secure_mode(struct ipu6_device *isp);
71int ipu6_buttress_authenticate(struct ipu6_device *isp);
72int ipu6_buttress_reset_authentication(struct ipu6_device *isp);
73bool ipu6_buttress_auth_done(struct ipu6_device *isp);
74int ipu6_buttress_start_tsc_sync(struct ipu6_device *isp);
75void ipu6_buttress_tsc_read(struct ipu6_device *isp, u64 *val);
76u64 ipu6_buttress_tsc_ticks_to_ns(u64 ticks, const struct ipu6_device *isp);
77
78irqreturn_t ipu6_buttress_isr(int irq, void *isp_ptr);
79irqreturn_t ipu6_buttress_isr_threaded(int irq, void *isp_ptr);
80int ipu6_buttress_init(struct ipu6_device *isp);
81void ipu6_buttress_exit(struct ipu6_device *isp);
82void ipu6_buttress_csi_port_config(struct ipu6_device *isp,
83				   u32 legacy, u32 combo);
84void ipu6_buttress_restore(struct ipu6_device *isp);
85#endif /* IPU6_BUTTRESS_H */
~/ Read-only file preview.