Re: Initial signal voltage ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2015-08-27 at 16:01 +0200, Ulf Hansson wrote:
> On 25 August 2015 at 14:20, Joakim Tjernlund
> <joakim.tjernlund@xxxxxxxxxxxx> wrote:
> > On Tue, 2015-08-25 at 14:05 +0200, Ulf Hansson wrote:
> > > On 10 August 2015 at 18:50, Joakim Tjernlund
> > > <joakim.tjernlund@xxxxxxxxxxxx> wrote:
> > > > in mmc_power_up() we have:
> > > >         /* Try to set signal voltage to 3.3V but fall back to 1.8v or 1.2v */
> > > >         if (__mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_330) == 0)
> > > >                 dev_err(mmc_dev(host), "Initial signal voltage of 3.3v\n");
> > > >         else if (__mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180) == 0)
> > > >                 dev_err(mmc_dev(host), "Initial signal voltage of 1.8v\n");
> > > >         else if (__mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_120) == 0)
> > > >                 dev_err(mmc_dev(host), "Initial signal voltage of 1.2v\n");
> > > > 
> > > > Here one jut brutally tries to set the initial power to 3.3 but nowhere in
> > > > general code there is a check if the controller can handle this w.r.t
> > > > HOST CAPS.
> > > 
> > > You are right, it's brutal. :-)
> > > 
> > > Perhaps the host driver should return -EINVAL when a voltage level
> > > can't be reached. The above code should not print messages as errors,
> > > at least as long some voltage level can be used.
> > > 
> > > > Where should this check be performed, I am guessing either here or in sdhci?
> > > > This is all new to me so I am just throwing this out there
> > > 
> > > Do you want to send a patch?
> > 
> > No, you didn't answer the question
> 
> Sorry for being a bit vague. I looked a bit more into this.
> 
> Currently drivers return error codes according to when they can't set
> the requested voltage level, so that's all fine - right?

Yes, they should. Hovever it seems like my fsl controller cannot.
There is VS18,VS30 and VS33 bits in hostcap register but theses are
always set :(

> 
> Moreover, the above code snippet is modified by you (or someone else)
> locally, since in the upstream version of the code, the prints are

ahh, yes a did that while debugging.

> done a debug level. That's also okay, I think.
> Perhaps changing the last print to warn level instead, since reaching
> that point would mean all attempts have failed.

Since not all controllers can tell what VS is you have to specify that, in my case I
do it in my device tree as there is a way to do that already.

So I think mmc_power_up() should mask away VS not supported and then try the remaining.
The exact way to do this escapes me as I am not familiar with this area yet.

 Jocke--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux