/* Mode 0 */
        {
                .type = NAND_SDR_IFACE,
+               .timings.mode = 0,
                .timings.sdr = {
                        .tCCS_min = 500000,
                        .tR_max = 200000000,
        /* Mode 1 */
        {
                .type = NAND_SDR_IFACE,
+               .timings.mode = 1,
                .timings.sdr = {
                        .tCCS_min = 500000,
                        .tR_max = 200000000,
        /* Mode 2 */
        {
                .type = NAND_SDR_IFACE,
+               .timings.mode = 2,
                .timings.sdr = {
                        .tCCS_min = 500000,
                        .tR_max = 200000000,
        /* Mode 3 */
        {
                .type = NAND_SDR_IFACE,
+               .timings.mode = 3,
                .timings.sdr = {
                        .tCCS_min = 500000,
                        .tR_max = 200000000,
        /* Mode 4 */
        {
                .type = NAND_SDR_IFACE,
+               .timings.mode = 4,
                .timings.sdr = {
                        .tCCS_min = 500000,
                        .tR_max = 200000000,
        /* Mode 5 */
        {
                .type = NAND_SDR_IFACE,
+               .timings.mode = 5,
                .timings.sdr = {
                        .tCCS_min = 500000,
                        .tR_max = 200000000,
 
 /**
  * struct nand_data_interface - NAND interface timing
  * @type:       type of the timing
- * @timings:    The timing, type according to @type
+ * @timings:    The timing information
+ * @timings.mode: Timing mode as defined in the specification
  * @timings.sdr: Use it when @type is %NAND_SDR_IFACE.
  */
 struct nand_data_interface {
        enum nand_data_interface_type type;
-       union {
-               struct nand_sdr_timings sdr;
+       struct nand_timings {
+               unsigned int mode;
+               union {
+                       struct nand_sdr_timings sdr;
+               };
        } timings;
 };