{&READ_STD(0, INFINITE, 0), 0},
		{&WRITE_STD(0, 256, 0), 0},
		{&ERASE_SECTOR(0, SPI_IF_ERASE_SECTOR, 0), 0}
	},

	{
		"S25FL064P", {0x01, 0x02, 0x16, 0x4d},
		4, (_64K * 128), _64K, 3,
		{
			&READ_STD(0, INFINITE, 40),
			&READ_FAST(1, INFINITE, 104),
			&READ_DUAL(1, INFINITE, 80),
			&READ_QUAD(1, INFINITE, 80),
			0
		},
		{&WRITE_STD(0, 256, 104), &WRITE_QUAD(0, 256, 80), 0},
		{&ERASE_SECTOR(0, SPI_IF_ERASE_SECTOR, 104), 0}
	},

	{
		"s25sl064a", {0x01, 0x02, 0x16}, 3, (_64K * 128), _64K, 3,
		{&READ_STD(0, INFINITE, 0), 0},
		{&WRITE_STD(0, 256, 0), 0},
		{&ERASE_SECTOR(0, SPI_IF_ERASE_SECTOR, 0), 0}
	},
	/* Spansion */
	{
		"S25FL032P", {0x01, 0x02, 0x15, 0x4d},
		4, (_64K * 64),  _64K, 3,
		{
			&READ_STD(0, INFINITE, 40),
	{
		"N25Q032", {0x20, 0xba, 0x16}, 3, (_64K * 64), _64K, 3,
		{
			&READ_STD(0, INFINITE, 32/*54*/),
			&READ_FAST(1, INFINITE, 64/*108*/),
			&READ_DUAL(1, INFINITE, 64/*108*/),
			&READ_QUAD(1, INFINITE, 64/*108*/),
			&READ_DUAL_ADDR(2, INFINITE, 64/*108*/),
			&READ_QUAD_ADDR(5, INFINITE, 64/*108*/),
			0
		},

		{
			&WRITE_STD(0, 256, 64/*108*/),
			&WRITE_DUAL(0, 256, 64/*108*/),
			&WRITE_QUAD(0, 256, 64/*108*/),
			&WRITE_DUAL_ADDR(0, 256, 64/*108*/),
			&WRITE_QUAD_ADDR(0, 256, 64/*108*/),
			0
		},

		{
			&ERASE_SECTOR_64K(0, _64K, 64),
			0
		},

		&spi_driver_general,
	},

	{
		"N25Q064", {0x20, 0xba, 0x17}, 3, (_64K * 128), _64K, 3,
	{
		"S25FL129P1/S25FL128S",
		{0x01, 0x20, 0x18, 0x4d, 0x01}, 5, (_64K * 256),  _64K,  3,
		{
			&READ_STD(0, INFINITE, 40),
			&READ_FAST(1, INFINITE, 104),
			&READ_DUAL(1, INFINITE, 64),
			&READ_DUAL_ADDR(1, INFINITE, 80),
			&READ_QUAD(1, INFINITE, 80),
			&READ_QUAD_ADDR(3, INFINITE, 80),
			0
		},

		{
			&WRITE_STD(0, 256, 104),
			&WRITE_QUAD(0, 256, 80),
			0
		},

		{
			&ERASE_SECTOR_64K(0, _64K, 104),
			0
		},
		&spi_driver_general,
	},

	{
		"S25FL256S", {0x01, 0x02, 0x19, 0x4d, 0x01}, 5, _32M,  _64K,  4,
		{
			&READ_STD(0, INFINITE, 40),
			&READ_FAST(1, INFINITE, 104),