<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/power/avs, branch v4.5</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>PM / AVS: rockchip-io: Fix module autoload for OF platform driver</title>
<updated>2015-10-14T00:38:53+00:00</updated>
<author>
<name>Luis de Bethencourt</name>
<email>luisbg@osg.samsung.com</email>
</author>
<published>2015-10-02T14:27:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=fa743d96e76c3c74aa379ba828f10119b87ff88c'/>
<id>fa743d96e76c3c74aa379ba828f10119b87ff88c</id>
<content type='text'>
This platform driver has a OF device ID table but the OF module
alias information is not created so module autoloading won't work.

Signed-off-by: Luis de Bethencourt &lt;luisbg@osg.samsung.com&gt;
Reviewed-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Acked-by: Kevin Hilman &lt;khilman@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This platform driver has a OF device ID table but the OF module
alias information is not created so module autoloading won't work.

Signed-off-by: Luis de Bethencourt &lt;luisbg@osg.samsung.com&gt;
Reviewed-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Acked-by: Kevin Hilman &lt;khilman@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PM / AVS: rockchip-io: add io selectors and supplies for rk3368</title>
<updated>2015-08-08T01:07:52+00:00</updated>
<author>
<name>Heiko Stuebner</name>
<email>heiko@sntech.de</email>
</author>
<published>2015-08-04T19:37:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3fc147e9156f6c176e5543c59d31182252f14933'/>
<id>3fc147e9156f6c176e5543c59d31182252f14933</id>
<content type='text'>
This adds the necessary data for handling io voltage domains on the rk3368.
As interesting tidbit, the rk3368 contains two separate iodomain areas.
One in the regular General Register Files (GRF) and one in PMUGRF in the
pmu power domain.

Signed-off-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Acked-by: Kevin Hilman &lt;khilman@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds the necessary data for handling io voltage domains on the rk3368.
As interesting tidbit, the rk3368 contains two separate iodomain areas.
One in the regular General Register Files (GRF) and one in PMUGRF in the
pmu power domain.

Signed-off-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Acked-by: Kevin Hilman &lt;khilman@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PM / AVS: rockchip-io: depend on CONFIG_POWER_AVS</title>
<updated>2015-08-08T01:07:52+00:00</updated>
<author>
<name>Heiko Stuebner</name>
<email>heiko@sntech.de</email>
</author>
<published>2015-08-04T19:36:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=28c1f1628ee4b163e615eefe1b6463e3d229a873'/>
<id>28c1f1628ee4b163e615eefe1b6463e3d229a873</id>
<content type='text'>
The rockchip io-domain driver currently only depends on ARCH_ROCKCHIP
itself. This makes it possible to select the power-domain driver, but
not the POWER_AVS class and results in the iodomain-driver not getting
build in this case.

So add the additional dependency, which also results in the driver
config option now being placed nicely into the AVS submenu.

Fixes: 662a958638bd ("PM / AVS: rockchip-io: add driver handling Rockchip io domains")
Signed-off-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Acked-by: Kevin Hilman &lt;khilman@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The rockchip io-domain driver currently only depends on ARCH_ROCKCHIP
itself. This makes it possible to select the power-domain driver, but
not the POWER_AVS class and results in the iodomain-driver not getting
build in this case.

So add the additional dependency, which also results in the driver
config option now being placed nicely into the AVS submenu.

Fixes: 662a958638bd ("PM / AVS: rockchip-io: add driver handling Rockchip io domains")
Signed-off-by: Heiko Stuebner &lt;heiko@sntech.de&gt;
Acked-by: Kevin Hilman &lt;khilman@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PM / AVS: rockchip-io: add driver handling Rockchip io domains</title>
<updated>2014-09-25T16:57:23+00:00</updated>
<author>
<name>Heiko Stübner</name>
<email>heiko@sntech.de</email>
</author>
<published>2014-09-11T22:48:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=662a958638bdb802451da6933e7ddb4a69517893'/>
<id>662a958638bdb802451da6933e7ddb4a69517893</id>
<content type='text'>
IO domain voltages on some Rockchip SoCs are variable but need to be
kept in sync between the regulators and the SoC using a special
register.

A specific example using rk3288:
- If the regulator hooked up to a pin like SDMMC0_VDD is 3.3V then
  bit 7 of GRF_IO_VSEL needs to be 0.  If the regulator hooked up to
  that same pin is 1.8V then bit 7 of GRF_IO_VSEL needs to be 1.

Said another way, this driver simply handles keeping bits in the SoC's
general register file (GRF) in sync with the actual value of a voltage
hooked up to the pins.

Note that this driver specifically doesn't include:
- any logic for deciding what voltage we should set regulators to
- any logic for deciding whether regulators (or internal SoC blocks)
  should have power or not have power

If there were some other software that had the smarts of making
decisions about regulators, it would work in conjunction with this
driver.  When that other software adjusted a regulator's voltage then
this driver would handle telling the SoC about it.  A good example is
vqmmc for SD.  In that case the dw_mmc driver simply is told about a
regulator.  It changes the regulator between 3.3V and 1.8V at the
right time.  This driver notices the change and makes sure that the
SoC is on the same page.

Signed-off-by: Heiko Stübner &lt;heiko@sntech.de&gt;
Signed-off-by: Doug Anderson &lt;dianders@chromium.org&gt;
Reviewed-by: Santosh Shilimkar &lt;santosh.shilimkar@ti.com&gt;
[khilman: fix compiler warnings]
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
IO domain voltages on some Rockchip SoCs are variable but need to be
kept in sync between the regulators and the SoC using a special
register.

A specific example using rk3288:
- If the regulator hooked up to a pin like SDMMC0_VDD is 3.3V then
  bit 7 of GRF_IO_VSEL needs to be 0.  If the regulator hooked up to
  that same pin is 1.8V then bit 7 of GRF_IO_VSEL needs to be 1.

Said another way, this driver simply handles keeping bits in the SoC's
general register file (GRF) in sync with the actual value of a voltage
hooked up to the pins.

Note that this driver specifically doesn't include:
- any logic for deciding what voltage we should set regulators to
- any logic for deciding whether regulators (or internal SoC blocks)
  should have power or not have power

If there were some other software that had the smarts of making
decisions about regulators, it would work in conjunction with this
driver.  When that other software adjusted a regulator's voltage then
this driver would handle telling the SoC about it.  A good example is
vqmmc for SD.  In that case the dw_mmc driver simply is told about a
regulator.  It changes the regulator between 3.3V and 1.8V at the
right time.  This driver notices the change and makes sure that the
SoC is on the same page.

Signed-off-by: Heiko Stübner &lt;heiko@sntech.de&gt;
Signed-off-by: Doug Anderson &lt;dianders@chromium.org&gt;
Reviewed-by: Santosh Shilimkar &lt;santosh.shilimkar@ti.com&gt;
[khilman: fix compiler warnings]
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PM / AVS: SmartReflex: use devm_* API to initialize SmartReflex</title>
<updated>2013-06-10T17:50:48+00:00</updated>
<author>
<name>Andrii Tseglytskyi</name>
<email>andrii.tseglytskyi@ti.com</email>
</author>
<published>2013-05-30T10:43:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=efca406b940e93e6af38c597eecd5fb79b39b7ea'/>
<id>efca406b940e93e6af38c597eecd5fb79b39b7ea</id>
<content type='text'>
Use of of devm_* API for resource allocation provides benefits such
as auto handling of resource free. This reduces possibility have
memory leaks in case of wrong error handling. All direct release
calls should be removed to avoid races.

Reported-by: Grygorii Strashko &lt;grygorii.strashko@ti.com&gt;
Signed-off-by: Andrii Tseglytskyi &lt;andrii.tseglytskyi@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use of of devm_* API for resource allocation provides benefits such
as auto handling of resource free. This reduces possibility have
memory leaks in case of wrong error handling. All direct release
calls should be removed to avoid races.

Reported-by: Grygorii Strashko &lt;grygorii.strashko@ti.com&gt;
Signed-off-by: Andrii Tseglytskyi &lt;andrii.tseglytskyi@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PM / AVS: SmartReflex: use omap_sr * for enable/disable interface</title>
<updated>2013-06-10T17:46:18+00:00</updated>
<author>
<name>Andrii Tseglytskyi</name>
<email>andrii.tseglytskyi@ti.com</email>
</author>
<published>2013-05-27T11:09:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=299066bb376ef7720cc3d8de95d5b967c5446863'/>
<id>299066bb376ef7720cc3d8de95d5b967c5446863</id>
<content type='text'>
SmartReflex driver interface is natively divided to two parts:

- external SmartReflex interface
- interface between SmartReflex driver and SmartReflex Class

Functions which belong to AVS class interface can use
struct omap_sr* instead of struct voltatedomain*, to provide a
direct connection between SR driver and SR class. This allows
us to optimize and not do additional lookups where none is
required.

sr_enable() and sr_disable() are interface functions between
SR driver and SR class. They are typically used by Class driver
to enable/disable SmartReflex hardware module.
Now they take struct omap_sr* as input parameter.

Signed-off-by: Andrii Tseglytskyi &lt;andrii.tseglytskyi@ti.com&gt;
Acked-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
SmartReflex driver interface is natively divided to two parts:

- external SmartReflex interface
- interface between SmartReflex driver and SmartReflex Class

Functions which belong to AVS class interface can use
struct omap_sr* instead of struct voltatedomain*, to provide a
direct connection between SR driver and SR class. This allows
us to optimize and not do additional lookups where none is
required.

sr_enable() and sr_disable() are interface functions between
SR driver and SR class. They are typically used by Class driver
to enable/disable SmartReflex hardware module.
Now they take struct omap_sr* as input parameter.

Signed-off-by: Andrii Tseglytskyi &lt;andrii.tseglytskyi@ti.com&gt;
Acked-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PM / AVS: SmartReflex: use omap_sr * for minmax interfaces</title>
<updated>2013-06-10T17:46:17+00:00</updated>
<author>
<name>Andrii Tseglytskyi</name>
<email>andrii.tseglytskyi@ti.com</email>
</author>
<published>2013-05-27T11:09:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6c80573415fe47450579d5d8bfab53b304d803ed'/>
<id>6c80573415fe47450579d5d8bfab53b304d803ed</id>
<content type='text'>
SmartReflex driver interface is natively divided to two parts:

- external SmartReflex interface
- interface between SmartReflex driver and SmartReflex Class

Functions which belong to AVS class interface can use
struct omap_sr* instead of struct voltatedomain*, to provide a
direct connection between SR driver and SR class. This allows
us to optimize and not do additional lookups where none is
required.

sr_configure_minmax() is interface function between SR driver
and SR class. It is typically used by Class driver to
configure MINMAXAVG module inside SmartReflex module.
Now it takes struct omap_sr* as input parameter.

Signed-off-by: Andrii Tseglytskyi &lt;andrii.tseglytskyi@ti.com&gt;
Acked-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
SmartReflex driver interface is natively divided to two parts:

- external SmartReflex interface
- interface between SmartReflex driver and SmartReflex Class

Functions which belong to AVS class interface can use
struct omap_sr* instead of struct voltatedomain*, to provide a
direct connection between SR driver and SR class. This allows
us to optimize and not do additional lookups where none is
required.

sr_configure_minmax() is interface function between SR driver
and SR class. It is typically used by Class driver to
configure MINMAXAVG module inside SmartReflex module.
Now it takes struct omap_sr* as input parameter.

Signed-off-by: Andrii Tseglytskyi &lt;andrii.tseglytskyi@ti.com&gt;
Acked-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PM / AVS: SmartReflex: use omap_sr * for errgen interfaces</title>
<updated>2013-06-10T17:46:17+00:00</updated>
<author>
<name>Andrii Tseglytskyi</name>
<email>andrii.tseglytskyi@ti.com</email>
</author>
<published>2013-05-27T11:09:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3dfc35ffd938abe67f2559db6b517536a207df24'/>
<id>3dfc35ffd938abe67f2559db6b517536a207df24</id>
<content type='text'>
SmartReflex driver interface is natively divided to two parts:

- external SmartReflex interface
- interface between SmartReflex driver and SmartReflex Class

Functions which belong to AVS class interface can use
struct omap_sr* instead of struct voltatedomain*, to provide a
direct connection between SR driver and SR class. This allows
us to optimize and not do additional lookups where none is
required.

sr_disable_errgen() and sr_configure_errgen() are interface
functions between SR driver and SR class. They are typically
used by Class driver to configure error generator module during
SmartReflex enable/disable sequence.
Now they take struct omap_sr* as input parameter.

Signed-off-by: Andrii Tseglytskyi &lt;andrii.tseglytskyi@ti.com&gt;
Acked-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
SmartReflex driver interface is natively divided to two parts:

- external SmartReflex interface
- interface between SmartReflex driver and SmartReflex Class

Functions which belong to AVS class interface can use
struct omap_sr* instead of struct voltatedomain*, to provide a
direct connection between SR driver and SR class. This allows
us to optimize and not do additional lookups where none is
required.

sr_disable_errgen() and sr_configure_errgen() are interface
functions between SR driver and SR class. They are typically
used by Class driver to configure error generator module during
SmartReflex enable/disable sequence.
Now they take struct omap_sr* as input parameter.

Signed-off-by: Andrii Tseglytskyi &lt;andrii.tseglytskyi@ti.com&gt;
Acked-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PM / AVS: SmartReflex: fix driver name</title>
<updated>2013-06-10T17:35:17+00:00</updated>
<author>
<name>Andrii Tseglytskyi</name>
<email>andrii.tseglytskyi@ti.com</email>
</author>
<published>2013-05-30T10:08:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=33da28246f8cba3f1ffbca9434622d93afcde013'/>
<id>33da28246f8cba3f1ffbca9434622d93afcde013</id>
<content type='text'>
DRIVER_NAME was undefined for SmartReflex. Now it is
defined with valid value "smartreflex". It is needed
to define proper value for:
MODULE_ALIAS("platform:" DRIVER_NAME);

Signed-off-by: Andrii Tseglytskyi &lt;andrii.tseglytskyi@ti.com&gt;
Acked-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
DRIVER_NAME was undefined for SmartReflex. Now it is
defined with valid value "smartreflex". It is needed
to define proper value for:
MODULE_ALIAS("platform:" DRIVER_NAME);

Signed-off-by: Andrii Tseglytskyi &lt;andrii.tseglytskyi@ti.com&gt;
Acked-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>PM / AVS: SmartReflex: disable runtime PM on driver remove</title>
<updated>2013-06-10T17:35:17+00:00</updated>
<author>
<name>Andrii Tseglytskyi</name>
<email>andrii.tseglytskyi@ti.com</email>
</author>
<published>2013-05-30T10:08:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=bd4a36bec0e63941881608ad38351778748675e0'/>
<id>bd4a36bec0e63941881608ad38351778748675e0</id>
<content type='text'>
Runtime PM should be disabled for device on driver remove,
otherwise runtime PM will be not balanced, and this will cause
an error message, on next driver probe.

Signed-off-by: Andrii Tseglytskyi &lt;andrii.tseglytskyi@ti.com&gt;
Acked-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Runtime PM should be disabled for device on driver remove,
otherwise runtime PM will be not balanced, and this will cause
an error message, on next driver probe.

Signed-off-by: Andrii Tseglytskyi &lt;andrii.tseglytskyi@ti.com&gt;
Acked-by: Nishanth Menon &lt;nm@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@linaro.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
