In addition to the other 7xxx INTF interrupt regions, SM8350 has additional INTF regions at 0x0ae37000, 0x0ae38000 and 0x0ae39000, define these. The 7xxx naming scheme of the bits are kept for consistency. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Reviewed-by: Robert Foss <robert.foss@linaro.org> Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Link: https://lore.kernel.org/r/20211123154050.40984-1-bjorn.andersson@linaro.org Signed-off-by: Rob Clark <robdclark@chromium.org>
75 lines
1.9 KiB
C
75 lines
1.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _DPU_HW_INTERRUPTS_H
|
|
#define _DPU_HW_INTERRUPTS_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
#include "dpu_hwio.h"
|
|
#include "dpu_hw_catalog.h"
|
|
#include "dpu_hw_util.h"
|
|
#include "dpu_hw_mdss.h"
|
|
|
|
/* When making changes be sure to sync with dpu_intr_set */
|
|
enum dpu_hw_intr_reg {
|
|
MDP_SSPP_TOP0_INTR,
|
|
MDP_SSPP_TOP0_INTR2,
|
|
MDP_SSPP_TOP0_HIST_INTR,
|
|
MDP_INTF0_INTR,
|
|
MDP_INTF1_INTR,
|
|
MDP_INTF2_INTR,
|
|
MDP_INTF3_INTR,
|
|
MDP_INTF4_INTR,
|
|
MDP_AD4_0_INTR,
|
|
MDP_AD4_1_INTR,
|
|
MDP_INTF0_7xxx_INTR,
|
|
MDP_INTF1_7xxx_INTR,
|
|
MDP_INTF2_7xxx_INTR,
|
|
MDP_INTF3_7xxx_INTR,
|
|
MDP_INTF4_7xxx_INTR,
|
|
MDP_INTF5_7xxx_INTR,
|
|
MDP_INTR_MAX,
|
|
};
|
|
|
|
#define DPU_IRQ_IDX(reg_idx, offset) (reg_idx * 32 + offset)
|
|
|
|
/**
|
|
* struct dpu_hw_intr: hw interrupts handling data structure
|
|
* @hw: virtual address mapping
|
|
* @ops: function pointer mapping for IRQ handling
|
|
* @cache_irq_mask: array of IRQ enable masks reg storage created during init
|
|
* @save_irq_status: array of IRQ status reg storage created during init
|
|
* @total_irqs: total number of irq_idx mapped in the hw_interrupts
|
|
* @irq_lock: spinlock for accessing IRQ resources
|
|
* @irq_cb_tbl: array of IRQ callbacks lists
|
|
* @irq_counts: array of IRQ counts
|
|
*/
|
|
struct dpu_hw_intr {
|
|
struct dpu_hw_blk_reg_map hw;
|
|
u32 *cache_irq_mask;
|
|
u32 *save_irq_status;
|
|
u32 total_irqs;
|
|
spinlock_t irq_lock;
|
|
unsigned long irq_mask;
|
|
|
|
struct list_head *irq_cb_tbl;
|
|
atomic_t *irq_counts;
|
|
};
|
|
|
|
/**
|
|
* dpu_hw_intr_init(): Initializes the interrupts hw object
|
|
* @addr: mapped register io address of MDP
|
|
* @m : pointer to mdss catalog data
|
|
*/
|
|
struct dpu_hw_intr *dpu_hw_intr_init(void __iomem *addr,
|
|
struct dpu_mdss_cfg *m);
|
|
|
|
/**
|
|
* dpu_hw_intr_destroy(): Cleanup interrutps hw object
|
|
* @intr: pointer to interrupts hw object
|
|
*/
|
|
void dpu_hw_intr_destroy(struct dpu_hw_intr *intr);
|
|
#endif
|