Commit 324c654d authored by Arnd Bergmann's avatar Arnd Bergmann

Merge tag 'at91-ab-4.13-drivers-fixes' of...

Merge tag 'at91-ab-4.13-drivers-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux into fixes

Pull "Driver fixes for 4.13" from Alexandre Belloni:

 - Multiple EBI/SMC timing setting/calculation fixes

* tag 'at91-ab-4.13-drivers-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux:
  memory: atmel-ebi: Fix smc cycle xlate converter
  memory: atmel-ebi: Allow t_DF timings of zero ns
  memory: atmel-ebi: Fix smc timing return value evaluation
parents 4459398b 3fb3b3c4
...@@ -72,7 +72,7 @@ struct atmel_smc_timing_xlate { ...@@ -72,7 +72,7 @@ struct atmel_smc_timing_xlate {
{ .name = nm, .converter = atmel_smc_cs_conf_set_pulse, .shift = pos} { .name = nm, .converter = atmel_smc_cs_conf_set_pulse, .shift = pos}
#define ATMEL_SMC_CYCLE_XLATE(nm, pos) \ #define ATMEL_SMC_CYCLE_XLATE(nm, pos) \
{ .name = nm, .converter = atmel_smc_cs_conf_set_setup, .shift = pos} { .name = nm, .converter = atmel_smc_cs_conf_set_cycle, .shift = pos}
static void at91sam9_ebi_get_config(struct atmel_ebi_dev *ebid, static void at91sam9_ebi_get_config(struct atmel_ebi_dev *ebid,
struct atmel_ebi_dev_config *conf) struct atmel_ebi_dev_config *conf)
...@@ -120,12 +120,14 @@ static int atmel_ebi_xslate_smc_timings(struct atmel_ebi_dev *ebid, ...@@ -120,12 +120,14 @@ static int atmel_ebi_xslate_smc_timings(struct atmel_ebi_dev *ebid,
if (!ret) { if (!ret) {
required = true; required = true;
ncycles = DIV_ROUND_UP(val, clk_period_ns); ncycles = DIV_ROUND_UP(val, clk_period_ns);
if (ncycles > ATMEL_SMC_MODE_TDF_MAX || if (ncycles > ATMEL_SMC_MODE_TDF_MAX) {
ncycles < ATMEL_SMC_MODE_TDF_MIN) {
ret = -EINVAL; ret = -EINVAL;
goto out; goto out;
} }
if (ncycles < ATMEL_SMC_MODE_TDF_MIN)
ncycles = ATMEL_SMC_MODE_TDF_MIN;
smcconf->mode |= ATMEL_SMC_MODE_TDF(ncycles); smcconf->mode |= ATMEL_SMC_MODE_TDF(ncycles);
} }
...@@ -263,7 +265,7 @@ static int atmel_ebi_xslate_smc_config(struct atmel_ebi_dev *ebid, ...@@ -263,7 +265,7 @@ static int atmel_ebi_xslate_smc_config(struct atmel_ebi_dev *ebid,
} }
ret = atmel_ebi_xslate_smc_timings(ebid, np, &conf->smcconf); ret = atmel_ebi_xslate_smc_timings(ebid, np, &conf->smcconf);
if (ret) if (ret < 0)
return -EINVAL; return -EINVAL;
if ((ret > 0 && !required) || (!ret && required)) { if ((ret > 0 && !required) || (!ret && required)) {
......
...@@ -206,7 +206,7 @@ EXPORT_SYMBOL_GPL(atmel_smc_cs_conf_set_pulse); ...@@ -206,7 +206,7 @@ EXPORT_SYMBOL_GPL(atmel_smc_cs_conf_set_pulse);
* parameter * parameter
* *
* This function encodes the @ncycles value as described in the datasheet * This function encodes the @ncycles value as described in the datasheet
* (section "SMC Pulse Register"), and then stores the result in the * (section "SMC Cycle Register"), and then stores the result in the
* @conf->setup field at @shift position. * @conf->setup field at @shift position.
* *
* Returns -EINVAL if @shift is invalid, -ERANGE if @ncycles does not fit in * Returns -EINVAL if @shift is invalid, -ERANGE if @ncycles does not fit in
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment