#include <linux/interrupt.h>
#include <linux/of_address.h>
#include <linux/of_device.h>
#include <linux/module.h>
#define EMIF_SDRAM_CONFIG 0x008
#define EMIF_IRQ_STATUS 0x0ac
#define EMIF_IRQ_ENABLE_SET 0x0b4
#define EMIF_ECC_CTRL 0x110
#define EMIF_1B_ECC_ERR_CNT 0x130
#define EMIF_1B_ECC_ERR_THRSH 0x134
#define EMIF_1B_ECC_ERR_ADDR_LOG 0x13c
#define EMIF_2B_ECC_ERR_ADDR_LOG 0x140
#define SDRAM_TYPE_SHIFT 29
#define SDRAM_TYPE_MASK GENMASK(31, 29)
#define SDRAM_TYPE_DDR3 (3 << SDRAM_TYPE_SHIFT)
#define SDRAM_TYPE_DDR2 (2 << SDRAM_TYPE_SHIFT)
#define SDRAM_NARROW_MODE_MASK GENMASK(15, 14)
#define SDRAM_K2_NARROW_MODE_SHIFT 12
#define SDRAM_K2_NARROW_MODE_MASK GENMASK(13, 12)
#define SDRAM_ROWSIZE_SHIFT 7
#define SDRAM_ROWSIZE_MASK GENMASK(9, 7)
#define SDRAM_IBANK_SHIFT 4
#define SDRAM_IBANK_MASK GENMASK(6, 4)
#define SDRAM_K2_IBANK_SHIFT 5
#define SDRAM_K2_IBANK_MASK GENMASK(6, 5)
#define SDRAM_K2_EBANK_SHIFT 3
#define SDRAM_K2_EBANK_MASK BIT(SDRAM_K2_EBANK_SHIFT)
#define SDRAM_PAGESIZE_SHIFT 0
#define SDRAM_PAGESIZE_MASK GENMASK(2, 0)
#define SDRAM_K2_PAGESIZE_SHIFT 0
#define SDRAM_K2_PAGESIZE_MASK GENMASK(1, 0)
#define EMIF_1B_ECC_ERR_THRSH_SHIFT 24