diff options
author | Huang Shijie <b32955@freescale.com> | 2012-09-13 02:57:55 -0400 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2012-09-29 10:55:05 -0400 |
commit | ae70ba2d6078d60c527c93076133accf59becaf8 (patch) | |
tree | 16def618f017b65e54e7d79391a37002e1607459 | |
parent | ddab3838aa3332ed2c8ea96accbed5218a2a72b7 (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.c | 10 |
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: | |||
738 | void gpmi_begin(struct gpmi_nand_data *this) | 740 | void 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) |