5 years agoUtils: Update genrprc utility to pass additional arguments master
Suman Anna [Wed, 13 Feb 2013 02:47:47 +0000 (20:47 -0600)]
Utils: Update genrprc utility to pass additional arguments

The genrprc utility has been updated to invoke gencmbelf
utility with additional arguments pertinent to Core1 image
for properly updating the associated entries in the resource
table. The arguments are generated by using standard ELF
utilities and looking up specific symbols/sections.

The additional arguments include only the trace entries
(address & size for each) as that is the only changeable
resource for Core1 present in the resource table currently.

Signed-off-by: Suman Anna <>
5 years agoUtils: Update gencmbelf utility to fixup Core1 resources
Suman Anna [Wed, 13 Feb 2013 02:39:36 +0000 (20:39 -0600)]
Utils: Update gencmbelf utility to fixup Core1 resources

The gencmbelf utility generates a combined ELF image using two ELF
images built for IPU Core0 & Core1. The current design for non-SMP
support has the resource table section present only in Core0 image,
including entries that are pertinent only to Core1. There is no
way the relevant information could be plugged into Core0 image at
build time.

The gencmbelf utility is updated to take an additional argument set
constructed using standard ELF utilities to parse the Core1 image.
These new tags are used to fix up the resource table section during
the creation of the combined ELF image.

The only resource that can be customized on Core1 currently is the
trace address and size. The genrprc script will be updated to
retrieve these values and invoke the gencmbelf utility accordingly.

Signed-off-by: Suman Anna <>
5 years agoBuild: Generate default ELF binaries for both SMP & non-SMP modes
Suman Anna [Fri, 8 Feb 2013 02:38:06 +0000 (20:38 -0600)]
Build: Generate default ELF binaries for both SMP & non-SMP modes

The build is updated to automatically generate the desired output
ELF binaries for both SMP and non-SMP modes for OMAP4 & OMAP5 platforms.
The SMP-mode and non-SMP DSP binaries are simply symbol and debug info
stripped versions of the actual ELF base-images. The non-SMP IPU binaries
use the genrprc script which internally invokes the gencmbelf utility
to generate a single combined ELF image.

Signed-off-by: Suman Anna <>
5 years agoUtils: Update genrprc utility to invoke gencmbelf
Suman Anna [Fri, 8 Feb 2013 05:34:22 +0000 (23:34 -0600)]
Utils: Update genrprc utility to invoke gencmbelf

The genrprc utility has been updated to invoke gencmbelf
utility to generate a combined ELF image, using stripped
versions of the passed in ELF images, but only after
retrieving the needed symbols from the input files. The
syntax is same as the previous version, but all the input
and output files are expected to the ELF M3 files.

These symbols are retrieved from Core1 image file and
used for updating the associated entries in the resource
table which is present only in Core0 image. Currently,
only the symbols needed for the Core1 trace entry are

Signed-off-by: Suman Anna <>
5 years agoUtils: Add a new gencmbelf utility to combine two ELF images
Suman Anna [Wed, 9 Jan 2013 21:29:34 +0000 (15:29 -0600)]
Utils: Add a new gencmbelf utility to combine two ELF images

A new utility, called "gencmbelf", is added that combines two non-SMP
IPU ELF images into a suitable semi-standard single ELF image to be
used instead of a single SMP ELF image.

The utility requires that the input images are completely stripped of
any debug or symbol data info, as the utility is currently not designed
to combine these data. The generated output file is an ELF image and
can be passed to the readelf utility to retrieve information just like
any other ELF file.

This utility is designed for the current ELF images built with or for
sysbios-rpmsg, and not a generic utility.

Signed-off-by: Suman Anna <>
5 years agoResources: Add trace1 and vdev for AppM3 in non-SMP
Suman Anna [Thu, 17 Jan 2013 18:40:37 +0000 (12:40 -0600)]
Resources: Add trace1 and vdev for AppM3 in non-SMP

This patch adds the additional trace and virtio device entries
into the resource table, necessary to enable the IPU Core1
processor to be booted in a non-SMP mode.

The trace entry value for Core1 is currently hard-coded and is
expected to be fixed up in the gencmbelf utility, to support a
dynamic trace address for Core1.

Signed-off-by: Suman Anna <>
5 years agoIPC: Redefine VirtQueue ids for IPU Core1 to support non-SMP
Suman Anna [Fri, 18 Jan 2013 00:48:17 +0000 (18:48 -0600)]
IPC: Redefine VirtQueue ids for IPU Core1 to support non-SMP

The indices for IPU Core1/Appm3 have been moved far apart in a
previous patch,
  c2a1808 "IPC: Redefine VirtQueue ids sequentially for each processor"
as it was expected to be used only in a SMP-mode.

These indices have been changed back to their older values of 2 and
3 so that the Core1 can be run alongside Core0 in a non-SMP mode.
These values differ from the current philosophy of starting the
indices from 0 for each processor. These values are chosen since
Core1 will still be booted together with the Core0 processor - the
two processors are treated as a single entity by the host-side

Signed-off-by: Suman Anna <>
5 years agoRevert "Build: Remove building for core1 platforms"
Suman Anna [Tue, 8 Jan 2013 23:47:03 +0000 (17:47 -0600)]
Revert "Build: Remove building for core1 platforms"

This reverts commit 17614baf51e89874f750e672495a0d2ccb33d392.

The IPU Core1 platforms have been added back to the possible
target platform list in order to bring back the support for
booting the two IPU cores in a non-SMP mode.

The latest host-side software expects a single ELF image for
the IPU cores, so this will be achieved by developing a new
utility that will combine the two ELF base images into a
suitable single ELF image.

Signed-off-by: Suman Anna <>
5 years agoRevert "DEH: Improve the detection logic for OMAP5 ES 2.x"
Suman Anna [Tue, 8 Jan 2013 21:28:34 +0000 (15:28 -0600)]
Revert "DEH: Improve the detection logic for OMAP5 ES 2.x"

This reverts commit 227b625f4e5ab28f9b9167639eacc7325546cc41.

The temporary patch that added the additional logic has been
reverted to restore functionality properly for all OMAP4 and
OMAP5 silicon versions.

Signed-off-by: Suman Anna <>
5 years agoDEH: Improve the detection logic for OMAP5 ES 2.x
Suman Anna [Mon, 17 Dec 2012 20:32:39 +0000 (21:32 +0100)]
DEH: Improve the detection logic for OMAP5 ES 2.x

Additional logic has been added to make the detection logic
of OMAP5 ES 2.x silicon robust. The additional logic relies
on checking the debug id version of the MPU (Cortex A15)
processor core through the emulation domain. This additional
logic helps on some earlier samples where the silicon version
id is not reflected properly.

NOTE: This patch is a temporary workaround, it breaks OMAP5
ES1.0 and needs to be reverted.

Signed-off-by: Suman Anna <>
5 years agoDEH: Adjust for OMAP5 ES 2.x PRCM address changes for IPU
Suman Anna [Mon, 17 Dec 2012 20:32:39 +0000 (21:32 +0100)]
DEH: Adjust for OMAP5 ES 2.x PRCM address changes for IPU

The Watchdog module in IPU relies on two GPTimers, GPT9 & GPT11.
These timers belong to the L4_PER clock domain. The L4_PER clock
domain has been moved into the CORE power domain in OMAP5 ES2.x,
and therefore has the respective PRCM addresses changed.

The Watchdog module relies on the clock status of the timers to
dictate enabling or disabling of the watchdog timers. Logic has
been added to detect the OMAP SoC silicon revision id and adjust
the addresses accordingly. This change is not needed on DSP since
it uses a GPTimer internal to the ABE domain whose addresses
remain the same.

Signed-off-by: Suman Anna <>
5 years agoResources: Add EMU address space in resource table
Suman Anna [Tue, 18 Dec 2012 12:31:45 +0000 (13:31 +0100)]
Resources: Add EMU address space in resource table

The Emulation address space has been mapped into the MMUs for
both the IPU and the DSP processors, using the respective
resource tables. This allows the EMU space to be accessible
by the respective processors and allow them to read certain
debug registers.

Signed-off-by: Suman Anna <>
5 years agoUtils: Add a new genextelf utility for pre-signing images
Shahid Akhtar [Tue, 4 Sep 2012 20:08:46 +0000 (15:08 -0500)]
Utils: Add a new genextelf utility for pre-signing images

A new utility, called "genextelf", is added that processes an IPU
ELF image and gives out an extended pre-signed ELF image. The ELF
image outputed would be fed into a signing tool to generate the
final signed IPU image.

The utility adds new sections to the image with the various data
needed for the signing process such as MMU entries, the TOC data
etc. The genextelf utility is similar to the genextbin utility,
which was used for signing the binary files.

Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
5 years agoResources: Define memory region type for carveout entries
Shahid Akhtar [Tue, 18 Sep 2012 20:31:00 +0000 (15:31 -0500)]
Resources: Define memory region type for carveout entries

Each memory resource entry in the resource table can optionally
define a memory region type that provides information on the
type of memory access/usage made by the remote processor on that
 memory region. This is defined using an existing reserved field
in the structures defining the carveout and devmem resources.

This memory region type is used for determining the type of
firewalls to be installed on the regions during secure playback

Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
5 years agoUtils: Rename few macros related to MMU
Shahid Akhtar [Thu, 1 Nov 2012 16:29:38 +0000 (11:29 -0500)]
Utils: Rename few macros related to MMU

The macros used for determining the MMU Page Table Entry
sizes have been appropriately prefixed with MMU.

Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
5 years agoUtils: Define new integer types for ease of usage
Suman Anna [Thu, 1 Nov 2012 16:29:38 +0000 (11:29 -0500)]
Utils: Define new integer types for ease of usage

New additional integer types have been added to rprcfmt.h
for use by generic non-BIOS utilities. These types are very
shortened forms and are similar to the types in Linux.

Signed-off-by: Suman Anna <>
5 years agoResources: Remove XDC types file from rsc_types.h
Shahid Akhtar [Wed, 17 Oct 2012 17:29:22 +0000 (12:29 -0500)]
Resources: Remove XDC types file from rsc_types.h

The xdc/std.h file is no longer included directly in the
rsc_types.h header file to allow other non-BIOS utilities
to use the rsc_types.h file. The change will eliminate the
need to duplicate the structures defined in rsc_type.h in
utility tools used for generating pre-signed IPU binaries.

Signed-off-by: Shahid Akhtar <>
6 years agoBuild: Upgrade to BIOS version
Juan Gutierrez [Fri, 12 Oct 2012 22:25:12 +0000 (17:25 -0500)]
Build: Upgrade to BIOS version

The build system is updated to use the latest BIOS release,

This newer BIOS version includes the following important fixes
for SMP-mode:
  - The fix to the Task scheduler that prevents an unrecoverable
    dead lock situation if/when an Idle task blocks.
  - A fix to the Load module issue present in previous builds.
  - A fix for a critical bug related to a race condition that
    occurs when one core is deleting a task and the other core
    is performing a memory allocation or free operation.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoBuild: Update to the latest XDC and IPC toolsets
Juan Gutierrez [Fri, 12 Oct 2012 22:20:49 +0000 (17:20 -0500)]
Build: Update to the latest XDC and IPC toolsets

The build system is updated to use latest XDC and IPC
tools: XDC and IPC respectively.

This newer toolset are the latest on the respective
release streams, and include minor fixes.

The README has also been updated with the corresponding
download links.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoResources: Add ISS address space for DSP
Suman Anna [Wed, 17 Oct 2012 17:42:25 +0000 (12:42 -0500)]
Resources: Add ISS address space for DSP

De-interlacer use case needs the ISS to be visible to DSP.
The ISS address space is programmed into the DSP MMU using
the DSP resource table.

Signed-off-by: Adarsh Nagaraja <>
Signed-off-by: Suman Anna <>
6 years agoPM: Enable timer register restoration for non-SMP targets
Juan Gutierrez [Tue, 25 Sep 2012 19:49:39 +0000 (14:49 -0500)]
PM: Enable timer register restoration for non-SMP targets

The Timer register restoration API was supported and made
available first only in the SMP/BIOS product. This API is
available for both SMP and non-SMP modes in the unified BIOS
6.34 release (starting from

The restore functionality for non-SMP targets was previously
commented out, and relied on the timers being restored by the
host-side code. The Timers are now properly restored even for
non-SMP targets and truely enables any resume from Device OFF
for processors running regular SYS/BIOS, and removes the
dependency with the host-side restore functionality.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoRevert "PM: Enable mbox interrupt in wugen for DSP before suspending"
Juan Gutierrez [Tue, 25 Sep 2012 19:47:02 +0000 (14:47 -0500)]
Revert "PM: Enable mbox interrupt in wugen for DSP before suspending"

This reverts commit babf5fe293ef5ff912c198c905cb0b07f6e0df85.

The above commit is added as a means to have the DSP resumed properly
after the remote processor has been suspended from the host side. The
root-cause for the original issue is unknown, but the above solution
is no longer needed with the latest host-side code.

The remote processor would be put into reset and the mailbox interrupt
register context is saved during a suspend. The DSP Wakeup Generator
would not need any user-configured interrupts to be enabled before the
DSP is suspended for it to wake up properly. This revert changes the
code back to this expected behavior.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoResources: Increase the IPU data size by 2MB for OMAP4
Juan Gutierrez [Wed, 26 Sep 2012 19:21:29 +0000 (14:21 -0500)]
Resources: Increase the IPU data size by 2MB for OMAP4

The IPU data region size, accomodating both the data and heap
sections has been increased by 2MB to allow the Core1/IPU data
to be increased by the same amount. This increase is being done
to fulfill the memory requirements in multimedia baseimage after
adding some encoder/decoder functionalities in.

Signed-off-by: Juan Gutierrez <>
Signed-off-by; Suman Anna <>

6 years agoPlatform: Increase EXT_DATA size for OMAP4 IPU and Core1
Juan Gutierrez [Wed, 26 Sep 2012 19:09:41 +0000 (14:09 -0500)]
Platform: Increase EXT_DATA size for OMAP4 IPU and Core1

The EXT_DATA region is increased from 6MB to 8MB for both OMAP4
IPU (used in SMP builds) and Core1 platforms. This increase is
being done to fulfill the memory requirements in the multimedia
baseimage after adding some encoder/decoder functionalities in.

Signed-off-by: Juan Gutierrez <>
Signed-off-by; Suman Anna <>

6 years agoUtils: Update suspend address lookup for SMP-mode with BIOS 6.34
Suman Anna [Thu, 20 Sep 2012 02:11:50 +0000 (21:11 -0500)]
Utils: Update suspend address lookup for SMP-mode with BIOS 6.34

The suspend address for ARM M3/M4 targets is currently looked up using
the symbol name, ti_sysbios_family_arm_ducati_omap4430_readyIdleCore0
on Core0. This symbol name is no longer valid in SMP-mode with BIOS
6.34 release stream, as the SMP-mode Power module is different and has
a different package path from the non-SMP Power module.

The symbol address, ti_sysbios_family_arm_ducati_smp_readyIdleCore0,
is used to detect the suspend address for a M3/M4 base-image file.
This symbol is used only when one base-image is supplied to the
genrprc utility, as is the case for SMP.

Signed-off-by: Suman Anna <>
6 years agoRevert "Build: Disable SMP build temporarily for BIOS 6.34 upgrade"
Suman Anna [Sun, 23 Sep 2012 16:00:02 +0000 (11:00 -0500)]
Revert "Build: Disable SMP build temporarily for BIOS 6.34 upgrade"

This reverts commit 80278375601fce545247273dc19415f738b69028.

The SMP-build is reenabled after all the adaptation changes to
use the BIOS release.

Signed-off-by: Suman Anna <>
6 years agoConfigs: Move Power module from IpcCommon to specific cfg files
Juan Gutierrez [Wed, 12 Sep 2012 17:23:23 +0000 (12:23 -0500)]
Configs: Move Power module from IpcCommon to specific cfg files

The BIOS Power module for SMP-mode has a different path from the
regular SYS/BIOS Power module path in the new unified BIOS 6.34
release stream.

The inclusion of the module is therefore moved from the generic
IpcCommon.cfg.xs files to each of the specific core config files,
with the proper module included.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoPM: Include proper Power module for SMP
Juan Gutierrez [Wed, 12 Sep 2012 20:01:28 +0000 (15:01 -0500)]
PM: Include proper Power module for SMP

The BIOS Power module has been made into a distinct module for
SMP-mode, and has a different path from the regular SYS/BIOS
Power module path in the new unified BIOS 6.34 release stream.

The IpcPower module is updated to use the proper Power module
for SMP-mode.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoDEH: Update to use the renamed SMP API in BIOS 6.34
Juan Gutierrez [Wed, 12 Sep 2012 20:06:43 +0000 (15:06 -0500)]
DEH: Update to use the renamed SMP API in BIOS 6.34

The following API were renamed during the unification of SMP/BIOS and
SYS/BIOS in the SYS/BIOS 6.34 release stream:
  - Core_getCoreId() has been replaced with Core_getId().
  - Hwi_disableCoreInts() has been replaced with Core_hwiDisable()
  - Hwi_restoreCoreInts() has been replaced with Core_hwiRestore()
  - Hwi_enableCoreInts() has been replaced with Core_hwiEnable()

The Watchdog module has been updated to use the new API in place of
the old API.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoTrace: Update to use the renamed SMP API in BIOS 6.34
Juan Gutierrez [Wed, 12 Sep 2012 20:17:39 +0000 (15:17 -0500)]
Trace: Update to use the renamed SMP API in BIOS 6.34

The following API were renamed during the unification of SMP/BIOS and
SYS/BIOS in the SYS/BIOS 6.34 release stream:
  - Core_getCoreId() has been replaced with Core_getId().
  - Hwi_disableCoreInts() has been replaced with Core_hwiDisable()
  - Hwi_restoreCoreInts() has been replaced with Core_hwiRestore()
  - Hwi_enableCoreInts() has been replaced with Core_hwiEnable()

The SysMin module has been updated to use the new API in place of
the old API.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoConfigs: Configure BIOS for SMP-mode in SMP specific cfg files
Juan Gutierrez [Wed, 12 Sep 2012 17:45:12 +0000 (12:45 -0500)]
Configs: Configure BIOS for SMP-mode in SMP specific cfg files

SMP functionality has been merged into a single product in BIOS 6.34.
The BIOS.smpEnabled must be explicitly set to true within the SMP
specific configuration files to configure the BIOS for SMP-mode.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoBuild: Upgrade the SMP build to use BIOS
Suman Anna [Wed, 12 Sep 2012 20:20:47 +0000 (15:20 -0500)]
Build: Upgrade the SMP build to use BIOS

SMP/BIOS functionality is merged with the regular SYS/BIOS into
a single product in BIOS 6.34. SMP-mode can be specifically
built for by setting the BIOS.smpEnabled configuration property
by the application.

The build system is updated to use the current latest SMP-mode
BIOS version, BIOS This is the recommended version to
be used for SMP/BIOS to maintain functional feature compatibility
with the previous SMP/BIOS version. The new version
needs the applications to replace some of the APIs used in

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoBuild: Disable SMP build temporarily for BIOS 6.34 upgrade
Suman Anna [Tue, 18 Sep 2012 00:12:43 +0000 (19:12 -0500)]
Build: Disable SMP build temporarily for BIOS 6.34 upgrade

The build for SMP libraries and executables has been temporarily
disabled to allow the code to be fixed for the interface changes
between the older SMP/BIOS and the newer unified
SYS/BIOS 6.34 release stream.

This patch will be reverted after the changes are complete.

Signed-off-by: Suman Anna <>
Signed-off-by: Juan Gutierrez <>
6 years agoBuild: Update to newer BIOS version
Juan Gutierrez [Mon, 17 Sep 2012 19:47:33 +0000 (14:47 -0500)]
Build: Update to newer BIOS version

The build system is updated to use the latest BIOS release,
BIOS This newer version is the latest release in
the BIOS 6.34 release stream that unifies the SMP/BIOS and
SYS/BIOS into a single BIOS product package.

The distinction is made with the BIOS.smpEnabled configuration
parameter within BIOS. Applications would have to specifically
configure this to build for SMP.

The newer BIOS version is built with ARM CGT 5.0.1, and requires
previous existing libraries to be rebuilt against the newer
version using the new compiler to reduce any portability issues.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoBuild: Upgrade to CGT ARM 5.0.1 compiler for ARM M3/M4 targets
Juan Gutierrez [Wed, 12 Sep 2012 21:04:28 +0000 (16:04 -0500)]
Build: Upgrade to CGT ARM 5.0.1 compiler for ARM M3/M4 targets

The compiler for ARM M3/M4 targets is updated to the latest version
in the 5.0 release stream, 5.0.1. Only the README is updated as the
compiler version used is solely dictated by the TMS470CGTOOLPATH
environment variable value.

The newer version includes a fix for a critical compiler issue with
intrinsics. Please look up "DefectHistory.txt" file in the compiler
installation directory for a summary of fixes. The compiler and linker
commands are also different, so any custom Makefiles directly using the
commands needs to be updated accordingly.

This version is recommended to be used specially to grant compatibility
with the newer BIOS 6.34 release stream.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoBuild: Update to newer XDC toolset
Juan Gutierrez [Tue, 18 Sep 2012 17:48:42 +0000 (12:48 -0500)]
Build: Update to newer XDC toolset

The build system is updated to use a newer XDC (XDC
toolset. This newer toolset is the latest XDC release, and is
recommended to be used to allow newer BIOS releases.

The README has also been updated with the corresponding download

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoDEH: Grant internal access to Task Object properties
Juan Gutierrez [Wed, 12 Sep 2012 16:54:12 +0000 (11:54 -0500)]
DEH: Grant internal access to Task Object properties

DEH dereferences the stack pointer and stackSize properties from
the task handle to dump this information in case of a crash.
However, these properties are internal to the Task module and are
not intended for direct usage. The DEH module needs access to these
properties to be able to dump out the stack trace. This is made
possible by defining the ti_sysbios_knl_Task__internalaccess macro
before including the Task header.

The internal access may be allowed in some BIOS versions without
even having to define the macro, but this macro is added to
eliminate any possible compilation variation issues due to a
specific BIOS version.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoBuild: Update to ARM 4.9.5 compiler for ARM M3/M4 targets
Suman Anna [Mon, 20 Aug 2012 19:28:00 +0000 (14:28 -0500)]
Build: Update to ARM 4.9.5 compiler for ARM M3/M4 targets

The compiler for ARM M3/M4 targets is updated to the latest version
in the 4.9 release stream, 4.9.5. Only the README is updated as the
compiler version used is solely dictated by the TMS470CGTOOLPATH
environment variable value.

The newer version is recommended to be used so that various compiler
fixes can be picked up. Please look up "DefectHistory.txt" file in
the compiler installation directory for a summary of fixes.

Signed-off-by: Suman Anna <>
6 years agoBuild: Update to newer XDC and IPC toolsets
Suman Anna [Mon, 20 Aug 2012 19:22:46 +0000 (14:22 -0500)]
Build: Update to newer XDC and IPC toolsets

The build system is updated to use newer XDC (XDC and
IPC (IPC tools.

This newer toolset are the latest on the respective release streams,
and include minor fixes.

The README has also been updated with the corresponding download

Signed-off-by: Suman Anna <>
6 years agoResources: Add hwspinlock state as a custom resource
Subramaniam Chanderashekarapuram [Tue, 28 Aug 2012 03:56:30 +0000 (22:56 -0500)]
Resources: Add hwspinlock state as a custom resource

HwSpinlocks can be left locked in the event of a device
exception. To gracefully exit such a scenario, the state
of the hwspinlocks (stored in a bitfield array) is exposed
as a custom resource table entry. The number of the locks
is also exposed. This information can be used by the host
to reset the locks and recover the remote processor.

Signed-off-by: Subramaniam Chanderashekarapuram <>
6 years agoResources: Add support to define custom resource types
Subramaniam Chanderashekarapuram [Tue, 28 Aug 2012 03:52:47 +0000 (22:52 -0500)]
Resources: Add support to define custom resource types

Remote processors might have resources to share with the host
that are implementation specific. Examples include specific
timers needed by the remote processor, or hwspinlocks used by
the remote processor.

Such information is best encapsulated as a custom resource.
This patch adds basic support to define such custom resources.

Signed-off-by: Subramaniam Chanderashekarapuram <>
6 years agoGates: Add support to track hwspinlock locking
Subramaniam Chanderashekarapuram [Tue, 28 Aug 2012 03:37:28 +0000 (22:37 -0500)]
Gates: Add support to track hwspinlock locking

HwSpinlocks are used to arbitrate access to a common resource
between two or more processors. HwSpinlocks could be left in
a locked state if any device exception happens on the processor
holding the lock. Such a scenario calls for a way to recover /
reset the locked HwSpinlocks so that the arbitration can be
handled properly between the processors again.

This patch introduces a shared state that can be exposed to
the host via a resource table entry. The shared state for the
spinlocks is basically a bitfield (1 bit per hwspinlock) that
would be set each time the corresponding hwspinlock is held
and reset when released. The size of the bit field array is
also exported to aid the host in indexing into the array. The
host can inspect this shared state and reset the spinlocks
held by the remote processor while reloading the remote

Signed-off-by: Subramaniam Chanderashekarapuram <>
Signed-off-by: Suman Anna <>
6 years agoSamples: Add hwspinlock test to be built for all base images
Subramaniam Chanderashekarapuram [Mon, 20 Aug 2012 21:42:00 +0000 (16:42 -0500)]
Samples: Add hwspinlock test to be built for all base images

The file to test hwspinlock module is not included at present in
DSP and SMP-mode IPU sample base-images. The test is now added to
these images as well.

Signed-off-by: Subramaniam Chanderashekarapuram <>
6 years agoConfigs: Include the hwspinlock module for DSP
Subramaniam Chanderashekarapuram [Tue, 21 Aug 2012 18:40:54 +0000 (13:40 -0500)]
Configs: Include the hwspinlock module for DSP

Include the hwspinlock module to be able to use its API in DSP
test samples.

Signed-off-by: Subramaniam Chanderashekarapuram <>
Signed-off-by: Juan Gutierrez <>
6 years agoGates: Add valid hwspinlock base address for DSP
Subramaniam Chanderashekarapuram [Tue, 28 Aug 2012 02:43:41 +0000 (21:43 -0500)]
Gates: Add valid hwspinlock base address for DSP

The current base address defined for HwSpinlock is valid only
for IPU target. Accessing hwspinlock from the DSP using this
address causes an MMU fault since this address is invalid and
not mapped into the DSP MMU.

The DSP has a different virtual address layout compared to IPU,
and the correct hwspinlock base address has been added to be
able to use this IP from DSP.

Signed-off-by: Suman Anna <>
Signed-off-by: Subramaniam Chanderashekarapuram <>
6 years agoGates: Add target-specific attributes to HwSpinlock build
Suman Anna [Tue, 4 Sep 2012 17:47:58 +0000 (12:47 -0500)]
Gates: Add target-specific attributes to HwSpinlock build

The target-specific attributes are added to the hwspinlock build
file. These attributes allow the library to distinguish the target
processor, and allow target-specific code to be compiled only
for that target.

Signed-off-by: Suman Anna <>
Signed-off-by: Subramaniam Chanderashekarapuram <>
6 years agoResources: Remove duplicate IVAHD register space definitions
Suman Anna [Tue, 4 Sep 2012 17:26:41 +0000 (12:26 -0500)]
Resources: Remove duplicate IVAHD register space definitions

The IVAHD register space macros have been defined twice, and
are cleaned up.

Signed-off-by: Suman Anna <>
6 years agoUtils: Fix for use of double quotes in version commit message
Juan Gutierrez [Wed, 29 Aug 2012 16:17:52 +0000 (11:17 -0500)]
Utils: Fix for use of double quotes in version commit message

The version info generation adds the top-most commit message of
the sysbios-rpmsg tree and the tree building the base-image. The
use of double quotes in the commit message (like in a revert or
a merge commit) was not handled properly when constructing the
version string. The quote character was seen by the compiler as
the end of the string instead of another valid character, and is
resulting in a build error at linking stage.

The version string generation for the commit message is corrected
to handle the presence of the quotes.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoBuild: Upgrade to SMP/BIOS
Shahid Akhtar [Tue, 28 Aug 2012 15:35:31 +0000 (10:35 -0500)]
Build: Upgrade to SMP/BIOS

The build system is updated to use the current latest SMP-mode
BIOS version, SMP/BIOS

The newer SMP/BIOS version fixes a Swi_restore() bug which
resulted in re-entrant task scheduler calls.

Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
6 years agoSrvMgr: Handle errors in NameMap
Vincent Stehlé [Tue, 5 Jun 2012 10:13:45 +0000 (12:13 +0200)]
SrvMgr: Handle errors in NameMap

Add an error check trace and abort in case either of the
NameMap_register/NameMap_unregister fails to send a msg
to the host processor.

Signed-off-by: Vincent Stehlé <>
Signed-off-by: Suman Anna <>
6 years agoSrvMgr: Add requirement on ti.grcm
Vincent Stehlé [Tue, 12 Jun 2012 12:35:48 +0000 (14:35 +0200)]
SrvMgr: Add requirement on ti.grcm

The ServiceMgr inherently relies on the ti.grcm package for the
RcmServer code, and hence should have a 'requires' dependency
on the ti.grcm package.

This solves link time issue about undefined symbols, such as
RcmServer_create, if the image configuration also doesn't pull
in ti.grcm.

Signed-off-by: Vincent Stehlé <>
Signed-off-by: Suman Anna <>
6 years agoRCM: Do not bring in legacy IPC components
Suman Anna [Tue, 15 May 2012 00:25:04 +0000 (19:25 -0500)]
RCM: Do not bring in legacy IPC components

The RCM modules in ti.grcm is designed to work with MessageQCopy
module and not with the legacy MessageQ module. The RcmServer
module is cleaned up from bringing in any of these components
during the configuration phase.

The ti.grcm package still needs a good amount of cleanup to
remove all the code that it does not actively use or designed
to work/link with.

Tested-by: Nicolas Dechesne <>
Signed-off-by: Suman Anna <>
6 years agoSamples: Update omx_benchmark sample to use real time
Suman Anna [Fri, 17 Aug 2012 02:20:53 +0000 (21:20 -0500)]
Samples: Update omx_benchmark sample to use real time

The clock_gettime invocations in the omx_benchmark sample is
updated to use CLOCK_REALTIME. The measurements as done
previously were inaccurate as the time stamping is really
based on the process-specific timer, but not based on system
real time.

Signed-off-by: Suman Anna <>
6 years agoResources: Increase DSP memory by 2MB
Suman Anna [Wed, 15 Aug 2012 00:54:14 +0000 (19:54 -0500)]
Resources: Increase DSP memory by 2MB

The various memory resource entries for DSP have been updated with
matching increased sizes as per the Platform files. The entries have
been increased by a combined 2MB to meet the immediate future needs
for adding new content/libraries to the DSP product baseimages.

Signed-off-by: Suman Anna <>
6 years agoPlatform: Increase DSP memory section sizes by 2MB
Suman Anna [Wed, 15 Aug 2012 00:48:07 +0000 (19:48 -0500)]
Platform: Increase DSP memory section sizes by 2MB

The EXT_CODE, EXT_DATA and EXT_HEAP memory sections used
for linking different text, data and heap sections have
been increased for both OMAP4 and OMAP5 platforms to meet
the needs for adding new content/libraries to DSP product

These sections have been increased by a combined 2MB both
to meet immediate future needs as well as satisfy the
alignment requirements of carveout memory on the host-side.

Signed-off-by: Suman Anna <>
6 years agoResources: Increase the IPU data size by 2MB for OMAP4
Suman Anna [Wed, 15 Aug 2012 17:35:00 +0000 (12:35 -0500)]
Resources: Increase the IPU data size by 2MB for OMAP4

The IPU data region size, accomodating both the data and heap
sections has been increased by 2MB to allow the Core1/IPU heap
to be increased by the same amount. This change is being done
to resolve failures in various multimedia usecases due to heap
memory exhaustion.

Signed-off-by: Suman Anna <>
6 years agoPlatform: Increase EXT_HEAP size for OMAP4 Core1
Suman Anna [Mon, 23 Jul 2012 02:26:37 +0000 (21:26 -0500)]
Platform: Increase EXT_HEAP size for OMAP4 Core1

The EXT_HEAP region used for defining application heaps is increased
from 90MB to 92MB for OMAP4 Core1. This increase is being done to
resolve failures in various multimedia usecases due to heap memory

Signed-off-by: Suman Anna <>
6 years agoPlatform: Increase EXT_HEAP size for OMAP4 IPU
Suman Anna [Wed, 15 Aug 2012 17:29:14 +0000 (12:29 -0500)]
Platform: Increase EXT_HEAP size for OMAP4 IPU

The EXT_HEAP region used for defining application heaps is increased
from 90MB to 92MB for OMAP4 IPU platform (used in SMP builds). This
increase is being done to resolve failures in various multimedia
usecases due to heap memory exhaustion.

Signed-off-by: Suman Anna <>
6 years agoResources: Adjust IPC CMA start addresses by 8MB for OMAP4
Suman Anna [Fri, 17 Aug 2012 01:10:07 +0000 (20:10 -0500)]
Resources: Adjust IPC CMA start addresses by 8MB for OMAP4

The IPC start addresses have been moved down by 8MB for OMAP4.
This change is being done to match the CMA carveout start
addresses on the the kernel-side. The CMA addresses are moved
to support increased carveout sizes for IPU memory sections.

Signed-off-by: Suman Anna <>
6 years agoConfigs: Include the Version module
Juan Gutierrez [Tue, 10 Jul 2012 00:39:15 +0000 (19:39 -0500)]
Configs: Include the Version module

Pull in the Version module that automatically retrieves the
tools and source tree information for both sysbios-rpmsg and
the destination base image tree, and stores in a special
".version" memory section.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoUtils: Add a new Version module
Juan Gutierrez [Thu, 12 Jul 2012 01:25:07 +0000 (20:25 -0500)]
Utils: Add a new Version module

A new module, Version, is added to retrieve and present the
version and tools information associated with the ELF base
images. The information is retrieved during link phase and
stored in a non-loadable section named ".version".

The version information comprises of the git tag, branch and
top most commit information (only when the image is built
from source code stored on a git repository).

The information is retrieved automatically when the module
is included in the base-image configuration file.
    var Version = xdc.useModule('ti.utils.Version');

The version information can be read using the standard ELF
utility, as
    readelf -p .version <base_image>

The version information can also be completely overridden by
the user to add his own generated details.
    Version.custom = "My custom version";

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoBuild: Check for proper tool installations before build
Suman Anna [Wed, 1 Aug 2012 20:41:35 +0000 (15:41 -0500)]
Build: Check for proper tool installations before build

The Makefile has been enhanced to verify that the requested tools
have been installed properly. This verification is done before
proceeding with any build or clean step.

Signed-off-by: Suman Anna <>
6 years agoConfigs: Configure default heap size using XDC Memory module
Suman Anna [Wed, 1 Aug 2012 19:27:44 +0000 (14:27 -0500)]
Configs: Configure default heap size using XDC Memory module

The default heap size is defined using the BIOS.heapSize property
from BIOS module. This is changed to use the Memory.defaultHeapSize
property from the XDC Memory module.

This change removes any chance for a warning thrown by BIOS code
if both properties are set, or if a default Memory heap instance
is defined. The BIOS module is automatically configured to use
the Memory.defaultHeapSize internally, so this change is backward
compatible and removes possible warning messages due to external
default heap configurations.

Signed-off-by: Suman Anna <>
6 years agoConfigs: Fix incorrect AMMU configuration of DSP small page #1
Suman Anna [Wed, 1 Aug 2012 19:06:43 +0000 (14:06 -0500)]
Configs: Fix incorrect AMMU configuration of DSP small page #1

The new SYS/BIOS version is incorrectly programming
the small page entry #1 of DSP AMMU to values that are pertinent
to ARM M3/M4 targets. The work around for this SYS/BIOS bug is to
reprogram this entry to valid values for DSP.

This change is added to both the OMAP4 and OMAP5 DSP AMMU config
files, and can be reverted once the bug is fixed in SYS/BIOS.

Signed-off-by: Alan DeMars <>
Signed-off-by: Suman Anna <>
6 years agoSrvMgr: Add service deletion notification support to omaprpc
Alberto Aguirre [Fri, 29 Jun 2012 15:06:06 +0000 (10:06 -0500)]
SrvMgr: Add service deletion notification support to omaprpc

Add a callback mechanism to omaprpc to notify clients when a
service instance will be deleted so that clients can teardown
cleanly even if the remote host did not follow the proper
shutdown sequence (for example when a crash occurs).

Signed-off-by: Alberto Aguirre <>
6 years agoBuild: Update to newer SMP/BIOS
Suman Anna [Wed, 25 Jul 2012 16:31:57 +0000 (11:31 -0500)]
Build: Update to newer SMP/BIOS

The build system is updated to use the current latest SMP-mode
BIOS version, SMP/BIOS

The newer SMP/BIOS version provides critical fixes for couple of
race conditions in the Task module. These improve the robustness
of SMP/BIOS scheduler tremendously.

Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
6 years agoResMgr: Add new API to request resource data
Juan Gutierrez [Wed, 18 Jul 2012 16:09:48 +0000 (11:09 -0500)]
ResMgr: Add new API to request resource data

A new API, IpcResource_requestData, is added to request data
associated with a particular resource.

This API currently supports to request data about the maximum
frequency on a processor device. The checking for the proper
device type is performed on the host-side.

The interface is as follows:
  typedef enum {
  } IpcResource_ReqDataType;

  Int IpcResource_requestData(IpcResource_Handle handle,
                              IpcResource_ResHandle resHandle,
                              IpcResource_ReqDataType dataType,
                              Void *data);

User is supposed to pass in a structure large enough (based on
dataType) to get back the requested information.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Paul Hunt <>
Signed-off-by: Suman Anna <>
6 years agoBuild: Update the default installation folder
Suman Anna [Mon, 23 Jul 2012 21:14:55 +0000 (16:14 -0500)]
Build: Update the default installation folder

The default installation location for all the new tools
is /opt/ti (installed as root). The build system has been
updated to reflect this location as the default value for
the BIOSTOOLSROOT variable. This environment variable need
not be defined if all tools are installed using the default

The only exception at present is the ARM Code Generation
Tools whose installation location is /opt/TI. This has been
corrected in newer versions of the ARM CGT, but for now
requires the installation location to be changed manually
to /opt/ti.

Signed-off-by: Suman Anna <>
6 years agoConfigs: Skip timer frequency check configuration
Suman Anna [Mon, 23 Jul 2012 23:27:18 +0000 (18:27 -0500)]
Configs: Skip timer frequency check configuration

The upgrade to new BIOS adds a check for the timer
frequency by measuring it using a TimeStamp module whose own
timer is derived from the processor clock. The processor may
not always be clocked at OPP100, and so may be at a different
frequency than nominal one. The timer check for the BIOS tick
timer fails in this case, and throws an abort right during the
initial image boot.

This is avoided by programming a configuration option with the
dmTimer module to skip this check, and thereby have the image
booted always just as with the previous BIOS version.

Signed-off-by: Suman Anna <>
6 years agoPM: Enable mbox interrupt in wugen for DSP before suspending
Fernando Guzman Lugo [Tue, 22 May 2012 22:39:56 +0000 (17:39 -0500)]
PM: Enable mbox interrupt in wugen for DSP before suspending

The DSP is not resuming properly for some reason with the latest
host-side code. The hard-reset is being effective only after the
DSP is specifically woken up. This is currently being achieved by
enabling the mailbox interrupt in the DSP Wakeup Generator (wugen)
before suspending. A mailbox message always triggers the resume on
the host processor side, and this message will wake up the DSP and
cause the resume to complete successfully.

Signed-off-by: Fernando Guzman Lugo <>
6 years agoBuild: Update to newer SMP/BIOS
Suman Anna [Thu, 12 Jul 2012 22:33:50 +0000 (17:33 -0500)]
Build: Update to newer SMP/BIOS

The build system is updated to use the current latest SMP-mode
BIOS version, SMP/BIOS

The newer SMP/BIOS version provides an important fix for a race
condition in the GateMutexPri module. This upgrade also picks up
the improvement in TimeStamp module since the last SMP/BIOS version.

Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
6 years agoBuild: Update to newer BIOS version
Suman Anna [Tue, 28 Feb 2012 21:05:00 +0000 (15:05 -0600)]
Build: Update to newer BIOS version

The build system is updated to use newer BIOS, BIOS
Its recommended XDC (XDC and IPC (IPC,
tools have already been adopted.

This newer version is the latest available on this particular
release stream, and is being adopted in preparation for doing
a native M4 build and enabling custom BIOS.libType while
building DSP. The new BIOS version also includes an important
fix for reducing the hibernation boot time for Core1.

The README has also been updated with the corresponding download

Signed-off-by: Suman Anna <>
6 years agoBuild: Update to CGT 7.2.9 compiler for DSP
Suman Anna [Mon, 9 Jul 2012 23:22:23 +0000 (18:22 -0500)]
Build: Update to CGT 7.2.9 compiler for DSP

The compiler for DSP is updated to the latest version in the 7.2
release stream, 7.2.9. Only the README is updated as the compiler
version used is solely dictated by the C6000CGTOOLPATH environment
variable value.

The newer version is recommended to be used so that various compiler
fixes can be picked up. Please look up "DefectHistory.txt" file in
the compiler installation directory for a summary of fixes.

Signed-off-by: Suman Anna <>
6 years agoDEH: Restore watchdog timer context to support Device OFF mode
Suman Anna [Thu, 5 Jul 2012 14:16:53 +0000 (09:16 -0500)]
DEH: Restore watchdog timer context to support Device OFF mode

During OFF mode suspend, the states of most IP blocks in the SOC
are lost when the IP is powered off. Without software action to
restore the lost state, the modules will be left in their reset
states and will not be able to resume where they left off.

The timers will need to be reinitialized after Device OFF. A new
Watchdog_restore function is registered as a resume callback hook
with the IpcPower module and reinitializes the watchdog timer by
reprogramming the timer registers. The timer registers are
reconfigured with the same set of values as during the initial
boot except for the counter register, which is programmed with
the regular watchdog timeout value.

Signed-off-by: Paul Hunt <>
Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
6 years agoHDMIWA: Publish custom tick function to IpcPower module
Juan Gutierrez [Mon, 16 Jul 2012 18:50:48 +0000 (13:50 -0500)]
HDMIWA: Publish custom tick function to IpcPower module

The IpcPower module needs a handle to the BIOS Tick timer
handle inorder to restore its context. The IpcPower module
retrieves this handle by searching for standard clock tick
functions among the configured timers on the target.

The HDMIWA uses a custom tick function and internally calls
the Clock_tick function, and so needs to publish this custom
function to the IpcPower module. This will allow the IpcPower
module to cross-check against this custom function as well
in finding the tick timer handle.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoPM: Restore Tick timer context to support Device OFF mode
Suman Anna [Thu, 7 Jun 2012 22:53:52 +0000 (17:53 -0500)]
PM: Restore Tick timer context to support Device OFF mode

During OFF mode suspend, the states of most IP blocks in the SOC
are lost when the IP is powered off. Without software action to
restore the lost state, the modules will be left in their reset
states and will not be able to resume where they left off.

The GPTimer driver code on the host-side was saving and restoring
the context previously. This may not be guaranteed always, and so
it is better to save and restore the context on the BIOS-side.

This is done in conjunction with a new SMP/BIOS API to reprogram
the timer registers to their configured settings upon a resume
from hibernation or system suspend. The API is not yet available
in SYS/BIOS, and requires the host-side to preserve the context.

The IpcPower module retrieves and stores the BIOS Tick timer
handle (for using with new API) by checking against known BIOS
timer tick functions. Provision has also been added for
publishing a tick function (if different from standard-ones)
through an exported global variable. The image would abort if
no timer handle can be retrieved.

Signed-off-by: Paul Hunt <>
Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
Signed-off-by: Juan Gutierrez <>
6 years agoPM: Add debug counters for different PM events
Suman Anna [Fri, 13 Jul 2012 09:50:11 +0000 (04:50 -0500)]
PM: Add debug counters for different PM events

Three debug counters have been added to count the number of
transitions for Idle, Suspend and Resume power events. These
can be looked up using a memory inspection/dump tool.

Signed-off-by: Paul Hunt <>
Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
6 years agoPM: Execute PM suspend/resume callbacks in a task
Shahid Akhtar [Tue, 5 Jun 2012 19:14:44 +0000 (14:14 -0500)]
PM: Execute PM suspend/resume callbacks in a task

A new PM task has been added in a regular SYS/BIOS environment
to execute the various user registered suspend & resume callback
functions. This allows the users to use semaphores in the callback

The new task is not required for SMP/BIOS because the SMP/BIOS
already executes all the Power Suspend functionality within a
dedicated task on each of the IPU cores. The BIOS Power_suspend
calls the callback functions in these task contexts.

NOTE: The callback functions are ONLY called by CORE0 in SMP/BIOS.

Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
6 years agoPM: Add callback functions for suspend & resume events
Shahid Akhtar [Thu, 31 May 2012 16:08:18 +0000 (11:08 -0500)]
PM: Add callback functions for suspend & resume events

Two new APIs have been added to allow users to register
callback functions for notification of the suspend and
resume power events on the slave processor. Two events
are currently supported (IpcPower_Event_SUSPEND and
IpcPower_Event_RESUME) and allow users/drivers to take
action to save and restore their context on either side
of a slave processor suspend.

The new register/unregister callback APIs are:
- Int IpcPower_registerCallback(
         Int event, IpcPower_CallbackFuncPtr cb, Ptr data);
- Int IpcPower_unregisterCallback(
         Int event, IpcPower_CallbackFuncPtr cb);

Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
6 years agoBuild: Clear internal configuration settings during SMP config
Suman Anna [Thu, 5 Jul 2012 19:09:26 +0000 (14:09 -0500)]
Build: Clear internal configuration settings during SMP config

The build for SMP-mode IPU target is enabled by configuring the
build system to an exclusive SMP build mode using 'make smp_config'.

An internal configuration file is created in the above step, and the
entries in this file can be repeated for consecutive 'make smp_config'
invocations. The 'unconfig' target is therefore added to 'smp_config'
make target to remove the internal file.

Signed-off-by: Suman Anna <>
6 years agoConfigs: Set the dmTimer frequency limits for OMAP5 boards
Suman Anna [Wed, 25 Apr 2012 23:49:39 +0000 (18:49 -0500)]
Configs: Set the dmTimer frequency limits for OMAP5 boards

The OMAP5 config files are still building against the OMAP4 M3 target
at present, but the SYS_CLK is sourced at a different clock rate on
the OMAP5 boards. The dmTimer settings are programmed in SYS/BIOS by
looking up the OMAP4 values and therefore is causing a runtime
frequency mismatch error within the BIOS code. These values have
been overridden as per the clock rates seen on OMAP5 boards.

These changes can be reverted once the appropriate BIOS version and
build change to OMAP5 M4 target are picked up.

Signed-off-by: Suman Anna <>
6 years agoDEH: Use BIOS exception functions directly
Shahid Akhtar [Tue, 8 May 2012 21:23:59 +0000 (16:23 -0500)]
DEH: Use BIOS exception functions directly

The local implementation to interpret the exceptions have
been removed and are replaced with the equivalent function
implementations from the SYS/BIOS or the SMP/BIOS.

Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
6 years agoDEH: Disallow timer register accesses if watchdog disabled
Suman Anna [Thu, 28 Jun 2012 22:52:36 +0000 (17:52 -0500)]
DEH: Disallow timer register accesses if watchdog disabled

The Watchdog feature can be enabled or disabled through a build time
configuration on the host-side. The new Watchdog implementation was
allowing transactions on the timer without really checking if the
associated timer is enabled or not. The watchdog timer registers are
accessed during scheduler switches and without checking for the
timer statys can cause a continuous exception on the slave processors
when watchdog feature is disabled.

The previous implementation used a valid timer base address itself
as the check, but the current implementation always assigns the base
address for the timer used.  An additional status mode has therefore
been added for each timer and checked before programming the timer

Signed-off-by: Suman Anna <>
Signed-off-by: Subramaniam C.A <>
6 years agoDEH: Enhance Watchdog module to support SMP-mode
Shahid Akhtar [Fri, 18 May 2012 16:27:15 +0000 (11:27 -0500)]
DEH: Enhance Watchdog module to support SMP-mode

The Watchdog module has been modified to support the multicore
SMP-mode. The Watchdog timers for all cores are initalized at
the same time. The WDT for Core0 is same as before. For Core1,
the WDT is stopped during Idle task and restarted when a task
is scheduled on Core1.

The code uses ti.sysbios.hal.Core from SMP/BIOS to determine
which core the code is running on in SMP-mode.

Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
6 years agoDEH: Move out Watchdog functionality into a separate module
Suman Anna [Tue, 8 May 2012 21:37:16 +0000 (16:37 -0500)]
DEH: Move out Watchdog functionality into a separate module

The Watchdog functionality has been separated out from the DEH
module and moved into a separate Watchdog module. The Deh files
will be used only for the exception reporting code that is
specific to each target processor. The new Watchdog module is
currently supported only for OMAP4/OMAP5 devices, but is designed
for scalability.

The patch also includes generic cleanup in terms of code format
and comments.

Signed-off-by: Shahid Akhtar <>
Signed-off-by: Suman Anna <>
6 years agoIPC: Initialize procId variables in interrupt send functions
Suman Anna [Thu, 21 Jun 2012 15:52:56 +0000 (10:52 -0500)]
IPC: Initialize procId variables in interrupt send functions

The procId variables are static on a particular base image and
are used in the InterruptXXX_intSend functions to eliminate the
need to do a function lookup for the id every time a message
needs to be sent. The variables are currently initialized in the
InterruptXXX_intRegister function. The xxx_intRegister function
is used for enabling a Rx interrupt to process received messages,
and should be orthogonal to the xxx_intSend function, which is
solely used for sending a message.

The procId initialization has therefore been moved to the
xxx_intSend function itself to break the above dependency. This
ensures that the variables are always initialized, and would
avoid any exceptions when sending a message even before a Rx
interrupt has been registered.

This behavior has been observed in the case of an early crash.
The VirtQueue_postCrashToMailbox tries to notify MPU in case
of an exception during the initial boot and this can lead to
another secondary crash due to uninitialized procId variables.
This nested-exception behavior masks the register and stack
dump of the very first crash.

Signed-off-by: Artur Troian <>
Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoIPC: Move Log_printf after registering with Registry module
Juan Gutierrez [Thu, 21 Jun 2012 17:15:26 +0000 (12:15 -0500)]
IPC: Move Log_printf after registering with Registry module

Module-specific logging support is automatic with XDC modules,
and similar functionality for non-XDC modules (like MessageQCopy)
is only possible through the Registry module. The MessageQCopy
module can have its own Diags mask, module id and logging support
functional only after registering with the Registry module (using

Any Log_printf or other API that rely on the module id and the
descriptor, if called before Registry_addModule, will be using
invalid values for the diags mask and module id. This can cause
potential stack/memory corruption issues due to erroneous
diagnostic text lookups or other array out of bounds issues.

This patch moves the Log_printf in MessageQCopy_init only after
initialization of the Registry_Desc has been completed.

Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoResources: Adjust for CMA relocation within 512MB omap4
Suman Anna [Tue, 19 Jun 2012 18:04:54 +0000 (13:04 -0500)]
Resources: Adjust for CMA relocation within 512MB

The CMA carveouts for the remote processors have been moved to
lie within the first 512MB of DDR. The IPC start addresses have
been adjusted accordingly to match the kernel-side.

This change is being done to improve stability on the host-side
with the new kernel.

Signed-off-by: Suman Anna <>
6 years agoRevert "ResMgr: Add local structures for auxclk and regulator resources"
Fernando Guzman Lugo [Thu, 14 Jun 2012 20:28:57 +0000 (15:28 -0500)]
Revert "ResMgr: Add local structures for auxclk and regulator resources"

This reverts commit e4553e51faf71e7c6f164bf05df420ab34323b09.

The host-side resmgr code has been modified to accept ids for
regulators and auxclks. This patch reverts the functionality
back to what it had been originally in the rpmsg-1.20 branch.

Signed-off-by: Fernando Guzman Lugo <>
Signed-off-by: Subramaniam C.A <>
Signed-off-by: Suman Anna <>
6 years agoBuild: Update to newer XDC and SMP/BIOS toolsets
Suman Anna [Thu, 31 May 2012 15:48:27 +0000 (10:48 -0500)]
Build: Update to newer XDC and SMP/BIOS toolsets

The build system is updated to use the newer XDC (XDC
and the current latest SMP-mode BIOS version, SMP/BIOS

The newer SMP/BIOS version provides PM suspend/resume programmable hook
functions, to allow context save and restore by individual modules.
This version also adds the support for building for M4 target natively.

The README has also been updated with the corresponding download

Signed-off-by: Shahid Akhtar <>
Signed-off-by: Paul Hunt <>
Signed-off-by: Suman Anna <>
6 years agoResources: Fix the resource address in IpcMemory startup trace
Suman Anna [Tue, 5 Jun 2012 03:30:40 +0000 (22:30 -0500)]
Resources: Fix the resource address in IpcMemory startup trace

The IpcMemory startup function prints a trace about the number of
resources and the address of the resource table to make sure the
correponding symbols are retained in the final baseimage. The
resource table address is incorrectly referenced, and has been
fixed now.

Signed-off-by: Suman Anna <>
6 years agoResources: Fix insufficient memory allocation for IpcMemory_RscTable
Suman Anna [Tue, 5 Jun 2012 01:14:40 +0000 (20:14 -0500)]
Resources: Fix insufficient memory allocation for IpcMemory_RscTable

The IpcMemory_RscTable structure definition is using an open-ended
array declaration for the 'offset' element for which the TI linker
has failed to assign any memory. This is causing an erroneous offset
translation in the IpcMemory_getEntry function. The invalid offset
can result in a random value and thereby cause an exception in the
IpcMemory_virtToPhys and IpcMemory_physToVirt API. The 'offset'
variable is now defined as an array with 1 element to make sure the
structure object is allocated enough memory and allow the 'offset'
to be dereferenced correctly.

Signed-off-by: Subramaniam C.A <>
Signed-off-by: Suman Anna <>
6 years agoVirtQueue: Add support to ack/cancel suspend
Fernando Guzman Lugo [Fri, 18 May 2012 19:41:18 +0000 (14:41 -0500)]
VirtQueue: Add support to ack/cancel suspend

Now, guest processor can cancel the auto suspend at will when it
detects the processor should not be suspended. Otherwise it will
send the ack of the suspend to the Host side. However, the system
suspend is still mandatory and it cannot be canceled.

Signed-off-by: Fernando Guzman Lugo <>
6 years agoSamples: Request auxclk rate parameters in Hz in ResMgr sample
Fernando Guzman Lugo [Sat, 5 May 2012 00:20:23 +0000 (19:20 -0500)]
Samples: Request auxclk rate parameters in Hz in ResMgr sample

The host-side ResMgr is expecting the aux clock rate in Hz and
not in MHz. This change was done on the host-side to allow
decimal MHz frequencies (like 19.2 MHz) to be requested.

Signed-off-by: Fernando Guzman Lugo <>
Signed-off-by: Suman Anna <>
6 years agoSamples: Remove timeout for ResMgr connections
Fernando Guzman Lugo [Tue, 21 Feb 2012 19:49:15 +0000 (13:49 -0600)]
Samples: Remove timeout for ResMgr connections

Polling for ResMgr connection is not needed anymore since the
ResMgr connection setup now uses the NameMap service and the
channel is created at the time of the request.

Signed-off-by: Fernando Guzman Lugo <>
6 years agoResMgr: Add local structures for auxclk and regulator resources
Fernando Guzman Lugo [Wed, 21 Mar 2012 01:04:30 +0000 (20:04 -0500)]
ResMgr: Add local structures for auxclk and regulator resources

The auxclk resource on the host-side now receives the name of the
auxclk being requested as a parameter (to avoid the limit on num
of auxclk that can be requested and to avoid hardcoding that in
the host side). Therefore, now the auxclk structure is different
and we need to create a local auxclk structure match the host side
and to keep the original structure to match exported APIs.

The same applies to the regulator resource.

The old structures can be removed once all users of IpcResource are
migrated to the new changes.

Signed-off-by: Fernando Guzman Lugo <>
Signed-off-by: Suman Anna <>
6 years agoResMgr: Add local structures for remoteproc resources
Miguel Vadillo [Wed, 25 Apr 2012 15:30:03 +0000 (10:30 -0500)]
ResMgr: Add local structures for remoteproc resources

The remoteproc resource on the host-side now requires the name of
the processor being requested. The name is constructed using the
name "rproc" appended with the specific remote processor name.

Supported remoteproc names are:
- ipu_c0
- dsp_c0

NOTE: ipu_c0 represents both ducati cores.

Signed-off-by: Miguel Vadillo <>
6 years agoResMgr: Change request and ack structures
Fernando Guzman Lugo [Wed, 21 Mar 2012 00:22:57 +0000 (19:22 -0500)]
ResMgr: Change request and ack structures

The Resource requests are changed from requesting by id to requesting
by name to match the latest kernel-side code. The translation from the
resource id to the name is done within the IpcResource module, by
maintaining the matching name list. This change is transparent, and
there is no change in the exported API interface.

Also, the request and ack structures are split into sub-structures
depending on the type of request and the ack response for a specific
request. That is because each action needs its own parameters.

Signed-off-by: Fernando Guzman Lugo <>
Signed-off-by: Suman Anna <>
6 years agoResMgr: Use NameMap for connections and disconnections
Fernando Guzman Lugo [Wed, 7 Mar 2012 22:07:03 +0000 (16:07 -0600)]
ResMgr: Use NameMap for connections and disconnections

The ResMgr channel is not created by default on the host-side
using a fixed channel anymore. Use the NameMap framework to
create the service end-point on the host-side.

NOTE: The NameMap framework is intended for publishing the
services that the slave processor provides, and ResMgr is
really a server (or a service providing resource management)
on the host-side. There is currently no framework for publishing
services from the host-side to the remote-side. The above
usage of NameMap allows the resource manager driver to be
created dynamically, and this needs to be revisited later
in the context of service publishing from any processor to

Signed-off-by: Fernando Guzman Lugo <>
Signed-off-by: Juan Gutierrez <>
Signed-off-by: Suman Anna <>
6 years agoResources: Adjust the physical address of the vrings
Subramaniam C.A [Fri, 18 May 2012 06:57:27 +0000 (01:57 -0500)]
Resources: Adjust the physical address of the vrings

The memory allocation on the host-side has switched to use the
Contiguous Memory Allocator (CMA). All the memory regions needing
DDR memory are allocated by the CMA, and the IPC sections are the
first on the per-device CMA region. However, the IPC sections also
needs to be mapped into the MMU, and hence are specified as DEVMEM
entries, and need a physical address matching the start of the CMA
regions. The current alignment requirements for CMA is 8MB, and
this patch corrects the addresses as per the new host-side CMA

Signed-off-by: Subramaniam C.A <>
Signed-off-by: Suman Anna <>