Commit 911a8882 authored by Alex Smith's avatar Alex Smith Committed by Greg Kroah-Hartman

memory: jz4780-nemc: driver for the NEMC on JZ4780 SoCs

Add a driver for the NAND/External Memory Controller (NEMC) on JZ4780
and later SoCs.

The primary function of this driver is to configure parameters, such
as timings, for external memory devices using data supplied in the
device tree. Devices connected to the NEMC are represented in the DT
as children of the NEMC node, the driver uses optional properties
specified in these child nodes to configure the parameters of each
Signed-off-by: default avatarAlex Smith <>
Signed-off-by: default avatarZubair Lutfullah Kakakhel <>
Signed-off-by: default avatarGreg Kroah-Hartman <>
parent c0e68416
......@@ -83,6 +83,15 @@ config FSL_IFC
depends on FSL_SOC
config JZ4780_NEMC
bool "Ingenic JZ4780 SoC NEMC driver"
default y
depends on MACH_JZ4780
This driver is for the NAND/External Memory Controller (NEMC) in
the Ingenic JZ4780. This controller is used to handle external
memory devices such as NAND and SRAM.
source "drivers/memory/tegra/Kconfig"
......@@ -13,5 +13,6 @@ obj-$(CONFIG_FSL_CORENET_CF) += fsl-corenet-cf.o
obj-$(CONFIG_FSL_IFC) += fsl_ifc.o
obj-$(CONFIG_MVEBU_DEVBUS) += mvebu-devbus.o
obj-$(CONFIG_TEGRA20_MC) += tegra20-mc.o
obj-$(CONFIG_JZ4780_NEMC) += jz4780-nemc.o
obj-$(CONFIG_TEGRA_MC) += tegra/
This diff is collapsed.
* JZ4780 NAND/external memory controller (NEMC)
* Copyright (c) 2015 Imagination Technologies
* Author: Alex Smith <>
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
#ifndef __LINUX_JZ4780_NEMC_H__
#define __LINUX_JZ4780_NEMC_H__
#include <linux/types.h>
struct device;
* Number of NEMC banks. Note that there are actually 6, but they are numbered
* from 1.
#define JZ4780_NEMC_NUM_BANKS 7
* enum jz4780_nemc_bank_type - device types which can be connected to a bank
enum jz4780_nemc_bank_type {
extern unsigned int jz4780_nemc_num_banks(struct device *dev);
extern void jz4780_nemc_set_type(struct device *dev, unsigned int bank,
enum jz4780_nemc_bank_type type);
extern void jz4780_nemc_assert(struct device *dev, unsigned int bank,
bool assert);
#endif /* __LINUX_JZ4780_NEMC_H__ */
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment