aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Shijie <b32955@freescale.com>2012-09-13 02:57:55 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2012-09-29 10:55:05 -0400
commitae70ba2d6078d60c527c93076133accf59becaf8 (patch)
tree16def618f017b65e54e7d79391a37002e1607459
parentddab3838aa3332ed2c8ea96accbed5218a2a72b7 (diff)
mtd: gpmi: do not get the clock frequency in gpmi_begin()
The current code will gets the clock frequency which is used by gpmi_nfc_compute_hardware_timing(). It makes the code a little mess. So move the `get clock frequency` code to the gpmi_nfc_compute_hardware_timing() itself. This makes the code tidy and clean. This patch also uses the macro NSEC_PER_SEC to replace the `1000000000`. Signed-off-by: Huang Shijie <b32955@freescale.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
-rw-r--r--drivers/mtd/nand/gpmi-nand/gpmi-lib.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
index c95dbe8bb272..41e905dfc399 100644
--- a/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
+++ b/drivers/mtd/nand/gpmi-nand/gpmi-lib.c
@@ -293,6 +293,7 @@ static int gpmi_nfc_compute_hardware_timing(struct gpmi_nand_data *this,
293 struct gpmi_nfc_hardware_timing *hw) 293 struct gpmi_nfc_hardware_timing *hw)
294{ 294{
295 struct timing_threshod *nfc = &timing_default_threshold; 295 struct timing_threshod *nfc = &timing_default_threshold;
296 struct resources *r = &this->resources;
296 struct nand_chip *nand = &this->nand; 297 struct nand_chip *nand = &this->nand;
297 struct nand_timing target = this->timing; 298 struct nand_timing target = this->timing;
298 bool improved_timing_is_available; 299 bool improved_timing_is_available;
@@ -332,8 +333,9 @@ static int gpmi_nfc_compute_hardware_timing(struct gpmi_nand_data *this,
332 (target.tRHOH_in_ns >= 0) ; 333 (target.tRHOH_in_ns >= 0) ;
333 334
334 /* Inspect the clock. */ 335 /* Inspect the clock. */
336 nfc->clock_frequency_in_hz = clk_get_rate(r->clock[0]);
335 clock_frequency_in_hz = nfc->clock_frequency_in_hz; 337 clock_frequency_in_hz = nfc->clock_frequency_in_hz;
336 clock_period_in_ns = 1000000000 / clock_frequency_in_hz; 338 clock_period_in_ns = NSEC_PER_SEC / clock_frequency_in_hz;
337 339
338 /* 340 /*
339 * The NFC quantizes setup and hold parameters in terms of clock cycles. 341 * The NFC quantizes setup and hold parameters in terms of clock cycles.
@@ -738,7 +740,6 @@ return_results:
738void gpmi_begin(struct gpmi_nand_data *this) 740void gpmi_begin(struct gpmi_nand_data *this)
739{ 741{
740 struct resources *r = &this->resources; 742 struct resources *r = &this->resources;
741 struct timing_threshod *nfc = &timing_default_threshold;
742 void __iomem *gpmi_regs = r->gpmi_regs; 743 void __iomem *gpmi_regs = r->gpmi_regs;
743 unsigned int clock_period_in_ns; 744 unsigned int clock_period_in_ns;
744 uint32_t reg; 745 uint32_t reg;
@@ -753,10 +754,6 @@ void gpmi_begin(struct gpmi_nand_data *this)
753 goto err_out; 754 goto err_out;
754 } 755 }
755 756
756 /* Get the timing information we need. */
757 nfc->clock_frequency_in_hz = clk_get_rate(r->clock[0]);
758 clock_period_in_ns = 1000000000 / nfc->clock_frequency_in_hz;
759
760 gpmi_nfc_compute_hardware_timing(this, &hw); 757 gpmi_nfc_compute_hardware_timing(this, &hw);
761 758
762 /* [1] Set HW_GPMI_TIMING0 */ 759 /* [1] Set HW_GPMI_TIMING0 */
@@ -801,6 +798,7 @@ void gpmi_begin(struct gpmi_nand_data *this)
801 * 798 *
802 * Calculate the amount of time we need to wait, in microseconds. 799 * Calculate the amount of time we need to wait, in microseconds.
803 */ 800 */
801 clock_period_in_ns = NSEC_PER_SEC / clk_get_rate(r->clock[0]);
804 dll_wait_time_in_us = (clock_period_in_ns * 64) / 1000; 802 dll_wait_time_in_us = (clock_period_in_ns * 64) / 1000;
805 803
806 if (!dll_wait_time_in_us) 804 if (!dll_wait_time_in_us)