diff options
Diffstat (limited to 'arch/arm/mach-omap2/gpmc-nand.c')
-rw-r--r-- | arch/arm/mach-omap2/gpmc-nand.c | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/arch/arm/mach-omap2/gpmc-nand.c b/arch/arm/mach-omap2/gpmc-nand.c index 662c7fd633cc..174caecc3186 100644 --- a/arch/arm/mach-omap2/gpmc-nand.c +++ b/arch/arm/mach-omap2/gpmc-nand.c | |||
@@ -65,6 +65,22 @@ static bool gpmc_hwecc_bch_capable(enum omap_ecc ecc_opt) | |||
65 | return 1; | 65 | return 1; |
66 | } | 66 | } |
67 | 67 | ||
68 | /* This function will go away once the device-tree convertion is complete */ | ||
69 | static void gpmc_set_legacy(struct omap_nand_platform_data *gpmc_nand_data, | ||
70 | struct gpmc_settings *s) | ||
71 | { | ||
72 | /* Enable RD PIN Monitoring Reg */ | ||
73 | if (gpmc_nand_data->dev_ready) { | ||
74 | s->wait_on_read = true; | ||
75 | s->wait_on_write = true; | ||
76 | } | ||
77 | |||
78 | if (gpmc_nand_data->devsize == NAND_BUSWIDTH_16) | ||
79 | s->device_width = GPMC_DEVWIDTH_16BIT; | ||
80 | else | ||
81 | s->device_width = GPMC_DEVWIDTH_8BIT; | ||
82 | } | ||
83 | |||
68 | int gpmc_nand_init(struct omap_nand_platform_data *gpmc_nand_data, | 84 | int gpmc_nand_init(struct omap_nand_platform_data *gpmc_nand_data, |
69 | struct gpmc_timings *gpmc_t) | 85 | struct gpmc_timings *gpmc_t) |
70 | { | 86 | { |
@@ -98,32 +114,22 @@ int gpmc_nand_init(struct omap_nand_platform_data *gpmc_nand_data, | |||
98 | dev_err(dev, "Unable to set gpmc timings: %d\n", err); | 114 | dev_err(dev, "Unable to set gpmc timings: %d\n", err); |
99 | return err; | 115 | return err; |
100 | } | 116 | } |
117 | } | ||
101 | 118 | ||
102 | if (gpmc_nand_data->of_node) { | 119 | if (gpmc_nand_data->of_node) |
103 | gpmc_read_settings_dt(gpmc_nand_data->of_node, &s); | 120 | gpmc_read_settings_dt(gpmc_nand_data->of_node, &s); |
104 | } else { | 121 | else |
105 | /* Enable RD PIN Monitoring Reg */ | 122 | gpmc_set_legacy(gpmc_nand_data, &s); |
106 | if (gpmc_nand_data->dev_ready) { | ||
107 | s.wait_on_read = true; | ||
108 | s.wait_on_write = true; | ||
109 | } | ||
110 | } | ||
111 | |||
112 | s.device_nand = true; | ||
113 | 123 | ||
114 | if (gpmc_nand_data->devsize == NAND_BUSWIDTH_16) | 124 | s.device_nand = true; |
115 | s.device_width = GPMC_DEVWIDTH_16BIT; | ||
116 | else | ||
117 | s.device_width = GPMC_DEVWIDTH_8BIT; | ||
118 | 125 | ||
119 | err = gpmc_cs_program_settings(gpmc_nand_data->cs, &s); | 126 | err = gpmc_cs_program_settings(gpmc_nand_data->cs, &s); |
120 | if (err < 0) | 127 | if (err < 0) |
121 | goto out_free_cs; | 128 | goto out_free_cs; |
122 | 129 | ||
123 | err = gpmc_configure(GPMC_CONFIG_WP, 0); | 130 | err = gpmc_configure(GPMC_CONFIG_WP, 0); |
124 | if (err < 0) | 131 | if (err < 0) |
125 | goto out_free_cs; | 132 | goto out_free_cs; |
126 | } | ||
127 | 133 | ||
128 | gpmc_update_nand_reg(&gpmc_nand_data->reg, gpmc_nand_data->cs); | 134 | gpmc_update_nand_reg(&gpmc_nand_data->reg, gpmc_nand_data->cs); |
129 | 135 | ||