Commit c0d76b04 authored by Federico Vaga's avatar Federico Vaga

Merge branch 'release/v2.0.4'

parents 1e9756d5 323252c3
......@@ -2,6 +2,12 @@
Change Log
==========
2.0.4 - 2021-07-29
==================
Fixed
-----
- sw: improve compatibility with newer ( > 3.10) Linux kernel version
2.0.3 - 2021-03-22
==================
Fixed
......
......@@ -58,6 +58,11 @@
#define XLDR_CSR_CLKDIV_SHIFT 8
#define XLDR_CSR_CLKDIV_W(value) WBGEN2_GEN_WRITE(value, 8, 6)
#define XLDR_CSR_CLKDIV_R(reg) WBGEN2_GEN_READ(reg, 8, 6)
/* definitions for field: Bootloader version */
#define XLDR_CSR_VERSION_MASK WBGEN2_GEN_MASK(14, 8)
#define XLDR_CSR_VERSION_SHIFT 14
#define XLDR_CSR_VERSION_R(reg) WBGEN2_GEN_READ(reg, 14, 8)
/* definitions for register: Bootloader Trigger Register */
......
......@@ -217,14 +217,8 @@ static struct resource svec_fpga_vic_res[] = {
struct irq_domain *svec_fpga_irq_find_host(struct device *dev)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,7,0)
struct irq_fwspec fwspec = {
.fwnode = dev->fwnode,
.param_count = 2,
.param[0] = ((unsigned long)dev >> 32) & 0xffffffff,
.param[1] = ((unsigned long)dev) & 0xffffffff,
};
return irq_find_matching_fwspec(&fwspec, DOMAIN_BUS_ANY);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0)
return irq_find_matching_fwnode(dev->fwnode, DOMAIN_BUS_ANY);
#else
return (irq_find_host((void *)dev));
#endif
......
......@@ -252,14 +252,17 @@ static int svec_fpga_loader_is_active(struct fpga_manager *mgr)
struct vme_dev *vdev = to_vme_dev(svec->dev.parent);
void *loader_addr = vdev->map_cr.kernel_va + SVEC_BASE_LOADER;
char buf[5];
uint32_t idc;
uint32_t idc, csr;
csr = ioread32be(loader_addr + XLDR_REG_CSR);
idc = ioread32be(loader_addr + XLDR_REG_IDR);
idc = htonl(idc);
memset(buf, 0, 5);
strncpy(buf, (char *)&idc, 4);
dev_dbg(&mgr->dev, "SVEC Loader: {ID: \"%s\"(0x%08x), Version: %d (0x%08x)}",
buf, idc, XLDR_CSR_VERSION_R(csr), csr);
return (strncmp(buf, "SVEC", 4) == 0);
}
......@@ -428,8 +431,10 @@ static size_t svec_fpga_write_buf(struct fpga_manager *mgr,
svec->bitstream_last_word,
svec->bitstream_last_word_size,
0);
if (err && !(err == -EINVAL && i == 0))
if (err && !(err == -EINVAL && i == 0)) {
dev_err(&mgr->dev, "failed at word %d/%ld (%d)\n", i, size, err);
goto out;
}
/*
* EINVAL is "fine" here because the first time we give a
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment