summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c936c86)
raw | patch | inline | side by side (parent: c936c86)
author | Wendy Liang <jliang@xilinx.com> | |
Wed, 25 Jan 2017 22:51:41 +0000 (14:51 -0800) | ||
committer | Wendy Liang <jliang@xilinx.com> | |
Fri, 3 Feb 2017 21:41:24 +0000 (13:41 -0800) |
Update enable_interrupt() for all the drivers to use
new hil proc enable_interrupt API.
Signed-off-by: Wendy Liang <jliang@xilinx.com>
new hil proc enable_interrupt API.
Signed-off-by: Wendy Liang <jliang@xilinx.com>
index 79157f1ea1efad044c7c1bfec18c6b246395fc5a..d54412fdb44f5f7109e051f8929702b743a1a970 100644 (file)
/*--------------------------- Declare Functions ------------------------ */
static int _ipi_handler(int vect_id, void *data);
-static int _enable_interrupt(struct proc_vring *vring_hw);
+static int _enable_interrupt(struct proc_intr *intr);
static void _notify(struct hil_proc *proc, struct proc_intr *intr_info);
static int _boot_cpu(struct hil_proc *proc, unsigned int load_addr);
static void _shutdown_cpu(struct hil_proc *proc);
static int _ipi_handler(int vect_id, void *data)
{
- (void) vect_id;
- (void) data;
char dummy_buf[32];
- struct proc_vring *vring_hw = (struct proc_vring *)(data);
- struct vring_ipi_info *ipi =
- (struct vring_ipi_info *)(vring_hw->intr_info.data);
+ struct proc_intr *intr = data;
+ struct vring_ipi_info *ipi = intr->data;
+
+ (void) vect_id;
+
read(vect_id, dummy_buf, sizeof(dummy_buf));
atomic_flag_clear(&ipi->sync);
return 0;
}
-static int _enable_interrupt(struct proc_vring *vring_hw)
+static int _enable_interrupt(struct proc_intr *intr)
{
- struct vring_ipi_info *ipi = vring_hw->intr_info.data;
+ struct vring_ipi_info *ipi = intr->data;
ipi->fd = event_open(ipi->path);
if (ipi->fd < 0) {
return -1;
}
- vring_hw->intr_info.vect_id = ipi->fd;
+ intr->vect_id = ipi->fd;
/* Register ISR */
metal_irq_register(ipi->fd, _ipi_handler,
- NULL, vring_hw);
+ NULL, intr);
return 0;
}
diff --git a/lib/remoteproc/drivers/zynq_remoteproc_a9.c b/lib/remoteproc/drivers/zynq_remoteproc_a9.c
index 06a07791ce3b31e5dd34d9364f80c8b539763f74..7a873d882748c5d682e0dcdca6e9fb599cfb2b1a 100644 (file)
#define _rproc_wait() asm volatile("wfi")
/*--------------------------- Declare Functions ------------------------ */
-static int _enable_interrupt(struct proc_vring *vring_hw);
+static int _enable_interrupt(struct proc_intr *intr);
static void _notify(struct hil_proc *proc, struct proc_intr *intr_info);
static int _boot_cpu(struct hil_proc *proc, unsigned int load_addr);
static void _shutdown_cpu(struct hil_proc *proc);
int _ipi_handler(int vect_id, void *data)
{
+ struct proc_intr *intr_info = data;
+
(void) vect_id;
- struct proc_vring *vring_hw = (struct proc_vring *)(data);
- struct proc_intr *intr_info;
- intr_info = &(vring_hw->intr_info);
atomic_flag_clear((atomic_uint *)&(intr_info->data));
//ipi_counter++;
return 0;
}
-static int _enable_interrupt(struct proc_vring *vring_hw)
+static int _enable_interrupt(struct proc_intr *intr)
{
//enableirq_counter++;
/* Register ISR */
- metal_irq_register(vring_hw->intr_info.vect_id, _ipi_handler,
- vring_hw->intr_info.dev, vring_hw);
+ metal_irq_register(intr->vect_id, _ipi_handler,
+ intr->dev, intr);
/* Enable the interrupts */
- metal_irq_enable(vring_hw->intr_info.vect_id);
+ metal_irq_enable(intr->vect_id);
return 0;
}
diff --git a/lib/remoteproc/drivers/zynqmp_remoteproc_a53.c b/lib/remoteproc/drivers/zynqmp_remoteproc_a53.c
index 52823d69013c0077ef12b2bc4b4551af04bea205..6aaf744f6ffad0e1294bd9b56804d5886ff6daed 100644 (file)
};
/*--------------------------- Declare Functions ------------------------ */
-static int _enable_interrupt(struct proc_vring *vring_hw);
+static int _enable_interrupt(struct proc_intr *intr);
static void _notify(struct hil_proc *proc, struct proc_intr *intr_info);
static int _boot_cpu(struct hil_proc *proc, unsigned int load_addr);
static void _shutdown_cpu(struct hil_proc *proc);
int _ipi_handler(int vect_id, void *data)
{
- (void) vect_id;
- struct proc_vring *vring_hw = (struct proc_vring *)(data);
- struct ipi_info *ipi =
- (struct ipi_info *)(vring_hw->intr_info.data);
+ struct proc_intr *intr = data;
+ struct ipi_info *ipi = intr->data;
struct metal_io_region *io = ipi->io;
unsigned int ipi_intr_status =
(unsigned int)metal_io_read32(io, IPI_ISR_OFFSET);
+
+ (void) vect_id;
+
if (ipi_intr_status & ipi->ipi_chn_mask) {
atomic_flag_clear(&ipi->sync);
metal_io_write32(io, IPI_ISR_OFFSET,
return -1;
}
-static int _enable_interrupt(struct proc_vring *vring_hw)
+static int _enable_interrupt(struct proc_intr *intr)
{
struct ipi_info *ipi =
- (struct ipi_info *)(vring_hw->intr_info.data);
+ (struct ipi_info *)(intr->data);
struct metal_io_region *io = ipi->io;
if (!ipi->need_reg) {
}
/* Register ISR */
- metal_irq_register(vring_hw->intr_info.vect_id, _ipi_handler,
- vring_hw->intr_info.dev, vring_hw);
+ metal_irq_register(intr->vect_id, _ipi_handler,
+ intr->dev, intr);
/* Enable IPI interrupt */
- metal_irq_enable(vring_hw->intr_info.vect_id);
+ metal_irq_enable(intr->vect_id);
metal_io_write32(io, IPI_IER_OFFSET, ipi->ipi_chn_mask);
return 0;
}
diff --git a/lib/remoteproc/drivers/zynqmp_remoteproc_r5.c b/lib/remoteproc/drivers/zynqmp_remoteproc_r5.c
index d93cffab088a7bdf5d3fb350856bafaf14778bb0..9ba49c3e720791f28bd69ff400f364d284581c3a 100644 (file)
};
/*--------------------------- Declare Functions ------------------------ */
-static int _enable_interrupt(struct proc_vring *vring_hw);
+static int _enable_interrupt(struct proc_intr *intr);
static void _notify(struct hil_proc *proc, struct proc_intr *intr_info);
static int _boot_cpu(struct hil_proc *proc, unsigned int load_addr);
static void _shutdown_cpu(struct hil_proc *proc);
.release = _release,
};
-static int _enable_interrupt(struct proc_vring *vring_hw)
+static int _enable_interrupt(struct proc_intr *intr)
{
- (void)vring_hw;
+ (void)intr;
return 0;
}