--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -566,4 +566,12 @@ config MTD_NAND_AR934X_HW_ECC
 	bool "Hardware ECC support for the AR934X NAND Controller (EXPERIMENTAL)"
 	depends on MTD_NAND_AR934X
 
+config MTD_NAND_ATH79
+	tristate "Nand flash support for Qualcomm-Atheros SoCs 71xx & 9xxx"
+	default n
+	depends on MTD_NAND
+	help
+		Enables the driver for NAND flash controller on Qualcomm-Atheros System on Chips
+		This controller is used on families AR71xx and AR9xxx.
+
 endif # MTD_NAND
--- a/drivers/mtd/nand/Makefile
+++ b/drivers/mtd/nand/Makefile
@@ -10,6 +10,7 @@ obj-$(CONFIG_MTD_SM_COMMON) 		+= sm_comm
 
 obj-$(CONFIG_MTD_NAND_CAFE)		+= cafe_nand.o
 obj-$(CONFIG_MTD_NAND_AMS_DELTA)	+= ams-delta.o
+obj-$(CONFIG_MTD_NAND_ATH79)		+= ath79_spinand.o
 obj-$(CONFIG_MTD_NAND_DENALI)		+= denali.o
 obj-$(CONFIG_MTD_NAND_DENALI_PCI)	+= denali_pci.o
 obj-$(CONFIG_MTD_NAND_DENALI_DT)	+= denali_dt.o
--- a/drivers/mtd/nand/nand_ids.c
+++ b/drivers/mtd/nand/nand_ids.c
@@ -52,6 +52,30 @@ struct nand_flash_dev nand_flash_ids[] =
 		{ .id = {0xad, 0xde, 0x94, 0xda, 0x74, 0xc4} },
 		  SZ_8K, SZ_8K, SZ_2M, 0, 6, 640, NAND_ECC_INFO(40, SZ_1K),
 		  4 },
+	{"GD5F1GQ4U 1G 3.3V 8-bit",
+		{ .id = {0xc8, 0xb1} },
+		  SZ_2K, SZ_128, SZ_128K, 0, 2, 128, NAND_ECC_INFO(4, SZ_512) },
+	{"GD5F2GQ4U 2G 3.3V 8-bit",
+		{ .id = {0xc8, 0xb2} },
+		  SZ_2K, SZ_256, SZ_128K, 0, 2, 128, NAND_ECC_INFO(4, SZ_512) },
+	{"GD5F1GQ4R 1G 1.8V 8-bit",
+		{ .id = {0xc8, 0xa1} },
+		  SZ_2K, SZ_128, SZ_128K, 0, 2, 128, NAND_ECC_INFO(4, SZ_512) },
+	{"GD5F2GQ4R 2G 1.8V 8-bit",
+		{ .id = {0xc8, 0xa2} },
+		  SZ_2K, SZ_256, SZ_128K, 0, 2, 128, NAND_ECC_INFO(4, SZ_512) },
+	{"MX35LF1G4EAB 1G 3.3V 8-bit",
+		{ .id = {0xc2, 0x12} },
+		  SZ_2K, SZ_128, SZ_128K, 0, 2, 64, NAND_ECC_INFO(4, SZ_512) },
+	{"MX35LF2G4EAB 2G 3.3V 8-bit",
+		{ .id = {0xc2, 0x22} },
+		  SZ_2K, SZ_256, SZ_128K, 0, 2, 64, NAND_ECC_INFO(4, SZ_512) },
+	{"W25N01GV 1G 3.3V 8-bit",
+		{ .id = {0xef, 0xaa} },
+		  SZ_2K, SZ_128, SZ_128K, 0, 2, 64, NAND_ECC_INFO(4, SZ_512) },
+	{"HYF1GQ4UAACAE-P1 128MiB 3.3V 8-bit",
+		{ .id = { 0xc9, 0x59 }},
+		  SZ_2K, SZ_128, SZ_128K, 0, 2, SZ_128, NAND_ECC_INFO(4, SZ_512) },
 
 	LEGACY_ID_NAND("NAND 4MiB 5V 8-bit",   0x6B, 4, SZ_8K, SP_OPTIONS),
 	LEGACY_ID_NAND("NAND 4MiB 3,3V 8-bit", 0xE3, 4, SZ_8K, SP_OPTIONS),
@@ -181,6 +205,9 @@ struct nand_manufacturers nand_manuf_ids
 	{NAND_MFR_SANDISK, "SanDisk"},
 	{NAND_MFR_INTEL, "Intel"},
 	{NAND_MFR_ATO, "ATO"},
+	{NAND_MFR_GIGADEVICE, "Giga Device"},
+	{NAND_MFR_WINBOND, "Winbond"},
+	{NAND_MFR_HEYANGTEK, "HeYang Tek"},
 	{0x0, "Unknown"}
 };
 
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -732,6 +732,9 @@ struct nand_chip {
 #define NAND_MFR_MICRON		0x2c
 #define NAND_MFR_AMD		0x01
 #define NAND_MFR_MACRONIX	0xc2
+#define NAND_MFR_GIGADEVICE	0xc8
+#define NAND_MFR_WINBOND	0xef
+#define NAND_MFR_HEYANGTEK	0xc9
 #define NAND_MFR_EON		0x92
 #define NAND_MFR_SANDISK	0x45
 #define NAND_MFR_INTEL		0x89
