Merge branch 'p-ti-linux-3.8.y' into p-ti-android-3.8.y
* p-ti-linux-3.8.y: (406 commits)
ARM: OMAP4+: omap2plus_defconfig: Enable audio via TWL6040 as module
ASoC: OMAP4+: AESS: aess_mem: Activate AESS for memory/register access
ARM: dts: OMAP5: AESS: Fix AESS L3 Interconnect address
ASoC: OMAP: ABE: Pick working ABE support from LDC audio branch
TI-Integration: ARM: OMAP2+: Fix merege by restoring omap_mcasp_init() call
omapdss: TFCS panel: Check for successful TLC driver registration before using it
omapdss: DSS DPLLs: Ignore PLL_PWR_STATUS on DRA7
ARM: DRA7: dts: Add the sdma dt node and corresponding dma request lines for mmc
ARM: dra7: dts: Add a fixed regulator node needed for eMMC
arm/dts: dra7: Add ldo regulator for mmc1
arm/dts: dra7: Add mmc controller nodes and board data
ARM: DRA: hwmod: Correct the dma line names for mmc
arch: arm: configs: Add support for DRA7 evm in omap2plus_defconfig
arm: dts: dra7-evm: Add pinmux configs needed for display
HACK: pinctrl: pinctrl single: Make pinctrl-single init early
OMAPDSS:HDMI: Change PLL calculations
omapdss: hdmi: fix deepcolor mode configuration
ARM: dts: DRA7x: Add DMM bindings
omapdrm: hack: Assign managers/channel to outputs in a more trivial way
gpu: drm: omap: Use bitmaps for placement
...
Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
* p-ti-linux-3.8.y: (406 commits)
ARM: OMAP4+: omap2plus_defconfig: Enable audio via TWL6040 as module
ASoC: OMAP4+: AESS: aess_mem: Activate AESS for memory/register access
ARM: dts: OMAP5: AESS: Fix AESS L3 Interconnect address
ASoC: OMAP: ABE: Pick working ABE support from LDC audio branch
TI-Integration: ARM: OMAP2+: Fix merege by restoring omap_mcasp_init() call
omapdss: TFCS panel: Check for successful TLC driver registration before using it
omapdss: DSS DPLLs: Ignore PLL_PWR_STATUS on DRA7
ARM: DRA7: dts: Add the sdma dt node and corresponding dma request lines for mmc
ARM: dra7: dts: Add a fixed regulator node needed for eMMC
arm/dts: dra7: Add ldo regulator for mmc1
arm/dts: dra7: Add mmc controller nodes and board data
ARM: DRA: hwmod: Correct the dma line names for mmc
arch: arm: configs: Add support for DRA7 evm in omap2plus_defconfig
arm: dts: dra7-evm: Add pinmux configs needed for display
HACK: pinctrl: pinctrl single: Make pinctrl-single init early
OMAPDSS:HDMI: Change PLL calculations
omapdss: hdmi: fix deepcolor mode configuration
ARM: dts: DRA7x: Add DMM bindings
omapdrm: hack: Assign managers/channel to outputs in a more trivial way
gpu: drm: omap: Use bitmaps for placement
...
Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
Merge branch 'ti-linux-3.8.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel into p-ti-linux-3.8.y
* 'ti-linux-3.8.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel: (406 commits)
ARM: OMAP4+: omap2plus_defconfig: Enable audio via TWL6040 as module
ASoC: OMAP4+: AESS: aess_mem: Activate AESS for memory/register access
ARM: dts: OMAP5: AESS: Fix AESS L3 Interconnect address
ASoC: OMAP: ABE: Pick working ABE support from LDC audio branch
TI-Integration: ARM: OMAP2+: Fix merege by restoring omap_mcasp_init() call
omapdss: TFCS panel: Check for successful TLC driver registration before using it
omapdss: DSS DPLLs: Ignore PLL_PWR_STATUS on DRA7
ARM: DRA7: dts: Add the sdma dt node and corresponding dma request lines for mmc
ARM: dra7: dts: Add a fixed regulator node needed for eMMC
arm/dts: dra7: Add ldo regulator for mmc1
arm/dts: dra7: Add mmc controller nodes and board data
ARM: DRA: hwmod: Correct the dma line names for mmc
arch: arm: configs: Add support for DRA7 evm in omap2plus_defconfig
arm: dts: dra7-evm: Add pinmux configs needed for display
HACK: pinctrl: pinctrl single: Make pinctrl-single init early
OMAPDSS:HDMI: Change PLL calculations
omapdss: hdmi: fix deepcolor mode configuration
ARM: dts: DRA7x: Add DMM bindings
omapdrm: hack: Assign managers/channel to outputs in a more trivial way
gpu: drm: omap: Use bitmaps for placement
...
Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
* 'ti-linux-3.8.y' of git://git.ti.com/ti-linux-kernel/ti-linux-kernel: (406 commits)
ARM: OMAP4+: omap2plus_defconfig: Enable audio via TWL6040 as module
ASoC: OMAP4+: AESS: aess_mem: Activate AESS for memory/register access
ARM: dts: OMAP5: AESS: Fix AESS L3 Interconnect address
ASoC: OMAP: ABE: Pick working ABE support from LDC audio branch
TI-Integration: ARM: OMAP2+: Fix merege by restoring omap_mcasp_init() call
omapdss: TFCS panel: Check for successful TLC driver registration before using it
omapdss: DSS DPLLs: Ignore PLL_PWR_STATUS on DRA7
ARM: DRA7: dts: Add the sdma dt node and corresponding dma request lines for mmc
ARM: dra7: dts: Add a fixed regulator node needed for eMMC
arm/dts: dra7: Add ldo regulator for mmc1
arm/dts: dra7: Add mmc controller nodes and board data
ARM: DRA: hwmod: Correct the dma line names for mmc
arch: arm: configs: Add support for DRA7 evm in omap2plus_defconfig
arm: dts: dra7-evm: Add pinmux configs needed for display
HACK: pinctrl: pinctrl single: Make pinctrl-single init early
OMAPDSS:HDMI: Change PLL calculations
omapdss: hdmi: fix deepcolor mode configuration
ARM: dts: DRA7x: Add DMM bindings
omapdrm: hack: Assign managers/channel to outputs in a more trivial way
gpu: drm: omap: Use bitmaps for placement
...
Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
Merge branch 'omap5_audio_video-3.8.y' of git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree into ti-linux-3.8.y
TI-Feature: omap5_audio_video_base
TI-Tree: git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree.git
TI-Branch: omap5_audio_video-3.8.y
* 'omap5_audio_video-3.8.y' of git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree:
ARM: OMAP4+: omap2plus_defconfig: Enable audio via TWL6040 as module
ASoC: OMAP4+: AESS: aess_mem: Activate AESS for memory/register access
ARM: dts: OMAP5: AESS: Fix AESS L3 Interconnect address
ASoC: OMAP: ABE: Pick working ABE support from LDC audio branch
Conflicts:
arch/arm/configs/omap2plus_defconfig
Signed-off-by: Dan Murphy <dmurphy@ti.com>
TI-Feature: omap5_audio_video_base
TI-Tree: git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree.git
TI-Branch: omap5_audio_video-3.8.y
* 'omap5_audio_video-3.8.y' of git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree:
ARM: OMAP4+: omap2plus_defconfig: Enable audio via TWL6040 as module
ASoC: OMAP4+: AESS: aess_mem: Activate AESS for memory/register access
ARM: dts: OMAP5: AESS: Fix AESS L3 Interconnect address
ASoC: OMAP: ABE: Pick working ABE support from LDC audio branch
Conflicts:
arch/arm/configs/omap2plus_defconfig
Signed-off-by: Dan Murphy <dmurphy@ti.com>
ARM: OMAP4+: omap2plus_defconfig: Enable audio via TWL6040 as module
Boards supported upstream all use TWL6040 as audio codec, enable the common
ASoC machine driver by default for them.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Boards supported upstream all use TWL6040 as audio codec, enable the common
ASoC machine driver by default for them.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
ASoC: OMAP4+: AESS: aess_mem: Activate AESS for memory/register access
Force AESS to be active when its memories or registers are accessed.
Without this patch changing some mixer settings when AESS is not
active causes AXI-error interrupts on OMAP5 uEVM.
Signed-off-by: Jyri Sarha <jsarha@ti.com>
Force AESS to be active when its memories or registers are accessed.
Without this patch changing some mixer settings when AESS is not
active causes AXI-error interrupts on OMAP5 uEVM.
Signed-off-by: Jyri Sarha <jsarha@ti.com>
ARM: dts: OMAP5: AESS: Fix AESS L3 Interconnect address
OMAP543x_ES2.0_Public_TRM from May 2013 has this same bug too, but the
right address is 490f1000. Also the bit-wise match to MPU private
access looks better this way.
Signed-off-by: Jyri Sarha <jsarha@ti.com>
OMAP543x_ES2.0_Public_TRM from May 2013 has this same bug too, but the
right address is 490f1000. Also the bit-wise match to MPU private
access looks better this way.
Signed-off-by: Jyri Sarha <jsarha@ti.com>
ASoC: OMAP: ABE: Pick working ABE support from LDC audio branch
After this commit the content of sound/soc/omap matches to commit
0769a881 in git://gitorious.org/omap-audio/linux-audio.git with
following exceptions:
These commits not found from LDC tree are not overwritten:
ASoC: omap-abe-core: Call driver_deffered_probe_trigger only if built in
ASoC: OMAP: HDMI: Add support for DT boot
ASoC: HDMI: CPU-DAI: Correct typo
ASoC: OMAP: HDMI: Add config support for OMAP5
These commits from LDC tree are not included:
ASoC: omap: Check regulator enable for DAC on Pandora
ASoC: tlv320aic3x: Convert mic bias to a supply widget
ASoC: omap-pcm: No need to set constraint at open time
This commit is needed to bring the working ABE support from LDC audio
tree to LCPD AV-tree. The history of the old LCPD AV-tree does not
match LDC audio tree history (the "same" commits had different
content) so merge was not possible and this hackish commit was
needed.
Signed-off-by: Jyri Sarha <jsarha@ti.com>
After this commit the content of sound/soc/omap matches to commit
0769a881 in git://gitorious.org/omap-audio/linux-audio.git with
following exceptions:
These commits not found from LDC tree are not overwritten:
ASoC: omap-abe-core: Call driver_deffered_probe_trigger only if built in
ASoC: OMAP: HDMI: Add support for DT boot
ASoC: HDMI: CPU-DAI: Correct typo
ASoC: OMAP: HDMI: Add config support for OMAP5
These commits from LDC tree are not included:
ASoC: omap: Check regulator enable for DAC on Pandora
ASoC: tlv320aic3x: Convert mic bias to a supply widget
ASoC: omap-pcm: No need to set constraint at open time
This commit is needed to bring the working ABE support from LDC audio
tree to LCPD AV-tree. The history of the old LCPD AV-tree does not
match LDC audio tree history (the "same" commits had different
content) so merge was not possible and this hackish commit was
needed.
Signed-off-by: Jyri Sarha <jsarha@ti.com>
10 years agoTI-Integration: ARM: OMAP2+: Fix merege by restoring omap_mcasp_init() call ti2013.04.02
TI-Integration: ARM: OMAP2+: Fix merege by restoring omap_mcasp_init() call
Restore omap_mcasp_init() call that was lost in 1b891dcc-merge. McASP
device needs to be present for ABE TWL6040 probe to complete.
Signed-off-by: Jyri Sarha <jsarha@ti.com>
Restore omap_mcasp_init() call that was lost in 1b891dcc-merge. McASP
device needs to be present for ABE TWL6040 probe to complete.
Signed-off-by: Jyri Sarha <jsarha@ti.com>
Merge branch 'omap5_audio_video-3.8.y' of git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree into ti-linux-3.8.y
TI-Feature: omap5_audio_video_base
TI-Tree: git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree.git
TI-Branch: omap5_audio_video-3.8.y
* 'omap5_audio_video-3.8.y' of git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree:
omapdss: TFCS panel: Check for successful TLC driver registration before using it
omapdss: DSS DPLLs: Ignore PLL_PWR_STATUS on DRA7
Signed-off-by: Dan Murphy <dmurphy@ti.com>
TI-Feature: omap5_audio_video_base
TI-Tree: git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree.git
TI-Branch: omap5_audio_video-3.8.y
* 'omap5_audio_video-3.8.y' of git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree:
omapdss: TFCS panel: Check for successful TLC driver registration before using it
omapdss: DSS DPLLs: Ignore PLL_PWR_STATUS on DRA7
Signed-off-by: Dan Murphy <dmurphy@ti.com>
omapdss: TFCS panel: Check for successful TLC driver registration before using it
The TFCS panel driver internally uses the TLC brightness controller/gpio chip
to configure the panel. The TLC i2c driver is registered first following the
registration of the omapdss TFCS panel driver.
Currently, the TFCS panel driver can regsiter successfully even if the TLC
driver isn't probed successfully. Add a check in the TFCS driver probe if the
TLC i2c client device has a valid driver attached to it.
This removes the crash seen on Vayu evm when the LCD daughter card isn't
connected to the main Vayu CPU board.
Signed-off-by: Archit Taneja <archit@ti.com>
The TFCS panel driver internally uses the TLC brightness controller/gpio chip
to configure the panel. The TLC i2c driver is registered first following the
registration of the omapdss TFCS panel driver.
Currently, the TFCS panel driver can regsiter successfully even if the TLC
driver isn't probed successfully. Add a check in the TFCS driver probe if the
TLC i2c client device has a valid driver attached to it.
This removes the crash seen on Vayu evm when the LCD daughter card isn't
connected to the main Vayu CPU board.
Signed-off-by: Archit Taneja <archit@ti.com>
omapdss: DSS DPLLs: Ignore PLL_PWR_STATUS on DRA7
There is a Vayu bug(VAYU-BUG02893) which prevents the correct update of
PLL_PWR_STATUS when the power state of DPLL_VIDEO1/2 is changed. Currently, the
driver reports the error but still proceeds ahead. Modify the code such that we
don't read the buggy field at all and adds a small delay for the power state to
change.
Signed-off-by: Archit Taneja <archit@ti.com>
There is a Vayu bug(VAYU-BUG02893) which prevents the correct update of
PLL_PWR_STATUS when the power state of DPLL_VIDEO1/2 is changed. Currently, the
driver reports the error but still proceeds ahead. Modify the code such that we
don't read the buggy field at all and adds a small delay for the power state to
change.
Signed-off-by: Archit Taneja <archit@ti.com>
Merge branch 'sdmmc-dra-linux-3.8.y' of git://git.ti.com/~balajitk/ti-linux-kernel/omap-hsmmc into ti-linux-3.8.y
TI-Feature: J6-sd-mmc
TI-Tree: git://git.ti.com/~balajitk/ti-linux-kernel/omap-hsmmc into ti-linux-3.8.y
TI-Branch: sdmmc-dra-linux-3.8.y
* 'sdmmc-dra-linux-3.8.y' of git://git.ti.com/~balajitk/ti-linux-kernel/omap-hsmmc:
ARM: DRA7: dts: Add the sdma dt node and corresponding dma request lines for mmc
Signed-off-by: Dan Murphy <dmurphy@ti.com>
TI-Feature: J6-sd-mmc
TI-Tree: git://git.ti.com/~balajitk/ti-linux-kernel/omap-hsmmc into ti-linux-3.8.y
TI-Branch: sdmmc-dra-linux-3.8.y
* 'sdmmc-dra-linux-3.8.y' of git://git.ti.com/~balajitk/ti-linux-kernel/omap-hsmmc:
ARM: DRA7: dts: Add the sdma dt node and corresponding dma request lines for mmc
Signed-off-by: Dan Murphy <dmurphy@ti.com>
ARM: DRA7: dts: Add the sdma dt node and corresponding dma request lines for mmc
Without these the DMA engine adapted MMC driver will not function because of
the missing DMA information.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Balaji T K <balajitk@ti.com>
Without these the DMA engine adapted MMC driver will not function because of
the missing DMA information.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Balaji T K <balajitk@ti.com>
Merge branch 'sdmmc-dra-linux-3.8.y' of git://git.ti.com/~balajitk/ti-linux-kernel/omap-hsmmc into ti-linux-3.8.y
TI-Feature: J6-sd-mmc
TI-Tree: git://git.ti.com/~balajitk/ti-linux-kernel/omap-hsmmc into ti-linux-3.8.y
TI-Branch: sdmmc-dra-linux-3.8.y
* 'sdmmc-dra-linux-3.8.y' of git://git.ti.com/~balajitk/ti-linux-kernel/omap-hsmmc:
ARM: dra7: dts: Add a fixed regulator node needed for eMMC
arm/dts: dra7: Add ldo regulator for mmc1
arm/dts: dra7: Add mmc controller nodes and board data
ARM: DRA: hwmod: Correct the dma line names for mmc
Signed-off-by: Dan Murphy <dmurphy@ti.com>
TI-Feature: J6-sd-mmc
TI-Tree: git://git.ti.com/~balajitk/ti-linux-kernel/omap-hsmmc into ti-linux-3.8.y
TI-Branch: sdmmc-dra-linux-3.8.y
* 'sdmmc-dra-linux-3.8.y' of git://git.ti.com/~balajitk/ti-linux-kernel/omap-hsmmc:
ARM: dra7: dts: Add a fixed regulator node needed for eMMC
arm/dts: dra7: Add ldo regulator for mmc1
arm/dts: dra7: Add mmc controller nodes and board data
ARM: DRA: hwmod: Correct the dma line names for mmc
Signed-off-by: Dan Murphy <dmurphy@ti.com>
ARM: dra7: dts: Add a fixed regulator node needed for eMMC
add dummy fixed regulator for eMMC vmmc-supply node
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Balaji T K <balajitk@ti.com>
add dummy fixed regulator for eMMC vmmc-supply node
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Balaji T K <balajitk@ti.com>
arm/dts: dra7: Add ldo regulator for mmc1
Add ldo1 as vmmc supply for mmc1
Signed-off-by: Balaji T K <balajitk@ti.com>
Add ldo1 as vmmc supply for mmc1
Signed-off-by: Balaji T K <balajitk@ti.com>
arm/dts: dra7: Add mmc controller nodes and board data
Add dra mmc related device tree data.
Signed-off-by: Balaji T K <balajitk@ti.com>
Add dra mmc related device tree data.
Signed-off-by: Balaji T K <balajitk@ti.com>
ARM: DRA: hwmod: Correct the dma line names for mmc
The dma request line names are specifed by respective dma request
numbers, instead of the signal functionality name. This is different
from the previous dma_requests naming convention for older socs and
breaks those drivers which uses sdma. Changing this here for mmc.
Should be fixed in the auto gen scripts.
Signed-off-by: Sricharan R <r.sricharan@ti.com>
The dma request line names are specifed by respective dma request
numbers, instead of the signal functionality name. This is different
from the previous dma_requests naming convention for older socs and
breaks those drivers which uses sdma. Changing this here for mmc.
Should be fixed in the auto gen scripts.
Signed-off-by: Sricharan R <r.sricharan@ti.com>
Merge branch 'omap5_audio_video-3.8.y' of git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree into ti-linux-3.8.y
TI-Feature: omap5_audio_video_base
TI-Tree: git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree.git
TI-Branch: omap5_audio_video-3.8.y
* 'omap5_audio_video-3.8.y' of git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree: (28 commits)
arch: arm: configs: Add support for DRA7 evm in omap2plus_defconfig
arm: dts: dra7-evm: Add pinmux configs needed for display
HACK: pinctrl: pinctrl single: Make pinctrl-single init early
OMAPDSS:HDMI: Change PLL calculations
omapdss: hdmi: fix deepcolor mode configuration
ARM: dts: DRA7x: Add DMM bindings
omapdrm: hack: Assign managers/channel to outputs in a more trivial way
gpu: drm: omap: Use bitmaps for placement
drm/omap: Fix and improve crtc and overlay manager correlation
drm/omap: fix modeset_init if a panel doesn't satisfy omapdrm requirements
drm/omap: Take a fb reference in omap_plane_update()
drm/omap: move out of staging
Revert "gpu: drm: omap: Use bitmaps for placement"
omapdss: hdmi: Add an i2c adapter node as a possible DT phandle
HACK: omapdss: HDMI hacks for DRA7x
omapdss: hdmi: Add support for DRA7xx SoCs
HACK: omap_hwmod: enable DESHDCP clock before DSS module is enabled
arm: dra7-evm dts: Add lcd panel support
gpio: pcf857x: Convert to DT mode
omapdss: displays: Add tfcs9700 DPI panel driver
...
Conflicts:
arch/arm/boot/dts/omap5-sevm.dts
arch/arm/boot/dts/omap5-uevm.dts
arch/arm/boot/dts/omap5.dtsi
arch/arm/configs/omap2plus_defconfig
arch/arm/mach-omap2/omap_hwmod_33xx_data.c
Signed-off-by: Dan Murphy <dmurphy@ti.com>
TI-Feature: omap5_audio_video_base
TI-Tree: git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree.git
TI-Branch: omap5_audio_video-3.8.y
* 'omap5_audio_video-3.8.y' of git://git.ti.com/~a0393947/ti-linux-kernel/audio-video-linux-feature-tree: (28 commits)
arch: arm: configs: Add support for DRA7 evm in omap2plus_defconfig
arm: dts: dra7-evm: Add pinmux configs needed for display
HACK: pinctrl: pinctrl single: Make pinctrl-single init early
OMAPDSS:HDMI: Change PLL calculations
omapdss: hdmi: fix deepcolor mode configuration
ARM: dts: DRA7x: Add DMM bindings
omapdrm: hack: Assign managers/channel to outputs in a more trivial way
gpu: drm: omap: Use bitmaps for placement
drm/omap: Fix and improve crtc and overlay manager correlation
drm/omap: fix modeset_init if a panel doesn't satisfy omapdrm requirements
drm/omap: Take a fb reference in omap_plane_update()
drm/omap: move out of staging
Revert "gpu: drm: omap: Use bitmaps for placement"
omapdss: hdmi: Add an i2c adapter node as a possible DT phandle
HACK: omapdss: HDMI hacks for DRA7x
omapdss: hdmi: Add support for DRA7xx SoCs
HACK: omap_hwmod: enable DESHDCP clock before DSS module is enabled
arm: dra7-evm dts: Add lcd panel support
gpio: pcf857x: Convert to DT mode
omapdss: displays: Add tfcs9700 DPI panel driver
...
Conflicts:
arch/arm/boot/dts/omap5-sevm.dts
arch/arm/boot/dts/omap5-uevm.dts
arch/arm/boot/dts/omap5.dtsi
arch/arm/configs/omap2plus_defconfig
arch/arm/mach-omap2/omap_hwmod_33xx_data.c
Signed-off-by: Dan Murphy <dmurphy@ti.com>
arch: arm: configs: Add support for DRA7 evm in omap2plus_defconfig
Add CONFIGs in omap2plus_defconfig so that DRA7 evm boots up straight away.
This involved adding CONFIG for a PCF io expander and DPI driver specific to
DRA7x.
Signed-off-by: Archit Taneja <archit@ti.com>
Add CONFIGs in omap2plus_defconfig so that DRA7 evm boots up straight away.
This involved adding CONFIG for a PCF io expander and DPI driver specific to
DRA7x.
Signed-off-by: Archit Taneja <archit@ti.com>
arm: dts: dra7-evm: Add pinmux configs needed for display
DSS requires pinmux configurations for the VOUT1 DPI lines and I2C2 as it
controls a PCF 8575 IO expander needed by the HDMI level shifter.
Add pinmux configurations for them.
Signed-off-by: Archit Taneja <archit@ti.com>
DSS requires pinmux configurations for the VOUT1 DPI lines and I2C2 as it
controls a PCF 8575 IO expander needed by the HDMI level shifter.
Add pinmux configurations for them.
Signed-off-by: Archit Taneja <archit@ti.com>
HACK: pinctrl: pinctrl single: Make pinctrl-single init early
Change pinctrl-single driver's initcall level from module initcall to arch
initcall. This prevents dependent drivers not supporting deferred probe
mechanism from failing.
This is done for omapdss which doesn't support deferred probe yet. Deferred
probe for omapdss is complicated as init order between omapdss and it's users
(omapfb or omapdrm) is important, and deferred probe complicates that.
Signed-off-by: Archit Taneja <archit@ti.com>
Change pinctrl-single driver's initcall level from module initcall to arch
initcall. This prevents dependent drivers not supporting deferred probe
mechanism from failing.
This is done for omapdss which doesn't support deferred probe yet. Deferred
probe for omapdss is complicated as init order between omapdss and it's users
(omapfb or omapdrm) is important, and deferred probe complicates that.
Signed-off-by: Archit Taneja <archit@ti.com>
OMAPDSS:HDMI: Change PLL calculations
This patch modifies the algorithms used to determine the correct PLL
settings for the HDMI TMDS output. Instead of using fixed REGM2 values
we search for a valid combination of REGN, REGM, REGM2 that satisfy the
constraints for the requested frequency.
The computation involves looping through the values of REGN and trying to
find an adequate REGM and REGM2 (if applicable). This results in the lowest
value for REGN that will satisfy the frequency request.
This patch also modifies the API used for the hdmi_compute_pll function.
If a valid PLL combination cannot be found, we return an error back to the
caller.
Signed-off-by: Andy Gross <andy.gross@ti.com>
Signed-off-by: Archit Taneja <archit@ti.com>
This patch modifies the algorithms used to determine the correct PLL
settings for the HDMI TMDS output. Instead of using fixed REGM2 values
we search for a valid combination of REGN, REGM, REGM2 that satisfy the
constraints for the requested frequency.
The computation involves looping through the values of REGN and trying to
find an adequate REGM and REGM2 (if applicable). This results in the lowest
value for REGN that will satisfy the frequency request.
This patch also modifies the API used for the hdmi_compute_pll function.
If a valid PLL combination cannot be found, we return an error back to the
caller.
Signed-off-by: Andy Gross <andy.gross@ti.com>
Signed-off-by: Archit Taneja <archit@ti.com>
omapdss: hdmi: fix deepcolor mode configuration
The hdmi driver supports deep color modes. However, there is a specific check
which doesn't allow 1080p timings or higher to be shown 36 bit deep color mode.
The more generic check would be to check if the pixel clock in a deep color mode
is less than the maximum pixel clock the TV overlay manager can support for the
given OMAP. Make this change.
Also, make sure that hdmi.dssdev is assigned by the end of probe, this param is
needed by the deepcolor sysfs attribute file.
Signed-off-by: Archit Taneja <archit@ti.com>
The hdmi driver supports deep color modes. However, there is a specific check
which doesn't allow 1080p timings or higher to be shown 36 bit deep color mode.
The more generic check would be to check if the pixel clock in a deep color mode
is less than the maximum pixel clock the TV overlay manager can support for the
given OMAP. Make this change.
Also, make sure that hdmi.dssdev is assigned by the end of probe, this param is
needed by the deepcolor sysfs attribute file.
Signed-off-by: Archit Taneja <archit@ti.com>
ARM: dts: DRA7x: Add DMM bindings
Add Dynamic Memory Manager (DMM) bindings for DRA7x device.
Signed-off-by: Archit Taneja <archit@ti.com>
Conflicts:
arch/arm/boot/dts/dra7.dtsi
Add Dynamic Memory Manager (DMM) bindings for DRA7x device.
Signed-off-by: Archit Taneja <archit@ti.com>
Conflicts:
arch/arm/boot/dts/dra7.dtsi
omapdrm: hack: Assign managers/channel to outputs in a more trivial way
3.8 kernel doesn't have 'dispc_channel' field for omapdss outputs, do a simple
assignment of channels for outputs for now.
Signed-off-by: Archit Taneja <archit@ti.com>
3.8 kernel doesn't have 'dispc_channel' field for omapdss outputs, do a simple
assignment of channels for outputs for now.
Signed-off-by: Archit Taneja <archit@ti.com>
gpu: drm: omap: Use bitmaps for placement
Modified Tiler placement to utilize bitmaps for bookkeeping and
all placement algorithms. This resulted in a substantial savings
in time for all Tiler reservation and free operations. Typical
savings are in the range of 28% decrease in time taken with larger
buffers showing a 80%+ decrease.
Signed-off-by: Andy Gross <andy.gross@ti.com>
Modified Tiler placement to utilize bitmaps for bookkeeping and
all placement algorithms. This resulted in a substantial savings
in time for all Tiler reservation and free operations. Typical
savings are in the range of 28% decrease in time taken with larger
buffers showing a 80%+ decrease.
Signed-off-by: Andy Gross <andy.gross@ti.com>
drm/omap: Fix and improve crtc and overlay manager correlation
The omapdrm driver currently takes a config/module arg to figure out the number
of crtcs it needs to create. We could create as many crtcs as there are overlay
managers in the DSS hardware, but we don't do that because each crtc eats up
one DSS overlay, and that reduces the number of planes we can attach to a single
crtc.
Since the number of crtcs may be lesser than the number of hardware overlay
managers, we need to figure out which overlay managers to use for our crtcs. The
current approach is to use pipe2chan(), which returns a higher numbered manager
for the crtc.
The problem with this approach is that it assumes that the overlay managers we
choose will connect to the encoders the platform's panels are going to use,
this isn't true, an overlay manager connects only to a few outputs/encoders, and
choosing any overlay manager for our crtc might lead to a situation where the
encoder cannot connect to any of the crtcs we have chosen. For example, an
omap5-panda board has just one hdmi output. If num_crtc is set to 1, with the
current approach, pipe2chan will pick up the LCD2 overlay manager, which cannot
connect to the hdmi encoder at all. The only manager that could have connected
to hdmi was the TV overlay manager.
Therefore, there is a need to choose our overlay managers keeping in mind the
panels we have on that platform. The new approach iterates through all the
available panels, creates encoders and connectors for them, and then tries to
get a suitable overlay manager to create a crtc which can connect to the
encoders.
We use the dispc_channel field in omap_dss_output to retrieve the desired
overlay manager's channel number, we then check whether the manager had already
been assigned to a crtc or not. If it was already assigned to a crtc, we assume
that out of all the encoders which intend use this crtc, only one will run at a
time. If the overlay manager wan't assigned to a crtc till then, we create a
new crtc and link it with the overlay manager.
This approach just looks for the best dispc_channel for each encoder. On DSS HW,
some encoders can connect to multiple overlay managers. Since we don't try
looking for alternate overlay managers, there is a greater possibility that 2
or more encoders end up asking for the same crtc, causing only one encoder to
run at a time.
Also, this approach isn't the most optimal one, it can do either good or bad
depending on the sequence in which the panels/outputs are parsed. The optimal
way would be some sort of back tracking approach, where we improve the set of
managers we use as we iterate through the list of panels/encoders. That's
something left for later.
Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
The omapdrm driver currently takes a config/module arg to figure out the number
of crtcs it needs to create. We could create as many crtcs as there are overlay
managers in the DSS hardware, but we don't do that because each crtc eats up
one DSS overlay, and that reduces the number of planes we can attach to a single
crtc.
Since the number of crtcs may be lesser than the number of hardware overlay
managers, we need to figure out which overlay managers to use for our crtcs. The
current approach is to use pipe2chan(), which returns a higher numbered manager
for the crtc.
The problem with this approach is that it assumes that the overlay managers we
choose will connect to the encoders the platform's panels are going to use,
this isn't true, an overlay manager connects only to a few outputs/encoders, and
choosing any overlay manager for our crtc might lead to a situation where the
encoder cannot connect to any of the crtcs we have chosen. For example, an
omap5-panda board has just one hdmi output. If num_crtc is set to 1, with the
current approach, pipe2chan will pick up the LCD2 overlay manager, which cannot
connect to the hdmi encoder at all. The only manager that could have connected
to hdmi was the TV overlay manager.
Therefore, there is a need to choose our overlay managers keeping in mind the
panels we have on that platform. The new approach iterates through all the
available panels, creates encoders and connectors for them, and then tries to
get a suitable overlay manager to create a crtc which can connect to the
encoders.
We use the dispc_channel field in omap_dss_output to retrieve the desired
overlay manager's channel number, we then check whether the manager had already
been assigned to a crtc or not. If it was already assigned to a crtc, we assume
that out of all the encoders which intend use this crtc, only one will run at a
time. If the overlay manager wan't assigned to a crtc till then, we create a
new crtc and link it with the overlay manager.
This approach just looks for the best dispc_channel for each encoder. On DSS HW,
some encoders can connect to multiple overlay managers. Since we don't try
looking for alternate overlay managers, there is a greater possibility that 2
or more encoders end up asking for the same crtc, causing only one encoder to
run at a time.
Also, this approach isn't the most optimal one, it can do either good or bad
depending on the sequence in which the panels/outputs are parsed. The optimal
way would be some sort of back tracking approach, where we improve the set of
managers we use as we iterate through the list of panels/encoders. That's
something left for later.
Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drm/omap: fix modeset_init if a panel doesn't satisfy omapdrm requirements
modeset_init iterates through all the registered omapdss devices and has some
initial checks to see if the panel has a driver and the required driver ops for
it to be usable by omapdrm.
The function bails out from modeset_init if a panel doesn't meet the
requirements, and stops the registration of the future panels and encoders which
come after it, that isn't the correct thing to do, we should go through the rest
of the panels. Replace the 'return's with 'continue's.
Signed-off-by: Archit Taneja <archit@ti.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
modeset_init iterates through all the registered omapdss devices and has some
initial checks to see if the panel has a driver and the required driver ops for
it to be usable by omapdrm.
The function bails out from modeset_init if a panel doesn't meet the
requirements, and stops the registration of the future panels and encoders which
come after it, that isn't the correct thing to do, we should go through the rest
of the panels. Replace the 'return's with 'continue's.
Signed-off-by: Archit Taneja <archit@ti.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drm/omap: Take a fb reference in omap_plane_update()
When userspace calls SET_PLANE ioctl, drm core takes a reference of the fb and
passes control to the update_plane op defined by the drm driver.
In omapdrm, we have a worker thread which queues framebuffers objects received
from update_plane and displays them at the appropriate time.
It is possible that the framebuffer is destoryed by userspace between the time
of calling the ioctl and apply-worker being scheduled. If this happens, the
apply-worker holds a pointer to a framebuffer which is already destroyed.
Take an extra refernece/unreference of the fb in omap_plane_update() to prevent
this from happening. A reference is taken of the fb passed to update_plane(),
the previous framebuffer (held by plane->fb) is unreferenced. This will prevent
drm from destroying the framebuffer till the time it's unreferenced by the
apply-worker.
This is in addition to the exisitng reference/unreference in update_pin(),
which is taken for the scanout of the plane's current framebuffer, and an
unreference the previous framebuffer.
Signed-off-by: Archit Taneja <archit@ti.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
When userspace calls SET_PLANE ioctl, drm core takes a reference of the fb and
passes control to the update_plane op defined by the drm driver.
In omapdrm, we have a worker thread which queues framebuffers objects received
from update_plane and displays them at the appropriate time.
It is possible that the framebuffer is destoryed by userspace between the time
of calling the ioctl and apply-worker being scheduled. If this happens, the
apply-worker holds a pointer to a framebuffer which is already destroyed.
Take an extra refernece/unreference of the fb in omap_plane_update() to prevent
this from happening. A reference is taken of the fb passed to update_plane(),
the previous framebuffer (held by plane->fb) is unreferenced. This will prevent
drm from destroying the framebuffer till the time it's unreferenced by the
apply-worker.
This is in addition to the exisitng reference/unreference in update_pin(),
which is taken for the scanout of the plane's current framebuffer, and an
unreference the previous framebuffer.
Signed-off-by: Archit Taneja <archit@ti.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drm/omap: move out of staging
Now that the omapdss interface has been reworked so that omapdrm can use
dispc directly, we have been able to fix the remaining functional kms
issues with omapdrm. And in the mean time the PM sequencing and many
other of that open issues have been solved. So I think it makes sense
to finally move omapdrm out of staging.
Signed-off-by: Rob Clark <robdclark@gmail.com>
Now that the omapdss interface has been reworked so that omapdrm can use
dispc directly, we have been able to fix the remaining functional kms
issues with omapdrm. And in the mean time the PM sequencing and many
other of that open issues have been solved. So I think it makes sense
to finally move omapdrm out of staging.
Signed-off-by: Rob Clark <robdclark@gmail.com>
Revert "gpu: drm: omap: Use bitmaps for placement"
This reverts commit 2857ec212485e407354d03be48cf00f03437c098.
This reverts commit 2857ec212485e407354d03be48cf00f03437c098.
omapdss: hdmi: Add an i2c adapter node as a possible DT phandle
The hdmi driver supports reading edid either via HDMI IP's ddc in the case
of omap4. We support a bitbanged gpio i2c mode for omap5. For Vayu, the pins
muxed with HDMI IP's ddc are the I2C2 lines, so we provide a mode where we allow
the i2c adapter to be passed as a phandle by DT.
Add a DT node for hdmi similar to that as of omap5-uevm. The difference on Vayu
evm is that it the hdmi ddc lines are the I2C2 line instead of bitbanged gpio
lines. There is a also a PCF level shifter on I2C2 which is used to drive LS_OE
and CT_HPD pins in the TPS level shifter. The HPD gpio is connected directly to
a Vayu GPIO bank.
Signed-off-by: Archit Taneja <archit@ti.com>
The hdmi driver supports reading edid either via HDMI IP's ddc in the case
of omap4. We support a bitbanged gpio i2c mode for omap5. For Vayu, the pins
muxed with HDMI IP's ddc are the I2C2 lines, so we provide a mode where we allow
the i2c adapter to be passed as a phandle by DT.
Add a DT node for hdmi similar to that as of omap5-uevm. The difference on Vayu
evm is that it the hdmi ddc lines are the I2C2 line instead of bitbanged gpio
lines. There is a also a PCF level shifter on I2C2 which is used to drive LS_OE
and CT_HPD pins in the TPS level shifter. The HPD gpio is connected directly to
a Vayu GPIO bank.
Signed-off-by: Archit Taneja <archit@ti.com>
HACK: omapdss: HDMI hacks for DRA7x
- Vayu evm has a demux which decides whether i2c2 lines go to the hdmi level
shifter(and finally to the panel) or if they are in their normal state(where
i2c2 is connected to many slaves, one of which is a gpio expander to configure
the LS_OE and CT_HPD pins of the level shifter). This demux is controlled by
a mcasp based gpio. There is no mcasp-gpio driver, neither there is a clean
way to represent such a pin in DT. So the bit is toggled as a hack in the
hdmi driver itself.
- On DRA7x, hdmi phy state transition checks are failing even though hdmi phy is
transitioning correctly, ignore the phy transition checks for now.
These need to be cleaned up later.
Signed-off-by: Archit Taneja <archit@ti.com>
- Vayu evm has a demux which decides whether i2c2 lines go to the hdmi level
shifter(and finally to the panel) or if they are in their normal state(where
i2c2 is connected to many slaves, one of which is a gpio expander to configure
the LS_OE and CT_HPD pins of the level shifter). This demux is controlled by
a mcasp based gpio. There is no mcasp-gpio driver, neither there is a clean
way to represent such a pin in DT. So the bit is toggled as a hack in the
hdmi driver itself.
- On DRA7x, hdmi phy state transition checks are failing even though hdmi phy is
transitioning correctly, ignore the phy transition checks for now.
These need to be cleaned up later.
Signed-off-by: Archit Taneja <archit@ti.com>
omapdss: hdmi: Add support for DRA7xx SoCs
DRA7xx DSS has the same HDMI IP as OMAP5, add OMAPDSS version checks where
necessary.
HDMI DPLL on DRA7xx can be accessed via DSS address space only when
DSS_PLL_CONTROL in controle module is configured correctly. Do this
configuration here. This is hacky and should be moved to somewhere in the
prcm driver.
Signed-off-by: Archit Taneja <archit@ti.com>
DRA7xx DSS has the same HDMI IP as OMAP5, add OMAPDSS version checks where
necessary.
HDMI DPLL on DRA7xx can be accessed via DSS address space only when
DSS_PLL_CONTROL in controle module is configured correctly. Do this
configuration here. This is hacky and should be moved to somewhere in the
prcm driver.
Signed-off-by: Archit Taneja <archit@ti.com>
HACK: omap_hwmod: enable DESHDCP clock before DSS module is enabled
enable DESHDCP clock very early in omap_hwmod_setup_all to make sure it's set
before DSS hwmods are setup. Find a better way to do this.
Signed-off-by: Archit Taneja <archit@ti.com>
enable DESHDCP clock very early in omap_hwmod_setup_all to make sure it's set
before DSS hwmods are setup. Find a better way to do this.
Signed-off-by: Archit Taneja <archit@ti.com>
arm: dra7-evm dts: Add lcd panel support
Add DT nodes for the dpi lcd panel and the TLC i2c client.
Signed-off-by: Archit Taneja <archit@ti.com>
Add DT nodes for the dpi lcd panel and the TLC i2c client.
Signed-off-by: Archit Taneja <archit@ti.com>
gpio: pcf857x: Convert to DT mode
Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Archit Taneja <archit@ti.com>
omapdss: displays: Add tfcs9700 DPI panel driver
TFCS9700 is a 800x480 DPI LCD panel found on the Vayu display daughter card.
The card also contains an i2c brightness controller/gpio expander(TLCxxxx) which
drives a pwm signal for the panel and also provides some gpios to configure some
of the panel pins.
Add the DPI panel driver as an omapdss driver, and add the i2c controller as a
client driver in the same file for now. In the longer run, we would have a
separate mfd driver for the TLC chip.
Signed-off-by: Archit Taneja <archit@ti.com>
TFCS9700 is a 800x480 DPI LCD panel found on the Vayu display daughter card.
The card also contains an i2c brightness controller/gpio expander(TLCxxxx) which
drives a pwm signal for the panel and also provides some gpios to configure some
of the panel pins.
Add the DPI panel driver as an omapdss driver, and add the i2c controller as a
client driver in the same file for now. In the longer run, we would have a
separate mfd driver for the TLC chip.
Signed-off-by: Archit Taneja <archit@ti.com>
arm: dra7 dtsi: add DSS DT node
Add a DT node for DSS, this is similar to the DT nodes in omap4/5, the only
difference is that there are multpiple instances of DPI, and they match with
the dra7xx-dpi driver.
Signed-off-by: Archit Taneja <archit@ti.com>
Conflicts:
arch/arm/boot/dts/dra7.dtsi
Add a DT node for DSS, this is similar to the DT nodes in omap4/5, the only
difference is that there are multpiple instances of DPI, and they match with
the dra7xx-dpi driver.
Signed-off-by: Archit Taneja <archit@ti.com>
Conflicts:
arch/arm/boot/dts/dra7.dtsi
omapdss: Add a DPI driver for DRA7xx SoC
Create a DPI driver for DRA7xx DSS, the only difference it has compared to the
OMAP DPI driver is that it uses dss core DPLLs as an alternative clock source
and not the DSI PLLs.
These drivers can be merged later on when DSI PLL code is made more generic and
is moved to dss core.
Signed-off-by: Archit Taneja <archit@ti.com>
Create a DPI driver for DRA7xx DSS, the only difference it has compared to the
OMAP DPI driver is that it uses dss core DPLLs as an alternative clock source
and not the DSI PLLs.
These drivers can be merged later on when DSI PLL code is made more generic and
is moved to dss core.
Signed-off-by: Archit Taneja <archit@ti.com>
omapdss: dpi: create common DPI ops for panel drivers
This allows panel drivers to be independent of the underlying DPI IP, i.e,
whether it's OMAP DPI or DRA DPI.
Signed-off-by: Archit Taneja <archit@ti.com>
This allows panel drivers to be independent of the underlying DPI IP, i.e,
whether it's OMAP DPI or DRA DPI.
Signed-off-by: Archit Taneja <archit@ti.com>
omapdss: features: Add a dss_features struct for DRA7xx SoC
Add a new features struct for DRA7xx. The connections between outputs and
managers in DRA7xx differ a lot from OMAP5, so we add a new feat struct for it.
Signed-off-by: Archit Taneja <archit@ti.com>
Add a new features struct for DRA7xx. The connections between outputs and
managers in DRA7xx differ a lot from OMAP5, so we add a new feat struct for it.
Signed-off-by: Archit Taneja <archit@ti.com>
omapdss: Add dss dplls to dss family
DRA7x has video DPLLs similar to that of the DSI PLLs on OMAP. However, they
aren't a part of DSI, and belong to the DSS core/ DSS family of registers. Tie
the video DPLLs to the dss core platform device.
Borrow the code from DSI to power on, configure and lock the PLLs. The apis
provided will be used by the DRA7x DPI driver to get a desired pixel clock.
Signed-off-by: Archit Taneja <archit@ti.com>
DRA7x has video DPLLs similar to that of the DSI PLLs on OMAP. However, they
aren't a part of DSI, and belong to the DSS core/ DSS family of registers. Tie
the video DPLLs to the dss core platform device.
Borrow the code from DSI to power on, configure and lock the PLLs. The apis
provided will be used by the DRA7x DPI driver to get a desired pixel clock.
Signed-off-by: Archit Taneja <archit@ti.com>
omapdss: dss: Make overlay manager source selection possible for multiple DPI IPs
DRA7x has 3 DPI IPs, out of these DPI1 has a configurable source while the
others don't. Create a func which allows us to select sources for different DPI
instances.
A new dss feat struct is needed for DRA7x, add it.
Signed-off-by: Archit Taneja <archit@ti.com>
DRA7x has 3 DPI IPs, out of these DPI1 has a configurable source while the
others don't. Create a func which allows us to select sources for different DPI
instances.
A new dss feat struct is needed for DRA7x, add it.
Signed-off-by: Archit Taneja <archit@ti.com>
omapdss: Add DRA7XX as an OMAPDSS version
DRA7xx has a slightly modified version of the DSS on OMAP5. Create a new OMAPDSS
version for it. Use omap5 structs for inititalizations in dss features, dss and
dispc.
Signed-off-by: Archit Taneja <archit@ti.com>
DRA7xx has a slightly modified version of the DSS on OMAP5. Create a new OMAPDSS
version for it. Use omap5 structs for inititalizations in dss features, dss and
dispc.
Signed-off-by: Archit Taneja <archit@ti.com>
omapdss: dss: add module_id param to dpi_select_source
DRA7x SoC has 3 DPI instances. DPI1 instance can receive it's pixels from either
LCD1, LCD2, LCD3 or TV vverlay Manager's video ports. The remaining two DPI
instances can receive pixels only from LCD2 and LCD3 respectively.
Add an argument which describes which DPI instance we are referring to when
chosing it's overlay manager.
Signed-off-by: Archit Taneja <archit@ti.com>
DRA7x SoC has 3 DPI instances. DPI1 instance can receive it's pixels from either
LCD1, LCD2, LCD3 or TV vverlay Manager's video ports. The remaining two DPI
instances can receive pixels only from LCD2 and LCD3 respectively.
Add an argument which describes which DPI instance we are referring to when
chosing it's overlay manager.
Signed-off-by: Archit Taneja <archit@ti.com>
Merge remote-tracking branch 'av-feat-tree/omap5_audio_video-3.8.y' into vayu_exp
Conflicts:
arch/arm/boot/dts/omap5-sevm.dts
arch/arm/boot/dts/omap5-uevm.dts
arch/arm/boot/dts/omap5.dtsi
arch/arm/configs/omap2plus_defconfig
arch/arm/mach-omap2/omap-mpuss-lowpower.c
arch/arm/mach-omap2/omap_hwmod_33xx_data.c
Signed-off-by: Archit Taneja <archit@ti.com>
Conflicts:
arch/arm/boot/dts/omap5-sevm.dts
arch/arm/boot/dts/omap5-uevm.dts
arch/arm/boot/dts/omap5.dtsi
arch/arm/configs/omap2plus_defconfig
arch/arm/mach-omap2/omap-mpuss-lowpower.c
arch/arm/mach-omap2/omap_hwmod_33xx_data.c
Signed-off-by: Archit Taneja <archit@ti.com>
Merge branch 'pm-linux-2.8.y' of git://git.ti.com/~kristo/ti-linux-kernel/pm-linux-feature-tree into ti-linux-3.8.y
TI-Feature: power_management
TI-Tree: git://git.ti.com/~kristo/ti-linux-kernel/pm-linux-feature-tree.git
TI-Branch: pm-linux-3.8.y
* 'pm-linux-3.8.y' of git://git.ti.com/~kristo/ti-linux-kernel/pm-linux-feature-tree: (60 commits)
ARM: DRA7: dts: Remove the non existent l3_main_3 entry
ARM: DRA7: dpll: No freqsel on DRA7
ARM: DRA7: dpll: Lock GMAC PLL at boot
ARM: DRA7: dpll: Lock ABE PLL according to ATL needs
ARM: DRA7: id: Change control_id_code register address
thermal: consider emul_temperature while computing trend
ARM: OMAP5: Add select tuples to enable CPUFREQ on OMAP5
ARM: DRA7XX: PM: add soc_is_dra7xx check to take care of freqsel absence
ARM: dts: dra7: add clock nodes for CPU and link avs_mpu regulator to cpu
Arm: DRA7XX: Clock: Update dpll_mpu_ck_ops
ARM: DTS: DRA7: Link the actual TPS659038 regulators to
ARM: DTS: DRA7: Add avs class 0 regulator nodes
regulator: ti-avs-class0: use regulator name based on device instance
regulator: ti-avs-class0: dont reserve efuse memory offsets
cpufreq: cpufreq-cpu0: defer probe when regulator is not ready(v2)
regulator: core: return err value for regulator_get if there is no DT binding
ARM/dts: dra7-evm: Enable tps659038 on i2c1 bus
arm: dts: dra7: add I2C devices to dra7 DeviceTree file
arm: omap2plus_defconfig: enable DRA752 thermal support by default
arm: mach-omap2: flag DRA7 as having bandgap
...
Conflicts:
arch/arm/configs/omap2plus_defconfig
Signed-off-by: Dan Murphy <dmurphy@ti.com>
TI-Feature: power_management
TI-Tree: git://git.ti.com/~kristo/ti-linux-kernel/pm-linux-feature-tree.git
TI-Branch: pm-linux-3.8.y
* 'pm-linux-3.8.y' of git://git.ti.com/~kristo/ti-linux-kernel/pm-linux-feature-tree: (60 commits)
ARM: DRA7: dts: Remove the non existent l3_main_3 entry
ARM: DRA7: dpll: No freqsel on DRA7
ARM: DRA7: dpll: Lock GMAC PLL at boot
ARM: DRA7: dpll: Lock ABE PLL according to ATL needs
ARM: DRA7: id: Change control_id_code register address
thermal: consider emul_temperature while computing trend
ARM: OMAP5: Add select tuples to enable CPUFREQ on OMAP5
ARM: DRA7XX: PM: add soc_is_dra7xx check to take care of freqsel absence
ARM: dts: dra7: add clock nodes for CPU and link avs_mpu regulator to cpu
Arm: DRA7XX: Clock: Update dpll_mpu_ck_ops
ARM: DTS: DRA7: Link the actual TPS659038 regulators to
ARM: DTS: DRA7: Add avs class 0 regulator nodes
regulator: ti-avs-class0: use regulator name based on device instance
regulator: ti-avs-class0: dont reserve efuse memory offsets
cpufreq: cpufreq-cpu0: defer probe when regulator is not ready(v2)
regulator: core: return err value for regulator_get if there is no DT binding
ARM/dts: dra7-evm: Enable tps659038 on i2c1 bus
arm: dts: dra7: add I2C devices to dra7 DeviceTree file
arm: omap2plus_defconfig: enable DRA752 thermal support by default
arm: mach-omap2: flag DRA7 as having bandgap
...
Conflicts:
arch/arm/configs/omap2plus_defconfig
Signed-off-by: Dan Murphy <dmurphy@ti.com>
Merge remote-tracking branch 'rnayak/platform-base-3.8.y' into pm-linux-3.8.y
Conflicts:
arch/arm/mach-omap2/dpll3xxx.c
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Conflicts:
arch/arm/mach-omap2/dpll3xxx.c
Signed-off-by: Tero Kristo <t-kristo@ti.com>
ARM: DRA7: dts: Remove the non existent l3_main_3 entry
l3_main_3 does not exist on dra7xx devices.
We see the below errors at boot because of it..
[ 0.144775] platform ocp.2: Cannot lookup hwmod 'l3_main_3'
[ 0.145050] omap_l3_noc ocp.2: couldn't find resource 0
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
l3_main_3 does not exist on dra7xx devices.
We see the below errors at boot because of it..
[ 0.144775] platform ocp.2: Cannot lookup hwmod 'l3_main_3'
[ 0.145050] omap_l3_noc ocp.2: couldn't find resource 0
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
ARM: DRA7: dpll: No freqsel on DRA7
With the growing number of devices which *do not* support freqsel,
stop extending the checks and have checks based on the only device
(343x) family that supports it.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
With the growing number of devices which *do not* support freqsel,
stop extending the checks and have checks based on the only device
(343x) family that supports it.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
ARM: DRA7: dpll: Lock GMAC PLL at boot
Lock GMAC PLL as per the Vayu PLL spec v0.3.2. Without
the GMAC PLL locked, we see the below hwmod init failures
at boot
[ 1.254333] clock: dpll_gmac_ck failed transition to 'locked'
[ 1.256835] omap_hwmod: pruss1: cannot be enabled for reset (3)
[ 2.415313] clock: dpll_gmac_ck failed transition to 'locked'
[ 2.417724] omap_hwmod: pruss2: cannot be enabled for reset (3)
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Lock GMAC PLL as per the Vayu PLL spec v0.3.2. Without
the GMAC PLL locked, we see the below hwmod init failures
at boot
[ 1.254333] clock: dpll_gmac_ck failed transition to 'locked'
[ 1.256835] omap_hwmod: pruss1: cannot be enabled for reset (3)
[ 2.415313] clock: dpll_gmac_ck failed transition to 'locked'
[ 2.417724] omap_hwmod: pruss2: cannot be enabled for reset (3)
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
ARM: DRA7: dpll: Lock ABE PLL according to ATL needs
The ATL (Audio Tracking Logic) module within DRA7xx requires a
precise 44.1Kz clock. The only possible source for it that can
supply the clock was found to be ABE PLL.
So lock the ABE PLL at 361.2670Mhz, so ATL module can derive the
precise 44.1Khz out of it.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
The ATL (Audio Tracking Logic) module within DRA7xx requires a
precise 44.1Kz clock. The only possible source for it that can
supply the clock was found to be ABE PLL.
So lock the ABE PLL at 361.2670Mhz, so ATL module can derive the
precise 44.1Khz out of it.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
ARM: DRA7: id: Change control_id_code register address
The CONTROL_ID_CODE register used for the device identification
is moved to CTRL_MODULE_WAKEUP partition. So updating the
register address for the same here.
Signed-off-by: Sricharan R <r.sricharan@ti.com>
The CONTROL_ID_CODE register used for the device identification
is moved to CTRL_MODULE_WAKEUP partition. So updating the
register address for the same here.
Signed-off-by: Sricharan R <r.sricharan@ti.com>
thermal: consider emul_temperature while computing trend
In case emulated temperature is in use, using the trend
provided by driver layer can lead to bogus situation.
In this case, debugger user would set a temperature value,
but the trend would be from driver computation.
To avoid this situation, this patch changes the get_tz_trend()
to consider the emulated temperature whenever that is in use.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
[Backported to 3.8]
Signed-off-by: J Keerthy <j-keerthy@ti.com>
In case emulated temperature is in use, using the trend
provided by driver layer can lead to bogus situation.
In this case, debugger user would set a temperature value,
but the trend would be from driver computation.
To avoid this situation, this patch changes the get_tz_trend()
to consider the emulated temperature whenever that is in use.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
[Backported to 3.8]
Signed-off-by: J Keerthy <j-keerthy@ti.com>
ARM: OMAP5: Add select tuples to enable CPUFREQ on OMAP5
ARM: DRA7XX: PM: add soc_is_dra7xx check to take care of freqsel absence
add soc_is_dra7xx check to take care of freqsel absence.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
add soc_is_dra7xx check to take care of freqsel absence.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
ARM: dts: dra7: add clock nodes for CPU and link avs_mpu regulator to cpu
Add clock nodes for CPU and link avs_mpu regulator to cpu.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Add clock nodes for CPU and link avs_mpu regulator to cpu.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Arm: DRA7XX: Clock: Update dpll_mpu_ck_ops
Update dpll_mpu_ck_ops so as to have a custom dpll_set_rate
on the similar lines of OMAP5. The bit fields and the rates
are exactly the same hence reusing the same functions as that
of OMAP5.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Update dpll_mpu_ck_ops so as to have a custom dpll_set_rate
on the similar lines of OMAP5. The bit fields and the rates
are exactly the same hence reusing the same functions as that
of OMAP5.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
ARM: DTS: DRA7: Link the actual TPS659038 regulators to
Link the actual TPS659038 regulators to AVS class 0 regulators.
Referred Visio-Power_Diagram 20121109b.pdf a visio diagram
showing which SMPS feeds on to which voltage domain on DRA7.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Link the actual TPS659038 regulators to AVS class 0 regulators.
Referred Visio-Power_Diagram 20121109b.pdf a visio diagram
showing which SMPS feeds on to which voltage domain on DRA7.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
ARM: DTS: DRA7: Add avs class 0 regulator nodes
Add avs class 0 regulator nodes.
Referred:
DRA7xx_ES1.0_NDA_TRM_vC.pdf for the Efuse register addresses.
DMInputs-Voltages-2013-04-05.xlsx for the latest OPP voltages.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Add avs class 0 regulator nodes.
Referred:
DRA7xx_ES1.0_NDA_TRM_vC.pdf for the Efuse register addresses.
DMInputs-Voltages-2013-04-05.xlsx for the latest OPP voltages.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
regulator: ti-avs-class0: use regulator name based on device instance
Don't use the same regulator descriptor for all regulator instance,
as there will be a name conflict. Instead pick up the device name and
create the descriptor.
As part of this change, save on multiple kzallocs by moving the
descriptor allocation as part of tiavs_class0_data allocation and drop
the need for an temp descriptor.
Signed-off-by: Nishanth Menon <nm@ti.com>
Don't use the same regulator descriptor for all regulator instance,
as there will be a name conflict. Instead pick up the device name and
create the descriptor.
As part of this change, save on multiple kzallocs by moving the
descriptor allocation as part of tiavs_class0_data allocation and drop
the need for an temp descriptor.
Signed-off-by: Nishanth Menon <nm@ti.com>
regulator: ti-avs-class0: dont reserve efuse memory offsets
devm_request_and_ioremap reserves the efuse offsets for AVS class0,
However, these efuse offsets might be used by other drivers for
information from the same efuse offset ranges as well. hence just
remap the range with devm_ioremap_nocache and read the required data
out.
Signed-off-by: Nishanth Menon <nm@ti.com>
devm_request_and_ioremap reserves the efuse offsets for AVS class0,
However, these efuse offsets might be used by other drivers for
information from the same efuse offset ranges as well. hence just
remap the range with devm_ioremap_nocache and read the required data
out.
Signed-off-by: Nishanth Menon <nm@ti.com>
cpufreq: cpufreq-cpu0: defer probe when regulator is not ready(v2)
upstream posted https://patchwork.kernel.org/patch/2505311/
With commit 1e4b545, regulator_get will now return -EPROBE_DEFER
when the cpu0-supply node is present, but the regulator is not yet
registered.
It is possible for this to occur when the regulator registration
by itself might be defered due to some dependent interface not yet
instantiated. For example: an regulator which uses I2C and GPIO might
need both systems available before proceeding, in this case, the
regulator might defer it's registration.
However, the cpufreq-cpu0 driver assumes that any un-successful return
result is equivalent of failure.
When the regulator_get returns failure other than -EPROBE_DEFER, it
makes sense to assume that supply node is not present and proceed with
the assumption that only clock control is necessary in the platform.
With this change, we can now handle the following conditions:
a) cpu0-supply binding is not present, regulator_get will return
appropriate error result, resulting in cpufreq-cpu0 driver controlling
just the clock.
b) cpu0-supply binding is present, regulator_get returns
-EPROBE_DEFER, we retry resulting in cpufreq-cpu0 driver registering
later once the regulator is available.
c) cpu0-supply binding is present, regulator_get returns
-EPROBE_DEFER, however, regulator never registers, we retry until
cpufreq-cpu0 driver fails to register pointing at device tree
information bug. However, in this case, the fact that cpufreq-cpu0
operates with clock only when the DT binding clearly indicates need of
a supply is a bug of it's own.
d) cpu0-supply gets an regulator at probe - cpufreq-cpu0 driver
controls both the clock and regulator
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Nishanth Menon <nm@ti.com>
upstream posted https://patchwork.kernel.org/patch/2505311/
With commit 1e4b545, regulator_get will now return -EPROBE_DEFER
when the cpu0-supply node is present, but the regulator is not yet
registered.
It is possible for this to occur when the regulator registration
by itself might be defered due to some dependent interface not yet
instantiated. For example: an regulator which uses I2C and GPIO might
need both systems available before proceeding, in this case, the
regulator might defer it's registration.
However, the cpufreq-cpu0 driver assumes that any un-successful return
result is equivalent of failure.
When the regulator_get returns failure other than -EPROBE_DEFER, it
makes sense to assume that supply node is not present and proceed with
the assumption that only clock control is necessary in the platform.
With this change, we can now handle the following conditions:
a) cpu0-supply binding is not present, regulator_get will return
appropriate error result, resulting in cpufreq-cpu0 driver controlling
just the clock.
b) cpu0-supply binding is present, regulator_get returns
-EPROBE_DEFER, we retry resulting in cpufreq-cpu0 driver registering
later once the regulator is available.
c) cpu0-supply binding is present, regulator_get returns
-EPROBE_DEFER, however, regulator never registers, we retry until
cpufreq-cpu0 driver fails to register pointing at device tree
information bug. However, in this case, the fact that cpufreq-cpu0
operates with clock only when the DT binding clearly indicates need of
a supply is a bug of it's own.
d) cpu0-supply gets an regulator at probe - cpufreq-cpu0 driver
controls both the clock and regulator
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Nishanth Menon <nm@ti.com>
regulator: core: return err value for regulator_get if there is no DT binding
commit 1e4b545cdd93318379c6b1fb0a99536fa3260f53 upstream.
commit 6d191a5fc7a969d972f1681e1c23781aecb06a61
(regulator: core: Don't defer probe if there's no DT binding for a supply)
Attempted to differentiate between regulator_get() with an actual
DT binding for the supply and when there is none to avoid unnecessary
deferal.
However, ret value supplied by regulator_dev_lookup() is being
ignored by regulator_get(). So, exit with the appropriate return value.
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
commit 1e4b545cdd93318379c6b1fb0a99536fa3260f53 upstream.
commit 6d191a5fc7a969d972f1681e1c23781aecb06a61
(regulator: core: Don't defer probe if there's no DT binding for a supply)
Attempted to differentiate between regulator_get() with an actual
DT binding for the supply and when there is none to avoid unnecessary
deferal.
However, ret value supplied by regulator_dev_lookup() is being
ignored by regulator_get(). So, exit with the appropriate return value.
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
ARM/dts: dra7-evm: Enable tps659038 on i2c1 bus
Enable tps659038 on i2c1 bus.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Enable tps659038 on i2c1 bus.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
arm: dts: dra7: add I2C devices to dra7 DeviceTree file
Add all 5 I2C instances to dra7.dtsi file.
Also populate the i2c nodes in dra board file.
Signed-off-by: Sourav Poddar <sourav.poddar@ti.com>
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Add all 5 I2C instances to dra7.dtsi file.
Also populate the i2c nodes in dra board file.
Signed-off-by: Sourav Poddar <sourav.poddar@ti.com>
Signed-off-by: J Keerthy <j-keerthy@ti.com>
arm: omap2plus_defconfig: enable DRA752 thermal support by default
Make DRA752 thermal support enabled on omap2plus_defconfig
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
Make DRA752 thermal support enabled on omap2plus_defconfig
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
arm: mach-omap2: flag DRA7 as having bandgap
Make sure bandgap feature is available for building DRA7 chips
support.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
Make sure bandgap feature is available for building DRA7 chips
support.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
arm: dts: add bandgap entry for DRA752 chips
Add bandgap DT entry.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
Add bandgap DT entry.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
staging: ti-soc-thermal: add DT example for DRA752 chip
Update documentation by adding an example for DRA752 on DT description.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
Update documentation by adding an example for DRA752 on DT description.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
staging: ti-soc-thermal: remove external heat while extrapolating hotspot
For boards that provide a PCB sensor close to SoC junction
temperature, it is possible to remove the cumulative heat
reported by the SoC temperature sensor.
This patch changes the extrapolation computation to consider
an external sensor in the extrapolation equations.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
For boards that provide a PCB sensor close to SoC junction
temperature, it is possible to remove the cumulative heat
reported by the SoC temperature sensor.
This patch changes the extrapolation computation to consider
an external sensor in the extrapolation equations.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
thermal: expose thermal_zone_get_temp API
This patch exports the thermal_zone_get_temp API so that driver
writers can fetch temperature of thermal zones managed by other
drivers.
Acked-by: Zhang Rui <rui.zhang@intel.com>
Acked-by: Durgadoss R <durgadoss.r@intel.com>
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
This patch exports the thermal_zone_get_temp API so that driver
writers can fetch temperature of thermal zones managed by other
drivers.
Acked-by: Zhang Rui <rui.zhang@intel.com>
Acked-by: Durgadoss R <durgadoss.r@intel.com>
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
thermal: introduce thermal_zone_get_zone_by_name helper function
This patch adds a helper function to get a reference of
a thermal zone, based on the zone type name.
It will perform a zone name lookup and return a reference
to a thermal zone device that matches the name requested.
In case the zone is not found or when several zones match
same name or if the required parameters are invalid, it will return
the corresponding error code (ERR_PTR).
Acked-by: Zhang Rui <rui.zhang@intel.com>
Acked-by: Durgadoss R <durgadoss.r@intel.com>
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
This patch adds a helper function to get a reference of
a thermal zone, based on the zone type name.
It will perform a zone name lookup and return a reference
to a thermal zone device that matches the name requested.
In case the zone is not found or when several zones match
same name or if the required parameters are invalid, it will return
the corresponding error code (ERR_PTR).
Acked-by: Zhang Rui <rui.zhang@intel.com>
Acked-by: Durgadoss R <durgadoss.r@intel.com>
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
staging: ti-soc-thermal: add dra752 chip to device table
Add support to TI dra752 chips by adapting the driver
device table.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
Add support to TI dra752 chips by adapting the driver
device table.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
staging: ti-soc-thermal: add thermal data for DRA752 chips
This patch adds the thermal data for TI DRA752 chips.
In this change it includes (autogen):
. Register offset definitions
. Bitfields and masks for all registers
. Conversion table
Also, the thermal limits, thresholds and extrapolation
rules are included. The extrapolation rule is simply
add +2C as margin.
All 5 sensors, MPU, GPU, CORE, DSPEVE and IVA, are defined
and exposed. Only MPU has cooling device.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
This patch adds the thermal data for TI DRA752 chips.
In this change it includes (autogen):
. Register offset definitions
. Bitfields and masks for all registers
. Conversion table
Also, the thermal limits, thresholds and extrapolation
rules are included. The extrapolation rule is simply
add +2C as margin.
All 5 sensors, MPU, GPU, CORE, DSPEVE and IVA, are defined
and exposed. Only MPU has cooling device.
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
regulator: introduce TI AVS class 0 driver
OMAP5 technology based processors such as DRA7XX[1] has an simplified AVS
strategy called SmartReflex[2] Class 0. Texas Instrument's nomenclature for
this is: Class - 0: Production Test Calibration
This, in it's simplistic form implies that the voltage value for each OPP
is now encoded into an efuse location.
On entering an OPP, the voltage value to be selected is no longer the
traditional nominal voltage, but the voltage meant from the efuse offset
encoded in millivolts. Each device will have it's own unique voltage for a
given OPP. Therefore, it is not possible to encode a range of voltage
representing an OPP voltage.
DRA processors may be powered using various PMICs - I2C based ones such
as TPS659039 or SPI / GPIO controlled ones as well.
cpufreq/devfreq driver which controls voltage and frequency pairs traditionally
used:
cpufreq/devfreq --> PMIC regulator
\-> clock framework
This opens up a few issues:
a) PMIC regulator is designed for platforms that maynot use SmartReflex class 0
based SoCs, encoding the efuse offsets into every possible PMIC regulator
driver is practically in-efficient.
b) Voltage values are not known a-priori to be encoded into DTB as they are
device specific.
Another option might have been to start off with the nominal voltages in
DT and then fixup the voltage entries in the OPP table by reading the
eFuse information.
However, such an approach introduces formidable constraints:
A) OPP tables once added are not modifiable beyond enable/disable - that
was the entire design constraint we wanted on OPP tables
B) We need some indexing value for uniquely identifying what to do for
an given OPP voltage - if OPP voltage by itself changes, how do we index
various subsystems? - read abb/avs class 2 based class 1.
C) We have n voltage domains and m devices per domain. - we no longer
want to maintain an centralized OPP table.
D) We also need to support multiple platforms which have "ganged voltage
rails" each domain with variable voltages.
E) Modification of the OPP data itself is hard - considering that we do
not have a centralized OPP repository, architecture independent drivers
like cpufreq-cpu0 driver does the "adding of OPPs".
Options:
a) modify arch generic drivers such as cpufreq-cpu0 driver with an OMAP
specific an efuse offset and OMAP specific handling is a bad idea.
b) we are able to overlay OPP table entried *before* cpufreq driver
comes active
- I am not sure we have ability to do that in kernel yet
- I am not even sure we can modify the dtb being loaded by all
bootloaders we may have (thinking beyond u-boot).
To simplify this, we introduce:
cpufreq/devfreq --> SmartReflex Class 0 regulator --> PMIC regulator
\-> clock framework
Class 0 Regulator has information of translating the "nominal voltage" into
voltage value stored in efuse offset.
Example encoding:
uVolts mVolt --> stored as 16 bit hex value of mV
975000 975 --> 0x03CF
1075000 1075 --> 0x0433
1200000 1200 --> 0x04B0
[1] http://www.ti.com/lit/ds/sprt659/sprt659.pdf
[2] http://www.ti.com/lit/wp/swpy015a/swpy015a.pdf
Signed-off-by: Nishanth Menon <nm@ti.com>
OMAP5 technology based processors such as DRA7XX[1] has an simplified AVS
strategy called SmartReflex[2] Class 0. Texas Instrument's nomenclature for
this is: Class - 0: Production Test Calibration
This, in it's simplistic form implies that the voltage value for each OPP
is now encoded into an efuse location.
On entering an OPP, the voltage value to be selected is no longer the
traditional nominal voltage, but the voltage meant from the efuse offset
encoded in millivolts. Each device will have it's own unique voltage for a
given OPP. Therefore, it is not possible to encode a range of voltage
representing an OPP voltage.
DRA processors may be powered using various PMICs - I2C based ones such
as TPS659039 or SPI / GPIO controlled ones as well.
cpufreq/devfreq driver which controls voltage and frequency pairs traditionally
used:
cpufreq/devfreq --> PMIC regulator
\-> clock framework
This opens up a few issues:
a) PMIC regulator is designed for platforms that maynot use SmartReflex class 0
based SoCs, encoding the efuse offsets into every possible PMIC regulator
driver is practically in-efficient.
b) Voltage values are not known a-priori to be encoded into DTB as they are
device specific.
Another option might have been to start off with the nominal voltages in
DT and then fixup the voltage entries in the OPP table by reading the
eFuse information.
However, such an approach introduces formidable constraints:
A) OPP tables once added are not modifiable beyond enable/disable - that
was the entire design constraint we wanted on OPP tables
B) We need some indexing value for uniquely identifying what to do for
an given OPP voltage - if OPP voltage by itself changes, how do we index
various subsystems? - read abb/avs class 2 based class 1.
C) We have n voltage domains and m devices per domain. - we no longer
want to maintain an centralized OPP table.
D) We also need to support multiple platforms which have "ganged voltage
rails" each domain with variable voltages.
E) Modification of the OPP data itself is hard - considering that we do
not have a centralized OPP repository, architecture independent drivers
like cpufreq-cpu0 driver does the "adding of OPPs".
Options:
a) modify arch generic drivers such as cpufreq-cpu0 driver with an OMAP
specific an efuse offset and OMAP specific handling is a bad idea.
b) we are able to overlay OPP table entried *before* cpufreq driver
comes active
- I am not sure we have ability to do that in kernel yet
- I am not even sure we can modify the dtb being loaded by all
bootloaders we may have (thinking beyond u-boot).
To simplify this, we introduce:
cpufreq/devfreq --> SmartReflex Class 0 regulator --> PMIC regulator
\-> clock framework
Class 0 Regulator has information of translating the "nominal voltage" into
voltage value stored in efuse offset.
Example encoding:
uVolts mVolt --> stored as 16 bit hex value of mV
975000 975 --> 0x03CF
1075000 1075 --> 0x0433
1200000 1200 --> 0x04B0
[1] http://www.ti.com/lit/ds/sprt659/sprt659.pdf
[2] http://www.ti.com/lit/wp/swpy015a/swpy015a.pdf
Signed-off-by: Nishanth Menon <nm@ti.com>
regulator: introduce regulator chain locking scheme
In some cases the regulators may be organized in a chain like:
->regA->regB->regC
where regA is supplier for regB and regB is supplier for regC.
Currently it would be possible to reconfigure regA and regC at same time
form different contexts, because each regulator has it own mutex.
But in some cases, the only the whole chain is allowed be reconfigured
because of dependencies between regulators - to change regB
configuration the regA need to be updated first.
Hence, introduce regulator chain locking scheme to lock whole Regulator
chain in case if any part of it has been accessed from outside. To
achieve this goal the root Regulator (which has no supply defined, like
regA) in chain is used to protect the whole chain.
In addition, such locking scheme allows to have access to the supplier
regulator API from inside child's (consumer) regulator API.
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
In some cases the regulators may be organized in a chain like:
->regA->regB->regC
where regA is supplier for regB and regB is supplier for regC.
Currently it would be possible to reconfigure regA and regC at same time
form different contexts, because each regulator has it own mutex.
But in some cases, the only the whole chain is allowed be reconfigured
because of dependencies between regulators - to change regB
configuration the regA need to be updated first.
Hence, introduce regulator chain locking scheme to lock whole Regulator
chain in case if any part of it has been accessed from outside. To
achieve this goal the root Regulator (which has no supply defined, like
regA) in chain is used to protect the whole chain.
In addition, such locking scheme allows to have access to the supplier
regulator API from inside child's (consumer) regulator API.
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
regulators: abstract locking out into helper functions
Create locking helpers for the regulator mutex. These helpers will be
needed for the next patch which introduces Regulator chain locking
scheme.
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Create locking helpers for the regulator mutex. These helpers will be
needed for the next patch which introduces Regulator chain locking
scheme.
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
rtc: palmas: Enable device tree support for Palmas RTC.
Enable device tree support for Palmas RTC.
The Documentation is updated here:
Documentation/devicetree/bindings/rtc/palmas-rtc.txt
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Enable device tree support for Palmas RTC.
The Documentation is updated here:
Documentation/devicetree/bindings/rtc/palmas-rtc.txt
Signed-off-by: J Keerthy <j-keerthy@ti.com>
rtc: palmas: Add RTC driver Palmas series PMIC
TI Palmas series PMIC support the RTC and alarm functionality.
Add RTC driver with alarm support for this device.
This patch is picked from the mainline kernel.
https://patchwork.kernel.org/patch/1926921/
Commit id: 0101e53cbb1c653738de8dfddc80c0faa5a4fd39
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
[j-keerthy@ti.com: backport from upstream 0101e53cbb1c653738de8dfddc80c0faa5a4fd39]
Signed-off-by: J Keerthy <j-keerthy@ti.com>
TI Palmas series PMIC support the RTC and alarm functionality.
Add RTC driver with alarm support for this device.
This patch is picked from the mainline kernel.
https://patchwork.kernel.org/patch/1926921/
Commit id: 0101e53cbb1c653738de8dfddc80c0faa5a4fd39
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
[j-keerthy@ti.com: backport from upstream 0101e53cbb1c653738de8dfddc80c0faa5a4fd39]
Signed-off-by: J Keerthy <j-keerthy@ti.com>
rtc: Revert rtc-palmas driver for palmas PMIC
This reverts commit 5e3935c6e9d8d1bd05d39fde55b913f85a1b42a4.
(rtc: rtc-palmas a new driver for palmas PMIC). Removing
the intermediate version of the driver to absorb the upstreamed
driver.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
This reverts commit 5e3935c6e9d8d1bd05d39fde55b913f85a1b42a4.
(rtc: rtc-palmas a new driver for palmas PMIC). Removing
the intermediate version of the driver to absorb the upstreamed
driver.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
mfd: palmas: Add rtc irq number as irq resource for palmas-rtc
Palma RTC is capable of generating alarm interrupt. Pass the alarm interrupt
as IRQ_RESOURCE for palmas-rtc sub device driver so that rtc driver can get
irq as platform_get_irq().
Also pass the irq domain in mfd_add_devices() to properly offset the irqs for
sub devices. This is needed when adding device through DT.
This patch is absorbed from the Mainline kernel:
http://lkml.indiana.edu/hypermail/linux/kernel/1301.0/00559.html
Commit id: a36516b016f52f0f6e5284025e3487f63b4be33b
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
[j-keerthy@ti.com: backport from upstream a36516b016f52f0f6e5284025e3487f63b4be33b]
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Palma RTC is capable of generating alarm interrupt. Pass the alarm interrupt
as IRQ_RESOURCE for palmas-rtc sub device driver so that rtc driver can get
irq as platform_get_irq().
Also pass the irq domain in mfd_add_devices() to properly offset the irqs for
sub devices. This is needed when adding device through DT.
This patch is absorbed from the Mainline kernel:
http://lkml.indiana.edu/hypermail/linux/kernel/1301.0/00559.html
Commit id: a36516b016f52f0f6e5284025e3487f63b4be33b
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
[j-keerthy@ti.com: backport from upstream a36516b016f52f0f6e5284025e3487f63b4be33b]
Signed-off-by: J Keerthy <j-keerthy@ti.com>
mfd: palmas: Add APIs to access the Palmas' registers
Palmas register set is divided into different blocks (base and offset)
and hence different i2c addresses. The i2c address offsets are derived
from base address of block of registers.
Add inline APIs to access the Palma's registers which takes the base of
register block and register offset. The i2c address offset is derived
from the base address of register blocks.
This patch is picked up from Mainline kernel:
https://patchwork.kernel.org/patch/1926911/
Commit id: 60c185f059c88ad4b9b170b1f9322e3adcccca07
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
[j-keerthy@ti.com: backport from upstream 60c185f059c88ad4b9b170b1f9322e3adcccca07]
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Palmas register set is divided into different blocks (base and offset)
and hence different i2c addresses. The i2c address offsets are derived
from base address of block of registers.
Add inline APIs to access the Palma's registers which takes the base of
register block and register offset. The i2c address offset is derived
from the base address of register blocks.
This patch is picked up from Mainline kernel:
https://patchwork.kernel.org/patch/1926911/
Commit id: 60c185f059c88ad4b9b170b1f9322e3adcccca07
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
[j-keerthy@ti.com: backport from upstream 60c185f059c88ad4b9b170b1f9322e3adcccca07]
Signed-off-by: J Keerthy <j-keerthy@ti.com>
ARM/dts: add dtsi file for TPS659038 device
Add dtsi file for TPS659038 device.
The Documents referred:
1) TPS659039-Q1 POWER MANAGEMENT UNIT (PMU) FOR PROCESSOR Data Manual
2) TPS659038/39-Q1 Functional Register Descriptions.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Add dtsi file for TPS659038 device.
The Documents referred:
1) TPS659039-Q1 POWER MANAGEMENT UNIT (PMU) FOR PROCESSOR Data Manual
2) TPS659038/39-Q1 Functional Register Descriptions.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
regulators: palmas: Add TPS659038 support
Add TPS659038 support. The TPS659038 belongs to PALMAS family.
The only difference between TPS659038 and TWL6035 w.r.t
regulators is the SMPS10 is not present in TPS659038.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Add TPS659038 support. The TPS659038 belongs to PALMAS family.
The only difference between TPS659038 and TWL6035 w.r.t
regulators is the SMPS10 is not present in TPS659038.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
mfd: Palmas: Add TPS659038 PMIC support
The Patch adds TPS659038 PMIC support in the palmas mfd driver.
The TPS659038 has almost the same registers as of the earlier
supported variants of PALMAS family such as the TWL6035.
The critical differences between TPS659038 and TWL6035 being:
1) TPS659038 has nothing related to battery charging and back up battery stuff.
2) TPS659038 does not have does not have SMPS10(Boost) step up convertor.
3) TPS659038 does not have Battery detection and anything related to battery.
4) TPS659038 has something more than Palmas in one case it is called
Sync clock Functionality.
5) can use an external crystal unit or 16MHz oscillator to generate clock.
6) SD card detection, Battery presence detection, Vibrator, USB OTG are missing
when compared to TWL6035.
Hence some of the IRQs are reserved in case of TPS659038 but the
remaining are bit exact compared to TWL6035.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
The Patch adds TPS659038 PMIC support in the palmas mfd driver.
The TPS659038 has almost the same registers as of the earlier
supported variants of PALMAS family such as the TWL6035.
The critical differences between TPS659038 and TWL6035 being:
1) TPS659038 has nothing related to battery charging and back up battery stuff.
2) TPS659038 does not have does not have SMPS10(Boost) step up convertor.
3) TPS659038 does not have Battery detection and anything related to battery.
4) TPS659038 has something more than Palmas in one case it is called
Sync clock Functionality.
5) can use an external crystal unit or 16MHz oscillator to generate clock.
6) SD card detection, Battery presence detection, Vibrator, USB OTG are missing
when compared to TWL6035.
Hence some of the IRQs are reserved in case of TPS659038 but the
remaining are bit exact compared to TWL6035.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
mfd: Palmas: Introduce palmas_pmic_data structure
Introduce palmas_pmic_data structure so that Palmas variants
like TWL6035, TWL6037, TPS65913 can populate data specific
to them. This enables driver to support variants.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Introduce palmas_pmic_data structure so that Palmas variants
like TWL6035, TWL6037, TPS65913 can populate data specific
to them. This enables driver to support variants.
Signed-off-by: J Keerthy <j-keerthy@ti.com>
mfd: DT bindings for the palmas family MFD (v10)
Add the various binding files for the palmas family of chips.
There is a top level MFD binding then a seperate binding for IP blocks on chips.
This patch is picked up from v10 of the palmas patch set:
https://patchwork.kernel.org/patch/2321171/
Signed-off-by: Graeme Gregory <gg@slimlogic.co.uk>
[j-keerthy@ti.com: backport from v10 of the palmas patch set:
https://patchwork.kernel.org/patch/2321171/]
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Signed-off-by: Ian Lartey <ian@slimlogic.co.uk>
Add the various binding files for the palmas family of chips.
There is a top level MFD binding then a seperate binding for IP blocks on chips.
This patch is picked up from v10 of the palmas patch set:
https://patchwork.kernel.org/patch/2321171/
Signed-off-by: Graeme Gregory <gg@slimlogic.co.uk>
[j-keerthy@ti.com: backport from v10 of the palmas patch set:
https://patchwork.kernel.org/patch/2321171/]
Signed-off-by: J Keerthy <j-keerthy@ti.com>
Signed-off-by: Ian Lartey <ian@slimlogic.co.uk>
Merge remote-tracking branch 'rnayak/platform-base-vayu-3.8.y' into vayu-pm-linux-3.8.y
Conflicts:
arch/arm/mach-omap2/clockdomain.h
arch/arm/mach-omap2/control.h
arch/arm/mach-omap2/omap-hotplug.c
arch/arm/mach-omap2/omap-mpuss-lowpower.c
arch/arm/mach-omap2/pm_omap4plus.c
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Conflicts:
arch/arm/mach-omap2/clockdomain.h
arch/arm/mach-omap2/control.h
arch/arm/mach-omap2/omap-hotplug.c
arch/arm/mach-omap2/omap-mpuss-lowpower.c
arch/arm/mach-omap2/pm_omap4plus.c
Signed-off-by: Tero Kristo <t-kristo@ti.com>
ARM: DRA7: Prevent any low power entry in suspend
On DRA7 we do not support low power for MPU in either suspend or
cpuidle.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
On DRA7 we do not support low power for MPU in either suspend or
cpuidle.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
ARM: DRA7: Add the build support
Adding the build support required for DRA7xx soc
in to omap2+ config.
Signed-off-by: R Sricharan <r.sricharan@ti.com>
Adding the build support required for DRA7xx soc
in to omap2+ config.
Signed-off-by: R Sricharan <r.sricharan@ti.com>
ARM: DRA7: Add PRM dev_inst module offset in global_warm_reset function
Currently omap4_prminst_global_warm_reset function is invoked by
OMAP4/5 socs upon a system reboot command. Add the right PRM module
device_inst offset for DRA_7xx devices, to reuse it for
DRA7xx as well.
Signed-off-by: Sricharan R <r.sricharan@ti.com>
Currently omap4_prminst_global_warm_reset function is invoked by
OMAP4/5 socs upon a system reboot command. Add the right PRM module
device_inst offset for DRA_7xx devices, to reuse it for
DRA7xx as well.
Signed-off-by: Sricharan R <r.sricharan@ti.com>
ARM: DRA7: Enable framework initializations
Initialise the power, HWMOD, clock domains and the clock tree.
Signed-off-by: Ambresh K <ambresh@ti.com>
Initialise the power, HWMOD, clock domains and the clock tree.
Signed-off-by: Ambresh K <ambresh@ti.com>
ARM: DRA7: hwmod data: Create initial DRA7XX SOC hwmod data
Adding the hwmod data for DRA7XX platforms.
Signed-off-by: Ambresh K <ambresh@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Adding the hwmod data for DRA7XX platforms.
Signed-off-by: Ambresh K <ambresh@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
ARM: DRA7: clock data: Add DRA7XX full clock tree and headers
Add the clock tree related data for DRA7XX platforms.
Signed-off-by: Ambresh K <ambresh@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Add the clock tree related data for DRA7XX platforms.
Signed-off-by: Ambresh K <ambresh@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
ARM: DRA7: powerdomain data: Add DRA7XX data and update the header
Add the data file to describe all power domains inside the DRA7XX soc.
Signed-off-by: Ambresh K <ambresh@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Add the data file to describe all power domains inside the DRA7XX soc.
Signed-off-by: Ambresh K <ambresh@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
ARM: DRA7: clockdomain data: Add DRA7XX data and update the header
Add the data file to describe all clock domains inside the DRA7XX SOC
Signed-off-by: Ambresh K <ambresh@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Add the data file to describe all clock domains inside the DRA7XX SOC
Signed-off-by: Ambresh K <ambresh@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
ARM: DRA7: PRCM: Add DRA7XX local MPU PRCM regsiters
Add the PRCM MPU registers for DRA7XX platforms
Signed-off-by: Ambresh K <ambresh@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
[rnayak@ti.com: Added PRCM partition information]
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Add the PRCM MPU registers for DRA7XX platforms
Signed-off-by: Ambresh K <ambresh@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
[rnayak@ti.com: Added PRCM partition information]
Signed-off-by: Rajendra Nayak <rnayak@ti.com>