Driver fixes for 4.13:
- Multiple EBI/SMC timing setting/calculation fixes -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEXx9Viay1+e7J/aM4AyWl4gNJNJIFAlma26oACgkQAyWl4gNJ NJIW7BAApmoE1+Gr+TmjlhFS/hoAdgo+S3iSn2KficAOCtd1dSW76FultYgSYZli Y/5SM0O7xw8otAg3lAy7xAeFR/rrRDCUXOgKMl3y/rfgRr+xbk4COh889jNrmoGw zKghsIjcwMvLssrx/+ix92yHaB8uZx9OSB2m2xTVUq5hJXAsTmD3qa/qXDWBMeVj Db8WPYTQxhoFeFlIMxzH4Gpe+ILcbQsoxf3tpmlarBk1IjRGEDwAanGl1HweKgaA zB+KclOTGCDbBFwkV46nplX04IHPFdqm/nZfrs53Xu8WdKAlFpClZbxuUFHGL0b7 SaDT1scTXiGQYdpqFArHTBTVCMNsdYqESu0WrrsZSwNLpxfo57YIddORSzHjEkon 9AECx+srOLXAX7P13sag14xyD3v7N9s9g85ulG/kV+dNq/yAOndZZBE2lip0KkdU hNVA5I9bB7kpQjJ2ydqWRYnbPx8Xhwz2xSWq/buTTF4RWhN27X6J/vCkivkcLSJA paXkRLPdO3fJN4BUoROR9HhOT52pfG+1bjnrN4i01ARXT3G/EG5ZnOCbWRPwKMyw 8vkO7RvK0zGt3L6O7AlFzphqrnbL7DdhDwe3/fpR4erw8b0jowwp89CoOr1QepF/ Q8MIbyoGjP1ZkM+Z+iqDRlNffyHlgBOqVSJB04dfTjrGvQ9sjH8= =qbDL -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
324c654dfc
|
@ -72,7 +72,7 @@ struct atmel_smc_timing_xlate {
|
|||
{ .name = nm, .converter = atmel_smc_cs_conf_set_pulse, .shift = 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,
|
||||
struct atmel_ebi_dev_config *conf)
|
||||
|
@ -120,12 +120,14 @@ static int atmel_ebi_xslate_smc_timings(struct atmel_ebi_dev *ebid,
|
|||
if (!ret) {
|
||||
required = true;
|
||||
ncycles = DIV_ROUND_UP(val, clk_period_ns);
|
||||
if (ncycles > ATMEL_SMC_MODE_TDF_MAX ||
|
||||
ncycles < ATMEL_SMC_MODE_TDF_MIN) {
|
||||
if (ncycles > ATMEL_SMC_MODE_TDF_MAX) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (ncycles < ATMEL_SMC_MODE_TDF_MIN)
|
||||
ncycles = ATMEL_SMC_MODE_TDF_MIN;
|
||||
|
||||
smcconf->mode |= ATMEL_SMC_MODE_TDF(ncycles);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
if (ret)
|
||||
if (ret < 0)
|
||||
return -EINVAL;
|
||||
|
||||
if ((ret > 0 && !required) || (!ret && required)) {
|
||||
|
|
|
@ -206,7 +206,7 @@ EXPORT_SYMBOL_GPL(atmel_smc_cs_conf_set_pulse);
|
|||
* parameter
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* Returns -EINVAL if @shift is invalid, -ERANGE if @ncycles does not fit in
|
||||
|
|
Loading…
Reference in New Issue