Commit b3f9fa5c authored by Federico Vaga's avatar Federico Vaga

sw:drv: use cheby generated header file

The FPGA SPEC core is described using cheby. Generate the header
file on build (it requires cheby) and include it.
Signed-off-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>
parent 37f1748a
spec-core-fpga.h
\ No newline at end of file
...@@ -7,17 +7,25 @@ REPO_PARENT ?= $(shell /bin/pwd)/../.. ...@@ -7,17 +7,25 @@ REPO_PARENT ?= $(shell /bin/pwd)/../..
KVERSION ?= $(shell uname -r) KVERSION ?= $(shell uname -r)
LINUX ?= /lib/modules/$(KVERSION)/build LINUX ?= /lib/modules/$(KVERSION)/build
TOP_DIR ?= $(shell pwd)/../..
HDL_DIR ?= $(TOP_DIR)/hdl
CONFIG_FPGA_MGR_BACKPORT_PATH_ABS ?= $(abspath $(CONFIG_FPGA_MGR_BACKPORT_PATH)) CONFIG_FPGA_MGR_BACKPORT_PATH_ABS ?= $(abspath $(CONFIG_FPGA_MGR_BACKPORT_PATH))
FMC_ABS ?= $(abspath $(FMC)) FMC_ABS ?= $(abspath $(FMC))
I2C_ABS ?= $(abspath $(I2C)) I2C_ABS ?= $(abspath $(I2C))
VERSION = $(shell git describe --dirty --long --tags) VERSION = $(shell git describe --dirty --long --tags)
CHEBY ?= /usr/bin/cheby
all: modules all: modules
.PHONY: all modules clean help install modules_install .PHONY: all modules clean help install modules_install spec-core-fpga.h
spec-core-fpga.h:
$(CHEBY) --gen-c -i $(HDL_DIR)/rtl/spec_template_regs.cheby > $@
modules help install modules_install: modules help install modules_install: spec-core-fpga.h
$(MAKE) -C $(LINUX) M=$(shell pwd) VERSION=$(VERSION) CONFIG_FPGA_MGR_BACKPORT_PATH_ABS=$(CONFIG_FPGA_MGR_BACKPORT_PATH_ABS) CONFIG_FPGA_MGR_BACKPORT=$(CONFIG_FPGA_MGR_BACKPORT) FMC_ABS=$(FMC_ABS) I2C_ABS=$(I2C_ABS) $@ $(MAKE) -C $(LINUX) M=$(shell pwd) VERSION=$(VERSION) CONFIG_FPGA_MGR_BACKPORT_PATH_ABS=$(CONFIG_FPGA_MGR_BACKPORT_PATH_ABS) CONFIG_FPGA_MGR_BACKPORT=$(CONFIG_FPGA_MGR_BACKPORT) FMC_ABS=$(FMC_ABS) I2C_ABS=$(I2C_ABS) $@
# be able to run the "clean" rule even if $(LINUX) is not valid # be able to run the "clean" rule even if $(LINUX) is not valid
......
...@@ -20,25 +20,6 @@ ...@@ -20,25 +20,6 @@
#include "platform_data/spi-ocores.h" #include "platform_data/spi-ocores.h"
enum spec_fpga_mem_offsets {
SPEC_FPGA_MEM_CSR_START = SPEC_CORE_FPGA + 0x40,
SPEC_FPGA_MEM_CSR_END = SPEC_CORE_FPGA + 0x5F,
SPEC_FPGA_MEM_THERM_START = SPEC_CORE_FPGA + 0x70,
SPEC_FPGA_MEM_THERM_END = SPEC_CORE_FPGA + 0x7F,
SPEC_FPGA_MEM_FMC_I2C_START = SPEC_CORE_FPGA + 0x0080,
SPEC_FPGA_MEM_FMC_I2C_END = SPEC_CORE_FPGA + 0x009F,
SPEC_FPGA_MEM_SPI_START = SPEC_CORE_FPGA + 0x00A0,
SPEC_FPGA_MEM_SPI_END = SPEC_CORE_FPGA + 0x00BF,
SPEC_FPGA_MEM_DMA_START = SPEC_CORE_FPGA + 0x00C0,
SPEC_FPGA_MEM_DMA_END = SPEC_CORE_FPGA + 0x00FF,
SPEC_FPGA_MEM_VIC_START = SPEC_CORE_FPGA + 0x0100,
SPEC_FPGA_MEM_VIC_END = SPEC_CORE_FPGA + 0x01FF,
SPEC_FPGA_MEM_BLD_START = SPEC_CORE_FPGA + 0x0200,
SPEC_FPGA_MEM_BLD_END = SPEC_CORE_FPGA + 0x02FF,
SPEC_FPGA_MEM_WR_START = SPEC_CORE_FPGA + 0x1000,
SPEC_FPGA_MEM_WR_END = SPEC_CORE_FPGA + 0x1FFF,
};
enum spec_fpga_irq_lines { enum spec_fpga_irq_lines {
SPEC_FPGA_IRQ_FMC_I2C = 0, SPEC_FPGA_IRQ_FMC_I2C = 0,
SPEC_FPGA_IRQ_SPI, SPEC_FPGA_IRQ_SPI,
...@@ -46,12 +27,12 @@ enum spec_fpga_irq_lines { ...@@ -46,12 +27,12 @@ enum spec_fpga_irq_lines {
}; };
enum spec_fpga_csr_offsets { enum spec_fpga_csr_offsets {
SPEC_FPGA_CSR_APP_OFF = SPEC_FPGA_MEM_CSR_START + 0x00, SPEC_FPGA_CSR_APP_OFF = SPEC_TEMPLATE_REGS_CSR + 0x00,
SPEC_FPGA_CSR_RESETS = SPEC_FPGA_MEM_CSR_START + 0x04, SPEC_FPGA_CSR_RESETS = SPEC_TEMPLATE_REGS_CSR + 0x04,
SPEC_FPGA_CSR_FMC_PRESENT = SPEC_FPGA_MEM_CSR_START + 0x08, SPEC_FPGA_CSR_FMC_PRESENT = SPEC_TEMPLATE_REGS_CSR + 0x08,
SPEC_FPGA_CSR_GN4124_STATUS = SPEC_FPGA_MEM_CSR_START + 0x0C, SPEC_FPGA_CSR_GN4124_STATUS = SPEC_TEMPLATE_REGS_CSR + 0x0C,
SPEC_FPGA_CSR_DDR_STATUS = SPEC_FPGA_MEM_CSR_START + 0x10, SPEC_FPGA_CSR_DDR_STATUS = SPEC_TEMPLATE_REGS_CSR + 0x10,
SPEC_FPGA_CSR_PCB_REV = SPEC_FPGA_MEM_CSR_START + 0x14, SPEC_FPGA_CSR_PCB_REV = SPEC_TEMPLATE_REGS_CSR + 0x14,
}; };
enum spec_fpga_csr_fields { enum spec_fpga_csr_fields {
...@@ -59,9 +40,9 @@ enum spec_fpga_csr_fields { ...@@ -59,9 +40,9 @@ enum spec_fpga_csr_fields {
}; };
enum spec_fpga_therm_offsets { enum spec_fpga_therm_offsets {
SPEC_FPGA_THERM_SERID_MSB = SPEC_FPGA_MEM_THERM_START + 0x0, SPEC_FPGA_THERM_SERID_MSB = SPEC_TEMPLATE_REGS_THERM_ID + 0x0,
SPEC_FPGA_THERM_SERID_LSB = SPEC_FPGA_MEM_THERM_START + 0x4, SPEC_FPGA_THERM_SERID_LSB = SPEC_TEMPLATE_REGS_THERM_ID + 0x4,
SPEC_FPGA_THERM_TEMP = SPEC_FPGA_MEM_THERM_START + 0x8, SPEC_FPGA_THERM_TEMP = SPEC_TEMPLATE_REGS_THERM_ID + 0x8,
}; };
enum spec_fpga_meta_cap_mask { enum spec_fpga_meta_cap_mask {
...@@ -111,8 +92,8 @@ static int spec_fpga_dbg_bld_info(struct seq_file *s, void *offset) ...@@ -111,8 +92,8 @@ static int spec_fpga_dbg_bld_info(struct seq_file *s, void *offset)
return 0; return 0;
} }
for (off = SPEC_FPGA_MEM_BLD_START; for (off = SPEC_TEMPLATE_REGS_BUILDINFO;
off < SPEC_FPGA_MEM_BLD_END; off < SPEC_TEMPLATE_REGS_BUILDINFO + SPEC_TEMPLATE_REGS_BUILDINFO_SIZE -1;
off++) { off++) {
char tmp = ioread8(spec_fpga->fpga + off); char tmp = ioread8(spec_fpga->fpga + off);
...@@ -208,8 +189,8 @@ static struct resource spec_fpga_vic_res[] = { ...@@ -208,8 +189,8 @@ static struct resource spec_fpga_vic_res[] = {
{ {
.name = "htvic-mem", .name = "htvic-mem",
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
.start = SPEC_FPGA_MEM_VIC_START, .start = SPEC_TEMPLATE_REGS_VIC,
.end = SPEC_FPGA_MEM_VIC_END, .end = SPEC_TEMPLATE_REGS_VIC + SPEC_TEMPLATE_REGS_VIC_SIZE -1,
}, { }, {
.name = "htvic-irq", .name = "htvic-irq",
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
...@@ -261,8 +242,8 @@ static struct resource spec_fpga_dma_res[] = { ...@@ -261,8 +242,8 @@ static struct resource spec_fpga_dma_res[] = {
{ {
.name = "spec-gn412x-dma-mem", .name = "spec-gn412x-dma-mem",
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
.start = SPEC_FPGA_MEM_DMA_START, .start = SPEC_TEMPLATE_REGS_DMA,
.end = SPEC_FPGA_MEM_DMA_END, .end = SPEC_TEMPLATE_REGS_DMA + SPEC_TEMPLATE_REGS_DMA_SIZE - 1,
}, { }, {
.name = "spec-gn412x-dma-irq-done", .name = "spec-gn412x-dma-irq-done",
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
...@@ -332,8 +313,8 @@ static struct resource spec_fpga_fmc_i2c_res[] = { ...@@ -332,8 +313,8 @@ static struct resource spec_fpga_fmc_i2c_res[] = {
{ {
.name = "i2c-ocores-mem", .name = "i2c-ocores-mem",
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
.start = SPEC_FPGA_MEM_FMC_I2C_START, .start = SPEC_TEMPLATE_REGS_FMC_I2C,
.end = SPEC_FPGA_MEM_FMC_I2C_END, .end = SPEC_TEMPLATE_REGS_FMC_I2C + SPEC_TEMPLATE_REGS_FMC_I2C_SIZE -1,
}, { }, {
.name = "i2c-ocores-irq", .name = "i2c-ocores-irq",
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
...@@ -355,8 +336,8 @@ static struct resource spec_fpga_spi_res[] = { ...@@ -355,8 +336,8 @@ static struct resource spec_fpga_spi_res[] = {
{ {
.name = "spi-ocores-mem", .name = "spi-ocores-mem",
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
.start = SPEC_FPGA_MEM_SPI_START, .start = SPEC_TEMPLATE_REGS_FLASH_SPI,
.end = SPEC_FPGA_MEM_SPI_END, .end = SPEC_TEMPLATE_REGS_FLASH_SPI + SPEC_TEMPLATE_REGS_FLASH_SPI_SIZE - 1,
}, { }, {
.name = "spi-ocores-irq", .name = "spi-ocores-irq",
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/fmc.h> #include <linux/fmc.h>
#include "gn412x.h" #include "gn412x.h"
#include "spec-core-fpga.h"
#define SPEC_FMC_SLOTS 1 #define SPEC_FMC_SLOTS 1
...@@ -66,8 +67,7 @@ enum { ...@@ -66,8 +67,7 @@ enum {
enum { enum {
/* Metadata */ /* Metadata */
SPEC_CORE_FPGA = 0x0, SPEC_META_BASE = SPEC_TEMPLATE_REGS_METADATA,
SPEC_META_BASE = SPEC_CORE_FPGA + 0x00,
SPEC_META_VENDOR = SPEC_META_BASE + FPGA_META_VENDOR, SPEC_META_VENDOR = SPEC_META_BASE + FPGA_META_VENDOR,
SPEC_META_DEVICE = SPEC_META_BASE + FPGA_META_DEVICE, SPEC_META_DEVICE = SPEC_META_BASE + FPGA_META_DEVICE,
SPEC_META_VERSION = SPEC_META_BASE + FPGA_META_VERSION, SPEC_META_VERSION = SPEC_META_BASE + FPGA_META_VERSION,
......
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