blob: c43a6724ab150cc5bfd662a1880ead4a376ef4e9 [file] [log] [blame]
/*
* H/W layer of HECI provider device (ISH)
*
* Copyright (c) 2014, Intel Corporation.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#ifndef _HECI_HW_ISH_H_
#define _HECI_HW_ISH_H_
#include <linux/pci.h>
#include "hw.h"
#include "hw-ish-regs.h"
#include "heci_dev.h"
struct IPC_MNG_PAYLOAD_TYPE {
u16 reset_id;
u16 reserved;
};
struct heci_ish_hw {
void __iomem *mem_addr;
/*
* hw states of host and fw(ME)
*/
u32 host_hw_state;
u32 ish_hw_state;
u32 doorbell_val;
};
#define to_ish_hw(dev) (struct heci_ish_hw *)((dev)->hw)
struct heci_device *heci_ish_dev_init(struct pci_dev *pdev);
irqreturn_t heci_ish_irq_quick_handler(int irq, void *dev_id);
irqreturn_t heci_ish_irq_thread_handler(int irq, void *dev_id);
void heci_ish_clr_host_rdy(struct heci_device *dev);
void heci_ish_set_host_rdy(struct heci_device *dev);
bool heci_ish_hw_is_ready(struct heci_device *dev);
#endif /* _HECI_HW_ISH_H_ */