ARM: OMAP: AM33XX: Low power optimizations
As per the design team, in order to reduce VDDS_DDR
is suspend state the following things must be done:
1. Set the IOs to work in mDDR mode by setting mDDR_SEL
bit in the DDR_IO_CTRL register
2. Enable weak pull down for DQ and DM by configuring
the DDR_DATA0/1_IOCTRL registers
3. Disable VTP and also set P and N in VTP_CTRL to 1.
In the suspend state, A8 SRAM is configured to OFF state,
so to further reduce the power consumption SRAM LDO
is also configured to go to RET mode.
In the resume path all these registers need to restored
back to the pre-suspend state before any access to DDR
happens.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
As per the design team, in order to reduce VDDS_DDR
is suspend state the following things must be done:
1. Set the IOs to work in mDDR mode by setting mDDR_SEL
bit in the DDR_IO_CTRL register
2. Enable weak pull down for DQ and DM by configuring
the DDR_DATA0/1_IOCTRL registers
3. Disable VTP and also set P and N in VTP_CTRL to 1.
In the suspend state, A8 SRAM is configured to OFF state,
so to further reduce the power consumption SRAM LDO
is also configured to go to RET mode.
In the resume path all these registers need to restored
back to the pre-suspend state before any access to DDR
happens.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
mmc: omap_hsmmc: Pass on the suspend failure to the PM core
In some cases mmc_host_suspend() is not able to claim the
host and proceed with the suspend process. The core returns
-EBUSY to the host controller driver. Unfortunately, the
host controller driver does not pass on this information
to the PM core and hence the system suspend process continues.
In these cases the MMC core gets to an unexpected state
during resume and multiple issues related to MMC crop up.
1. Host controller driver starts accessing the device registers
before the clocks are enabled which leads to a prefetch abort.
2. A file copy thread which was launched before suspend gets
stuck due to the host not being reclaimed during resume.
To avoid such problems pass on the -EBUSY status to the PM core
from the host controller driver. With this change, MMC core
suspend might still fail but it does not end up making the
system unusable. Suspend gets aborted and the user can try
suspending the system again.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
In some cases mmc_host_suspend() is not able to claim the
host and proceed with the suspend process. The core returns
-EBUSY to the host controller driver. Unfortunately, the
host controller driver does not pass on this information
to the PM core and hence the system suspend process continues.
In these cases the MMC core gets to an unexpected state
during resume and multiple issues related to MMC crop up.
1. Host controller driver starts accessing the device registers
before the clocks are enabled which leads to a prefetch abort.
2. A file copy thread which was launched before suspend gets
stuck due to the host not being reclaimed during resume.
To avoid such problems pass on the -EBUSY status to the PM core
from the host controller driver. With this change, MMC core
suspend might still fail but it does not end up making the
system unusable. Suspend gets aborted and the user can try
suspending the system again.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
PWM: backlight: Set the PWM frequency to 20KHz.
PWM frequency in audible frequency (< 20KHz) range causes some noise on
brightness values other than 100%. Also with the the PWM frequency of
100 Hz, flickers are also visible. So this patch fixes PWM frequency to
20KHz (outside audible range) and put lth_brightness value to 21 to
obtain a linear scale of brightness from 0 to 100%.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
PWM frequency in audible frequency (< 20KHz) range causes some noise on
brightness values other than 100%. Also with the the PWM frequency of
100 Hz, flickers are also visible. So this patch fixes PWM frequency to
20KHz (outside audible range) and put lth_brightness value to 21 to
obtain a linear scale of brightness from 0 to 100%.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP: AM33XX: CAN: d_can: fix the rx problem
This patch fixes the d_can receiver problem after suspend/resume
cycle.
Details:
After resuming from deepsleep Zero DCAN receiver is not exporting
packets to userspace. This issue mainly because of RAMINIT sequence
is not correct in suspend resume cycle.
This patch replace the tristate open_status flag with two state opened
flag, which is required with the current implementation. Here we end up
with two states one is DCAN is opened or not. If it is opened then we
have to do d_can_stop() and d_can_start() otherwise not required. If
this flag is not there then some unknow bittimming value is programed
to DCAN BTR register which is not expected.
This patch also moves the runtime PM calls from open/close APIs to
DCAN suspend/resume APIs, required along with DCAN RAMINIT and DEINIT
Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
This patch fixes the d_can receiver problem after suspend/resume
cycle.
Details:
After resuming from deepsleep Zero DCAN receiver is not exporting
packets to userspace. This issue mainly because of RAMINIT sequence
is not correct in suspend resume cycle.
This patch replace the tristate open_status flag with two state opened
flag, which is required with the current implementation. Here we end up
with two states one is DCAN is opened or not. If it is opened then we
have to do d_can_stop() and d_can_start() otherwise not required. If
this flag is not there then some unknow bittimming value is programed
to DCAN BTR register which is not expected.
This patch also moves the runtime PM calls from open/close APIs to
DCAN suspend/resume APIs, required along with DCAN RAMINIT and DEINIT
Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
ARM: OMAP: AM335x: Update defconfig
1. Change the default governor for cpufreq to userspace
2. Enable debugfs and dynamic printk feature
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
1. Change the default governor for cpufreq to userspace
2. Enable debugfs and dynamic printk feature
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
video: da8xx-fb: Reset LCDC before re-enabling
"08657ec video: da8xx-fb: correct suspend/resume sequence"
moved reset out of raster enable. For proper LCDC enable,
reset also has to be done. Reintroduce reset in raster enable.
Without this raster enable will not guarantee proper
enabling of LCDC (like in the case of blank/unblank).
Signed-off-by: Manjunathappa, Prakash <prakash.pm@ti.com>
"08657ec video: da8xx-fb: correct suspend/resume sequence"
moved reset out of raster enable. For proper LCDC enable,
reset also has to be done. Reintroduce reset in raster enable.
Without this raster enable will not guarantee proper
enabling of LCDC (like in the case of blank/unblank).
Signed-off-by: Manjunathappa, Prakash <prakash.pm@ti.com>
PWM: ehrpwm: Fix polarity polarity of PWM signal.
While configuring duty percentage for eHRPWM, polarity is also
configured. On reset, counter value is zero. So, on configuring
polarity, eHRPWM line goes high as counter is zero. This results in 100%
duty cycle and starts eHRPWM even before calling pwm_start.
This patch fixes the same.
Also this patch moves ehrpwm_pwm_set_pol function definition to starting of the
file to avoid prototype declaration.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
While configuring duty percentage for eHRPWM, polarity is also
configured. On reset, counter value is zero. So, on configuring
polarity, eHRPWM line goes high as counter is zero. This results in 100%
duty cycle and starts eHRPWM even before calling pwm_start.
This patch fixes the same.
Also this patch moves ehrpwm_pwm_set_pol function definition to starting of the
file to avoid prototype declaration.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
net: cpsw: fix indentation using spaces
ARM: OMAP: AM33XX: NET: cpsw: Set SYSC for NO_IDLE and NO_STDBY
In a successful suspend-resume cycle the register context is
lost and hence SYSC will go back to its default value of
NO_IDLE and NO_STDBY. However, in a suspend failure/abort due
to some or the other reason, the register is set to
FORCE_IDLE and FORCE_STDBY but never cleared.
If the driver had been fully converted to HWMOD this would have
been taken care of in the generic code. For now, after enabling the
CPSW clock explicitly set the SYSC of CPSW to NO_IDLE and NO_STDBY.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
In a successful suspend-resume cycle the register context is
lost and hence SYSC will go back to its default value of
NO_IDLE and NO_STDBY. However, in a suspend failure/abort due
to some or the other reason, the register is set to
FORCE_IDLE and FORCE_STDBY but never cleared.
If the driver had been fully converted to HWMOD this would have
been taken care of in the generic code. For now, after enabling the
CPSW clock explicitly set the SYSC of CPSW to NO_IDLE and NO_STDBY.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: Mailbox: Fix check for mailbox flushing
At the same time convert the pr_info to pr_debug
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
At the same time convert the pr_info to pr_debug
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: AM33XX: PM: Don't rely on M3 for A8 Standby
Relying on M3 to have A8 assert standby is not really necessary.
It also needs to unnecessary complexity in the recovery path.
So, we write to the CLKCTRL register when A8 is sure that it is
going to enter the low power state.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Relying on M3 to have A8 assert standby is not really necessary.
It also needs to unnecessary complexity in the recovery path.
So, we write to the CLKCTRL register when A8 is sure that it is
going to enter the low power state.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
cpufreq: OMAP: AM33XX: Use PM notifiers to scale voltage in suspend
Use the PM notifiers to scale down the frequency and voltage in the
suspend path and then block any further transitions till the system
resumes.
NOTE: THIS PATCH HAS CHECKPATCH ERRORS WHICH VIM IS NOT WILLING
TO REMOVE RIGHT NOW :(
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Use the PM notifiers to scale down the frequency and voltage in the
suspend path and then block any further transitions till the system
resumes.
NOTE: THIS PATCH HAS CHECKPATCH ERRORS WHICH VIM IS NOT WILLING
TO REMOVE RIGHT NOW :(
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: AM33XX: PM: Remove voltage scaling from PM code
Since the cpufreq driver is a consumer of the regulator that
is being used for scaling the voltage during suspend resume,
a regulator_set_voltage() without informing cpufreq gets into
issues with the min_uV and max_uV that both agree upon.
This was leading to suspend getting aborted and system eventually
dying.
A subsequent patch will add back the scaling using the cpufreq
driver itself.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Since the cpufreq driver is a consumer of the regulator that
is being used for scaling the voltage during suspend resume,
a regulator_set_voltage() without informing cpufreq gets into
issues with the min_uV and max_uV that both agree upon.
This was leading to suspend getting aborted and system eventually
dying.
A subsequent patch will add back the scaling using the cpufreq
driver itself.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP2+: NAND: Fix for NAND module build support
NAND driver fails to build as module with following error.
ERROR: "gpmc_calculate_ecc" [drivers/mtd/nand/omap2.ko] undefined!
ERROR: "gpmc_enable_hwecc" [drivers/mtd/nand/omap2.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2
This fixes the same by using EXPORT_SYMBOL.
Note:
This patch was actually reverted before moving gpmc from
postcore_initcall to module_platform_driver. Since moving is completes,
we need this patch.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
NAND driver fails to build as module with following error.
ERROR: "gpmc_calculate_ecc" [drivers/mtd/nand/omap2.ko] undefined!
ERROR: "gpmc_enable_hwecc" [drivers/mtd/nand/omap2.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2
This fixes the same by using EXPORT_SYMBOL.
Note:
This patch was actually reverted before moving gpmc from
postcore_initcall to module_platform_driver. Since moving is completes,
we need this patch.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
ARM: OMAP3+: am33xx: Add missing clk ops for gfx_fclk
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
ARM: OMAP3+: am33xx: Fix pruss clk alias name
Correct the clock alias name for pruss clock, which was
created using old clock tree data, and which is no longer valid.
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
Correct the clock alias name for pruss clock, which was
created using old clock tree data, and which is no longer valid.
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
ARM: OMAP2+: am33xx: Enable PWM support in defconfig
Enable the following support in defconfig
1. ECAP and EHRPWM based PWM support
2. PWM based backlight support.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Enable the following support in defconfig
1. ECAP and EHRPWM based PWM support
2. PWM based backlight support.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
PWM: ecap: suspend-resume support
1. Incorporate suspend-resume. In addition to the
registers that are configured by driver, CAP1,
that is shadowed by CAP3 (APRD) register has
to be restored.
2. Removes check of clock use count
Signed-off-by: Afzal Mohammed <afzal@ti.com>
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
1. Incorporate suspend-resume. In addition to the
registers that are configured by driver, CAP1,
that is shadowed by CAP3 (APRD) register has
to be restored.
2. Removes check of clock use count
Signed-off-by: Afzal Mohammed <afzal@ti.com>
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
PWM: ehrpwm: Support for low power sleep
This pattch
1. Adds context save/restore functionality to support low power sleep
transitions.
2. Adds pm_runtime [get_sync/put_sync] in context save function to
handle unenabled clock situation.
3. Removes check for clock use count.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This pattch
1. Adds context save/restore functionality to support low power sleep
transitions.
2. Adds pm_runtime [get_sync/put_sync] in context save function to
handle unenabled clock situation.
3. Removes check for clock use count.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: pwm: Register PWM devices
This patch registers PWM devices on selective profiles by using new API's
provided for registering PWM devices.
1. EHRPWM.2 on profile #4
2. ECAP.0 device on profile #0, 1, 2 and 7
Also update platform data for HAPTICS with Max frequency of operation set
to 250 Hz as per Haptics specification (Haptic Motors Max RPM is 15000
RPM).
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch registers PWM devices on selective profiles by using new API's
provided for registering PWM devices.
1. EHRPWM.2 on profile #4
2. ECAP.0 device on profile #0, 1, 2 and 7
Also update platform data for HAPTICS with Max frequency of operation set
to 250 Hz as per Haptics specification (Haptic Motors Max RPM is 15000
RPM).
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: am33xx: Setup eCAP pin-mux on initialization
Pinmuxing done from late_initcall will fail if CONFIG_DEBUG_FS is not
enabled. Hence move pin_mux setup to profile_detection stage.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Pinmuxing done from late_initcall will fail if CONFIG_DEBUG_FS is not
enabled. Hence move pin_mux setup to profile_detection stage.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: ehrpwm: Handle clock by pm_runtime API
This patch
1. Updates clock API to pm_runtime API for PWMSS clock
activity. This will use HWMOD data which is preferred upon regular
clk_[disable/enable].
2. Also adds device instance reference to struct ehrpwm_pwm.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch
1. Updates clock API to pm_runtime API for PWMSS clock
activity. This will use HWMOD data which is preferred upon regular
clk_[disable/enable].
2. Also adds device instance reference to struct ehrpwm_pwm.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: ecap: Handle clock by pm_runtime API
This patch
1. Updates clock API to pm_runtime API for PWMSS clock
activity. This will use HWMOD data which is preferred upon regular
clk_[disable/enable].
2. Also adds device instance reference to struct ecap_pwm.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch
1. Updates clock API to pm_runtime API for PWMSS clock
activity. This will use HWMOD data which is preferred upon regular
clk_[disable/enable].
2. Also adds device instance reference to struct ecap_pwm.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
PWM: Remove unused data
Removes unused data in PWM platform data structure
config_semaphore
pwmss_module_usage_count
config_mem_base
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Removes unused data in PWM platform data structure
config_semaphore
pwmss_module_usage_count
config_mem_base
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: pwm: PWM device creation
This patch provides API to create EHRPWM and ECAP devices using HWMOD
API which provides option to select the PWMSS instance. Also removes
platform style of device registration and creation of devices using
arch_initcall
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch provides API to create EHRPWM and ECAP devices using HWMOD
API which provides option to select the PWMSS instance. Also removes
platform style of device registration and creation of devices using
arch_initcall
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: ehrpwm: Removes registration of EHRPWM.2
Removes registration of EHRPWM instance 2 to support registration using
new API.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Removes registration of EHRPWM instance 2 to support registration using
new API.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
PWM: ehrpwm: Clean the access method for PWMSS config space.
This patch
1. Cleans up actions required to access PWMSS config space. This
involves removal of semaphore, usage of use count values,
config_mem_base, etc. This is legitimate as multiple probe will not
overlap unless we sleep. Also multiple ioremap will succeed on same
address. So we can remap the PWMSS config space from respective drivers.
2. Fixes the way of handling clock on pwm start and stop. In pwm start
clock should be enabled and disable of the clock should done from stop.
Failure condition added to fail on starting of running pwm device and
stopping of non-running pwm. For other API's, they have to explicitly
handle clock. Removes enable of clock from request API for the same.
3. Adds config_mem_base varaible to handle PWMSS config space in
ehrpwm_pwm structure.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch
1. Cleans up actions required to access PWMSS config space. This
involves removal of semaphore, usage of use count values,
config_mem_base, etc. This is legitimate as multiple probe will not
overlap unless we sleep. Also multiple ioremap will succeed on same
address. So we can remap the PWMSS config space from respective drivers.
2. Fixes the way of handling clock on pwm start and stop. In pwm start
clock should be enabled and disable of the clock should done from stop.
Failure condition added to fail on starting of running pwm device and
stopping of non-running pwm. For other API's, they have to explicitly
handle clock. Removes enable of clock from request API for the same.
3. Adds config_mem_base varaible to handle PWMSS config space in
ehrpwm_pwm structure.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
PWM: ecap: Stop updating CTRSTP_FREERUN bit
This patch
1. Fixes the issue of ECAP generating PWM wave even after stop on
calling set_period and config_duty API's. This issue is because
CTRSTP_FREERUN is updating from set_period and config_duty API's. This
patch fixes the same.
2. Uses macro for more code readability
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch
1. Fixes the issue of ECAP generating PWM wave even after stop on
calling set_period and config_duty API's. This issue is because
CTRSTP_FREERUN is updating from set_period and config_duty API's. This
patch fixes the same.
2. Uses macro for more code readability
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
PWM: ecap: Clean the access method for PWMSS config space.
This patch
1. Cleans up actions required to access PWMSS config space. This
involves removal of semaphore, usage of use count values,
config_mem_base, etc. This is legitimate as multiple probe will not
overlap unless we sleep. Also multiple ioremap will succeed on same
address. So we can remap the PWMSS config space from respective drivers.
2. Replaces __raw [read/write] functions with [read/write], as these
functions inserts memory barrier instructions required with ARMv6+
3. Also corrects the coding style for write and read usage for more code
readability by read modify write approach.
5. Removes usage of clk_enabled flag.
6. Fixes the way of handling clock on pwm start and stop. In pwm start
clock should be enabled and disable of the clock should done from stop.
Failure condition added to fail on starting of running pwm device and
stopping of non-running pwm. For other API's, they have to explicitly
handle clock.
7. Adds config_mem_base variable to handle PWMSS config space in
ecap_pwm structure.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch
1. Cleans up actions required to access PWMSS config space. This
involves removal of semaphore, usage of use count values,
config_mem_base, etc. This is legitimate as multiple probe will not
overlap unless we sleep. Also multiple ioremap will succeed on same
address. So we can remap the PWMSS config space from respective drivers.
2. Replaces __raw [read/write] functions with [read/write], as these
functions inserts memory barrier instructions required with ARMv6+
3. Also corrects the coding style for write and read usage for more code
readability by read modify write approach.
5. Removes usage of clk_enabled flag.
6. Fixes the way of handling clock on pwm start and stop. In pwm start
clock should be enabled and disable of the clock should done from stop.
Failure condition added to fail on starting of running pwm device and
stopping of non-running pwm. For other API's, they have to explicitly
handle clock.
7. Adds config_mem_base variable to handle PWMSS config space in
ecap_pwm structure.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: HWMOD: Correct PWMSS HWMOD data
HWMOD data for PWMSS device has modified to
1. Split HWMOD data to create multiple devices such as EHRPWM and ECAP
on single instances of PWMSS. This enables to handle multiple devices
from their own drivers.
2. Corrects the sysconfig offset and flags.
3. Adds opt clock definitions to handle TBCLK bits.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
HWMOD data for PWMSS device has modified to
1. Split HWMOD data to create multiple devices such as EHRPWM and ECAP
on single instances of PWMSS. This enables to handle multiple devices
from their own drivers.
2. Corrects the sysconfig offset and flags.
3. Adds opt clock definitions to handle TBCLK bits.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: epwm: Time base clock tree node.
pwmssctrl register (in control module) that controls time base clock
needs to be configured for proper working of ePWM. Time base module is
part of ePWM IP, and it's clock enabled through control module.
Enabling time base clock is handled by adding clock tree node and by
flagging it with ENABLE_ON_INIT.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
pwmssctrl register (in control module) that controls time base clock
needs to be configured for proper working of ePWM. Time base module is
part of ePWM IP, and it's clock enabled through control module.
Enabling time base clock is handled by adding clock tree node and by
flagging it with ENABLE_ON_INIT.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: am33xx: Adds PWMSS control register
Adds definitions for PWMSS control register.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Adds definitions for PWMSS control register.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: am33xx: Enable UBIFS support in defconfig
UBIFS is the default file system for NAND MTD devices in am33xx
platforms. Hence enable the defconfig for UBIFS support.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
UBIFS is the default file system for NAND MTD devices in am33xx
platforms. Hence enable the defconfig for UBIFS support.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP: AM33XX: PM: Manipulate MPU voltage in suspend-resume
As per the AM335x datasheet, when going to the lowest power
mode, DeepSleep0 in the docs, MPU and CORE voltages should be
scaled down to 0.95V. This is currently done via clk and regulator
APIs in the suspend-resume code.
Since the I2C driver implements aggressive RPM, we also need
to disable this during the suspend process.
Note: We are a little bit paranoid and currently scale down the
voltage to 0.965V instead of 0.95V to accomodate for some IR drop
that was earlier seen on the EVMs.
TODO:
1. Add some more error handling here
2. Check if MPU change can be moved into the cpufreq driver
3. Check if there's a better way of keeping I2C enabled very late
in the suspend process.
4. Scale the CORE voltage also.
Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
As per the AM335x datasheet, when going to the lowest power
mode, DeepSleep0 in the docs, MPU and CORE voltages should be
scaled down to 0.95V. This is currently done via clk and regulator
APIs in the suspend-resume code.
Since the I2C driver implements aggressive RPM, we also need
to disable this during the suspend process.
Note: We are a little bit paranoid and currently scale down the
voltage to 0.965V instead of 0.95V to accomodate for some IR drop
that was earlier seen on the EVMs.
TODO:
1. Add some more error handling here
2. Check if MPU change can be moved into the cpufreq driver
3. Check if there's a better way of keeping I2C enabled very late
in the suspend process.
4. Scale the CORE voltage also.
Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
cpufreq: OMAP: Disable cpufreq during suspend
On AM335x, we need to reconfigure the PLLs and voltage
during suspend. With regulator calls in the suspend code
errors were reported by the cpufreq driver in the resume
path. This is probably because cpufreq is suspended
very late in the overall suspend process.
For now, we make use of SUSPEND_PREPARE notification
to block any further OPP changes from the driver.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
On AM335x, we need to reconfigure the PLLs and voltage
during suspend. With regulator calls in the suspend code
errors were reported by the cpufreq driver in the resume
path. This is probably because cpufreq is suspended
very late in the overall suspend process.
For now, we make use of SUSPEND_PREPARE notification
to block any further OPP changes from the driver.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: AM33XX: PM: Wait for M3 state machine reset in suspend failure
In case something goes wrong in the suspend sequence, A8 sends a command
to M3 to reset its state machine. After this A8 continues with its
resume process and eventually enters idle loop. The command for reset
depends on the mailbox interrupt being generated and M3 responding it.
However, in case A8 enters the idle loop before M3 has responded to the
command for reset, M3 might cut the power to A8 thereby causing a "hang"
in the A8 world. Although the chances of the above happening is very
rare, it can and should be fixed. This is currently done by waiting for
the command posted to M3 to complete and then continuing with the resume
process.
Note: This also enforced a minor change in the M3 code and it is
recommended that the firmware binary is updated to the latest one
available on Arago.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
In case something goes wrong in the suspend sequence, A8 sends a command
to M3 to reset its state machine. After this A8 continues with its
resume process and eventually enters idle loop. The command for reset
depends on the mailbox interrupt being generated and M3 responding it.
However, in case A8 enters the idle loop before M3 has responded to the
command for reset, M3 might cut the power to A8 thereby causing a "hang"
in the A8 world. Although the chances of the above happening is very
rare, it can and should be fixed. This is currently done by waiting for
the command posted to M3 to complete and then continuing with the resume
process.
Note: This also enforced a minor change in the M3 code and it is
recommended that the firmware binary is updated to the latest one
available on Arago.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
input: TSC: return with error incase of probe fail
This patch corrects error handling in touchscreen.
Signed-off-by: Patil, Rachna <rachna@ti.com>
This patch corrects error handling in touchscreen.
Signed-off-by: Patil, Rachna <rachna@ti.com>
usb: musb: pm: update resume timeout fix
Further testing shows that musb controller just needs a delay of 200ms
after restoring devctl register and so removing SESSION off and on being
done is suspend and resume path.
Further testing shows that musb controller just needs a delay of 200ms
after restoring devctl register and so removing SESSION off and on being
done is suspend and resume path.
ARM: OMAP: AM33XX: Add VDD_CORE data for the PLL
VDD2 of TPS65910 maps to VDD_CORE of AM335x. To make
use of the regulator APIs for changing this voltage add
the data for VDD2 to the info registered with the
regulator framework.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
VDD2 of TPS65910 maps to VDD_CORE of AM335x. To make
use of the regulator APIs for changing this voltage add
the data for VDD2 to the info registered with the
regulator framework.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: AM33XX: Update defconfig with PM support
With most of the PM related code merged in enable
PM support in the defconfig.
Note: PM support depends on the CM3 firmare binary
which is compiled into the kernel image. The latest
image can be obtained from Arago and needs to be placed
in the firmware directory of the kernel.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
With most of the PM related code merged in enable
PM support in the defconfig.
Note: PM support depends on the CM3 firmare binary
which is compiled into the kernel image. The latest
image can be obtained from Arago and needs to be placed
in the firmware directory of the kernel.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: AM33XX: Fix build warning in PM code
The code for disabling unused clockdomains is required
only when PM is fully enabled. To avoid a build warning
related to unused function move the code under the config
option for suspend
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
The code for disabling unused clockdomains is required
only when PM is fully enabled. To avoid a build warning
related to unused function move the code under the config
option for suspend
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
video: da8xx-fb: fix build warning
This patch removes the build warning related to LCD
Signed-off-by: Patil, Rachna <rachna@ti.com>
This patch removes the build warning related to LCD
Signed-off-by: Patil, Rachna <rachna@ti.com>
usb: musb: pm: fix resume timeout
Fixes control transfer timeout and followed by re-enumeration of usb
devices after resume.
We need to switch off the session before DEVCTL register context save
and switch on the session before restoring POWER register context.
Fixes control transfer timeout and followed by re-enumeration of usb
devices after resume.
We need to switch off the session before DEVCTL register context save
and switch on the session before restoring POWER register context.
PWM: ehrpwm: Replace __raw [read/write] with read/write variant
Replaces __raw_read/__raw_write functions with read/wrte, as this
functions inserts memory barrier instructions required with ARMv6+
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Replaces __raw_read/__raw_write functions with read/wrte, as this
functions inserts memory barrier instructions required with ARMv6+
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP: AM33XX: Restore padconf across low power state
Some specific padconf registers need to be saved and restored
in low power state. For now this is being done in the PM
code. One alternative to be explored is the usage of callbacks
functions in the various drivers to save and restore the padconf.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Some specific padconf registers need to be saved and restored
in low power state. For now this is being done in the PM
code. One alternative to be explored is the usage of callbacks
functions in the various drivers to save and restore the padconf.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: AM33XX: Rename the firmware binary
Update the name of the firmware binary to be loaded
onto Cortex-M3 for low power transitions.
If the binary is not provided at the time of kernel
compilation there's a timeout of 60 seconds. To avoid
creating any confusion due to missing binary add a
message indicating that the firmware is now going
to be loaded.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Update the name of the firmware binary to be loaded
onto Cortex-M3 for low power transitions.
If the binary is not provided at the time of kernel
compilation there's a timeout of 60 seconds. To avoid
creating any confusion due to missing binary add a
message indicating that the firmware is now going
to be loaded.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: AM33XX: Yet one more DS0 update
When suspending the PHY is programmed in mDDR mode
and the PLLs put in LP bypass mode.
While at it also cleanup the low level assembly code
and PM code. Also fixup the error message in case of
suspend failure
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
When suspending the PHY is programmed in mDDR mode
and the PLLs put in LP bypass mode.
While at it also cleanup the low level assembly code
and PM code. Also fixup the error message in case of
suspend failure
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
MTD: OMAP2: elm: Fix NULL pointer dereference.
NULL pointer derefence causes following crash.
[root@arago /]# echo mem > /sys/power/state
[ 20.288726] PM: Syncing filesystems ... done.
[ 20.300842] Freezing user space processes ... (elapsed 0.01 seconds)
done.
[ 20.325897] Freezing remaining freezable tasks ... (elapsed 0.01
seconds) done.
[ 20.350097] Unable to handle kernel NULL pointer dereference
at virtual address 0000009c
[ 20.358581] pgd = cf97c000
[ 20.361389] [0000009c] *pgd=8d176831, *pte=00000000,
*ppte=00000000
[ 20.367950] Internal error: Oops: 17 [#1]
[ 20.372131] Modules linked in:
[ 20.375335] CPU: 0 Not tainted (3.2.0-12326-gf5f1c1a
[ 20.381439] PC is at omap_elm_suspend+0x20/0x3c
[ 20.386169] LR is at platform_pm_suspend+0x58/0x64
This patch fixes the same.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
NULL pointer derefence causes following crash.
[root@arago /]# echo mem > /sys/power/state
[ 20.288726] PM: Syncing filesystems ... done.
[ 20.300842] Freezing user space processes ... (elapsed 0.01 seconds)
done.
[ 20.325897] Freezing remaining freezable tasks ... (elapsed 0.01
seconds) done.
[ 20.350097] Unable to handle kernel NULL pointer dereference
at virtual address 0000009c
[ 20.358581] pgd = cf97c000
[ 20.361389] [0000009c] *pgd=8d176831, *pte=00000000,
*ppte=00000000
[ 20.367950] Internal error: Oops: 17 [#1]
[ 20.372131] Modules linked in:
[ 20.375335] CPU: 0 Not tainted (3.2.0-12326-gf5f1c1a
[ 20.381439] PC is at omap_elm_suspend+0x20/0x3c
[ 20.386169] LR is at platform_pm_suspend+0x58/0x64
This patch fixes the same.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: elm: Creates device on available profiles.
This patch corrects creation of ELM device for profiles where NAND is
available. Previously ELM device was created from arch_initcal().
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch corrects creation of ELM device for profiles where NAND is
available. Previously ELM device was created from arch_initcal().
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: nand: check for proper return value
Return value was not checked in evm_nand_init and because of that below
crash was generated during runtime.
[ 1.004381] Unable to handle kernel NULL pointer dereference at
virtual address 00000028
[ 1.012864] pgd = c0004000
[ 1.015688] [00000028] *pgd=00000000
[ 1.019424] Internal error: Oops: 805 [#1]
[ 1.023692] Modules linked in:
[ 1.026881] CPU: 0 Not tainted (3.2.0-12213-ge873350 #365)
[ 1.032992] PC is at evm_nand_init+0x34/0x5c
This patch fixes the same.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Return value was not checked in evm_nand_init and because of that below
crash was generated during runtime.
[ 1.004381] Unable to handle kernel NULL pointer dereference at
virtual address 00000028
[ 1.012864] pgd = c0004000
[ 1.015688] [00000028] *pgd=00000000
[ 1.019424] Internal error: Oops: 805 [#1]
[ 1.023692] Modules linked in:
[ 1.026881] CPU: 0 Not tainted (3.2.0-12213-ge873350 #365)
[ 1.032992] PC is at evm_nand_init+0x34/0x5c
This patch fixes the same.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: nand: Fix build breakage.
This patch fixes the build breakage
arch/arm/mach-omap2/board-flash.c: In function 'board_flash_init':
arch/arm/mach-omap2/board-flash.c:246:16: error:
'nand_default_timings' undeclared (first use in this function)
arch/arm/mach-omap2/board-flash.c:246:16: note: each undeclared
identifier is reported only once for each function it appears in
make[1]: *** [arch/arm/mach-omap2/board-flash.o] Error 1
make: *** [arch/arm/mach-omap2] Error 2
make: *** Waiting for unfinished jobs....
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch fixes the build breakage
arch/arm/mach-omap2/board-flash.c: In function 'board_flash_init':
arch/arm/mach-omap2/board-flash.c:246:16: error:
'nand_default_timings' undeclared (first use in this function)
arch/arm/mach-omap2/board-flash.c:246:16: note: each undeclared
identifier is reported only once for each function it appears in
make[1]: *** [arch/arm/mach-omap2/board-flash.o] Error 1
make: *** [arch/arm/mach-omap2] Error 2
make: *** Waiting for unfinished jobs....
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP3+: am33xx_hwmod: Fix the GPIO SYSCONFIG data
GPIO0 can wakeup the system from low power states and this
requires the ENWAKEUP bit in the SYSCONFIG to be set.
Programming the SYSCONFIG is currently handled by the hwmod
code and hence update the SYSCONFIG register to program
this register correctly during bootup.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
GPIO0 can wakeup the system from low power states and this
requires the ENWAKEUP bit in the SYSCONFIG to be set.
Programming the SYSCONFIG is currently handled by the hwmod
code and hence update the SYSCONFIG register to program
this register correctly during bootup.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ASoC: McASP: add suspend/resume support
This patch currently adds pm_runtime_[put/get]_sync calls with context
save/restore feature.
This feature is yet to be tested. This Feature is only supported for
IP version = 3 (AM335x)
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
This patch currently adds pm_runtime_[put/get]_sync calls with context
save/restore feature.
This feature is yet to be tested. This Feature is only supported for
IP version = 3 (AM335x)
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
ASoC: McASP: use runtime PM for better clock handling
Convert the mcasp driver to use runtime PM. This will use HWMOD data
which is preferred upon regular clk_[disable/enable]
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
Convert the mcasp driver to use runtime PM. This will use HWMOD data
which is preferred upon regular clk_[disable/enable]
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
ASoC: McASP: update resource request for DMA type
McASP device registration now uses omap_device api. This method
doesn't declare resource in order. Hence this patch replaces
platform_get_resource() with platform_get_resource_byname()
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
McASP device registration now uses omap_device api. This method
doesn't declare resource in order. Hence this patch replaces
platform_get_resource() with platform_get_resource_byname()
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
ARM: OMAP2+: am33xx: update mcasp platform registration
McASP device registration now uses omap_device api. This change needs a
new argument (device id). This patch changes the call to involve device
id along with platform data.
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
McASP device registration now uses omap_device api. This change needs a
new argument (device id). This patch changes the call to involve device
id along with platform data.
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
ARM: OMAP2+: mcasp: use omap_device api for registration
Convert the old-style device registration code for mcasp to use
omap_device. This will allow the driver to be converted to use PM
runtime and to take advantage of the OMAP IP block management
infrastructure (hwmod, PM, etc.).
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
Convert the old-style device registration code for mcasp to use
omap_device. This will allow the driver to be converted to use PM
runtime and to take advantage of the OMAP IP block management
infrastructure (hwmod, PM, etc.).
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
ARM: OMAP2+: mcasp: add missing HWMOD data
HWMOD data regarding edma interrupts, sysconfig for McASP were
missing. This patch adds the same.
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
HWMOD data regarding edma interrupts, sysconfig for McASP were
missing. This patch adds the same.
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
ASoC: McASP: Correct FIFOCTL register usage
Write FIFO register (WFIFOCTL) offset was incorrectly used in place
of Read FIFO register for McASP IP version 3. This patch corrects
the same.
TODO:
1. Differentiating the IP versions at runtime if it's possible
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
Write FIFO register (WFIFOCTL) offset was incorrectly used in place
of Read FIFO register for McASP IP version 3. This patch corrects
the same.
TODO:
1. Differentiating the IP versions at runtime if it's possible
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
ARM: OMAP2+: ALSA : ASoC tlv320aic3x.c suspend/resume cache_sync fix
This patch fixes audio resume failure. AIC3X codec driver is not
generating disable regulator event due to unknown reason.
Need to revisit the patch to find the reason and fix the same.
Signed-off-by: Raj, Deepu <deepu.raj@ti.com>
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
This patch fixes audio resume failure. AIC3X codec driver is not
generating disable regulator event due to unknown reason.
Need to revisit the patch to find the reason and fix the same.
Signed-off-by: Raj, Deepu <deepu.raj@ti.com>
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
ASoC: Davinci: Correct the rotation for different data-types
During audio Rx none of the data-types need rotation in the
Receive Format Unit of the McASP
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
During audio Rx none of the data-types need rotation in the
Receive Format Unit of the McASP
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: AM33XX: NET: cpsw: Add suspend resume support
Need to reset all sub-components of CPGMAC to gate the clock
Moved omap_dm_timer enable and configure to cpsw_ndo_open and disabled the
timer in cpsw_ndo_close so that during suspend/resume timer will be disabled
and enabled respectively
Added timer omap_dm_timer_free in cpsw_ndo_remove to free the dm_timer while
removing the module
Added wait_for_clock_enable to ensure that CPGMAC clock is enabled before
accessing the CPGMAC registers
TODO: Currently driver doesnot support pm runtime, so hack for wait for cpgmac
clock enable is done. Once PM runtime support is done then the hack will be
removed
Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Need to reset all sub-components of CPGMAC to gate the clock
Moved omap_dm_timer enable and configure to cpsw_ndo_open and disabled the
timer in cpsw_ndo_close so that during suspend/resume timer will be disabled
and enabled respectively
Added timer omap_dm_timer_free in cpsw_ndo_remove to free the dm_timer while
removing the module
Added wait_for_clock_enable to ensure that CPGMAC clock is enabled before
accessing the CPGMAC registers
TODO: Currently driver doesnot support pm runtime, so hack for wait for cpgmac
clock enable is done. Once PM runtime support is done then the hack will be
removed
Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
ARM: OMAP: AM33XX: NET: cpsw: fix memory lead during device open close.
Rx descriptors are not freed during cpdma close in device close.
cpdma_ctlr_stop should be called after netif_carrier_off. so that
cpsw_rx_handler knows that we are shutting down the network device
and free the Rx descriptor memory
Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
Rx descriptors are not freed during cpdma close in device close.
cpdma_ctlr_stop should be called after netif_carrier_off. so that
cpsw_rx_handler knows that we are shutting down the network device
and free the Rx descriptor memory
Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
ARM: OMAP2+: nand: Fix build breakage
...introduced by recent NAND related changes
In file included from arch/arm/mach-omap2/board-omap3beagle.c:54:0:
arch/arm/mach-omap2/board-flash.h:50:1: error: expected identifier or '(' before '{' token
arch/arm/mach-omap2/board-flash.h:48:1: warning: 'omap_nand_init' used but never defined
make[1]: *** [arch/arm/mach-omap2/board-omap3beagle.o] Error 1
make[1]: *** Waiting for unfinished jobs....
In file included from arch/arm/mach-omap2/board-am335xevm.c:61:0:
arch/arm/mach-omap2/board-flash.h:50:1: error: expected identifier or '(' before '{' token
arch/arm/mach-omap2/board-flash.h:48:1: warning: 'omap_nand_init' used but never defined
make[1]: *** [arch/arm/mach-omap2/board-am335xevm.o] Error 1
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
...introduced by recent NAND related changes
In file included from arch/arm/mach-omap2/board-omap3beagle.c:54:0:
arch/arm/mach-omap2/board-flash.h:50:1: error: expected identifier or '(' before '{' token
arch/arm/mach-omap2/board-flash.h:48:1: warning: 'omap_nand_init' used but never defined
make[1]: *** [arch/arm/mach-omap2/board-omap3beagle.o] Error 1
make[1]: *** Waiting for unfinished jobs....
In file included from arch/arm/mach-omap2/board-am335xevm.c:61:0:
arch/arm/mach-omap2/board-flash.h:50:1: error: expected identifier or '(' before '{' token
arch/arm/mach-omap2/board-flash.h:48:1: warning: 'omap_nand_init' used but never defined
make[1]: *** [arch/arm/mach-omap2/board-am335xevm.o] Error 1
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
video: da8xx-fb: correct suspend/resume sequence
1. correct suspend/resume sequence
for LCD.
2. add msleep in suspend/resume, to allow
LCD to finish transmitting all the frames.
3. remove enabling/disabling of clocks in
interrupt handler. This sequence was wrong.
Trying to disable clocks and write to a register
was wrong.
4. correct LCD context save sequence
Signed-off-by: Patil, Rachna <rachna@ti.com>
1. correct suspend/resume sequence
for LCD.
2. add msleep in suspend/resume, to allow
LCD to finish transmitting all the frames.
3. remove enabling/disabling of clocks in
interrupt handler. This sequence was wrong.
Trying to disable clocks and write to a register
was wrong.
4. correct LCD context save sequence
Signed-off-by: Patil, Rachna <rachna@ti.com>
video: da8xx-fb: enable sync and underflow error interrupts
This patch enables LCD sync and underflow error interrupts.
Signed-off-by: Patil, Rachna <rachna@ti.com>
This patch enables LCD sync and underflow error interrupts.
Signed-off-by: Patil, Rachna <rachna@ti.com>
mmc: omap_hsmmc: set dto to 14 for all devices
* With certain SD cards timeouts like the following have been seen
due to an improper calculation of the dto value:
mmcblk0: error -110 transferring data, sector 4126233, nr 8,
card status 0xc00
* By removing the dto calculation and setting the timeout value
to the maximum specified by the SD card specification part A2
section 2.2.15 these timeouts can be avoided.
* This change has been used by beagleboard users as well as the
Texas Instruments SDK without a negative impact.
* There are multiple discussion threads about this but the most
relevant ones are:
* http://talk.maemo.org/showthread.php?p=1000707#post1000707
* http://www.mail-archive.com/linux-omap@vger.kernel.org/msg42213.html
* Original proposal for this fix was done by Sukumar Ghoral of
Texas Instruments
* Tested using a Texas Instruments AM335x EVM
Signed-off-by: Chase Maupin <Chase.Maupin@ti.com>
* With certain SD cards timeouts like the following have been seen
due to an improper calculation of the dto value:
mmcblk0: error -110 transferring data, sector 4126233, nr 8,
card status 0xc00
* By removing the dto calculation and setting the timeout value
to the maximum specified by the SD card specification part A2
section 2.2.15 these timeouts can be avoided.
* This change has been used by beagleboard users as well as the
Texas Instruments SDK without a negative impact.
* There are multiple discussion threads about this but the most
relevant ones are:
* http://talk.maemo.org/showthread.php?p=1000707#post1000707
* http://www.mail-archive.com/linux-omap@vger.kernel.org/msg42213.html
* Original proposal for this fix was done by Sukumar Ghoral of
Texas Instruments
* Tested using a Texas Instruments AM335x EVM
Signed-off-by: Chase Maupin <Chase.Maupin@ti.com>
ARM: OMAP: AM33XX: Fix build breakage when CONFIG_SUSPEND=n
Fix the following build error:
arch/arm/mach-omap2/pm33xx.c: In function 'am33xx_pm_init':
arch/arm/mach-omap2/pm33xx.c:462:2: error: 'cefuse_pwrdm' undeclared (first use in this function)
arch/arm/mach-omap2/pm33xx.c:462:2: note: each undeclared identifier is reported only once for each function it appears in
arch/arm/mach-omap2/pm33xx.c:468:2: error: 'gfx_pwrdm' undeclared (first use in this function)
arch/arm/mach-omap2/pm33xx.c:472:2: error: 'gfx_l3_clkdm' undeclared (first use in this function)
arch/arm/mach-omap2/pm33xx.c:476:2: error: 'gfx_l4ls_clkdm' undeclared (first use in this function)
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Fix the following build error:
arch/arm/mach-omap2/pm33xx.c: In function 'am33xx_pm_init':
arch/arm/mach-omap2/pm33xx.c:462:2: error: 'cefuse_pwrdm' undeclared (first use in this function)
arch/arm/mach-omap2/pm33xx.c:462:2: note: each undeclared identifier is reported only once for each function it appears in
arch/arm/mach-omap2/pm33xx.c:468:2: error: 'gfx_pwrdm' undeclared (first use in this function)
arch/arm/mach-omap2/pm33xx.c:472:2: error: 'gfx_l3_clkdm' undeclared (first use in this function)
arch/arm/mach-omap2/pm33xx.c:476:2: error: 'gfx_l4ls_clkdm' undeclared (first use in this function)
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
ARM: OMAP2+: timer: Switch dmtimer1/clocksource to RTC32k source for am33xx
In case of AM33xx support, currently the system timer is configured
as -
- clockevent - dmtimer2 (peripheral domain)
- clocksource - dmtimer1 (wakeup domain)
Both are getting input from OSC clock, which is 24MHz input clock.
In order to keep dmtimer1/clocksource active during system
suspend/resume, we must use RTC32K clock.
This patch enables the RTC32K clock by writting RTC registers and
switches clocksource/dmtimer1 input clock to RTC32k/clk_32768_ck.
Also, during testing it has been observed that, RTC clock need couple
of seconds delay to stabilize the RTC clock; and such a huge delay is not
acceptable in kernel and will also impact quick/fast boot use-case.
So, RTC32k OSC enable code has been shifted to SPL/first-bootloader,
and in order to support older u-boot, we have adopted fallback mechanism;
where, if timer goes to bad state OR becomes idle, then we again switch
back to main/default sys_ck_in (24MHz).
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
In case of AM33xx support, currently the system timer is configured
as -
- clockevent - dmtimer2 (peripheral domain)
- clocksource - dmtimer1 (wakeup domain)
Both are getting input from OSC clock, which is 24MHz input clock.
In order to keep dmtimer1/clocksource active during system
suspend/resume, we must use RTC32K clock.
This patch enables the RTC32K clock by writting RTC registers and
switches clocksource/dmtimer1 input clock to RTC32k/clk_32768_ck.
Also, during testing it has been observed that, RTC clock need couple
of seconds delay to stabilize the RTC clock; and such a huge delay is not
acceptable in kernel and will also impact quick/fast boot use-case.
So, RTC32k OSC enable code has been shifted to SPL/first-bootloader,
and in order to support older u-boot, we have adopted fallback mechanism;
where, if timer goes to bad state OR becomes idle, then we again switch
back to main/default sys_ck_in (24MHz).
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
ARM: OMAP3+: am33xx_clockdata: Fix wrong rtc parent clock
Fix -
- Corrected RTC32K clock defination
- Wrong parent was configured to RTC
- Wrong clock domain to USB module.
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
Fix -
- Corrected RTC32K clock defination
- Wrong parent was configured to RTC
- Wrong clock domain to USB module.
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
ARM: OMAP: AM33XX: Manipulate GFX domain during suspend
In order to save as much power as possible, attempt to
put the GFX domain to OFF state during suspend.
At the same time, update the A<->M3 interaction to reduce
any chance of race conditions between A8 suspend routine
and the M3 acknowledgement interrupt.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
In order to save as much power as possible, attempt to
put the GFX domain to OFF state during suspend.
At the same time, update the A<->M3 interaction to reduce
any chance of race conditions between A8 suspend routine
and the M3 acknowledgement interrupt.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: AM33XX: Don't idle during suspend
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: AM335x evm: Getting rid of memory accessors with barriers
We should be using readl/writel since they have barriers in place
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
We should be using readl/writel since they have barriers in place
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: PM: Skip omap3_init_voltage for AM33XX
Right now this helps to get rid of the following warnings during
bootup
[...]
omap2_set_init_voltage: unable to get clk dpll1_ck
omap2_set_init_voltage: unable to set vdd_mpu_iva
omap2_set_init_voltage: unable to find boot up OPP for vdd_core
omap2_set_init_voltage: unable to set vdd_core
[...]
We need to explore whether an AM33XX specific init_voltage is
required or we can make do with that OMAP3/4 has to offer.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Right now this helps to get rid of the following warnings during
bootup
[...]
omap2_set_init_voltage: unable to get clk dpll1_ck
omap2_set_init_voltage: unable to set vdd_mpu_iva
omap2_set_init_voltage: unable to find boot up OPP for vdd_core
omap2_set_init_voltage: unable to set vdd_core
[...]
We need to explore whether an AM33XX specific init_voltage is
required or we can make do with that OMAP3/4 has to offer.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP3+: am33xx_clkdomain: Add CLKDM_NO_AUTODEPS flag
...since it's not available in hardware.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
...since it's not available in hardware.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: am33xx: Keep the CLKDIV32K running for now
The debounce clk for GPIO is derived from CLKDIV32K.
Without enabling this module the DBCLK activity bit
of GPIO3 alone is not getting cleared even though the
clock has been disabled. For now enable the module.
TODO: Check if the clock tree dependency to have the module
enabled when the debounce feature is correct. If it is,
then GPIO3 usage needs to be looked at. Since the mainline
code of GPIO has undergone significant changes, it would
perhaps make sense to pull in those patches and then look
into this issue.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
The debounce clk for GPIO is derived from CLKDIV32K.
Without enabling this module the DBCLK activity bit
of GPIO3 alone is not getting cleared even though the
clock has been disabled. For now enable the module.
TODO: Check if the clock tree dependency to have the module
enabled when the debounce feature is correct. If it is,
then GPIO3 usage needs to be looked at. Since the mainline
code of GPIO has undergone significant changes, it would
perhaps make sense to pull in those patches and then look
into this issue.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP2+: sys_timer: Add suspend/resume callback api's to sys_timer
In case of AM335x, we do not 32k_counter available, which
is actually being used as source timer in OMAP family of devices.
AM335x has 8 timer modules, 2 timer modules are in wakeup/always-on
domain, and out of these 2, 1 timer is secure timer; which
leaves SW to use only 1 timer which can run in off/suspend state.
And we need 2 timers, one for clockevent and another for clocksource.
The suspend/resume callbacks are available on sys_timer and
clocksource, but due to unknown reason clocksource callbacks are
not working. TODO: WE MUST DEBUG FURTHER ON THIS.
So as of now, enable sys_timer suspend/resume callback.
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
In case of AM335x, we do not 32k_counter available, which
is actually being used as source timer in OMAP family of devices.
AM335x has 8 timer modules, 2 timer modules are in wakeup/always-on
domain, and out of these 2, 1 timer is secure timer; which
leaves SW to use only 1 timer which can run in off/suspend state.
And we need 2 timers, one for clockevent and another for clocksource.
The suspend/resume callbacks are available on sys_timer and
clocksource, but due to unknown reason clocksource callbacks are
not working. TODO: WE MUST DEBUG FURTHER ON THIS.
So as of now, enable sys_timer suspend/resume callback.
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
ARM: TIME: Enable sys_timer suspend/resume callback api's
In case of AM335x, we do not 32k_counter available, which
is actually being used as source timer in OMAP family of devices.
AM335x has 8 timer modules, 2 timer modules are in wakeup/always-on
domain, and out of these 2, 1 timer is secure timer; which leaves
SW to use only 1 timer which can run in off/suspend state. And
we need 2 timers, one for clockevent and another for clocksource.
The suspend/resume callbacks are available on sys_timer and
clocksource, but due to unknown reason clocksource callbacks are
not working. TODO: WE MUST DEBUG FURTHER ON THIS.
The sys_timer suspend/resume callback api's are supressed
under config option !defined(CONFIG_GENERIC_CLOCKEVENTS),
enable it, required for AM335x suspend/resume funtionality.
Not sure, why it is not enabled and appliable to ARM arch, will
have to follow up it with community.
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
In case of AM335x, we do not 32k_counter available, which
is actually being used as source timer in OMAP family of devices.
AM335x has 8 timer modules, 2 timer modules are in wakeup/always-on
domain, and out of these 2, 1 timer is secure timer; which leaves
SW to use only 1 timer which can run in off/suspend state. And
we need 2 timers, one for clockevent and another for clocksource.
The suspend/resume callbacks are available on sys_timer and
clocksource, but due to unknown reason clocksource callbacks are
not working. TODO: WE MUST DEBUG FURTHER ON THIS.
The sys_timer suspend/resume callback api's are supressed
under config option !defined(CONFIG_GENERIC_CLOCKEVENTS),
enable it, required for AM335x suspend/resume funtionality.
Not sure, why it is not enabled and appliable to ARM arch, will
have to follow up it with community.
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
ARM: OMAP3+: am33xx_hwmod: Correct the usb clkdm_name
Correct the usb clock domain name to "l3s_clkdm".
The USB peripheral doesn't have any seperate clock domain of its
own, it falls under "l3s_clkdm".
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
Correct the usb clock domain name to "l3s_clkdm".
The USB peripheral doesn't have any seperate clock domain of its
own, it falls under "l3s_clkdm".
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
ARM: OMAP: AM33XX: Cleanup usb hwmod
Updated the hwmod data for usb pm support.
Changes:
- updated the sysc type to type2
- Added the interface and functional clock and removed opt clocks
Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
Updated the hwmod data for usb pm support.
Changes:
- updated the sysc type to type2
- Added the interface and functional clock and removed opt clocks
Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
ARM: OMAP: AM33XX: Update the sleep code for DS0
Add some error handling and update the code to
make use of DeepSleep0 mode.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Add some error handling and update the code to
make use of DeepSleep0 mode.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: AM33XX: Update the flags in HWMOD
For the modules which require special handling, update
the flags in the hwmod data. WIth this done, the PM
framework takes care of the special handling for the
modules.
Note: With HWMOD_SWSUP_MSTANDBY set, the module goes
to standby during boot. Unless the driver makes use
of runtime PM APIs the module will stay in standby
which is not desired. For now we disable idling
this modules during the boot. When the drivers start
making use of runtime PM this workaround must be
removed.
All this should eventually make its way into the
appropriate drivers.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
For the modules which require special handling, update
the flags in the hwmod data. WIth this done, the PM
framework takes care of the special handling for the
modules.
Note: With HWMOD_SWSUP_MSTANDBY set, the module goes
to standby during boot. Unless the driver makes use
of runtime PM APIs the module will stay in standby
which is not desired. For now we disable idling
this modules during the boot. When the drivers start
making use of runtime PM this workaround must be
removed.
All this should eventually make its way into the
appropriate drivers.
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
ARM: OMAP: AM33XX: Make use of DMTIMER0 for now
Need to check how to do this reliably
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Need to check how to do this reliably
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Revert "arm:omap:gpio - Handle Clocks properly in Suspend/Resume"
This reverts commit bbfb01e1cc06c1f041060258ca93b260e0c83c41.
This reverts commit bbfb01e1cc06c1f041060258ca93b260e0c83c41.
video: da8xx-fb: correct read/write API's used.
This patch replaces raw read/write with readl/writel.
Signed-off-by: Patil, Rachna <rachna@ti.com>
This patch replaces raw read/write with readl/writel.
Signed-off-by: Patil, Rachna <rachna@ti.com>
MTD: OMAP2: Add support for low power sleep for NAND
Support for NAND low power done by
1. Waiting for ongoing MTD operation to finish before entering low power
mode.
2. Invokes GPMC callbacks to handle GPMC low power transitions.
3. ELM suspend activity waiting for ongoing MTD transfer to finish and
handle ELM low power transition cycle by configuring.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Support for NAND low power done by
1. Waiting for ongoing MTD operation to finish before entering low power
mode.
2. Invokes GPMC callbacks to handle GPMC low power transitions.
3. ELM suspend activity waiting for ongoing MTD transfer to finish and
handle ELM low power transition cycle by configuring.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: gpmc: Add low power support
This patch adds Callback functions to support low power transitions by
adding
1. pm_runtime API's to handle GPMC power transitions
2. GPMC save/restore context.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch adds Callback functions to support low power transitions by
adding
1. pm_runtime API's to handle GPMC power transitions
2. GPMC save/restore context.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: gpmc: Handle clock by pm_runtime API
This patch updates clock API to pm_runtime API for GPMC clock
activity. This will use HWMOD data which is preferred upon regular
clk_[disable/enable].
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch updates clock API to pm_runtime API for GPMC clock
activity. This will use HWMOD data which is preferred upon regular
clk_[disable/enable].
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: nand: Changing SPL and U-boot partition permission
SPL and U-boot partition provided with write permission in order to
update SPL and U-boot from kernel.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
SPL and U-boot partition provided with write permission in order to
update SPL and U-boot from kernel.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
MTD: omap2: 14 byte ECC support for BCH8
14 bytes of ECC is provided for every 512 byte even though 13 byte is the
actual requirement. This is to synchronize the ECC layout with U-boot.
Extra byte is cleared to 0.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
14 bytes of ECC is provided for every 512 byte even though 13 byte is the
actual requirement. This is to synchronize the ECC layout with U-boot.
Extra byte is cleared to 0.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
Signed-off-by: Vaibhav Hiremath <hvaibhav@ti.com>
ARM: OMAP2+: am335x: Enables BCH8 support for NAND
Enables BCH8 ECC support on AM335x SOC.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Enables BCH8 ECC support on AM335x SOC.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
MTD: omap2: Corrects BCH8 support
This patch
1. Adds separate read path to handle BCH ECC scheme.
2. Adds macros to support BCH8 ECC scheme.
3. Adds ECC correction path for BCH8 ECC scheme.
4. Corrects the ECC layout for BCH8.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch
1. Adds separate read path to handle BCH ECC scheme.
2. Adds macros to support BCH8 ECC scheme.
3. Adds ECC correction path for BCH8 ECC scheme.
4. Corrects the ECC layout for BCH8.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: gpmc: Corrects BCH8 support
Corrects the GPMC configuration to support BCH8 ECC scheme.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Corrects the GPMC configuration to support BCH8 ECC scheme.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: am335x: Enable ELM feature.
Enable support for ELM on AM335x SOC
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
Enable support for ELM on AM335x SOC
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
MTD: OMAP2+: elm: Initialize ELM module when needed
This patch configures ELM module for BCH8 ECC scheme on platforms where it is
being used.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch configures ELM module for BCH8 ECC scheme on platforms where it is
being used.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: elm: Correct ELM device instance
This patch
1. Corrects the device id for ELM device to -1 as only one instance of ELM
is present, previously it was 1.
2. Adds error handling for failure cases.
3. Provides __init macros to free the memory once initialization done.
4. Corrects to make use inline function definition to remove unnecessary
calls.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch
1. Corrects the device id for ELM device to -1 as only one instance of ELM
is present, previously it was 1.
2. Adds error handling for failure cases.
3. Provides __init macros to free the memory once initialization done.
4. Corrects to make use inline function definition to remove unnecessary
calls.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
ARM: OMAP2+: nand: Flag to support ELM feature on platforms.
This patch introduces a platform data flag to selectively enable/disable
ELM feature for NAND. On platforms where ELM support is present, this
flag needs to be set as true.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch introduces a platform data flag to selectively enable/disable
ELM feature for NAND. On platforms where ELM support is present, this
flag needs to be set as true.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
MTD: OMAP2: elm: Add ELM module support
This patch adds
1. ELM feature support for BCH ECC error correction.
2. Configuration API support for BCH8 ECC scheme.
3. Exports symbols to support module build.
TODO:
Updating to pm_ops
Handling multiple SYNDROME Calculation and page mode support.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch adds
1. ELM feature support for BCH ECC error correction.
2. Configuration API support for BCH8 ECC scheme.
3. Exports symbols to support module build.
TODO:
Updating to pm_ops
Handling multiple SYNDROME Calculation and page mode support.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
MTD: Fixes Coding style
Fixes coding style Error in Makefile "\ No newline at end of file"
Signed-off-by: Philip, Evania's <avinashphilip@ti.com>
Fixes coding style Error in Makefile "\ No newline at end of file"
Signed-off-by: Philip, Evania's <avinashphilip@ti.com>
ARM: OMAP2+: nand: BCH8 support definitions
This patch adds
1. Enum variable for BCH type
2. Macro definitions to support BCH8 ECC scheme
3. Function declarations.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>
This patch adds
1. Enum variable for BCH type
2. Macro definitions to support BCH8 ECC scheme
3. Function declarations.
Signed-off-by: Philip, Avinash <avinashphilip@ti.com>