aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/mach-omap2/powerdomain.h
AgeCommit message (Collapse)AuthorFilesLines
2019-06-19treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500Thomas Gleixner1-4/+1
Based on 2 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license version 2 as published by the free software foundation this program is free software you can redistribute it and or modify it under the terms of the gnu general public license version 2 as published by the free software foundation # extracted by the scancode license scanner the SPDX license identifier GPL-2.0-only has been chosen to replace the boilerplate/reference in 4122 file(s). Signed-off-by: Thomas Gleixner <[email protected]> Reviewed-by: Enrico Weigelt <[email protected]> Reviewed-by: Kate Stewart <[email protected]> Reviewed-by: Allison Randal <[email protected]> Cc: [email protected] Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
2018-05-18ARM: OMAP2+: Add functions to save and restore powerdomain contextRuss Dill1-0/+7
The powerdomain control registers are stored in the WKUP powerdomain on AM33XX/AM43XX, which is lost on RTC-only suspend and also hibernate. This adds context save and restore functions for those registers. Sometimes the powerdomain state does not need to change, perhaps we only need to change memory retention states, so make sure the restored state is different from the current state before we wait for a transition. Signed-off-by: Keerthy <[email protected]> Signed-off-by: Dave Gerlach <[email protected]> Signed-off-by: Russ Dill <[email protected]> Signed-off-by: Tony Lindgren <[email protected]>
2015-01-07ARM: OMAP2+: powerdomain.c: Remove some unused functionsRickard Strandqvist1-5/+0
Removes some functions that are not used anywhere: pwrdm_get_voltdm() pwrdm_for_each_clkdm() pwrdm_del_clkdm() This was partially found by using a static code analysis program called cppcheck. Signed-off-by: Rickard Strandqvist <[email protected]> Acked-by: Nishanth Menon <[email protected]> Signed-off-by: Tony Lindgren <[email protected]>
2014-09-08ARM: OMAP2+: powerdomain: introduce logic for finding valid power domainNishanth Menon1-0/+3
powerdomain configuration in OMAP is done using PWRSTCTRL register for each power domain. However, PRCM lets us write any value we'd like to the logic and power domain target states, however the SoC integration tends to actually function only at a few discrete states. These valid states are already in our powerdomains_xxx_data.c file. So, provide a function to easily query valid low power state that the power domain is allowed to go to. Based on work originally done by Jean Pihet <[email protected]> https://patchwork.kernel.org/patch/1325091/ . There is no attempt to create a new powerdomain solution here, except fixing issues seen attempting invalid programming attempts. Future consolidation to the generic powerdomain framework should consider this requirement as well. Similar solutions have been done in product kernels in the past such as: https://android.googlesource.com/kernel/omap.git/+blame/android-omap-panda-3.0/arch/arm/mach-omap2/pm44xx.c Signed-off-by: Nishanth Menon <[email protected]> Reviewed-by: Kevin Hilman <[email protected]> Acked-by: Santosh Shilimkar <[email protected]>
2014-09-08ARM: OMAP: DRA7: powerdomain data: fix powerdomain powerstateNishanth Menon1-0/+1
DRA7 supports only CSWR for CPU, MPU power domains. Core power domain supports upto INA. Signed-off-by: Nishanth Menon <[email protected]> Reviewed-by: Kevin Hilman <[email protected]> Acked-by: Santosh Shilimkar <[email protected]>
2014-05-15ARM: OMAP2+: PRCM: cleanup some header includesTero Kristo1-2/+1
Some of the includes are totally unnecessary, remove some others in preparation to make the PRCM its own driver. Signed-off-by: Tero Kristo <[email protected]> [[email protected]: updated to apply; fixed build error on OMAP2xxx-only configs] Signed-off-by: Paul Walmsley <[email protected]>
2013-10-13ARM: OMAP2+: PM: AM43x powerdomain dataAmbresh K1-0/+1
Add the data file to describe all power domains in AM43x SoC. OMAP4 powerdomain operations is being reused here. Signed-off-by: Ambresh K <[email protected]> Signed-off-by: Afzal Mohammed <[email protected]> Acked-by: Rajendra Nayak <[email protected]> Acked-by: Tony Lindgren <[email protected]> Signed-off-by: Paul Walmsley <[email protected]>
2013-08-23ARM: OMAP: DRA7: powerdomain: Add DRA7XX data and update headerAmbresh K1-0/+1
Add the data file to describe all power domains inside the DRA7XX SoC. Signed-off-by: Ambresh K <[email protected]> Signed-off-by: Tero Kristo <[email protected]> Signed-off-by: Rajendra Nayak <[email protected]> [[email protected]: added generation notation to comments] Signed-off-by: Paul Walmsley <[email protected]>
2013-06-20Merge branch 'omap/pm-voltdomain-cleanup' into next/socArnd Bergmann1-0/+2
Conflicts: arch/arm/mach-omap2/Makefile arch/arm/mach-omap2/io.c Signed-off-by: Arnd Bergmann <[email protected]>
2013-06-17ARM: OMAP2+: Powerdomain: Remove the need to always have a voltdm associated ↵Rajendra Nayak1-0/+2
to a pwrdm The powerdomain framework currently expects all powerdomains to be associated with a corresponding voltagedomain. For some SoCs' (like the already existing AM33xx family, or for the upcoming AM437x and DRA7 SoCs') which do not have a Voltage controller/Voltage Processor (neither the SR I2C bus to communicate with the PMIC) there is no need for a Powerdomain to have a voltage domain association since there is no auto-scaling of voltages possible using the voltage FSM. Extend the arch operations to add an api which the powerdomain core can then use to identify if a voltdm lookup and association for a powerdomain is really needed. Acked-by: Nishanth Menon <[email protected]> Acked-by: Vaibhav Hiremath <[email protected]> Signed-off-by: Rajendra Nayak <[email protected]> Acked-by: Santosh Shilimkar <[email protected]> Tested-by: Afzal Mohammed <[email protected]> # am335x evm Signed-off-by: Kevin Hilman <[email protected]>
2013-06-08ARM: OMAP5: powerdomain data: Add OMAP54XX data and update the headerBenoit Cousson1-0/+1
Add the data file to describe all power domains inside the OMAP54XX soc. Cc: Paul Walmsley <[email protected]> Signed-off-by: Benoit Cousson <[email protected]> [[email protected]: Generated es2.0 data] Signed-off-by: Santosh Shilimkar <[email protected]> Signed-off-by: Paul Walmsley <[email protected]>
2013-01-29ARM: OMAP2+: powerdomain: fix whitespace, improve flag commentsPaul Walmsley1-12/+14
Fix some whitespace problems introduced by commit da03ce65b5431245b9cd20db3edaaa6b9f5c8dc1 ("OMAP3: powerdomain data: add voltage domains"). Also, improve the documentation for the struct powerdomain.flags field. Signed-off-by: Paul Walmsley <[email protected]> Cc: Kevin Hilman <[email protected]>
2013-01-29ARM: OMAP2+: powerdomain/clockdomain: add a per-powerdomain spinlockPaul Walmsley1-3/+8
Add a per-powerdomain spinlock. Use that instead of the clockdomain spinlock. Add pwrdm_lock()/pwrdm_unlock() functions to allow other code to acquire or release the powerdomain spinlock without reaching directly into the struct powerdomain. Signed-off-by: Paul Walmsley <[email protected]> Cc: Jean Pihet <[email protected]>
2013-01-29ARM: OMAP2+: PM/powerdomain: move omap_set_pwrdm_state() to powerdomain codePaul Walmsley1-1/+12
Move omap_set_pwrdm_state() from the PM code to the powerdomain code, and refactor it to split it up into several functions. A subsequent patch will rename it to conform with the existing powerdomain function names. This version includes some additional documentation, based on a suggestion from Jean Pihet. It also modifies omap_set_pwrdm_state() to not bail out early unless both the powerdomain current power state and the next power state are equal. (Previously it would terminate early if the next power state was equal to the target power state, which was insufficiently rigorous.) Signed-off-by: Paul Walmsley <[email protected]> Cc: Jean Pihet <[email protected]> Cc: Kevin Hilman <[email protected]> Cc: Tero Kristo <[email protected]>
2013-01-29ARM: OMAP2: PM/powerdomain: drop unnecessary pwrdm_wait_transition()Paul Walmsley1-2/+0
Drop an unnecessary pwrdm_wait_transition() from mach-omap2/pm.c - it's called by the subsequent pwrdm_state_switch(). Also get rid of pwrdm_wait_transition() in the powerdomain code - there's no longer any need to export this function. Signed-off-by: Paul Walmsley <[email protected]> Cc: Kevin Hilman <[email protected]>
2012-10-18ARM: OMAP: Split plat/cpu.h into local soc.h for mach-omap1 and mach-omap2Tony Lindgren1-2/+0
We want to remove plat/cpu.h. To do this, let's first split it to private soc.h to mach-omap1 and mach-omap2. We have to keep plat/cpu.h around until the remaining drivers are fixed, so let's include the local soc.h in plat/cpu.h and for drivers still including plat/cpu.h. Once the drivers are fixed not to include plat/cpu.h, we can remove the file. This is needed for the ARM common zImage support. [[email protected]: updated to not print a warning] Signed-off-by: Tony Lindgren <[email protected]>
2012-07-23Merge tag 'pm' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-socLinus Torvalds1-2/+2
Pull arm-soc power management changes from Arnd Bergmann: "These are various power management related changes, mainly concerning cpuidle on i.MX and OMAP, as well as a the move of the omap smartreflex driver to live in the power subsystem." Fix up conflicts in arch/arm/mach-{imx/mach-imx6q.c,omap2/prm2xxx_3xxx.h} * tag 'pm' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (37 commits) ARM: OMAP2+: PM: fix IRQ_NOAUTOEN removal by mis-merge ARM: OMAP2+: do not allow SmartReflex to be built as a module ARM: OMAP2: Use hwmod to initialize mmc for 2420 ARM: OMAP3: PM: cpuidle: optimize the clkdm idle latency in C1 state ARM: OMAP3: PM: cpuidle: optimize the PER latency in C1 state ARM: OMAP3: PM: cpuidle: default to C1 in next_valid_state ARM: OMAP3: PM: cleanup cam_pwrdm leftovers ARM: OMAP3: PM: call pre/post transition per powerdomain ARM: OMAP2+: powerdomain: allow pre/post transtion to be per pwrdm ARM: OMAP3: PM: Remove IO Daisychain control from cpuidle ARM: OMAP3PLUS: hwmod: reconfigure IO Daisychain during hwmod mux ARM: OMAP3+: PRM: Enable IO wake up ARM: OMAP4: PRM: Add IO Daisychain support ARM: OMAP3: PM: Move IO Daisychain function to omap3 prm file ARM: OMAP3: PM: correct enable/disable of daisy io chain ARM: OMAP2+: PRM: fix compile for OMAP4-only build W1: OMAP HDQ1W: use runtime PM ARM: OMAP2+: HDQ1W: use omap_device W1: OMAP HDQ1W: use 32-bit register accesses W1: OMAP HDQ1W: allow driver to be built on all OMAP2+ ...
2012-06-25ARM: OMAP2+: powerdomain: allow pre/post transtion to be per pwrdmKevin Hilman1-2/+2
Iteration over all power domains in the idle path is unnecessary since only power domains that are transitioning need to be accounted for. Also PRCM register accesses are known to be expensive, so the additional latency added to the idle path is signficiant. In order allow the pre/post transitions to be isolated and called per-pwrdm, change the API so passing in a specific power domain will trigger the pre/post transtion accounting for only that specific power domain. Passing NULL means iterating over all power domains as is current behavior. Reviewed-by: Santosh Shilimkar <[email protected]> Tested-by: Santosh Shilimkar <[email protected]> Tested-by: Grazvydas Ignotas <[email protected]> Acked-by: Paul Walmsley <[email protected]> Signed-off-by: Kevin Hilman <[email protected]>
2012-06-18ARM: OMAP AM33xx: powerdomains: add AM335x supportVaibhav Hiremath1-2/+21
Add offset & mask fields to struct powerdomain In case of AM33xx family of devices, there is no consistency between PWRSTCTRL & PWRSTST register offsers in PRM space, for example - PRM_XXX PWRSTCTRL PWRSTST ======================================= PRM_PER_MOD: 0x0C, 0x08 PRM_WKUP_MOD: 0x04, 0x08 PRM_MPU_MOD: 0x00, 0x04 PRM_DEVICE_MOD: NA, NA And also, there is no consistency between bit-offsets inside PWRSTCTRL & PWRSTST register, for example - PRM_XXX LOGICRET MEMON MEMRET ======================================= GFX_PWRCTRL: 2, 17, 6 PER_PWRCTRL: 3, 25, 29 MPU_PWRCTRL: 2, 18, 22 WKUP_PWRCTRL: 3, NA, NA This means, we need to maintain and pass on all this information in powerdomain handle; so adding fields for, - PWRSTCTRL/ST register offset - Logic retention state mask - mem_on/ret/pwrst/retst mask Currently, this fields is only applicable and used for AM33XX devices. Signed-off-by: Vaibhav Hiremath <[email protected]> Cc: Benoit Cousson <[email protected]> Cc: Tony Lindgren <[email protected]> Cc: Kevin Hilman <[email protected]> Cc: Paul Walmsley <[email protected]> Cc: Rajendra Nayak <[email protected]> [[email protected]: this patch is a combination of "Add offset & mask fields to struct powerdomain" and the powerdomain portions of "ARM: OMAP3+: am33xx: Add powerdomain & PRM support"; updated for 3.5] Signed-off-by: Paul Walmsley <[email protected]>
2012-05-07ARM: OMAP2+: powerdomain: Get rid off duplicate pwrdm_clkdm_state_switch() APISantosh Shilimkar1-1/+0
With patch 'ARM: OMAP2+: powerdomain: Wait for powerdomain transition in pwrdm_state_switch()', the pwrdm_clkdm_state_switch() API becomes duplicate of pwrdm_state_switch(). Get rid off duplicate pwrdm_clkdm_state_switch() and update the users of it with pwrdm_state_switch() Signed-off-by: Santosh Shilimkar <[email protected]> Cc: Rajendra Nayak <[email protected]> Cc: Paul Walmsley <[email protected]> Signed-off-by: Paul Walmsley <[email protected]>
2011-11-04ARM: OMAP: change get_context_loss_count ret value to intTomi Valkeinen1-1/+1
get_context_loss_count functions return context loss count as u32, and zero means an error. However, zero is also returned when context has never been lost and could also be returned when the context loss count has wrapped and goes to zero. Change the functions to return an int, with negative value meaning an error. OMAP HSMMC code uses omap_pm_get_dev_context_loss_count(), but as the hsmmc code handles the returned value as an int, with negative value meaning an error, this patch actually fixes hsmmc code also. Signed-off-by: Tomi Valkeinen <[email protected]> Acked-by: Kevin Hilman <[email protected]> Acked-by: Paul Walmsley <[email protected]> [[email protected]: updated to fix a warning with recent dmtimer changes] Signed-off-by: Tony Lindgren <[email protected]>
2011-09-15OMAP2+: voltage: keep track of powerdomains in each voltagedomainKevin Hilman1-0/+2
When a powerdomain is registered and it has an associated voltage domain, add the powerdomain to the voltagedomain using voltdm_add_pwrdm(). Also add voltagedomain iterator helper functions to iterate over all registered voltagedomains and all powerdomains associated with a voltagedomain. Modeled after a similar relationship between clockdomains and powerdomains. Signed-off-by: Kevin Hilman <[email protected]>
2011-09-15OMAP2+: powerdomain: add voltage domain lookup during registerKevin Hilman1-0/+1
When a powerdomain is registered, lookup the voltage domain by name and keep a pointer to the containing voltagedomain in the powerdomain structure. Modeled after similar method between powerdomain and clockdomain layers. Signed-off-by: Kevin Hilman <[email protected]>
2011-09-15OMAP2+: powerdomain: add voltagedomain to struct powerdomainKevin Hilman1-0/+7
Each powerdomain is associated with a voltage domain. Add an entry to struct powerdomain where the enclosing voltagedomain can be referenced. Modeled after similar relationship between clockdomains and powerdomains. Signed-off-by: Kevin Hilman <[email protected]>
2011-09-14OMAP: powerdomain: remove omap_chip bitmasksPaul Walmsley1-3/+2
At Tony's request, remove the omap_chip bitmasks from the powerdomain definitions. Instead, initialize powerdomains based on one or more lists that are applicable to a particular SoC family, variant, and silicon revision. Gražvydas Ignotas <[email protected]> found and reported a bug in a related patch that also applied to this patch - thanks Gražvydas. Signed-off-by: Paul Walmsley <[email protected]> Cc: Gražvydas Ignotas <[email protected]>
2011-09-14OMAP: powerdomain: split pwrdm_init() into two functionsPaul Walmsley1-1/+3
In preparation for OMAP_CHIP() removal, split pwrdm_init() into three functions. This allows some of them to be called multiple times: for example, pwrdm_register_pwrdms() can be called once to register powerdomains that are common to a group of SoCs, and once to register powerdomains that are specific to a single SoC. The appropriate order to call these functions - which is enforced by the code - is: 1. pwrdm_register_platform_funcs() 2. pwrdm_register_pwrdms() (can be called multiple times) 3. pwrdm_complete_init() Convert the OMAP2, 3, and 4 powerdomain init code to use these new functions. While here, improve documentation, and increase CodingStyle conformance by shortening some local variable names. Signed-off-by: Paul Walmsley <[email protected]>
2011-03-31Fix common misspellingsLucas De Marchi1-1/+1
Fixes generated by 'codespell' and manually reviewed. Signed-off-by: Lucas De Marchi <[email protected]>
2011-03-10Merge remote branches 'remotes/origin/pwrdm_clkdm_b_2.6.39', ↵Paul Walmsley1-1/+0
'remotes/origin/pwrdm_add_can_lose_context_fns_2.6.39', 'remotes/origin/omap_device_a_2.6.39', 'remotes/origin/mmc_a_2.6.39', 'remotes/origin/hwmod_b_2.6.39', 'remotes/origin/dmtimer_a_2.6.39', 'remotes/origin/pwrdm_clkdm_a_2.6.39', 'remotes/origin/clkdm_statdep_omap4_2.6.39', 'remotes/origin/clk_a_2.6.39', 'remotes/origin/clk_autoidle_a_2.6.39', 'remotes/origin/clk_autoidle_b_2.6.39', 'remotes/origin/clk_b_2.6.39', 'remotes/origin/clk_clkdm_a_2.6.39', 'remotes/origin/misc_a_2.6.39', 'remotes/origin/for_2.6.39/omap3_hwmod_data' and 'remotes/origin/wdtimer_a_2.6.39' into tmp-integration-2.6.39-20110310-024
2011-03-07OMAP2+: powerdomain: add pwrdm_can_ever_lose_context()Paul Walmsley1-10/+8
Some drivers wish to know whether the device that they control can ever lose context, for example, when the device's enclosing powerdomain loses power. They can use this information to determine whether it is necessary to save and restore device context, or whether it can be skipped. Implement the powerdomain portion of this by adding the function pwrdm_can_ever_lose_context(). This is not for use directly from driver code, but instead is intended to be called from driver-subarch integration code (i.e., arch/arm/*omap* code). Currently, the result from this function should be passed into the driver code via struct platform_data, but at some point this should be part of some common or OMAP-specific device code. While here, update file copyrights. Signed-off-by: Paul Walmsley <[email protected]>
2011-02-25OMAP: powerdomain: remove unused func declarationRajendra Nayak1-1/+0
Trivial fix to remove the unused function declaration from the powerdomain header. Signed-off-by: Rajendra Nayak <[email protected]> Signed-off-by: Paul Walmsley <[email protected]>
2010-12-21OMAP2+: powerdomain: add API to get context loss countKevin Hilman1-0/+1
Add new powerdomain API u32 pwrdm_get_context_loss_count(struct powerdomain *pwrdm) for checking how many times the powerdomain has lost context. The loss count is the sum of the powerdomain off-mode counter, the logic off counter and the per-bank memory off counter. Signed-off-by: Kevin Hilman <[email protected]> [[email protected]: removed bogus return value on error; improved kerneldoc; tweaked commit message] Signed-off-by: Paul Walmsley <[email protected]>
2010-12-21OMAP2+: powerdomain: move header file from plat-omap to mach-omap2Paul Walmsley1-0/+232
The OMAP powerdomain code and data is all OMAP2+-specific. This seems unlikely to change any time soon. Move plat-omap/include/plat/powerdomain.h to mach-omap2/powerdomain.h. The primary point of doing this is to remove the temptation for unrelated upper-layer code to access powerdomain code and data directly. As part of this process, remove the references to powerdomain data from the GPIO "driver" and the OMAP PM no-op layer, both in plat-omap. Change the DSPBridge code to point to the new location for the powerdomain headers. The DSPBridge code should not be including the powerdomain headers; these should be removed. Signed-off-by: Paul Walmsley <[email protected]> Cc: Kevin Hilman <[email protected]> Cc: Omar Ramirez Luna <[email protected]> Cc: Felipe Contreras <[email protected]> Cc: Greg Kroah-Hartman <[email protected]>