diff --git a/firmware/ec/.ccsproject b/firmware/ec/.ccsproject
new file mode 100644
index 0000000000..4b71c4173c
--- /dev/null
+++ b/firmware/ec/.ccsproject
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/firmware/ec/.cproject b/firmware/ec/.cproject
new file mode 100644
index 0000000000..cfc755074a
--- /dev/null
+++ b/firmware/ec/.cproject
@@ -0,0 +1,258 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/firmware/ec/.gitattributes b/firmware/ec/.gitattributes
new file mode 100644
index 0000000000..7b70dd67fa
--- /dev/null
+++ b/firmware/ec/.gitattributes
@@ -0,0 +1,6 @@
+# Enable autocrlf by default for this respository (in case global setting is different)
+* text=auto
+
+# Explicitely ensure our source files get EOL converted
+*.c text
+*.h text
diff --git a/firmware/ec/.gitignore b/firmware/ec/.gitignore
new file mode 100644
index 0000000000..0272aabef7
--- /dev/null
+++ b/firmware/ec/.gitignore
@@ -0,0 +1,10 @@
+/Debug/
+/Release/
+
+.xdchelp
+/.config/
+/.launches
+
+# NOTE: this should only be ignored when "Manage the project's
+# target-configuration automatically" is selected in Properties->CCS General
+/targetConfigs/
diff --git a/firmware/ec/.project b/firmware/ec/.project
new file mode 100644
index 0000000000..646b656d0e
--- /dev/null
+++ b/firmware/ec/.project
@@ -0,0 +1,28 @@
+
+
+ OpenCellular
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+ full,incremental,
+
+
+
+
+
+ org.eclipse.rtsc.xdctools.buildDefinitions.XDC.xdcNature
+ com.ti.ccstudio.core.ccsNature
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.core.ccnature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
diff --git a/firmware/ec/.settings/org.eclipse.cdt.codan.core.prefs b/firmware/ec/.settings/org.eclipse.cdt.codan.core.prefs
new file mode 100644
index 0000000000..a3d4231390
--- /dev/null
+++ b/firmware/ec/.settings/org.eclipse.cdt.codan.core.prefs
@@ -0,0 +1,69 @@
+eclipse.preferences.version=1
+inEditor=false
+onBuild=false
+org.eclipse.cdt.codan.checkers.errnoreturn=Warning
+org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false}
+org.eclipse.cdt.codan.checkers.errreturnvalue=Error
+org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.checkers.noreturn=Error
+org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false}
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false}
+org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
+org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},unknown\=>false,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},skip\=>true}
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},paramNot\=>false}
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},else\=>false,afterelse\=>false}
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>("@(\#)","$Id")}
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
diff --git a/firmware/ec/.settings/org.eclipse.cdt.core.prefs b/firmware/ec/.settings/org.eclipse.cdt.core.prefs
new file mode 100644
index 0000000000..7cc203caf4
--- /dev/null
+++ b/firmware/ec/.settings/org.eclipse.cdt.core.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+environment/project/com.ti.ccstudio.buildDefinitions.TMS470.Debug.229522676/append=true
+environment/project/com.ti.ccstudio.buildDefinitions.TMS470.Debug.229522676/appendContributed=true
diff --git a/firmware/ec/.settings/org.eclipse.cdt.debug.core.prefs b/firmware/ec/.settings/org.eclipse.cdt.debug.core.prefs
new file mode 100644
index 0000000000..2adc7b1dde
--- /dev/null
+++ b/firmware/ec/.settings/org.eclipse.cdt.debug.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.cdt.debug.core.toggleBreakpointModel=com.ti.ccstudio.debug.CCSBreakpointMarker
diff --git a/firmware/ec/.settings/org.eclipse.core.resources.prefs b/firmware/ec/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000..1134de1cc1
--- /dev/null
+++ b/firmware/ec/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,78 @@
+eclipse.preferences.version=1
+encoding//Debug/config/oc-sdr/subdir_rules.mk=UTF-8
+encoding//Debug/config/oc-sdr/subdir_vars.mk=UTF-8
+encoding//Debug/makefile=UTF-8
+encoding//Debug/objects.mk=UTF-8
+encoding//Debug/platform/oc-sdr/cfg/subdir_rules.mk=UTF-8
+encoding//Debug/platform/oc-sdr/cfg/subdir_vars.mk=UTF-8
+encoding//Debug/platform/oc-sdr/schema/subdir_rules.mk=UTF-8
+encoding//Debug/platform/oc-sdr/schema/subdir_vars.mk=UTF-8
+encoding//Debug/platform/oc-sdr/subdir_rules.mk=UTF-8
+encoding//Debug/platform/oc-sdr/subdir_vars.mk=UTF-8
+encoding//Debug/sources.mk=UTF-8
+encoding//Debug/src/Devices/i2c/subdir_rules.mk=UTF-8
+encoding//Debug/src/Devices/i2c/subdir_vars.mk=UTF-8
+encoding//Debug/src/Devices/ocmp_wrappers/subdir_rules.mk=UTF-8
+encoding//Debug/src/Devices/ocmp_wrappers/subdir_vars.mk=UTF-8
+encoding//Debug/src/Devices/subdir_rules.mk=UTF-8
+encoding//Debug/src/Devices/subdir_vars.mk=UTF-8
+encoding//Debug/src/Devices/uart/subdir_rules.mk=UTF-8
+encoding//Debug/src/Devices/uart/subdir_vars.mk=UTF-8
+encoding//Debug/src/comm/subdir_rules.mk=UTF-8
+encoding//Debug/src/comm/subdir_vars.mk=UTF-8
+encoding//Debug/src/devices/i2c/subdir_rules.mk=UTF-8
+encoding//Debug/src/devices/i2c/subdir_vars.mk=UTF-8
+encoding//Debug/src/devices/ocmp_wrappers/subdir_rules.mk=UTF-8
+encoding//Debug/src/devices/ocmp_wrappers/subdir_vars.mk=UTF-8
+encoding//Debug/src/devices/subdir_rules.mk=UTF-8
+encoding//Debug/src/devices/subdir_vars.mk=UTF-8
+encoding//Debug/src/devices/uart/subdir_rules.mk=UTF-8
+encoding//Debug/src/devices/uart/subdir_vars.mk=UTF-8
+encoding//Debug/src/drivers/subdir_rules.mk=UTF-8
+encoding//Debug/src/drivers/subdir_vars.mk=UTF-8
+encoding//Debug/src/helpers/subdir_rules.mk=UTF-8
+encoding//Debug/src/helpers/subdir_vars.mk=UTF-8
+encoding//Debug/src/interfaces/Ethernet/subdir_rules.mk=UTF-8
+encoding//Debug/src/interfaces/Ethernet/subdir_vars.mk=UTF-8
+encoding//Debug/src/interfaces/UART/subdir_rules.mk=UTF-8
+encoding//Debug/src/interfaces/UART/subdir_vars.mk=UTF-8
+encoding//Debug/src/interfaces/USB/subdir_rules.mk=UTF-8
+encoding//Debug/src/interfaces/USB/subdir_vars.mk=UTF-8
+encoding//Debug/src/post/subdir_rules.mk=UTF-8
+encoding//Debug/src/post/subdir_vars.mk=UTF-8
+encoding//Debug/src/registry/subdir_rules.mk=UTF-8
+encoding//Debug/src/registry/subdir_vars.mk=UTF-8
+encoding//Debug/src/subdir_rules.mk=UTF-8
+encoding//Debug/src/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/bms/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/bms/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/debug/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/debug/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/ethernet/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/ethernet/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/gpp/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/gpp/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/hci/led/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/hci/led/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/hci/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/hci/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/obc/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/obc/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/power/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/power/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/rffe/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/rffe/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/sdr/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/sdr/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/sync/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/sync/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/sys/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/sys/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/testModule/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/testModule/subdir_vars.mk=UTF-8
+encoding//Debug/src/subsystem/watchdog/subdir_rules.mk=UTF-8
+encoding//Debug/src/subsystem/watchdog/subdir_vars.mk=UTF-8
+encoding//Debug/src/utils/subdir_rules.mk=UTF-8
+encoding//Debug/src/utils/subdir_vars.mk=UTF-8
+encoding//Debug/subdir_rules.mk=UTF-8
+encoding//Debug/subdir_vars.mk=UTF-8
diff --git a/firmware/ec/Makefile b/firmware/ec/Makefile
index caea6de085..da7b8aa9f6 100644
--- a/firmware/ec/Makefile
+++ b/firmware/ec/Makefile
@@ -1,11 +1,3 @@
-#
-# Copyright (c) 2017-present, Facebook, Inc.
-# All rights reserved.
-#
-# This source code is licensed under the BSD-style license found in the
-# LICENSE file in the root directory of this source tree. An additional grant
-# of patent rights can be found in the PATENTS file in the same directory.
-#
#
# Main makefile for OCWare.
@@ -15,13 +7,13 @@
# Set proper path.
######################
-OCWARE_DIR=/Users/kashi/work/OpenCellular/review/firmware
-TIRTOS_DIR=/Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14
-XDCTOOLS_DIR=/Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core
-TOOLCHAIN=/Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3
+OCWARE_DIR=/home/kashif/OpenCellular/OCWare/firmware
+TIRTOS_DIR=/home/kashif/OpenCellular/OCWare/firmware/ti/tirtos_tivac_2_16_01_14/
+XDCTOOLS_DIR=/home/kashif/OpenCellular/OCWare/firmware/ti/xdctools_3_32_01_22_core/
+TOOLCHAIN = /usr
#######################
-# Do not change anything below this, unless you know what you really want!
+# Do not change anything below this.
#######################
BIOS_DIR=$(TIRTOS_DIR)/products/bios_6_45_02_31/
@@ -34,15 +26,14 @@ XDCPATH_LIST = \
$(BIOS_DIR)/packages \
$(UIA_DIR)/packages \
$(TIRTOS_DIR)/packages \
- $(TIRTOS_DRIVER_DIR)/packages \
- $(NDK_PATH) \
+ $(TIRTOS_DRIVER_DIR)/packages
TARGET = gnu.targets.arm.M4F
PLATFORM = ti.platforms.tiva:TM4C1294NCPDT:true
-MCU=TM4C1294NCPDT
+PART=TM4C1294NCPDT
ROV_XS_SUFFIX = pm4fg
CONFIGURO_OPTS = -v
-CONFIG=OpenCellular
+CONFIG=bld
empty:=
space:= $(empty) $(empty)
XDCPATH = $(subst $(space),;,$(XDCPATH_LIST))
@@ -51,24 +42,19 @@ CONFIGURO = $(XDCTOOLS_DIR)/xs --xdcpath="$(XDCPATH)" \
xdc.tools.configuro $(CONFIGURO_OPTS)
# Find all C source/object files.
-SRC_FILE = $(shell find . -name '*.c' -not -path "./OpenCellular/*" -not -path "*test/*")
-MAIN_OBJS = $(patsubst %.c, %.o, $(SRC_FILE))
+SRC_FILE = $(shell find . -name '*.c')
+MAIN_OBJS = $(patsubst %.c,%.o,$(wildcard *.c */*.c))
-CC = $(TOOLCHAIN)/bin/arm-none-eabi-gcc -std=c99
-CFLAGS = -mcpu=cortex-m4 -mthumb -mabi=aapcs -mapcs-frame
-CFLAGS += @$(CONFIG)/compiler.opt -O3 -g -Wconversion -Wno-implicit
-CFLAGS += -Wfatal-errors -w -DPART_$(MCU) -c
-CFLAGS += -I$(TIVAWARE_PATH) -I$(OCWARE_DIR)/src -DPART_TM4C1294NCPDT -Dgcc
-CFLAGS += -DTIVAWARE -DDEBUG_LOGS -D_POSIX_SOURCE
+CC = $(TOOLCHAIN)/bin/arm-none-eabi-gcc
+CFLAGS = -Wall -mcpu=cortex-m4 -mthumb -mabi=aapcs -mapcs-frame @$(CONFIG)/compiler.opt -O3 -g
+CFLAGS += -DPART_$(MCU) -c -I$(TIVAWARE_PATH) -I$(OCWARE_DIR)/src
CFLAGS += -I$(XDC_PATH) -I$(BIOS_PATH) -I$(TIDRIVER_PATH) -I./
-CFLAGS += -I$(OCWARE_DIR)/inc -I$(OCWARE_DIR)/src/ -I$(OCWARE_DIR)
-CFLAGS += -DFW_REV_C -DSDR_CURRENT_SENSOR
-CFLAGS += -I./ -I$(NDK_PATH) -I$(NDK_PATH)/ti/ndk/inc/bsd/ -I$(BIOS_DIR)/packages/ti/sysbios/posix
+CFLAGS += -I$(OCWARE_DIR)/src/inc
+CFLAGS += -I./ -I$(NDK_PATH)
CFLAGS += -I$(TIVAWARE_DIR)
-CFLAGS += -ffunction-sections -fdata-sections -MD -pedantic
LD = $(TOOLCHAIN)/bin/arm-none-eabi-gcc
-LFLAGS = -Wl,-Map,$(CONFIG).map -Wl,-T,$(CONFIG)/linker.cmd -L$(TIVAWARE_DIR)/driverlib/gcc -L$(TIVAWARE_DIR)/grlib/gcc -L$(TIVAWARE_DIR)/usblib/gcc -lgr -lusb -ldriver -march=armv7e-m -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -nostartfiles -static -Wl,--gc-sections -L$(BIOS_DIR)/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/armv7e-m/fpu -lgcc -lc -lm -lrdimon
+LFLAGS = -nostartfiles -static -Wl,--gc-sections -Wl,-T,../OC_CONNECT1.cmd -Wl,-T,$(CONFIG)/linker.cmd
.PRECIOUS: %/compiler.opt %/linker.cmd
@@ -84,12 +70,10 @@ all: main.out
$(CC) $(CFLAGS) -c $<
%.out: $(CONFIG)/linker.cmd $(MAIN_OBJS)
- $(LD) $(MAIN_OBJS) $(LFLAGS) -o $@
+ $(LD) $(LFLAGS) -o $@ $(MAIN_OBJS)
clean:
- -rm -rf *.o *.out *.d *.map *.rov.xs $(CONFIG) $(MAIN_OBJS); \
- find . -name "*.d" -type f -delete; \
- find . -name "*.o" -type f -delete;
+ -rm -rf *.o *.out *.d *.rov.xs $(CONFIG) $(MAIN_OBJS)
test:
cd test && $(MAKE)
diff --git a/firmware/ec/OC_CONNECT1.cmd b/firmware/ec/OC_CONNECT1.cmd
new file mode 100644
index 0000000000..d7afdd4872
--- /dev/null
+++ b/firmware/ec/OC_CONNECT1.cmd
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+/* Define the memory block start/length for the OC_CONNECT1 M4 */
+
+MEMORY
+{
+ FLASH (RX) : origin = 0x00000000, length = 0x00100000
+ SRAM (RWX) : origin = 0x20000000, length = 0x00040000
+}
+
+/* Section allocation in memory */
+
+SECTIONS
+{
+ .text : > FLASH
+ .const : > FLASH
+ .cinit : > FLASH
+ .pinit : > FLASH
+ .init_array : > FLASH
+
+ .data : > SRAM
+ .bss : > SRAM
+ .sysmem : > SRAM
+ .stack : > SRAM
+}
diff --git a/firmware/ec/OpenCellular.cmd b/firmware/ec/OpenCellular.cmd
deleted file mode 100644
index 62a6e68e87..0000000000
--- a/firmware/ec/OpenCellular.cmd
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-* Copyright (c) 2016, Texas Instruments Incorporated
-* All rights reserved.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions
-* are met:
-*
-* * Redistributions of source code must retain the above copyright
-* notice, this list of conditions and the following disclaimer.
-*
-* * Redistributions in binary form must reproduce the above copyright
-* notice, this list of conditions and the following disclaimer in the
-* documentation and/or other materials provided with the distribution.
-*
-* * Neither the name of Texas Instruments Incorporated nor the names of
-* its contributors may be used to endorse or promote products derived
-* from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
-* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-/*
-* ======== DK_TM4C129X.lds ========
-* Define the memory block start/length for the TM4C129XNCZAD
-*/
-
-MEMORY
-{
- FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00100000
- SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00040000
-}
-
-SECTIONS
-{
- /* code */
- .text :
- {
- _text = .;
- /* ensure ISR vectors are not removed by linker */
- KEEP(*(.isr_vector))
- *(.text*)
- *(.rodata*)
- _etext = .;
- } > FLASH
-
- /* static data */
- .data : AT(ADDR(.text) + SIZEOF(.text))
- {
- _data = .;
- *(vtable)
- *(.data*)
- _edata = .;
- } > SRAM
-
- /* static uninitialized data */
- .bss :
- {
- _bss = .;
- *(.bss*)
- *(COMMON)
- _ebss = .;
- } > SRAM
-}
diff --git a/firmware/ec/README b/firmware/ec/README
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/firmware/ec/coding_style_guide b/firmware/ec/coding_style_guide
deleted file mode 100644
index ac6d9447fa..0000000000
--- a/firmware/ec/coding_style_guide
+++ /dev/null
@@ -1,369 +0,0 @@
-
-OpenCellular Coding Style
-=========================
-
-We follow Linux Kernel coding style with following exceptions.
-
-Exceptions:
-----------
-
-o 4-space indentation
-o Typedef enums and structs
-o indent case labels
- switch (suffix) {
- case 'G':
- case 'g':
- mem <<= 30;
- break;
- case 'M':
- case 'm':
- mem <<= 20;
- break;
- case 'K':
- case 'k':
- mem <<= 10;
- /* fall through */
- default:
- break;
- }
-
-Additions:
----------
-
-o Non-public functions (functions not exported in header for use by other
- modules) should be static
-o Unless absolutely necessary, global variables within a module should be static
-o Avoid using forward declarations, just #include headers when possible
-o Static variables of the form s_variableName
-o Non-static functions of the form ModuleName_functionName()
-o File names
- o C and header files in same directory
- o ModuleName.c/h
- o All directory names should be lowercase, with underscores added as
- needed to improve readability (e.g. my_complex_directory/Foo.h)
-o Hex values are upper-case: 0xFB
-o Unless size doesn't matter, use fixed-width types defined in
- (uint32_t, int8_t, etc.)
-o Enums
- o ALL_CAPS, start with enum name (within reason) for namespacing/readability
- typedef enum SbdFlowControl {
- SBD_FLOW_CONTROL_DISABLED = 0,
- SBD_FLOW_CONTROL_HW = 3,
- SBD_FLOW_CONTROL_SW = 4,
- SBD_FLOW_CONTROL_ALL = 6
- } SbdFlowControl;
- typedef enum AtLineType {
- AT_LINE_TYPE_RESPONSE = 0,
- AT_LINE_TYPE_CMD_ECHO,
-
- COUNT_AT_LINE_TYPE
- } AtLineType;
-
- o #includes should be in alphabetical order & logically separated:
- /* Module header[s] */
- …
- /* stdlib headers */
- …
- /* TI includes */
- …
- /* OC includes */
- o Wrap functions like this:
- ReturnType ReallyLongFunctionName(Type par_name1, Type par_name2,
- Type par_name3)
- {
- DoSomething();
- ...
- }
-
- ReturnType ReallyReallyReallyLongFunctionNameThatJustWillNotFit(
- Type par_name1, /* double indent */
- Type par_name2,
- Type par_name3)
- {
- DoSomething(); /* regular indent */
- ...
- }
-
-o No spaces after end of line
-o No blank lines at the end of file
-o Each file should have description of what it does, which function it contains
- etc.
-o Each function should describe what operation it execute on the parameters and
- what it returns. If there are any parameter overloaded, specify it clearly.
-o No dead code.
-o Function shouldn't be more than one page.
-o Central exiting of function
-o Use /* */ for comments. Multiple lines:
- /*
- *
- */
-o MACROS are NOT to define functions. MACROS shouldn't effect control or effect
- registers or changes the system states.
-
-
-Sample Code:
------------
-
-ExampleModule.h
-/*
- * Copyright 2004-present Facebook. All Rights Reserved.
- *
- * See Canonical Style Documents at:
- *
- * TODO: reference style document
- *
- * Example header that demonstrates our current C style. The goal of this
- * code, while nonsensical, is to show a visual example of as many of our
- * style rules/guidelines as possible.
- *
- * Note the #include order: stdlib includes, TI includes, then OpenCellular
- * includes in quotes (""). Each group should be in alphabetical order.
- * Additionally, we only want to include the headers necessary for the
- * interfaces/structs/enums in the header, everything else should be in the
- * source file
- */
-
-/* TODO: what do we want to do for #include guards? #pragma once doesn't have
- * namespacing issues and is generally faster, but not guaranteed to be portable
- */
-#ifndef EXAMPLEMODULE_H_
-#define EXAMPLEMODULE_H_
-
-/* stdlib includes */
-#include
-#include
-
-/* OC includes */
-#include "some_project_folder/SomeDependency.h"
-
-/*
- * Initializes the module and stuff
- */
-void ExampleModule_init(void);
-
-/*
- * Takes lots of arguments, but doesn't do much that's useful with them.
- *
- * @param count an integer input (by value)
- * @param value an enum input (by value)
- * @param name a string input (by const-ref)
- * @param outVal output integer arg (by pointer)
- *
- * @return true if function succeeds, false otherwise
- */
-bool ExampleModule_funcWithManyArgs(int64_t count,
- EnumType value,
- const char *name,
- uint32_t *outVal);
-
-
-/*
- * Another useless function
- *
- * @param param1 first example integer (by value)
- * @param param2 second example integer (by value)
- * @param param3 third example integer (by const-ref)
- */
-void ExampleModule_methodThatHasAReallyLongNameOhCrapImRunningOutOfSpace(
- int param1,
- bool param2,
- const uint32_t *param3);
-
-#endif /* EXAMPLEMODULE_H_ */
-ExampleModule.c
-/*
- * Copyright 2004-present Facebook. All Rights Reserved.
- *
- * See additional comments in: ExampleModule.h
- *
- * Note the #include order: First our related .h file, then the same
- * order as we'd do elsewhere (see ExampleModule.h).
- *
- * This file is formatted with clang-format -i
- */
-
-#include "ExampleModule.h"
-
-/* stdlib includes */
-#include
-#include
-#include
-
-/* TI includes */
-#include
-#include
-
-/* OC includes */
-#include "drivers/Power.h"
-#include "drivers/Rf.h"
-#include "helpers/Memory.h"
-#include "helpers/Array.h"
-
-#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-
-typedef enum SampleState {
- SAMPLE_STATE_INIT,
- SAMPLE_STATE_RUN,
- SAMPLE_STATE_IDK,
-
- COUNT_SAMPLE_STATE
-} SampleState;
-
-typedef struct UselessConfig {
- uint32_t someInt; /*!< Sample comment on member */
- int8_t otherValue; /*!< This looks important */
- SampleState state; /*!< All your base are belong to us */
- struct UselessConfig *next; /*!< Pointer to next item in list */
-} UselessConfig;
-
-static SampleState s_myUselessConfig = {
- .someInt = 5,
- .state = SAMPLE_STATE_INIT
-};
-
-static SampleState s_simpleInitSample = { .otherValue = 2 };
-
-static uint32_t s_someStaticVariable;
-
-/* Array Initializer List Example */
-static const uint32_t sampleTable[COUNT_SAMPLE_STATE] = {
- [SAMPLE_STATE_INIT] = 6,
- [SAMPLE_STATE_RUN] = 42,
- [SAMPLE_STATE_IDK ] = 0xFACEB00C
-};
-
-static const uint8_t anotherArray[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
- 0x07, 0x08, 0x09, 0x0A, 0x0B };
-
-/* TODO: How do we want to comment on functions? Having a full header block
- * might be a bit overkill since we're planning on doing doxygen comments in
- * the header. Some sort of comment to make it easier to see the beginning of
- * new functions might be nice though. Not sure how we want to document static
- * functions either - probably don't need to be as strict as for public
- * functions
- */
-void ExampleModule_init(void)
-{
- s_myUselessConfig.state = SAMPLE_STATE_RUN;
-}
-
-/*******************************************************************************
- * This additional comment is not in the javadoc style, as it's supposed to
- * describe more concrete implementation details. Any comments that may be
- * useful to the class API "customer" (as opposed to someone who might modify
- * this class) should instead be in JavaDoc style in ExampleCode.h.
- ******************************************************************************/
-/* TODO: should this be MapLookup instead? */
-static uint32_t mapLookup(SampleState state, bool uselessParam)
-{
- if (state < COUNT_SAMPLE_STATE) {
- return sampleTable[state];
- }
- return -1;
-}
-
-const uin32_t ExampleModule_methodThatHasALongNameOhCrapImRunningOutOfSpace(
- int param1,
- bool param2,
- const uint32_t *param3)
-{
- return;
-}
-
-/* TODO: not sure for sure how we want to do wrapping parameters. I'm on the
- * fence between this style (FB & Google) vs. what I wrote above in the document
- */
-bool ExampleModule_funcWithManyArgs(int64_t count,
- EnumType value,
- const char *name,
- uint32_t *outVal)
-{
- /*
- * The body of this function is used to demonstrate common code constructs
- * so that the indentation, braces, and spacing styles for them are
- * immediately apparent.
- */
-
- /*
- * This section demonstrates different kinds of if() blocks, including
- * long/short if() blocks, complicated if() expressions, and validity
- * checks on pointer/handle variables.
- */
- if (count < 0) {
- ++count;
- } else if (count == 0) {
- --count;
- } else {
- count *= 2;
- }
-
- if (strlen(name) < 20 &&
- !strcmp(name, "some string that I made up") &&
- (count < 0 || count > 5)) {
- *outVal += count;
- }
-
- if (name) {
- count += strlen(name);
- }
-
- int64_t *realPtr = NULL;
- if (!realPtr) {
- realPtr = malloc(sizeof(*realPtr));
- }
-
- /* This section demonstrates looping constructs. */
- for (int64_t i = 0; i < count; ++i) {
- *outVal *= 2;
- }
-
- int i = 10;
- while (i > 0) {
- --i;
- }
-
- do {
- ++i;
- } while (i <= 10);
-
- /*
- * This section demonstrates formatting for switch statments
- */
- switch (s_myUselessConfig.state) {
- case SAMPLE_STATE_INIT:
- s_myUselessConfig.state = SAMPLE_STATE_RUN;
- break;
- case SAMPLE_STATE_RUN: {
- uint32_t i = s_someStaticVariable - 1;
- printf("Doing stuff %d", i);
- break;
- }
- case SAMPLE_STATE_IDK:
- default:
- break;
- }
-
- /*
- * This section demonstrates formatting for basic expressions, operators,
- * and initializations.
- */
- char s[] = "startValue";
- size_t someSize = sizeof(*realPtr);
- int val = count / 2;
- count = (count + val) & ((val << 3) + count * val);
- uint32_t *samplePtr = &s_someStaticVariable;
- SampleState zeroInitializedStruct = {};
-
- /* Multiple variables of same type */
- /* TODO: allow multiple vars on one line? eg. int var1, var2, var3 */
- int var1;
- int *var2;
- int *var3;
-
- var1 = 2;
- var2 = &var1;
- var3 = var2;
-
- return true;
-}
-
diff --git a/firmware/ec/src/registry/Framework.h b/firmware/ec/common/inc/global/Framework.h
similarity index 68%
rename from firmware/ec/src/registry/Framework.h
rename to firmware/ec/common/inc/global/Framework.h
index 92f9756c8f..274aecf1ba 100644
--- a/firmware/ec/src/registry/Framework.h
+++ b/firmware/ec/common/inc/global/Framework.h
@@ -10,12 +10,28 @@
#ifndef _SYS_CFG_FRAMEWORK_H
#define _SYS_CFG_FRAMEWORK_H
-#include "SSRegistry.h" /* Temporary - for ss registry structs */
-#include "inc/common/post_frame.h" /* Just for post code */
+#include "common/inc/global/ocmp_frame.h"
+#include "common/inc/global/post_frame.h" /* Just for post code */
#include
#include
+#define POST_ENABLED 0
+#define POST_DISABLED 1
+
+/* For enabling schema sharing between host and firmware we need to import the
+ * factory config and driver config to schema.c as weak attribute from
+ * OC_CONNECT1.C. This helps host compilation as it doesn't need to know symbol definition for the configs
+ * and schema sharing can be achived with limited common files.
+ */
+#define SCHEMA_IMPORT extern __attribute__((weak))
+
+/* DriverStruct acts as a generic datatype.
+ * In schema we are more intreseted in the address of structure so we use this datatype DriverStruct
+ * to avoid the include header for the devices in the system.
+ */
+typedef char DriverStruct;
+
/* TODO: move these to common header file */
typedef enum DataType {
TYPE_NULL = 0, /* No data is passed (used for simple GPIO-based alerts) */
@@ -30,7 +46,6 @@ typedef enum DataType {
TYPE_STR,
TYPE_BOOL,
TYPE_ENUM,
-
COUNT_TYPE,
} DataType;
@@ -56,6 +71,13 @@ typedef struct Command {
const CB_Command cb_cmd;
} Command;
+typedef bool (*CB_POST) (void **params);
+
+typedef struct Post {
+ const char *name;
+ const CB_POST cb_postCmd;
+}Post;
+
// To avoid the awkward situation of not knowing how much to allocate for the return value (think
// string returns), we instead rely on the 'get' and 'set' functions to allocate and return a
// pointer to the value it wants to return via OCMP
@@ -66,11 +88,21 @@ typedef bool (*ConfigGet_Cb) (void *driver, unsigned int param_id,
typedef bool (*ConfigSet_Cb) (void *driver, unsigned int param_id,
const void *data);
-typedef ePostCode (*CB_Probe) (void *driver);
+typedef ePostCode (*CB_Probe) (void *driver, POSTData* postData);
typedef ePostCode (*CB_Init) (void *driver, const void *config,
const void *alert_token);
-typedef bool (*ssHook_Cb) (void *return_buf);
+typedef bool (*ssHook_Cb) (void *driver, void *return_buf);
+
+typedef struct Driver_fxnTable {
+ // TODO: These callbacks are a bit rough. They'll get the job done, but we should revisit other
+ // options (per-parameter callbacks for example)
+ StatusGet_Cb cb_get_status;
+ ConfigGet_Cb cb_get_config;
+ ConfigSet_Cb cb_set_config;
+ CB_Probe cb_probe;
+ CB_Init cb_init;
+} Driver_fxnTable;
typedef struct Driver {
const char *name;
@@ -78,16 +110,9 @@ typedef struct Driver {
const Parameter *config;
const Parameter *alerts;
const Parameter *argList;
- const Command *commands[OCMP_NUM_ACTIONS];
-
- // TODO: These callbacks are a bit rough. They'll get the job done, but we should revisit other
- // options (per-parameter callbacks for example)
- StatusGet_Cb cb_get_status;
- ConfigGet_Cb cb_get_config;
- ConfigSet_Cb cb_set_config;
- CB_Probe cb_probe;
- CB_Init cb_init;
-
+ const Command *commands;
+ const Driver_fxnTable* fxnTable;
+ const Post *post;
bool payload_fmt_union; /* TODO: hack to account for OBC/Testmodule payload
being packed as a union instead of a struct */
} Driver;
@@ -106,9 +131,10 @@ typedef struct Component {
void *driver_cfg; // TODO: this could be turned into a standard polymorphism struct to hold the
// driver, hw config & driver object data (like we did for GPIO)
const void *factory_config; /* Factory defaults for the device */
- const Command *commands[OCMP_NUM_ACTIONS]; /* TODO: super gross hack to fit into current CLI */
+ const Command *commands; /* TODO: super gross hack to fit into current CLI */
const SSHookSet *ssHookSet;
- OCSubsystem *ss;
+ bool postDisabled; //Flag for POST execution.
+ void *ss;
} Component;
/* TODO: consider moving struct into c file - only need pointer externally */
diff --git a/firmware/ec/src/OC_CONNECT1.h b/firmware/ec/common/inc/global/OC_CONNECT1.h
similarity index 81%
rename from firmware/ec/src/OC_CONNECT1.h
rename to firmware/ec/common/inc/global/OC_CONNECT1.h
index 168e32a819..9de84e0a6f 100644
--- a/firmware/ec/src/OC_CONNECT1.h
+++ b/firmware/ec/common/inc/global/OC_CONNECT1.h
@@ -33,6 +33,21 @@ extern "C" {
#define OC_HCI_LED_DISABLE (0)
#define OC_ETH_SW_ENABLE (1)
#define OC_ETH_SW_DISABLE (0)
+#define CAT24C256 { .page_size = 64, .mem_size = (256 / 8) }
+
+/* GBC IO expander Slave address */
+#define BIGBROTHER_IOEXP0_ADDRESS 0x71
+#define BIGBROTHER_IOEXP1_ADDRESS 0x70
+/* SYNC IO expander Slave address */
+#define SYNC_IO_DEVICE_ADDR 0x71
+/* SDR IO expander Slave address */
+#define SDR_FX3_IOEXP_ADDRESS 0x1E
+/* RFFE IO expander Slave address */
+#define RFFE_CHANNEL1_IO_TX_ATTEN_ADDR 0x18
+#define RFFE_CHANNEL1_IO_RX_ATTEN_ADDR 0x1A
+#define RFFE_CHANNEL2_IO_TX_ATTEN_ADDR 0x1C
+#define RFFE_CHANNEL2_IO_RX_ATTEN_ADDR 0x1D
+#define RFFE_IO_REVPOWER_ALERT_ADDR 0x1B
/*!
* @def OC_CONNECT1_EMACName
@@ -67,7 +82,7 @@ typedef enum OC_EC_PORTGroupName {
}OC_EC_PORTGroupName;
typedef enum OC_CONNECT1_GPIOName {
- /* PA */
+ //PA
OC_EC_DEBUG_UART_RX = 0,
OC_EC_DEBUG_UART_TX,
OC_EC_PSE_I2C6_SCLK,
@@ -76,12 +91,12 @@ typedef enum OC_CONNECT1_GPIOName {
OC_EC_SOC_UART3_TX,
OC_EC_PWRMNTR_I2C6_SCLK,
OC_EC_PWRMNTR_I2C6_SDA,
- /* PB */
+ //PB
OC_EC_LT4015_I2C0_SCLK = 8,
OC_EC_LT40515I2C0_SDA,
OC_EC_FLASH_nCS,
OC_EC_FLASH_CLK,
- /* PC */
+ //PC
OC_EC_JTAG_TCK = 16,
OC_EC_JTAG_TMS,
OC_EC_JTAG_TDI,
@@ -90,7 +105,7 @@ typedef enum OC_CONNECT1_GPIOName {
OC_EC_SYNCCONN_UART_TX,
OC_EC_ETHSW_MDC,
OC_EC_ETHSW_MDIO,
- /* PD */
+ //PD
OC_EC_SYNCCONN_I2C7_SCLK = 24,
OC_EC_SYNCCONN_I2C7_SDA,
OC_EC_SDR_INA_ALERT,
@@ -99,31 +114,31 @@ typedef enum OC_CONNECT1_GPIOName {
OC_NOC_2,
OC_EC_PWR_PRSNT_SOLAR_AUX,
OC_EC_SYNC_IOEXP_ALERT,
- /* PE */
+ //PE
OC_EC_GBC_IOEXP71_ALERT = 32,
- OC_EC_FE_CONTROL, /* OC_CONNECT1_GBC_TEMP_ALERT2, */
+ OC_EC_FE_CONTROL,//OC_CONNECT1_GBC_TEMP_ALERT2,
OC_EC_AP_GPIO1,
OC_EC_GPP_AP_BM_1,
OC_EC_FLASH_MOSI,
OC_EC_FLASH_MISO,
- /* PF */
+ //PF
OC_EC_JTAG_TRD2 = 40,
OC_EC_JTAG_TRD1,
OC_EC_JTAG_TRD0,
OC_EC_JTAG_TRCLK,
OC_EC_JTAG_TRD3,
- /* PG */
+ //PG
OC_EC_TEMPSEN_I2C1_SCLK = 48,
OC_EC_TEMPSEN_I2C1_SDA,
- /* PH */
+ //PH
OC_EC_GPP_PMIC_CORE_PWR = 56,
- OC_EC_GPP_SOC_PLTRST, /* OC_CONNECT1_PLT_RST_STATUS, OC_GPP_SOC_PLTRST,OC_CONNECT1_PLT_RST_STATUS */
+ OC_EC_GPP_SOC_PLTRST, //OC_CONNECT1_PLT_RST_STATUS,//OC_GPP_SOC_PLTRST,OC_CONNECT1_PLT_RST_STATUS
OC_EC_GPP_PMIC_CTRL,
OC_EC_GBC_INA_ALERT,
- /* PJ */
+ //PJ
OC_EC_PWR_PD_NT2P = 64,
OC_EC_GBC_AP_INA_ALERT,
- /* PK */
+ //PK
OC_EC_UART4_RXD = 72,
OC_EC_UART4_CTS,
OC_EC_UART4_RTS,
@@ -132,7 +147,7 @@ typedef enum OC_CONNECT1_GPIOName {
OC_EC_TRXFECONN_I2C3_SDA,
OC_EC_TRXFECONN_I2C4_SCLK,
OC_EC_TRXFECONN_I2C4_SDA,
- /* PL */
+ //PL
OC_EC_TRXFECONN_I2C2_SCLK = 80,
OC_EC_TRXFECONN_I2C2_SDA,
OC_EC_GBC_PSE_ALERT,
@@ -141,7 +156,7 @@ typedef enum OC_CONNECT1_GPIOName {
OC_EC_PWR_PRSNT_POE,
OC_EC_USB_DP3,
OC_EC_USB_DN3,
- /* PM */
+ //PM
OC_EC_PWR_LION_ALERT = 88,
OC_EC_HCI_LED_RESET,
OC_EC_PWR_MPPT_LION,
@@ -150,21 +165,21 @@ typedef enum OC_CONNECT1_GPIOName {
OC_EC_ETH_SW_RESET,
OC_EC_GBC_IOEXP70_INT,
OC_EC_PWR_BATT_SELECT,
- /* PN */
+ //PN
OC_EC_PD_PWRGD_ALERT = 96,
OC_EC_SDR_FPGA_TEMP_INA_ALERT,
OC_EC_SDR_DEVICE_CONTROL,
OC_EC_SDR_PWR_GD,
OC_EC_FE_PWR_GD,
OC_EC_MODULE_UART1_RIN,
- /* PP */
- OC_EC_SDR_FE_IO_RESET_CTRL = 104,/*OC_EC_MPPT_LACID = 104,*/ /* OC_SDR_FE_IO_RESET_CTRL */
+ //PP
+ OC_EC_SDR_FE_IO_RESET_CTRL = 104,//OC_EC_MPPT_LACID = 104, //OC_SDR_FE_IO_RESET_CTRL
OC_EC_FE_RESET_OUT,
OC_EC_SDR_PWR_CNTRL,
OC_EC_GPP_PWRGD_PROTECTION,
OC_EC_RFFE_RESET,
OC_EC_GBC_DEBUG,
- /* PQ */
+ //PQ
OC_EC_FE_TRXFE_CONN_RESET = 112,
OC_EC_GPP_MSATA_DAS,
OC_EC_POE_OVERRIDE,
@@ -189,6 +204,28 @@ typedef enum OC_CONNECT1_I2CName {
OC_CONNECT1_I2CCOUNT
} OC_CONNECT1_I2CName;
+/*!
+ * @def OC_CONNECT1_debugMdioName
+ * @brief Enum of debug MDIO names for Ethernet components
+ */
+typedef enum OC_CONNECT1_debugMdioName {
+ OC_CONNECT1_PHYPORT0 = 0,
+ OC_CONNECT1_PHYPORT1,
+ OC_CONNECT1_PHYPORT2,
+ OC_CONNECT1_PHYPORT3,
+ OC_CONNECT1_PHYPORT4,
+ OC_CONNECT1_GLOBAL2 = 7,
+ OC_CONNECT1_SWPORT0,
+ OC_CONNECT1_SWPORT1,
+ OC_CONNECT1_SWPORT2,
+ OC_CONNECT1_SWPORT3,
+ OC_CONNECT1_SWPORT4,
+ OC_CONNECT1_SWPORT5,
+ OC_CONNECT1_SWPORT6,
+ OC_CONNECT1_GLOBAL1,
+ OC_CONNECT1_MDIOCOUNT
+} OC_CONNECT1_debugMdioName;
+
/*!
* @def OC_CONNECT1_UARTName
* @brief Enum of UARTs on the OC_CONNECT1 board
diff --git a/firmware/ec/inc/common/ocmp_frame.h b/firmware/ec/common/inc/global/ocmp_frame.h
similarity index 63%
rename from firmware/ec/inc/common/ocmp_frame.h
rename to firmware/ec/common/inc/global/ocmp_frame.h
index b721ef507b..fbb4720474 100644
--- a/firmware/ec/inc/common/ocmp_frame.h
+++ b/firmware/ec/common/inc/global/ocmp_frame.h
@@ -21,14 +21,15 @@
#define OCMP_MSG_SOF 0x55
#define OCMP_FRAME_TOTAL_LENGTH 64
#define OCMP_FRAME_HEADER_LENGTH 17
-#define OCMP_FRAME_MSG_LENGTH OCMP_FRAME_TOTAL_LENGTH-OCMP_FRAME_HEADER_LENGTH
+#define OCMP_FRAME_MSG_LENGTH (OCMP_FRAME_TOTAL_LENGTH - OCMP_FRAME_HEADER_LENGTH)
/*****************************************************************************
* STRUCT/ENUM DEFINITIONS
*****************************************************************************/
+
typedef enum {
- OC_SS_BB = -1, /* Hack around the fact that IPC reuses OCMP to allow us
- to split BB (internal) and SYS (CLI) message handling */
+ OC_SS_BB = -1, //Hack around the fact that IPC reuses OCMP to allow us
+ // to split BB (internal) and SYS (CLI) message handling
OC_SS_SYS = 0,
OC_SS_PWR,
OC_SS_BMS,
@@ -41,35 +42,29 @@ typedef enum {
OC_SS_SYNC,
OC_SS_TEST_MODULE,
OC_SS_DEBUG,
- OC_SS_MAX_LIMIT, /* TODO:REV C Change */
- OC_SS_WD,
- OC_SS_ALERT_MNGR/*,
- OC_SS_MAX_LIMIT*/
+ OC_SS_MAX_LIMIT,//TODO:REV C Change
+ OC_SS_WD
+ //OC_SS_ALERT_MNGR,
+ //OC_SS_MAX_LIMIT
} OCMPSubsystem;
+
typedef enum {
- OCMP_COMM_IFACE_UART = 1, /* Uart - 1 */
- OCMP_COMM_IFACE_ETHERNET, /* Ethernet - 2 */
- OCMP_COMM_IFACE_SBD, /* SBD(Satellite) - 3 */
- OCMP_COMM_IFACE_USB /* Usb - 4 */
+ OCMP_COMM_IFACE_UART = 1, // Uart - 1
+ OCMP_COMM_IFACE_ETHERNET, // Ethernet - 2
+ OCMP_COMM_IFACE_SBD, // SBD(Satellite) - 3
+ OCMP_COMM_IFACE_USB // Usb - 4
} OCMPInterface;
/*
* OCMPMsgType - msg type specifies what is the communication all about.
* It can be Configuration, Status, Alert, Command, Watchdog, Debug
+ * OCMPMsgType 1 byte message.
+ * |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+ * || 7 || 6 || 5 || 4 || 3 || 2 || 1 || 0 ||
+ * |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+ || Message Type ||
+ * |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/
-
-/* OCMPMsgType 1 byte message.
- * IFC Message means this message is recived over interface like
- * UART/USB/Ethernet. Reperesented by bit 0
- * ITC Message measn this message is for Inter task communication within the
- * EC Firmaware. Represneted by bit 1
- * |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- * || 7 || 6 || 5 || 4 || 3 || 2 || 1 || 0 ||
- * |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- * || IFC/ITC || Message Type ||
- * |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- * */
-
typedef enum {
OCMP_MSG_TYPE_CONFIG = 1,
OCMP_MSG_TYPE_STATUS,
@@ -107,7 +102,6 @@ typedef enum {
OCMP_AXN_DIAL_NUMBER,
OCMP_AXN_ANSWER,
OCMP_AXN_HANGUP,
-
OCMP_NUM_ACTIONS
} OCMPActionType;
@@ -133,28 +127,43 @@ typedef enum {
OCMP_DEBUG_WRITE
} eOCMPDebugOperation;
+/* TODO::This OCWARE_HOST has to be removed with OCMP cleanUp*/
+#ifndef OCWARE_HOST
+ #define OC_SS OCMPSubsystem
+ #define OC_MSG_TYP OCMPMsgType
+ #define OC_AXN_TYP OCMPActionType
+#else
+ #define OC_SS uint8_t
+ #define OC_MSG_TYP uint8_t
+ #define OC_AXN_TYP uint8_t
+ #define OC_IFACE_TYP uint8_t
+#endif
/*
* Header is the field which will be containing SOF, Framelen,
* Source Interface, Sequence number, and timestamp.
*/
typedef struct __attribute__((packed, aligned(1))) {
- uint8_t ocmp_sof; /* SOF - It must be 0x55 */
- uint8_t ocmp_frameLen; /* Framelen - tells about the configuration size ONLY. */
- OCMPInterface ocmp_interface; /* Interface - UART/Ethernet/SBD */
- uint32_t ocmp_seqNumber; /* SeqNo - Don't know!!! */
- uint32_t ocmp_timestamp; /* Timestamp - When AP sent the command? */
+ uint8_t ocmpSof; // SOF - It must be 0x55
+ uint8_t ocmpFrameLen; // Framelen - tells about the configuration size ONLY.
+ OCMPInterface ocmpInterface; // Interface - UART/Ethernet/SBD
+ uint32_t ocmpSeqNumber; // SeqNo - Don't know!!!
+ uint32_t ocmpTimestamp; // Timestamp - When AP sent the command?
} OCMPHeader;
/*
* This is the Message structure for Subsystem level information
*/
typedef struct __attribute__((packed, aligned(1))) {
- OCMPSubsystem subsystem; /* RF/GPP/BMS/Watchdog etc.. */
- uint8_t componentID; /* Compononent ID. Different for different subsystem. */
- OCMPMsgType msgtype; /* Msg type is Config/Status/Alert/Command/Watchdog/Debug */
- OCMPActionType action; /* Action is - Get/Set/Reply. */
- uint16_t parameters; /* List of Parameters to be set or get. */
- uint8_t ocmp_data[]; /* The data payload. */
+ OC_SS subsystem; // RF/GPP/BMS/Watchdog etc..
+ uint8_t componentID; // Compononent ID. Different for different subsystem.
+ OCMPMsgType msgtype; // Msg type is Config/Status/Alert/Command/Watchdog/Debug
+ uint8_t action; // Action is - Get/Set/Reply.
+ uint16_t parameters; // List of Parameters to be set or get.
+#ifndef OCWARE_HOST
+ uint8_t ocmp_data[]; // The data payload.
+#else
+ int8_t* info;
+#endif
} OCMPMessage;
/*
diff --git a/firmware/ec/inc/common/post_frame.h b/firmware/ec/common/inc/global/post_frame.h
similarity index 89%
rename from firmware/ec/inc/common/post_frame.h
rename to firmware/ec/common/inc/global/post_frame.h
index e35b33e179..d904208161 100644
--- a/firmware/ec/inc/common/post_frame.h
+++ b/firmware/ec/common/inc/global/post_frame.h
@@ -6,7 +6,6 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef POST_FRAME_H_
#define POST_FRAME_H_
@@ -19,13 +18,16 @@
* STRUCT/ENUM DEFINITIONS
*****************************************************************************/
typedef enum {
- POST_DEV_FOUND = 0,
+ POST_DEV_NOSTATUS = 0,
POST_DEV_MISSING,
POST_DEV_ID_MISMATCH,
+ POST_DEV_FOUND,
POST_DEV_CFG_DONE,
+ POST_DEV_NO_CFG_REQ,
POST_DEV_CFG_FAIL,
POST_DEV_FAULTY,
- POST_DEV_CRITICAL_FAULT
+ POST_DEV_CRITICAL_FAULT,
+ POST_DEV_NO_DRIVER_EXIST,
} ePostCode;
typedef struct __attribute__((packed, aligned(1))) {
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_adt7481.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_adt7481.h
new file mode 100644
index 0000000000..c78852a595
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_adt7481.h
@@ -0,0 +1,50 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef _OCMP_ADT7481_H
+#define _OCMP_ADT7481_H
+
+#include "common/inc/global/Framework.h"
+
+typedef union ADT7481_Config {
+ struct {
+ int8_t lowlimit;
+ int8_t highlimit;
+ int8_t critlimit;
+ };
+ int8_t limits[3];
+} ADT7481_Config;
+
+#ifdef UT_FRAMEWORK
+extern const Driver_fxnTable ADT7481_fxnTable;
+#else
+SCHEMA_IMPORT const Driver_fxnTable ADT7481_fxnTable;
+#endif
+
+static const Driver ADT7481 = {
+ .name = "ADT7481",
+ .status = (Parameter[]){
+ { .name = "temperature", .type = TYPE_UINT8 },
+ {}
+ },
+ .config = (Parameter[]){
+ { .name = "lowlimit", .type = TYPE_INT8 },
+ { .name = "highlimit", .type = TYPE_UINT8 },
+ { .name = "critlimit", .type = TYPE_UINT8 },
+ {}
+ },
+ .alerts = (Parameter[]){
+ { .name = "BAW", .type = TYPE_UINT8 },
+ { .name = "AAW", .type = TYPE_UINT8 },
+ { .name = "ACW", .type = TYPE_UINT8 },
+ {}
+ },
+ .fxnTable = &ADT7481_fxnTable,
+};
+
+#endif /* _OCMP_ADT7481_H */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_dat-xxr5a-pp.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_dat-xxr5a-pp.h
new file mode 100644
index 0000000000..1b343d443a
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_dat-xxr5a-pp.h
@@ -0,0 +1,27 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef _OCMP_DATXXR5APP_H
+#define _OCMP_DATXXR5APP_H
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT const Driver_fxnTable DATXXR5APP_fxnTable;
+
+static const Driver DATXXR5APP = {
+ .name = "DAT-XXR5A-PP+",
+ .status = NULL,
+ .config = (Parameter[]){
+ { .name = "atten", .type = TYPE_INT16 },
+ {}
+ },
+ .alerts = NULL,
+ .fxnTable = &DATXXR5APP_fxnTable,
+};
+
+#endif /* _OCMP_DATXXR5APP_H */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_debugi2c.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_debugi2c.h
new file mode 100644
index 0000000000..01c4005721
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_debugi2c.h
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#ifndef OCMP_I2C_H_
+#define OCMP_I2C_H_
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT bool i2c_read(void *driver, void *data);
+SCHEMA_IMPORT bool i2c_write(void *driver, void *data);
+
+static const Driver OC_I2C = {
+ .name = "OC_I2C",
+ .argList = (Parameter[]){
+ { .name = "slave_address", .type = TYPE_UINT8 },
+ { .name = "no_of_bytes", .type = TYPE_UINT8 },
+ { .name = "reg_address", .type = TYPE_UINT8 },
+ { .name = "reg_values", .type = TYPE_UINT16 },
+ {}
+ },
+ .commands = (Command[]){
+ {
+ .name = "get",
+ .cb_cmd = i2c_read,
+ },
+ {
+ .name = "set",
+ .cb_cmd = i2c_write,
+ },
+ {}
+ },
+};
+
+#endif /* INC_DEVICES_OCMP_WRAPPERS_OCMP_I2C_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_debugmdio.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_debugmdio.h
new file mode 100644
index 0000000000..83019f7b8a
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_debugmdio.h
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2018-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#ifndef OCMP_MDIO_H_
+#define OCMP_MDIO_H_
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT bool mdio_read(void *driver, void *data);
+SCHEMA_IMPORT bool mdio_write(void *driver, void *data);
+
+static const Driver OC_MDIO = {
+ .name = "OC_MDIO",
+ .argList = (Parameter[]){
+ { .name = "reg_address", .type = TYPE_UINT16 },
+ { .name = "reg_values", .type = TYPE_UINT16 },
+ {}
+ },
+ .commands = (Command[]){
+ {
+ .name = "get",
+ .cb_cmd = mdio_read,
+ },
+ {
+ .name = "set",
+ .cb_cmd = mdio_write,
+ },
+ {}
+ },
+};
+
+#endif /* INC_DEVICES_OCMP_WRAPPERS_OCMP_MDIO_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_debugocgpio.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_debugocgpio.h
new file mode 100644
index 0000000000..10dd21eafb
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_debugocgpio.h
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#ifndef OCMP_OCGPIO_H_
+#define OCMP_OCGPIO_H_
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT bool ocgpio_get(void *driver, void *data);
+SCHEMA_IMPORT bool ocgpio_set(void *driver, void *data);
+
+SCHEMA_IMPORT const Driver_fxnTable DEBUG_OCGPIO_fxnTable;
+
+static const Driver OC_GPIO = {
+ .name = "OC_GPIO",
+ .argList = (Parameter[]){
+ { .name = "pin", .type = TYPE_UINT8 },
+ { .name = "value", .type = TYPE_UINT8 },
+ {}
+ },
+ .commands = (Command[]){
+ {
+ .name = "get",
+ .cb_cmd = ocgpio_get,
+ },
+ {
+ .name = "set",
+ .cb_cmd = ocgpio_set,
+ },
+ {}
+ },
+ .fxnTable = &DEBUG_OCGPIO_fxnTable,
+};
+
+#endif /* OCMP_OCGPIO_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_eeprom_cat24c04.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_eeprom_cat24c04.h
new file mode 100644
index 0000000000..ddc36d3fd0
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_eeprom_cat24c04.h
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#ifndef INC_DEVICES_OCMP_EEPROM_H_
+#define INC_DEVICES_OCMP_EEPROM_H_
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT bool SYS_post_get_results(void **getpostResult);
+SCHEMA_IMPORT bool SYS_post_enable(void **postActivate);
+SCHEMA_IMPORT const Driver_fxnTable CAT24C04_gbc_sid_fxnTable;
+SCHEMA_IMPORT const Driver_fxnTable CAT24C04_gbc_inv_fxnTable;
+SCHEMA_IMPORT const Driver_fxnTable CAT24C04_sdr_inv_fxnTable;
+SCHEMA_IMPORT const Driver_fxnTable CAT24C04_fe_inv_fxnTable;
+
+static const Driver CAT24C04_gbc_sid = {
+ .name = "EEPROM",
+ .status = (Parameter[]){
+ { .name = "ocserialinfo", .type = TYPE_STR, .size = 21 },
+ { .name = "gbcboardinfo", .type = TYPE_STR, .size = 21 },
+ },
+ .fxnTable = &CAT24C04_gbc_sid_fxnTable,
+};
+
+static const Driver CAT24C04_gbc_inv = {
+ .name = "Inventory",
+ .fxnTable = &CAT24C04_gbc_inv_fxnTable,
+};
+static const Driver CAT24C04_sdr_inv = {
+ .name = "Inventory",
+ .status = (Parameter[]){
+ { .name = "dev_id", .type = TYPE_STR,
+ .size = 19 },
+ {}
+ },
+ .fxnTable = &CAT24C04_sdr_inv_fxnTable,
+};
+
+static const Driver CAT24C04_fe_inv = {
+ .name = "Inventory",
+ .status = (Parameter[]){
+ { .name = "dev_id", .type = TYPE_STR,
+ .size = 18 },
+ {}
+ },
+ .fxnTable = &CAT24C04_fe_inv_fxnTable,
+};
+
+static const Driver SYSTEMDRV = {
+ .name = "SYSTEMDRV",
+ .status = (Parameter[]){
+ {}
+ },
+ .config = (Parameter[]){
+ {}
+ },
+ .alerts = (Parameter[]){
+ {}
+ },
+ .post = (Post[]){
+ {
+ .name = "results",
+ .cb_postCmd = SYS_post_get_results,
+ },
+ {
+ .name = "enable",
+ .cb_postCmd = SYS_post_enable,
+ },
+ {}
+ }
+};
+
+#endif /* INC_DEVICES_OCMP_EEPROM_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_eth_sw.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_eth_sw.h
new file mode 100644
index 0000000000..374fc5eb5f
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_eth_sw.h
@@ -0,0 +1,82 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef OCMP_ETH_SW_H_
+#define OCMP_ETH_SW_H_
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT const Driver_fxnTable eth_fxnTable;
+SCHEMA_IMPORT bool ETHERNET_reset(void *driver, void *params);
+SCHEMA_IMPORT bool ETHERNET_enLoopBk(void *driver, void *params);
+SCHEMA_IMPORT bool ETHERNET_disLoopBk(void *driver, void *params);
+SCHEMA_IMPORT bool ETHERNET_enPktGen(void *driver, void *params);
+SCHEMA_IMPORT bool ETHERNET_disPktGen(void *driver, void *params);
+SCHEMA_IMPORT bool ETHERNET_tivaClient(void *driver, void *params);
+
+static const Driver ETH_SW = {
+ .name = "Marvel_88E6071",
+ .status = (Parameter[]){
+ { .name = "speed", .type = TYPE_UINT8 },
+ { .name = "duplex", .type = TYPE_UINT8 },
+ { .name = "autoneg_on", .type = TYPE_UINT8 },
+ { .name = "sleep_mode_en", .type = TYPE_UINT8 },
+ { .name = "autoneg_complete", .type = TYPE_UINT8 },
+ { .name = "link_up", .type = TYPE_UINT8 },
+ {}
+ },
+ .config = (Parameter[]){
+ { .name = "speed", .type = TYPE_UINT8 },
+ { .name = "duplex", .type = TYPE_UINT8 },
+ { .name = "powerDown", .type = TYPE_UINT8 },
+ { .name = "enable_sleepMode", .type = TYPE_UINT8 },
+ { .name = "enable_interrupt", .type = TYPE_UINT8 },
+ { .name = "switch_reset", .type = TYPE_UINT8 },
+ { .name = "restart_autoneg", .type = TYPE_UINT8 },
+ {}
+ },
+ .alerts = (Parameter[]){
+ { .name = "speed", .type = TYPE_UINT8 },
+ { .name = "duplex", .type = TYPE_UINT8 },
+ { .name = "autoneg_complete", .type = TYPE_UINT8 },
+ { .name = "crossover_det", .type = TYPE_UINT8 },
+ { .name = "energy_det", .type = TYPE_UINT8 },
+ { .name = "polarity_change", .type = TYPE_UINT8 },
+ { .name = "jabber_det", .type = TYPE_UINT8 },
+ {}
+ },
+ .commands = (Command[]){
+ {
+ .name = "reset",
+ .cb_cmd = ETHERNET_reset,
+ },
+ {
+ .name = "en_loopBk",
+ .cb_cmd = ETHERNET_enLoopBk,
+ },
+ {
+ .name = "dis_loopBk",
+ .cb_cmd = ETHERNET_disLoopBk,
+ },
+ {
+ .name = "en_pktGen",
+ .cb_cmd = ETHERNET_enPktGen,
+ },
+ {
+ .name = "dis_pktGen",
+ .cb_cmd = ETHERNET_disPktGen,
+ },
+ {
+ .name = "en_tivaClient",
+ .cb_cmd = ETHERNET_tivaClient,
+ },
+ {}
+ },
+ .fxnTable = ð_fxnTable,
+};
+
+#endif /* OCMP_ETH_SW_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_fe-param.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_fe-param.h
new file mode 100644
index 0000000000..6478d3faaf
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_fe-param.h
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#ifndef OCMP_FE_PARAM_H_
+#define OCMP_FE_PARAM_H_
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT const Driver_fxnTable FE_PARAM_fxnTable;
+
+static const Driver FE_Param = {
+ .name = "FE_parametrs",
+ .config = (Parameter[]){
+ { .name = "band", .type = TYPE_UINT16 },
+ { .name = "arfcn", .type = TYPE_UINT16 },
+ {}
+ },
+ .fxnTable = &FE_PARAM_fxnTable,
+};
+
+#endif /* OCMP_FE_PARAM_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_ina226.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_ina226.h
new file mode 100644
index 0000000000..6b554f0852
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_ina226.h
@@ -0,0 +1,40 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef _OCMP_INA226_H
+#define _OCMP_INA226_H
+
+#include "common/inc/global/Framework.h"
+
+typedef struct INA226_Config {
+ uint16_t current_lim;
+} INA226_Config;
+
+SCHEMA_IMPORT const Driver_fxnTable INA226_fxnTable;
+
+static const Driver INA226 = {
+ .name = "INA226",
+ .status = (Parameter[]){
+ { .name = "busvoltage", .type = TYPE_UINT16 },
+ { .name = "shuntvoltage", .type = TYPE_UINT16 },
+ { .name = "current", .type = TYPE_UINT16 },
+ { .name = "power", .type = TYPE_UINT16 },
+ {}
+ },
+ .config = (Parameter[]){
+ { .name = "currlimit", .type = TYPE_UINT16 },
+ {}
+ },
+ .alerts = (Parameter[]){
+ { .name = "Overcurrent", .type = TYPE_UINT16 },
+ {}
+ },
+ .fxnTable = &INA226_fxnTable,
+};
+
+#endif /* _OCMP_INA226_H */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_iridium.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_iridium.h
new file mode 100644
index 0000000000..2841b1ebca
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_iridium.h
@@ -0,0 +1,48 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef OCMP_IRIDIUM_H_
+#define OCMP_IRIDIUM_H_
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT const Driver_fxnTable OBC_fxnTable;
+SCHEMA_IMPORT bool IRIDIUM_reset(void *driver, void *params);
+
+static const Driver OBC_Iridium = {
+ .name = "Iridium 96xx",
+ .status = (Parameter[]){
+ { .name = "imei", .type = TYPE_UINT64 },
+ { .name = "mfg", .type = TYPE_STR, .size = 10 },
+ { .name = "model", .type = TYPE_STR, .size = 4 },
+ { .name = "signal_quality", .type = TYPE_UINT8 },
+ { .name = "registration", .type = TYPE_ENUM,
+ .values = (Enum_Map[]){
+ { 0, "Detached" },
+ { 1, "None" },
+ { 2, "Registered" },
+ { 3, "Registration Denied" },
+ {}
+ },
+ },
+ { .name = "numberofoutgoingmessage", .type = TYPE_UINT8 },
+ { .name = "lasterror", .type = TYPE_UINT8, .size = 3 }, /* TODO: this is a complex type */
+ {}
+ },
+ .commands = (Command[]){
+ {
+ .name = "reset",
+ .cb_cmd = IRIDIUM_reset,
+ },
+ {}
+ },
+ .fxnTable = &OBC_fxnTable,
+ .payload_fmt_union = true, /* OBC breaks serialization pattern :( */
+};
+
+#endif /* OCMP_IRIDIUM_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_led.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_led.h
new file mode 100644
index 0000000000..24c436450b
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_led.h
@@ -0,0 +1,31 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef _OCMP_LED_H
+#define _OCMP_LED_H
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT const Driver_fxnTable LED_fxnTable;
+SCHEMA_IMPORT bool led_testpattern_control(void *driver, void *param);
+static const Driver HCI_LED = {
+ .name = "HCI_LED",
+ .status = NULL,
+ .config = NULL,
+ .alerts = NULL,
+ .commands = (Command[]){
+ {
+ .name = "set",
+ .cb_cmd = led_testpattern_control,
+ },
+ {}
+ },
+ .fxnTable = &LED_fxnTable,
+};
+
+#endif /* _OCMP_LED_H */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_ltc4015.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_ltc4015.h
new file mode 100644
index 0000000000..b1b935ae41
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_ltc4015.h
@@ -0,0 +1,63 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef _OCMP_LTC4015_H
+#define _OCMP_LTC4015_H
+
+#include "common/inc/global/Framework.h"
+
+typedef struct LTC4015_Config {
+ int16_t batteryVoltageLow;
+ int16_t batteryVoltageHigh;
+ int16_t batteryCurrentLow;
+ int16_t inputVoltageLow;
+ int16_t inputCurrentHigh;
+ uint16_t inputCurrentLimit;
+ uint16_t icharge;
+ uint16_t vcharge;
+} LTC4015_Config;
+
+SCHEMA_IMPORT const Driver_fxnTable LTC4015_fxnTable;
+
+static const Driver LTC4015 = {
+ .name = "LTC4015",
+ .status = (Parameter[]){
+ { .name = "batteryVoltage", .type = TYPE_INT16 },
+ { .name = "batteryCurrent", .type = TYPE_INT16 },
+ { .name = "systemVoltage", .type = TYPE_INT16 },
+ { .name = "inputVoltage", .type = TYPE_INT16 },
+ { .name = "inputCurrent", .type = TYPE_INT16 },
+ { .name = "dieTemperature", .type = TYPE_INT16 },
+ { .name = "ichargeDAC", .type = TYPE_INT16 },
+ {}
+ },
+ .config = (Parameter[]){
+ { .name = "batteryVoltageLow", .type = TYPE_INT16 },
+ { .name = "batteryVoltageHigh", .type = TYPE_INT16 },
+ { .name = "batteryCurrentLow", .type = TYPE_INT16 },
+ { .name = "inputVoltageLow", .type = TYPE_INT16 },
+ { .name = "inputCurrentHigh", .type = TYPE_INT16 },
+ { .name = "inputCurrentLimit", .type = TYPE_UINT16 },
+ { .name = "icharge", .type = TYPE_UINT16 },
+ { .name = "vcharge", .type = TYPE_UINT16 },
+ { .name = "dieTemperature", .type = TYPE_INT16 },
+ {}
+ },
+ .alerts = (Parameter[]){
+ { .name = "BVL", .type = TYPE_INT16 },
+ { .name = "BVH", .type = TYPE_INT16 },
+ { .name = "BCL", .type = TYPE_INT16 },
+ { .name = "IVL", .type = TYPE_INT16 },
+ { .name = "ICH", .type = TYPE_INT16 },
+ { .name = "DTH", .type = TYPE_INT16 },
+ {}
+ },
+ .fxnTable = <C4015_fxnTable,
+};
+
+#endif /* _OCMP_LTC4015_H */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_ltc4274.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_ltc4274.h
new file mode 100644
index 0000000000..ce762b56aa
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_ltc4274.h
@@ -0,0 +1,69 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef _OCMP_LTC4274_H_
+#define _OCMP_LTC4274_H_
+
+#include "common/inc/global/Framework.h"
+
+typedef union LTC4274_Config {
+ struct {
+ int8_t operatingMode;
+ int8_t detectEnable;
+ int8_t interruptMask;
+ bool interruptEnable;
+ int8_t pseHpEnable;
+ };
+} LTC4274_Config;
+
+#ifdef UT_FRAMEWORK
+extern const Driver_fxnTable LTC4274_fxnTable;
+#else
+SCHEMA_IMPORT const Driver_fxnTable LTC4274_fxnTable;
+#endif
+SCHEMA_IMPORT bool LTC4274_reset(void *driver, void *params);
+
+static const Driver LTC4274 = {
+ .name = "PSE",
+ .status = (Parameter[]){
+ { .name = "detection", .type = TYPE_UINT16 },
+ { .name = "class", .type = TYPE_UINT16 },
+ { .name = "powerGood", .type = TYPE_UINT16 },
+ {}
+ },
+ .config = (Parameter[]){
+ { .name = "operatingMode", .type = TYPE_UINT16 },
+ { .name = "detectEnable", .type = TYPE_UINT16 },
+ { .name = "interruptMask", .type = TYPE_UINT16 },
+ { .name = "interruptEnable", .type = TYPE_UINT16 },
+ { .name = "enableHighpower", .type = TYPE_UINT16 },
+ {}
+ },
+ .alerts = (Parameter[]){
+ { .name = "NoAlert", .type = TYPE_UINT8 },
+ { .name = "PowerEnable", .type = TYPE_UINT8 },
+ { .name = "PowerGood", .type = TYPE_UINT8 },
+ { .name = "DiconnectAlert", .type = TYPE_UINT8 },
+ { .name = "DetectionAlert", .type = TYPE_UINT8 },
+ { .name = "ClassAlert", .type = TYPE_UINT8 },
+ { .name = "TCUTAler", .type = TYPE_UINT8 },
+ { .name = "TStartAlert", .type = TYPE_UINT8 },
+ { .name = "SupplyAlert", .type = TYPE_UINT8 },
+ {}
+ },
+ .commands = (Command[]){
+ {
+ .name = "reset",
+ .cb_cmd = LTC4274_reset,
+ },
+ {}
+ },
+ .fxnTable = <C4274_fxnTable,
+};
+
+#endif /* _OCMP_LTC4274_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_ltc4275.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_ltc4275.h
new file mode 100644
index 0000000000..e5ae3da530
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_ltc4275.h
@@ -0,0 +1,32 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef COMMON_INC_OCMP_WRAPPERS_OCMP_LTC4275_H_
+#define COMMON_INC_OCMP_WRAPPERS_OCMP_LTC4275_H_
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT const Driver_fxnTable LTC4275_fxnTable;
+
+static const Driver LTC4275 = {
+ .name = "LTC4275",
+ .status = (Parameter[]){
+ { .name = "class", .type = TYPE_ENUM },
+ { .name = "powerGoodState", .type = TYPE_ENUM },
+ {}
+ },
+ .alerts = (Parameter[]){
+ { .name = "INCOMPATIBLE", .type = TYPE_ENUM },
+ { .name = "DISCONNECT", .type = TYPE_ENUM },
+ { .name = "CONNECT", .type = TYPE_ENUM },
+ {}
+ },
+ .fxnTable = <C4275_fxnTable,
+};
+
+#endif /* COMMON_INC_OCMP_WRAPPERS_OCMP_LTC4275_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_mac.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_mac.h
new file mode 100644
index 0000000000..a56f93e3f5
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_mac.h
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#ifndef COMMON_INC_OCMP_WRAPPERS_OCMP_MAC_H_
+#define COMMON_INC_OCMP_WRAPPERS_OCMP_MAC_H_
+
+#include "common/inc/global/Framework.h"
+
+#define OC_MAC_ADDRESS_SIZE 13
+
+SCHEMA_IMPORT const Driver_fxnTable MAC_fxnTable;
+
+static const Driver Driver_MAC = {
+ .name = "MAC",
+ .config = (Parameter[]){
+ { .name = "address", .type = TYPE_STR,
+ .size = OC_MAC_ADDRESS_SIZE + 1 }
+ },
+ .fxnTable = &MAC_fxnTable,
+};
+
+#endif /* COMMON_INC_OCMP_WRAPPERS_OCMP_MAC_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_powersource.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_powersource.h
new file mode 100644
index 0000000000..2cec0bb4bd
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_powersource.h
@@ -0,0 +1,31 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef _OCMP_POWERSOURCE_H_
+#define _OCMP_POWERSOURCE_H_
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT const Driver_fxnTable PWRSRC_fxnTable;
+
+static const Driver PWRSRC = {
+ .name = "powerSource",
+ .status = (Parameter[]){
+ { .name = "poeAvailability", .type = TYPE_UINT8 },
+ { .name = "poeAccessebility", .type = TYPE_UINT8 },
+ { .name = "solarAvailability", .type = TYPE_UINT8 },
+ { .name = "solarAccessebility", .type = TYPE_UINT8 },
+ { .name = "extBattAvailability", .type = TYPE_UINT8 },
+ { .name = "extBattAccessebility", .type = TYPE_UINT8 },
+ { .name = "intBattAvailability", .type = TYPE_UINT8 },
+ { .name = "intBattAccessebility", .type = TYPE_UINT8 },
+ {}
+ },
+ .fxnTable = &PWRSRC_fxnTable,
+};
+#endif /* _OCMP_POWERSOURCE_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_rfpowermonitor.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_rfpowermonitor.h
new file mode 100644
index 0000000000..3c32773e72
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_rfpowermonitor.h
@@ -0,0 +1,25 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef OCMP_RFPOWERMONITOR_H_
+#define OCMP_RFPOWERMONITOR_H_
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT const Driver_fxnTable RFPowerMonitor_fxnTable;
+
+static const Driver RFPowerMonitor = {
+ .status = (Parameter[]){
+ { .name = "forward", .type = TYPE_UINT16 },
+ { .name = "reverse", .type = TYPE_UINT16 },
+ {}
+ },
+ .fxnTable = &RFPowerMonitor_fxnTable,
+};
+
+#endif /* OCMP_RFPOWERMONITOR_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_rfwatchdog.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_rfwatchdog.h
new file mode 100644
index 0000000000..bc7a16cb6e
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_rfwatchdog.h
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#ifndef OCMP_RFWATCHDOG_H_
+#define OCMP_RFWATCHDOG_H_
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT const Driver_fxnTable RFFEWatchdogP_fxnTable;
+
+static const Driver RFFEWatchdog = {
+ .name = "RFFE Watchdog",
+ .alerts = (Parameter[]){
+ { .name = "LB_R_PWR" },
+ { .name = "HB_R_PWR" },
+ {}
+ },
+ .fxnTable = &RFFEWatchdogP_fxnTable,
+};
+
+#endif /* OCMP_RFWATCHDOG_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_se98a.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_se98a.h
new file mode 100644
index 0000000000..ae2ce80d0f
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_se98a.h
@@ -0,0 +1,46 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef _OCMP_SE98A_H
+#define _OCMP_SE98A_H
+
+#include "common/inc/global/Framework.h"
+
+typedef union SE98A_Config {
+ struct {
+ int8_t lowlimit;
+ int8_t highlimit;
+ int8_t critlimit;
+ };
+ int8_t limits[3];
+} SE98A_Config;
+
+SCHEMA_IMPORT const Driver_fxnTable SE98_fxnTable;
+
+static const Driver SE98A = {
+ .name = "SE98A",
+ .status = (Parameter[]){
+ { .name = "temperature", .type = TYPE_UINT8 },
+ {}
+ },
+ .config = (Parameter[]){
+ { .name = "lowlimit", .type = TYPE_INT8 },
+ { .name = "highlimit", .type = TYPE_UINT8 },
+ { .name = "critlimit", .type = TYPE_UINT8 },
+ {}
+ },
+ .alerts = (Parameter[]){
+ { .name = "BAW", .type = TYPE_UINT8 },
+ { .name = "AAW", .type = TYPE_UINT8 },
+ { .name = "ACW", .type = TYPE_UINT8 },
+ {}
+ },
+ .fxnTable = &SE98_fxnTable,
+};
+
+#endif /* _OCMP_SE98A_H */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_syncio.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_syncio.h
new file mode 100644
index 0000000000..7c9afb85b6
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_syncio.h
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#ifndef OCMP_SYNCIO_H_
+#define OCMP_SYNCIO_H_
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT const Driver_fxnTable SYNC_fxnTable;
+static const Driver Sync_IO = {
+ .name = "sync_ioexp",
+ .status = (Parameter[]){
+ {
+ .name = "gps_lock",
+ .type = TYPE_ENUM,
+ .values = (Enum_Map[]){
+ {0, "Gps Not Locked" },
+ {1, "Gps Locked" },
+ {}
+ },
+ },
+ {}
+ },
+ .fxnTable = &SYNC_fxnTable,
+};
+
+#endif /* OCMP_SYNCIO_H_ */
diff --git a/firmware/ec/common/inc/ocmp_wrappers/ocmp_testmodule.h b/firmware/ec/common/inc/ocmp_wrappers/ocmp_testmodule.h
new file mode 100644
index 0000000000..eb66864f6d
--- /dev/null
+++ b/firmware/ec/common/inc/ocmp_wrappers/ocmp_testmodule.h
@@ -0,0 +1,102 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef OCMP_TESTMODULE_H_
+#define OCMP_TESTMODULE_H_
+
+#include "common/inc/global/Framework.h"
+
+SCHEMA_IMPORT const Driver_fxnTable G510_fxnTable;
+SCHEMA_IMPORT bool TestMod_cmdEnable(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdDisable(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdDisconnect(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdConnect(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdSendSms(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdDial(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdAnswer(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdHangup(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdReset(void *driver, void *params);
+
+static const Driver Testmod_G510 = {
+ .name = "Fibocom G510",
+ .status = (Parameter[]){
+ { .name = "imei", .type = TYPE_UINT64 },
+ { .name = "imsi", .type = TYPE_UINT64 },
+ { .name = "mfg", .type = TYPE_STR, .size = 10 },
+ { .name = "model", .type = TYPE_STR, .size = 5 },
+ { .name = "rssi", .type = TYPE_UINT8 },
+ { .name = "ber", .type = TYPE_UINT8 },
+ { .name = "registration", .type = TYPE_ENUM,
+ .values = (Enum_Map[]){
+ { 0, "Not Registered, Not Searching" },
+ { 1, "Registered, Home Network" },
+ { 2, "Not Registered, Searching" },
+ { 3, "Registration Denied" },
+ { 4, "Status Unknown" },
+ { 5, "Registered, Roaming" },
+ {}
+ },
+ },
+ { .name = "network_operatorinfo", .type = TYPE_UINT8, .size = 3 }, /* TODO: this is a complex type */
+ { .name = "cellid", .type = TYPE_UINT32 },
+ { .name = "bsic", .type = TYPE_UINT8 },
+ { .name = "lasterror",.type = TYPE_UINT8, .size = 3 }, /* TODO: this is a complex type */
+ {}
+ },
+ .alerts = (Parameter[]){
+ { .name = "Call State Changed", .type = TYPE_ENUM,
+ .values = (Enum_Map[]){
+ { 0, "Ringing" },
+ { 1, "Call End" },
+ {}
+ },
+ },
+ /* TODO: var len str */
+ { .name = "Incoming SMS", .type = TYPE_STR, .size = 20 },
+ {}
+ },
+ .commands = (Command[]){
+ {
+ .name = "disconnect_nw",
+ .cb_cmd = TestMod_cmdDisconnect
+ },
+ {
+ .name = "connect_nw",
+ .cb_cmd = TestMod_cmdConnect
+ },
+ {
+ .name = "send",
+ .cb_cmd = TestMod_cmdSendSms
+ },
+ {
+ .name = "dial",
+ .cb_cmd = TestMod_cmdDial
+ },
+ {
+ .name = "answer",
+ .cb_cmd = TestMod_cmdAnswer,
+ },
+ {
+ .name = "hangup",
+ .cb_cmd = TestMod_cmdHangup,
+ },
+ {
+ .name = "enable",
+ .cb_cmd = TestMod_cmdEnable,
+ },
+ {
+ .name = "disable",
+ .cb_cmd = TestMod_cmdDisable,
+ },
+ {}
+ },
+ .fxnTable = &G510_fxnTable,
+ .payload_fmt_union = true, /* Testmodule breaks serialization pattern :( */
+};
+
+#endif /* OCMP_TESTMODULE_H_ */
diff --git a/firmware/ec/inc/common/i2cbus.h b/firmware/ec/inc/common/i2cbus.h
index d8c71923a3..33c196e883 100644
--- a/firmware/ec/inc/common/i2cbus.h
+++ b/firmware/ec/inc/common/i2cbus.h
@@ -21,8 +21,8 @@
* STRUCT DEFINITIONS
*****************************************************************************/
typedef struct I2C_Dev {
- const unsigned int bus;
- const uint8_t slave_addr;
+ unsigned int bus;
+ uint8_t slave_addr;
} I2C_Dev;
/*****************************************************************************
diff --git a/firmware/ec/inc/common/post.h b/firmware/ec/inc/common/post.h
index 7ba565b6e2..36b1605ee8 100644
--- a/firmware/ec/inc/common/post.h
+++ b/firmware/ec/inc/common/post.h
@@ -6,16 +6,15 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef POST_H_
#define POST_H_
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/ocmp_frame.h"
+#include "common/inc/global/post_frame.h"
#include "inc/common/global_header.h"
-#include "inc/common/ocmp_frame.h"
-#include "inc/common/post_frame.h"
#include
#include
@@ -23,9 +22,9 @@
/*****************************************************************************
* MACRO DEFINITIONS
*****************************************************************************/
-#define POST_RECORDS 35
+#define POST_RECORDS 55
-#define OC_POST_TASKPRIORITY 2
+#define OC_POST_TASKPRIORITY 3
#define POST_TASK_STACK_SIZE 4096
@@ -39,5 +38,4 @@ extern Queue_Handle postRxMsgQueue;
* FUNCTION DECLARATIONS
*****************************************************************************/
void post_createtask(void);
-
#endif /* POST_H_ */
diff --git a/firmware/ec/inc/common/post_util.h b/firmware/ec/inc/common/post_util.h
new file mode 100644
index 0000000000..69b6427577
--- /dev/null
+++ b/firmware/ec/inc/common/post_util.h
@@ -0,0 +1,18 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#ifndef INC_COMMON_POST_UTIL_H_
+#define INC_COMMON_POST_UTIL_H_
+
+#include "common/inc/global/Framework.h"
+#include "inc/common/post.h"
+
+ReturnStatus _execPost(OCMPMessageFrame *pMsg,
+ unsigned int subsystem_id);
+
+#endif /* INC_COMMON_POST_UTIL_H_ */
diff --git a/firmware/ec/inc/common/system_states.h b/firmware/ec/inc/common/system_states.h
index d38859d3a2..9ee41569f1 100644
--- a/firmware/ec/inc/common/system_states.h
+++ b/firmware/ec/inc/common/system_states.h
@@ -6,7 +6,6 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef SYSTEM_STATES_H_
#define SYSTEM_STATES_H_
diff --git a/firmware/ec/inc/devices/88E6071_registers.h b/firmware/ec/inc/devices/88E6071_registers.h
index 0406e5eb45..a29703c180 100644
--- a/firmware/ec/inc/devices/88E6071_registers.h
+++ b/firmware/ec/inc/devices/88E6071_registers.h
@@ -212,4 +212,12 @@
#define PHY_1_INT_EN (1 << 1)
#define PHY_0_INT_EN (1 << 0)
+//REG_C45_PACKET_GEN 0x8030
+#define CRC_ENABLE (1 << 6)
+#define FRAME_COUNT_EN (1 << 5)
+#define FORCE_BURST_STOP (1 << 4)
+#define PACKET_GEN_EN (1 << 3)
+#define PAYLOAD_TYPE (1 << 2)
+#define PACKET_LENGTH (1 << 1)
+#define ERROR_PACKET_INJECTION (1 << 0)
#endif /* _88E6071_REGISTERS_H_ */
diff --git a/firmware/ec/inc/devices/adt7481.h b/firmware/ec/inc/devices/adt7481.h
index 67ebc92dfd..041a6b2b10 100644
--- a/firmware/ec/inc/devices/adt7481.h
+++ b/firmware/ec/inc/devices/adt7481.h
@@ -12,9 +12,9 @@
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/post_frame.h"
#include "inc/common/global_header.h"
#include "inc/common/i2cbus.h"
-
#include
/*****************************************************************************
@@ -164,4 +164,5 @@ ReturnStatus adt7481_get_therm_hysteresis(const I2C_Dev *i2c_dev,
int8_t* tempHysteresisValue);
ReturnStatus adt7481_set_therm_hysteresis(const I2C_Dev *i2c_dev,
int8_t tempHysteresisValue);
+
#endif /* ADT7481_H_ */
diff --git a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_dat-xxr5a-pp.h b/firmware/ec/inc/devices/dat-xxr5a-pp.h
similarity index 57%
rename from firmware/ec/inc/devices/ocmp_wrappers/ocmp_dat-xxr5a-pp.h
rename to firmware/ec/inc/devices/dat-xxr5a-pp.h
index ed9740f3de..f6d455636d 100644
--- a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_dat-xxr5a-pp.h
+++ b/firmware/ec/inc/devices/dat-xxr5a-pp.h
@@ -1,14 +1,13 @@
/**
-* Copyright (c) 2017-present, Facebook, Inc.
-* All rights reserved.
-*
-* This source code is licensed under the BSD-style license found in the
-* LICENSE file in the root directory of this source tree. An additional grant
-* of patent rights can be found in the PATENTS file in the same directory.
-*/
-#ifndef _OCMP_DATXXR5APP_H
-#define _OCMP_DATXXR5APP_H
-
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#ifndef DAT_XXR5A_PP_H_
+#define DAT_XXR5A_PP_H_
#include "drivers/OcGpio.h"
#include
@@ -28,12 +27,10 @@ typedef struct DATR5APP_Cfg {
OcGpio_Pin pin_4db;
OcGpio_Pin pin_8db;
OcGpio_Pin pin_16db; /* Optional */
+ //OcGpio_Pin pin_tx_attn_enb;
};
OcGpio_Pin pin_group[DATR5APP_PIN_COUNT];
};
OcGpio_Pin pin_le;
} DATR5APP_Cfg;
-
-extern const Driver DATXXR5APP;
-
-#endif /* _OCMP_DATXXR5APP_H */
+#endif /* DAT_XXR5A_PP_H_ */
diff --git a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ocgpio.h b/firmware/ec/inc/devices/debug_ocgpio.h
similarity index 79%
rename from firmware/ec/inc/devices/ocmp_wrappers/ocmp_ocgpio.h
rename to firmware/ec/inc/devices/debug_ocgpio.h
index 993a863f9f..cbc18a848c 100644
--- a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ocgpio.h
+++ b/firmware/ec/inc/devices/debug_ocgpio.h
@@ -6,9 +6,10 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-#ifndef OCMP_OCGPIO_H_
-#define OCMP_OCGPIO_H_
-#include "src/drivers/OcGpio.h"
+#ifndef _OC_GPIO_H_
+#define _OC_GPIO_H_
+
+#include "drivers/OcGpio.h"
typedef struct __attribute__ ((packed, aligned(1))) {
uint8_t pin;
@@ -19,6 +20,5 @@ typedef struct S_OCGPIO_Cfg {
OcGpio_Port* port;
unsigned int group;
}S_OCGPIO_Cfg;
-extern const Driver OC_GPIO;
-#endif /* OCMP_OCGPIO_H_ */
+#endif /* _OC_GPIO_H_ */
diff --git a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_i2c.h b/firmware/ec/inc/devices/debug_oci2c.h
similarity index 82%
rename from firmware/ec/inc/devices/ocmp_wrappers/ocmp_i2c.h
rename to firmware/ec/inc/devices/debug_oci2c.h
index af121039b3..af8b686efc 100644
--- a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_i2c.h
+++ b/firmware/ec/inc/devices/debug_oci2c.h
@@ -6,8 +6,10 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-#ifndef OCMP_I2C_H_
-#define OCMP_I2C_H_
+#ifndef OC_I2C_H_
+#define OC_I2C_H_
+
+#include
typedef struct __attribute__ ((packed, aligned(1))){
uint8_t slaveAddress;
@@ -19,6 +21,5 @@ typedef struct __attribute__ ((packed, aligned(1))){
typedef struct S_I2C_Cfg {
unsigned int bus;
}S_I2C_Cfg;
-extern const Driver OC_I2C;
-#endif /* INC_DEVICES_OCMP_WRAPPERS_OCMP_I2C_H_ */
+#endif /* INC_DEVICES_OC_I2C_H_ */
diff --git a/firmware/ec/inc/devices/debug_ocmdio.h b/firmware/ec/inc/devices/debug_ocmdio.h
new file mode 100644
index 0000000000..acd1af7c3a
--- /dev/null
+++ b/firmware/ec/inc/devices/debug_ocmdio.h
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2018-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#ifndef OC_MDIO_H_
+#define OC_MDIO_H_
+
+#include
+
+typedef struct __attribute__ ((packed, aligned(1))){
+ uint16_t reg_address;
+ uint16_t reg_value;
+}S_OCMDIO;
+
+typedef struct S_MDIO_Cfg {
+ unsigned int port;
+}S_MDIO_Cfg;
+
+#endif /* INC_DEVICES_OC_MDIO_H_ */
diff --git a/firmware/ec/inc/devices/eeprom.h b/firmware/ec/inc/devices/eeprom.h
index 410e9fe698..ae9733534d 100644
--- a/firmware/ec/inc/devices/eeprom.h
+++ b/firmware/ec/inc/devices/eeprom.h
@@ -6,16 +6,15 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef EEPROM_H_
#define EEPROM_H_
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/ocmp_frame.h" /* Temporary, just for OCMPSubsystem def */
#include "drivers/OcGpio.h"
#include "inc/common/i2cbus.h"
-#include "inc/common/ocmp_frame.h" /* Temporary, just for OCMPSubsystem def */
/*****************************************************************************
* MACRO DEFINITIONS
@@ -48,8 +47,16 @@ typedef struct Eeprom_Cfg {
I2C_Dev i2c_dev;
OcGpio_Pin *pin_wp;
EepromDev_Cfg type; /*!< Device specific config (page size, etc) */
+ OCMPSubsystem ss; /* TODO: The HW config need not know about the subsytem
+ to be fixed later */
} Eeprom_Cfg, *Eeprom_Handle;
+typedef enum {
+ OC_STAT_SYS_SERIAL_ID = 0,
+ OC_STAT_SYS_GBC_BOARD_ID,
+ OC_STAT_SYS_STATE
+} eOCStatusParamId;
+
/*****************************************************************************
* FUNCTION DECLARATIONS
*****************************************************************************/
@@ -60,7 +67,7 @@ ReturnStatus eeprom_read(Eeprom_Cfg *cfg,
void *buffer,
size_t size);
-ReturnStatus eeprom_write(Eeprom_Cfg *cfg,
+ReturnStatus eeprom_write(const Eeprom_Cfg *cfg,
uint16_t address,
const void *buffer,
size_t size);
@@ -71,14 +78,14 @@ ReturnStatus eeprom_enable_write(Eeprom_Cfg *cfg);
ReturnStatus eeprom_read_oc_info(uint8_t * oc_serial);
-ReturnStatus eeprom_read_board_info(OCMPSubsystem subSystem,
+ReturnStatus eeprom_read_board_info(const Eeprom_Cfg *cfg,
uint8_t * rom_info);
-ReturnStatus eeprom_read_device_info_record(OCMPSubsystem subSystem,
+ReturnStatus eeprom_read_device_info_record(const Eeprom_Cfg *cfg,
uint8_t recordNo,
char * device_info);
-ReturnStatus eeprom_write_device_info_record(OCMPSubsystem subSystem,
+ReturnStatus eeprom_write_device_info_record(Eeprom_Cfg *cfg,
uint8_t recordNo,
char * device_info);
diff --git a/firmware/ec/inc/devices/eth_sw.h b/firmware/ec/inc/devices/eth_sw.h
index 1c2ac884ec..8c3b4b893d 100644
--- a/firmware/ec/inc/devices/eth_sw.h
+++ b/firmware/ec/inc/devices/eth_sw.h
@@ -39,7 +39,7 @@
#define LAN_MUX_SELECT_PIN GPIO_PIN_1
#define ETH_SW_DEV_SERIAL_NO 1
-
+#define IPPARAMS 4
/*
* Ethernet Components ID. This is the part of the OCMPMsg in componentID field.
*/
@@ -141,6 +141,20 @@ typedef struct Eth_cfg {
Eth_Sw_Port eth_sw_port;
} Eth_cfg;
+typedef struct Eth_LoopBack_Params {
+ uint8_t loopBackType;
+}Eth_LoopBack_Params;
+
+typedef struct Eth_PacketGen_Params {
+ uint16_t reg_value;
+}Eth_PacketGen_Params;
+
+typedef struct Eth_TcpClient_Params {
+ uint8_t ipAddress[IPPARAMS];
+ uint16_t tcpPort;
+ uint8_t repeat;
+}Eth_TcpClient_Params;
+
ePostCode eth_sw_probe();
ePostCode eth_sw_init();
void eth_enable_interrupt();
@@ -152,7 +166,7 @@ ReturnStatus eth_sw_get_status_sleep_mode(uint8_t port, port_duplex *sleep_mode_
ReturnStatus eth_sw_get_status_auto_neg_complete(uint8_t port, port_duplex *autoneg_complete);
ReturnStatus eth_sw_get_status_link_up(uint8_t port, port_duplex *link_up);
ReturnStatus restart_autoneg(uint8_t port);
-ReturnStatus eth_sw_set_config_speed(uint8_t port, port_duplex speed);
+ReturnStatus eth_sw_set_config_speed(uint8_t port, port_speed speed);
ReturnStatus eth_sw_set_config_duplex(uint8_t port, port_duplex duplex);
ReturnStatus eth_sw_set_config_power_down(uint8_t port,uint8_t power_down);
ReturnStatus eth_sw_set_config_sleep_mode_enable(uint8_t port,uint8_t sleep_mode_en);
@@ -164,5 +178,12 @@ ReturnStatus eth_sw_get_config_duplex(uint8_t port, port_duplex* duplex);
ReturnStatus eth_sw_get_config_power_down(uint8_t port, uint8_t* power_dwn);
ReturnStatus eth_sw_get_config_sleep_mode(uint8_t port, uint8_t* sleep_mode);
ReturnStatus eth_sw_get_config_interrupt_enable(uint8_t port, uint8_t* interrupt_enb);
+ReturnStatus eth_sw_enable_loopback(void *driver, void *params);
+ReturnStatus eth_sw_disable_loopback(void *driver, void *params);
+ReturnStatus eth_sw_enable_macloopback(uint8_t port);
+ReturnStatus eth_sw_disable_macloopback(uint8_t port);
+ReturnStatus eth_sw_enable_packet_gen(void *driver, void *params);
+ReturnStatus eth_sw_disable_packet_gen(void *driver);
void eth_sw_setAlertHandler(Eth_cfg *ethCfg, Eth_Sw_CallbackFn alert_cb, void *cb_context);
+
#endif /* INC_DEVICES_ETH_SW_H_ */
diff --git a/firmware/ec/inc/devices/ext_battery.h b/firmware/ec/inc/devices/ext_battery.h
index 76f90f3b96..6dd6a6781f 100644
--- a/firmware/ec/inc/devices/ext_battery.h
+++ b/firmware/ec/inc/devices/ext_battery.h
@@ -6,7 +6,6 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef EXT_BATTERY_H_
#define EXT_BATTERY_H_
diff --git a/firmware/ec/inc/devices/fe_param.h b/firmware/ec/inc/devices/fe_param.h
new file mode 100644
index 0000000000..b73e81def0
--- /dev/null
+++ b/firmware/ec/inc/devices/fe_param.h
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#ifndef FE_PARAM_H_
+#define FE_PARAM_H_
+
+//TODO: As of now no declarations are present here
+
+#endif /* INC_DEVICES_FE_PARAM_H_ */
diff --git a/firmware/ec/inc/devices/ina226.h b/firmware/ec/inc/devices/ina226.h
index 60271778f7..13c03be6fe 100644
--- a/firmware/ec/inc/devices/ina226.h
+++ b/firmware/ec/inc/devices/ina226.h
@@ -6,16 +6,15 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef INA226_H_
#define INA226_H_
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/post_frame.h"
#include "drivers/OcGpio.h"
#include "inc/common/i2cbus.h"
-#include "inc/common/post_frame.h"
/*****************************************************************************
* MACRO DEFINITIONS
@@ -86,12 +85,9 @@ ReturnStatus ina226_readShuntVoltage(INA226_Dev *dev,
uint16_t* shuntVoltValue);
ReturnStatus ina226_readCurrent(INA226_Dev *dev, uint16_t* currValue);
ReturnStatus ina226_readPower(INA226_Dev *dev, uint16_t* powValue);
-
ReturnStatus ina226_init(INA226_Dev *dev);
void ina226_setAlertHandler(INA226_Dev *dev, INA226_CallbackFn alert_cb,
void *cb_context);
ReturnStatus ina226_enableAlert(INA226_Dev *dev, INA226_Event evt);
-
-ePostCode ina226_probe(INA226_Dev *dev);
-
+ePostCode ina226_probe(INA226_Dev *dev, POSTData *postData);
#endif /* INA226_H_ */
diff --git a/firmware/ec/inc/devices/int_battery.h b/firmware/ec/inc/devices/int_battery.h
index 1e4990d52f..16926ebc29 100644
--- a/firmware/ec/inc/devices/int_battery.h
+++ b/firmware/ec/inc/devices/int_battery.h
@@ -6,7 +6,6 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef INT_BATTERY_H_
#define INT_BATTERY_H_
diff --git a/firmware/ec/inc/devices/led.h b/firmware/ec/inc/devices/led.h
index e7d2aec1a0..91fa76c151 100644
--- a/firmware/ec/inc/devices/led.h
+++ b/firmware/ec/inc/devices/led.h
@@ -6,18 +6,17 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef INA226_H_
#define INA226_H_
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/Framework.h"
+#include "common/inc/global/post_frame.h"
#include "drivers/OcGpio.h"
#include "inc/common/i2cbus.h"
-#include "inc/common/post_frame.h"
#include "inc/devices/sx1509.h"
-
#include "inc/subsystem/hci/hci_led.h"
/*****************************************************************************
@@ -82,13 +81,11 @@ typedef struct {
/*****************************************************************************
* FUNCTION DECLARATIONS
*****************************************************************************/
-ReturnStatus hci_led_turnon_green(void);
-ReturnStatus hci_led_turnon_red(void);
-ReturnStatus hci_led_turnoff_all(void);
-
-ReturnStatus hci_led_system_boot(void);
-
-ReturnStatus led_init(void);
-ePostCode led_probe(void);
+ReturnStatus hci_led_turnon_green(const HciLedCfg *driver);
+ReturnStatus hci_led_turnon_red(const HciLedCfg *driver);
+ReturnStatus hci_led_turnoff_all(const HciLedCfg *driver);
+ReturnStatus hci_led_system_boot(const HciLedCfg *driver);
+ReturnStatus led_init(const HciLedCfg *driver);
+ePostCode led_probe(const HciLedCfg *driver,POSTData* postData);
#endif /* INA226_H_ */
diff --git a/firmware/ec/inc/devices/ltc4015.h b/firmware/ec/inc/devices/ltc4015.h
index e54b0f4fc9..ba41416402 100644
--- a/firmware/ec/inc/devices/ltc4015.h
+++ b/firmware/ec/inc/devices/ltc4015.h
@@ -7,16 +7,15 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef LTC4015_H_
#define LTC4015_H_
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/post_frame.h"
#include "drivers/OcGpio.h"
#include "inc/common/i2cbus.h"
-#include "inc/common/post_frame.h"
/*****************************************************************************
* MACRO DEFINITIONS
@@ -197,6 +196,6 @@ ReturnStatus LTC4015_enableLimitAlerts(LTC4015_Dev *dev, uint16_t alert_mask);
ReturnStatus LTC4015_enableChargerStateAlerts(LTC4015_Dev *dev,
uint16_t alert_mask);
-ePostCode LTC4015_probe(LTC4015_Dev *dev);
+ePostCode LTC4015_probe(LTC4015_Dev *dev, POSTData *postData);
#endif /* LTC4015_H_ */
diff --git a/firmware/ec/inc/devices/ltc4274.h b/firmware/ec/inc/devices/ltc4274.h
index f0c377980b..8362918e61 100644
--- a/firmware/ec/inc/devices/ltc4274.h
+++ b/firmware/ec/inc/devices/ltc4274.h
@@ -6,17 +6,16 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef LTC4274_H_
#define LTC4274_H_
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/post_frame.h"
#include "drivers/OcGpio.h"
#include "inc/common/global_header.h"
#include "inc/common/i2cbus.h"
-#include "inc/common/post_frame.h"
#include
@@ -119,6 +118,7 @@ typedef void (*LTC4274_CallbackFn) (LTC4274_Event evt,
typedef struct LTC4274_Cfg {
I2C_Dev i2c_dev;
OcGpio_Pin *pin_evt;
+ OcGpio_Pin reset_pin;
} LTC4274_Cfg;
typedef struct LTC4274_Obj {
@@ -155,13 +155,15 @@ ReturnStatus ltc4274_debug_write(const I2C_Dev *i2c_dev,
uint8_t reg_address, uint8_t value);
ReturnStatus ltc4274_debug_read(const I2C_Dev *i2c_dev,
uint8_t reg_address, uint8_t *value);
-void ltc4274_enable(uint8_t enableVal);
+void ltc4274_enable(LTC4274_Dev *dev, uint8_t enableVal);
ReturnStatus ltc4274_get_devid(const I2C_Dev *i2c_dev,
uint8_t *devID);
ReturnStatus ltc4274_detect(const I2C_Dev *i2c_dev,
uint8_t *detect, uint8_t *val);
-ePostCode ltc4274_probe(const I2C_Dev *i2c_dev);
+ePostCode ltc4274_probe(const LTC4274_Dev *i2c_dev, POSTData *postData);
void ltc4274_init(LTC4274_Dev *dev);
void ltc4274_initPSEStateInfo();
void ltc4274_update_stateInfo(const I2C_Dev *i2c_dev);
+ReturnStatus ltc4274_reset();
+
#endif /* LTC4274_H_ */
diff --git a/firmware/ec/inc/devices/ltc4275.h b/firmware/ec/inc/devices/ltc4275.h
index bee15d55fe..f6e1ccfde2 100644
--- a/firmware/ec/inc/devices/ltc4275.h
+++ b/firmware/ec/inc/devices/ltc4275.h
@@ -6,15 +6,16 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef LTC4275_H_
#define LTC4275_H_
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
-#include "inc/common/global_header.h"
+#include "common/inc/global/post_frame.h"
#include "drivers/OcGpio.h"
+#include "inc/common/global_header.h"
+
#include
typedef enum {
@@ -84,10 +85,12 @@ typedef struct LTC4275A_Dev {
/*****************************************************************************
* FUNCTION DECLARATIONS
*****************************************************************************/
+void ltc4275_config(const LTC4275_Dev *dev);
+ePostCode ltc4275_probe(const LTC4275_Dev *dev, POSTData *postData);
ReturnStatus ltc4275_init(LTC4275_Dev *dev);
void ltc4275_set_alert_handler(LTC4275_Dev *dev, LTC4275_CallbackFn alert_cb, void *cb_context);
-ReturnStatus ltc4275_get_power_good(ePDPowerState *val);
-ReturnStatus pwr_pd_check_class(ePDClassType *val);
-ReturnStatus ltc4275_get_class(ePDClassType *val);
-void ltc4275_update_status();
+ReturnStatus ltc4275_get_power_good(const LTC4275_Dev *dev, ePDPowerState *val);
+ReturnStatus ltc4275_get_class(const LTC4275_Dev *dev, ePDClassType *val);
+void ltc4275_update_status(const LTC4275_Dev *dev);
+
#endif /* LTC4275_H_ */
diff --git a/firmware/ec/inc/devices/mdio_bb.h b/firmware/ec/inc/devices/mdio_bb.h
index cf71f0839b..cf36216f8b 100644
--- a/firmware/ec/inc/devices/mdio_bb.h
+++ b/firmware/ec/inc/devices/mdio_bb.h
@@ -19,8 +19,8 @@
*****************************************************************************/
void mdiobb_set_bits(int smi_device, int reg_addr, int datamask);
void mdiobb_clear_bits(int smi_device, int reg_addr, int datamask);
-int mdiobb_read_data(int smi_device, int reg_addr);
-void mdiobb_write_data(int smi_device, int reg_addr, int data);
+int mdiobb_read_by_paging(int smi_device, int reg_addr);
+void mdiobb_write_by_paging(int smi_device, int reg_addr, int data);
int mdiobb_write(int phy, int reg, uint16_t val);
int mdiobb_read(int phy, unsigned int reg);
diff --git a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_adt7481.h b/firmware/ec/inc/devices/ocmp_wrappers/ocmp_adt7481.h
deleted file mode 100644
index db9e68dd6f..0000000000
--- a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_adt7481.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
-* Copyright (c) 2017-present, Facebook, Inc.
-* All rights reserved.
-*
-* This source code is licensed under the BSD-style license found in the
-* LICENSE file in the root directory of this source tree. An additional grant
-* of patent rights can be found in the PATENTS file in the same directory.
-*/
-#ifndef _OCMP_ADT7481_H
-#define _OCMP_ADT7481_H
-
-typedef union ADT7481_Config {
- struct {
- int8_t lowlimit;
- int8_t highlimit;
- int8_t critlimit;
- };
- int8_t limits[3];
-} ADT7481_Config;
-
-extern const Driver ADT7481;
-
-#endif /* _OCMP_ADT7481_H */
diff --git a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_eth_sw.h b/firmware/ec/inc/devices/ocmp_wrappers/ocmp_eth_sw.h
deleted file mode 100644
index 80355e459c..0000000000
--- a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_eth_sw.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
-* Copyright (c) 2017-present, Facebook, Inc.
-* All rights reserved.
-*
-* This source code is licensed under the BSD-style license found in the
-* LICENSE file in the root directory of this source tree. An additional grant
-* of patent rights can be found in the PATENTS file in the same directory.
-*/
-#ifndef OCMP_ETH_SW_H_
-#define OCMP_ETH_SW_H_
-
-extern const Driver ETH_SW;
-
-#endif /* INC_DEVICES_OCMP_WRAPPERS_OCMP_ETH_SW_H_ */
diff --git a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ina226.h b/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ina226.h
deleted file mode 100644
index 5d6cbaf380..0000000000
--- a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ina226.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
-* Copyright (c) 2017-present, Facebook, Inc.
-* All rights reserved.
-*
-* This source code is licensed under the BSD-style license found in the
-* LICENSE file in the root directory of this source tree. An additional grant
-* of patent rights can be found in the PATENTS file in the same directory.
-*/
-#ifndef _OCMP_INA226_H
-#define _OCMP_INA226_H
-
-typedef struct INA226_Config {
- uint16_t current_lim;
-} INA226_Config;
-
-extern const Driver INA226;
-
-#endif /* _OCMP_INA226_H */
diff --git a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_led.h b/firmware/ec/inc/devices/ocmp_wrappers/ocmp_led.h
deleted file mode 100644
index 638f1c8633..0000000000
--- a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_led.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
-* Copyright (c) 2017-present, Facebook, Inc.
-* All rights reserved.
-*
-* This source code is licensed under the BSD-style license found in the
-* LICENSE file in the root directory of this source tree. An additional grant
-* of patent rights can be found in the PATENTS file in the same directory.
-*/
-#ifndef _OCMP_LED_H
-#define _OCMP_LED_H
-
-extern const Driver HCI_LED;
-
-bool led_testpattern_control(void *driver, void *params);
-
-#endif /* _OCMP_LED_H */
diff --git a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ltc4015.h b/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ltc4015.h
deleted file mode 100644
index 59e88d8adc..0000000000
--- a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ltc4015.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
-* Copyright (c) 2017-present, Facebook, Inc.
-* All rights reserved.
-*
-* This source code is licensed under the BSD-style license found in the
-* LICENSE file in the root directory of this source tree. An additional grant
-* of patent rights can be found in the PATENTS file in the same directory.
-*/
-#ifndef _OCMP_LTC4015_H
-#define _OCMP_LTC4015_H
-
-typedef struct LTC4015_Config {
- int16_t batteryVoltageLow;
- int16_t batteryVoltageHigh;
- int16_t batteryCurrentLow;
- int16_t inputVoltageLow;
- int16_t inputCurrentHigh;
- uint16_t inputCurrentLimit;
- uint16_t icharge;
- uint16_t vcharge;
-} LTC4015_Config;
-
-extern const Driver LTC4015;
-
-#endif /* _OCMP_LTC4015_H */
diff --git a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ltc4274.h b/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ltc4274.h
deleted file mode 100644
index f5ff23161c..0000000000
--- a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ltc4274.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
-* Copyright (c) 2017-present, Facebook, Inc.
-* All rights reserved.
-*
-* This source code is licensed under the BSD-style license found in the
-* LICENSE file in the root directory of this source tree. An additional grant
-* of patent rights can be found in the PATENTS file in the same directory.
-*/
-
-#ifndef _OCMP_LTC4274_H_
-#define _OCMP_LTC4274_H_
-
-typedef union LTC4274_Config {
- struct {
- int8_t operatingMode;
- int8_t detectEnable;
- int8_t interruptMask;
- bool interruptEnable;
- int8_t pseHpEnable;
- };
-
-} LTC4274_Config;
-
-extern const Driver LTC4274;
-#endif /* _OCMP_LTC4274_H_ */
diff --git a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ltc4275.h b/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ltc4275.h
deleted file mode 100644
index fc86692081..0000000000
--- a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_ltc4275.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
-* Copyright (c) 2017-present, Facebook, Inc.
-* All rights reserved.
-*
-* This source code is licensed under the BSD-style license found in the
-* LICENSE file in the root directory of this source tree. An additional grant
-* of patent rights can be found in the PATENTS file in the same directory.
-*/
-
-#ifndef INC_DEVICES_OCMP_WRAPPERS_OCMP_LTC4275_H_
-#define INC_DEVICES_OCMP_WRAPPERS_OCMP_LTC4275_H_
-
-extern const Driver LTC4275;
-#endif /* INC_DEVICES_OCMP_WRAPPERS_OCMP_LTC4275_H_ */
diff --git a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_powerSource.h b/firmware/ec/inc/devices/ocmp_wrappers/ocmp_powerSource.h
deleted file mode 100644
index 9b65a05d94..0000000000
--- a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_powerSource.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
-* Copyright (c) 2017-present, Facebook, Inc.
-* All rights reserved.
-*
-* This source code is licensed under the BSD-style license found in the
-* LICENSE file in the root directory of this source tree. An additional grant
-* of patent rights can be found in the PATENTS file in the same directory.
-*/
-
-#ifndef _OCMP_POWERSOURCE_H_
-#define _OCMP_POWERSOURCE_H_
-
-extern const Driver PWRSRC;
-#endif /* _OCMP_POWERSOURCE_H_ */
diff --git a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_se98a.h b/firmware/ec/inc/devices/ocmp_wrappers/ocmp_se98a.h
deleted file mode 100644
index d0337ff29d..0000000000
--- a/firmware/ec/inc/devices/ocmp_wrappers/ocmp_se98a.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
-* Copyright (c) 2017-present, Facebook, Inc.
-* All rights reserved.
-*
-* This source code is licensed under the BSD-style license found in the
-* LICENSE file in the root directory of this source tree. An additional grant
-* of patent rights can be found in the PATENTS file in the same directory.
-*/
-#ifndef _OCMP_SE98A_H
-#define _OCMP_SE98A_H
-
-typedef union SE98A_Config {
- struct {
- int8_t lowlimit;
- int8_t highlimit;
- int8_t critlimit;
- };
- int8_t limits[3];
-} SE98A_Config;
-
-extern const Driver SE98A;
-
-#endif /* _OCMP_SE98A_H */
diff --git a/firmware/ec/inc/devices/pca9557.h b/firmware/ec/inc/devices/pca9557.h
index fe443e080a..f7504b2ec7 100644
--- a/firmware/ec/inc/devices/pca9557.h
+++ b/firmware/ec/inc/devices/pca9557.h
@@ -6,7 +6,6 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef PCA9557_H_
#define PCA9557_H_
diff --git a/firmware/ec/inc/devices/powerSource.h b/firmware/ec/inc/devices/powerSource.h
index 67a19633dc..898c63d419 100644
--- a/firmware/ec/inc/devices/powerSource.h
+++ b/firmware/ec/inc/devices/powerSource.h
@@ -6,15 +6,15 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef POWERSOURCE_H_
#define POWERSOURCE_H_
-#include "inc/common/global_header.h"
-#include "inc/common/ocmp_frame.h"
-#include "inc/common/post_frame.h"
-#include "inc/common/i2cbus.h"
+#include "common/inc/global/post_frame.h"
+#include "common/inc/global/ocmp_frame.h"
+#include "common/inc/global/Framework.h"
#include "drivers/OcGpio.h"
+#include "inc/common/global_header.h"
+#include "inc/common/i2cbus.h"
#include
@@ -72,7 +72,10 @@ typedef struct __attribute__((packed, aligned(1))) {
} tPower_Status_Data;
typedef struct PWRSRC_Cfg {
- OcGpio_Pin *pin_evt;
+ OcGpio_Pin pin_solar_aux_prsnt_n;
+ OcGpio_Pin pin_poe_prsnt_n;
+ OcGpio_Pin pin_int_bat_prsnt;
+ OcGpio_Pin pin_ext_bat_prsnt;
} PWRSRC_Cfg;
typedef struct PWRSRC_Cfg_Obj {
@@ -80,12 +83,13 @@ typedef struct PWRSRC_Cfg_Obj {
} PWRSRC_Obj;
typedef struct PWRSRC_Dev {
- PWRSRC_Cfg cfg;
+ const PWRSRC_Cfg cfg;
PWRSRC_Obj obj;
} PWRSRC_Dev;
void pwr_source_init(void);
-void pwr_get_source_info(void);
+void pwr_get_source_info(PWRSRC_Dev *pwrSrcDev);
ReturnStatus pwr_process_get_status_parameters_data(
ePower_StatusParamId paramIndex, uint8_t *pPowerStatusData);
+
#endif /* POWERSOURCE_H_ */
diff --git a/firmware/ec/inc/devices/sbd.h b/firmware/ec/inc/devices/sbd.h
new file mode 100644
index 0000000000..7ff9a293e0
--- /dev/null
+++ b/firmware/ec/inc/devices/sbd.h
@@ -0,0 +1,36 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#ifndef INC_DEVICES_SBD_H_
+#define INC_DEVICES_SBD_H_
+
+#include
+
+typedef enum {
+ IRIDIUM_IMEI = 0,
+ IRIDIUM_MFG = 1,
+ IRIDIUM_MODEL = 2,
+ IRIDIUM_SIG_QUALITY = 3,
+ IRIDIUM_REGSTATUS = 4,
+ IRIDIUM_NO_OUT_MSG = 5,
+ IRIDIUM_LASTERR = 6,
+ IRIDIUM_PARAM_MAX /* Limiter */
+} eOBC_StatusParam;
+
+typedef enum {
+ ERR_RC_INTERNAL = 0,
+ ERR_SRC_CMS = 1,
+ ERR_SRC_CME = 2
+} eOBC_ErrorSource;
+
+typedef struct OBC_lastError {
+ eOBC_ErrorSource src;
+ uint16_t code;
+} OBC_lastError;
+
+#endif /* INC_DEVICES_SBD_H_ */
diff --git a/firmware/ec/inc/devices/se98a.h b/firmware/ec/inc/devices/se98a.h
index 9b74db66f1..3b3be07741 100644
--- a/firmware/ec/inc/devices/se98a.h
+++ b/firmware/ec/inc/devices/se98a.h
@@ -12,9 +12,10 @@
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/post_frame.h"
+#include "common/inc/global/Framework.h"
#include "drivers/OcGpio.h"
#include "inc/common/i2cbus.h"
-#include "inc/common/post_frame.h"
#include
@@ -38,7 +39,7 @@ typedef void (*SE98A_CallbackFn) (SE98A_Event evt, int8_t temperature,
void *context);
typedef struct SE98A_Cfg {
- const I2C_Dev dev;
+ I2C_Dev dev;
OcGpio_Pin *pin_evt;
} SE98A_Cfg;
@@ -80,10 +81,10 @@ ReturnStatus se98a_enable_alerts(SE98A_Dev *dev);
* POST (probe device, then init) - I propose that this should all be
* in a single function */
/*! Tests the SE98A device and verifies that the driver supports it
- * @param dev Device struct pointer
+ * @param dev Device struct pointer, Post data struct
* @return POST_DEV_FOUND on success, error code on failure
*/
-ePostCode se98a_probe(SE98A_Dev *dev);
+ePostCode se98a_probe(SE98A_Dev *dev, POSTData *postData);
/*! Sets one of the 3 alert thresholds on the device
* @param dev Device struct pointer
diff --git a/firmware/ec/inc/devices/sx1509.h b/firmware/ec/inc/devices/sx1509.h
index 88a41d4dcc..09741bd63c 100644
--- a/firmware/ec/inc/devices/sx1509.h
+++ b/firmware/ec/inc/devices/sx1509.h
@@ -6,7 +6,6 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef SX1509_H_
#define SX1509_H_
diff --git a/firmware/ec/inc/subsystem/ethernet/ethernetSS.h b/firmware/ec/inc/subsystem/ethernet/ethernetSS.h
index d45a53dddf..a1fb4dd4a9 100644
--- a/firmware/ec/inc/subsystem/ethernet/ethernetSS.h
+++ b/firmware/ec/inc/subsystem/ethernet/ethernetSS.h
@@ -6,13 +6,12 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef ETHERNETSS_H_
#define ETHERNETSS_H_
#include
void ethernet_switch_setup();
-bool eth_sw_pre_init(void *unused);
+bool eth_sw_pre_init(void** driver, void *returnValue);
#endif /* ETHERNETSS_H_ */
diff --git a/firmware/ec/inc/subsystem/gpp/ebmp.h b/firmware/ec/inc/subsystem/gpp/ebmp.h
index 92cd4d3c3c..05091fcc51 100644
--- a/firmware/ec/inc/subsystem/gpp/ebmp.h
+++ b/firmware/ec/inc/subsystem/gpp/ebmp.h
@@ -9,6 +9,8 @@
#ifndef EBMP_H_
#define EBMP_H_
+#include "inc/subsystem/gpp/gpp.h"
+
/*****************************************************************************
* MACRO DEFINITIONS
*****************************************************************************/
@@ -52,6 +54,6 @@ typedef enum {
/*****************************************************************************
* FUNCTION DECLARATIONS
*****************************************************************************/
-void ebmp_init(void);
+void ebmp_init(Gpp_gpioCfg* driver);
#endif /* EBMP_H_ */
diff --git a/firmware/ec/inc/subsystem/gpp/gpp.h b/firmware/ec/inc/subsystem/gpp/gpp.h
index 1e4ecc15b3..5d15cb804a 100644
--- a/firmware/ec/inc/subsystem/gpp/gpp.h
+++ b/firmware/ec/inc/subsystem/gpp/gpp.h
@@ -12,10 +12,10 @@
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "drivers/OcGpio.h"
#include "inc/devices/ina226.h"
#include "inc/devices/se98a.h"
#include "inc/common/system_states.h"
-#include "drivers/OcGpio.h"
/*****************************************************************************
* MACRO DEFINITIONS
@@ -51,9 +51,7 @@ typedef struct mSATA_Cfg {
INA226_Dev current_sensor;
} mSATA_Cfg;
-typedef struct Gpp_Cfg {
- AP_Cfg ap;
- mSATA_Cfg msata;
+typedef struct Gpp_gpioCfg {
OcGpio_Pin pin_soc_pltrst_n;
OcGpio_Pin pin_soc_corepwr_ok;
OcGpio_Pin pin_msata_ec_das;
@@ -62,10 +60,10 @@ typedef struct Gpp_Cfg {
OcGpio_Pin pin_ec_reset_to_proc;
OcGpio_Pin pin_ap_boot_alert1;
OcGpio_Pin pin_ap_boot_alert2;
-} Gpp_Cfg;
+} Gpp_gpioCfg;
-bool gpp_pre_init(void *returnValue);
-bool gpp_post_init(eSubSystemStates *returnValue);
+bool gpp_pre_init(void *driver, void *returnValue);
+bool gpp_post_init(void *driver, void *returnValue);
bool GPP_ap_Reset(void *driver, void *params);
#endif /* GPP_H_ */
diff --git a/firmware/ec/inc/subsystem/hci/hci.h b/firmware/ec/inc/subsystem/hci/hci.h
index 67a6dcebc3..d2b8c41723 100644
--- a/firmware/ec/inc/subsystem/hci/hci.h
+++ b/firmware/ec/inc/subsystem/hci/hci.h
@@ -6,7 +6,6 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef HCI_H_
#define HCI_H_
@@ -31,12 +30,12 @@
/* Subsystem config */
typedef struct Hci_Cfg {
HciBuzzer_Cfg buzzer;
- HciLed_Cfg led;
+ HciLedCfg led;
} Hci_Cfg;
/*****************************************************************************
* FUNCTION DECLARATIONS
*****************************************************************************/
-bool HCI_Init(void *return_buf);
+bool HCI_Init(void *driver, void *return_buf);
#endif /* HCI_H_ */
diff --git a/firmware/ec/inc/subsystem/hci/hci_buzzer.h b/firmware/ec/inc/subsystem/hci/hci_buzzer.h
index 848a4508bb..04476b962b 100644
--- a/firmware/ec/inc/subsystem/hci/hci_buzzer.h
+++ b/firmware/ec/inc/subsystem/hci/hci_buzzer.h
@@ -6,15 +6,14 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef _HCI_BUZZER_H
#define _HCI_BUZZER_H
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
-#include "inc/common/global_header.h"
#include "drivers/OcGpio.h"
+#include "inc/common/global_header.h"
#include
diff --git a/firmware/ec/inc/subsystem/hci/hci_led.h b/firmware/ec/inc/subsystem/hci/hci_led.h
index 2cfee2d367..4994b47954 100644
--- a/firmware/ec/inc/subsystem/hci/hci_led.h
+++ b/firmware/ec/inc/subsystem/hci/hci_led.h
@@ -6,15 +6,14 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef HCI_LED_H_
#define HCI_LED_H_
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/ocmp_frame.h"
#include "inc/common/global_header.h"
-#include "inc/common/ocmp_frame.h"
#include "inc/devices/se98a.h"
#include "inc/devices/sx1509.h"
@@ -35,11 +34,10 @@ typedef enum {
} HciLed_DriverId;
/* Subsystem config */
-typedef struct HciLed_Cfg {
- SE98A_Dev temp_sensor;
+typedef struct HciLedCfg {
I2C_Dev sx1509_dev[HCI_LED_DRIVER_COUNT];
OcGpio_Pin pin_ec_gpio;
-} HciLed_Cfg;
+} HciLedCfg;
/* LED System States */
typedef enum {
diff --git a/firmware/ec/inc/subsystem/obc/obc.h b/firmware/ec/inc/subsystem/obc/obc.h
index 285a6218c6..1554b387d7 100644
--- a/firmware/ec/inc/subsystem/obc/obc.h
+++ b/firmware/ec/inc/subsystem/obc/obc.h
@@ -12,11 +12,11 @@
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/Framework.h"
#include "devices/uart/sbd.h"
#include "drivers/OcGpio.h"
#include "helpers/attribute.h"
-
-#include "src/registry/Framework.h"
+#include "inc/devices/sbd.h"
/*****************************************************************************
* STRUCT/ENUM DEFINITIONS
@@ -30,32 +30,9 @@ typedef struct Iridium_Cfg {
} Iridium_Cfg;
/* Subsystem config */
-typedef struct Obc_Cfg {
- Iridium_Cfg iridium_cfg;
+typedef struct Obc_gpioCfg {
OcGpio_Pin *pin_pwr_en;
-} Obc_Cfg;
-
-typedef enum {
- IRIDIUM_IMEI = 0,
- IRIDIUM_MFG = 1,
- IRIDIUM_MODEL = 2,
- IRIDIUM_SIG_QUALITY = 3,
- IRIDIUM_REGSTATUS = 4,
- IRIDIUM_NO_OUT_MSG = 5,
- IRIDIUM_LASTERR = 6,
- IRIDIUM_PARAM_MAX /* Limiter */
-} eOBC_StatusParam;
-
-typedef enum {
- ERR_RC_INTERNAL = 0,
- ERR_SRC_CMS = 1,
- ERR_SRC_CME = 2
-} eOBC_ErrorSource;
-
-typedef struct OBC_lastError {
- eOBC_ErrorSource src;
- uint16_t code;
-} OBC_lastError;
+} Obc_gpioCfg;
typedef union PACKED {
uint64_t imei;
@@ -67,7 +44,7 @@ typedef union PACKED {
OBC_lastError lastErr;
} OBC_Iridium_Status_Data;
-bool obc_pre_init(void *returnValue);
+bool obc_pre_init(void *driver, void *returnValue);
extern const Driver OBC_Iridium;
#endif /* OBC_OBC_H_ */
diff --git a/firmware/ec/inc/subsystem/power/power.h b/firmware/ec/inc/subsystem/power/power.h
index 023fbb238d..13572dcd42 100644
--- a/firmware/ec/inc/subsystem/power/power.h
+++ b/firmware/ec/inc/subsystem/power/power.h
@@ -12,38 +12,10 @@
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
-#include "drivers/OcGpio.h"
#include "inc/devices/ltc4015.h"
#include "inc/devices/ltc4274.h"
#include "inc/devices/ltc4275.h"
#include "inc/devices/powerSource.h"
#include "inc/devices/se98a.h"
-/*****************************************************************************
- * STRUCT/ENUM DEFINITIONS
- *****************************************************************************/
-/* Subsystem config */
-typedef struct Power_Cfg {
- OcGpio_Pin pin_ec_pd_pwrgd_ok;
- OcGpio_Pin pin_solar_aux_prsnt_n;
- OcGpio_Pin pin_poe_prsnt_n;
- OcGpio_Pin pin_lt4275_ec_nt2p;
- OcGpio_Pin pin_necpse_rst;
- OcGpio_Pin pin_lt4015_i2c_sel;
- OcGpio_Pin pin_int_bat_prsnt;
- OcGpio_Pin pin_ext_bat_prsnt;
- SE98A_Dev lead_acid_temp_sens;
- LTC4015_Dev ext_bat_charger;
- LTC4015_Dev int_bat_charger;
- LTC4274_Dev pse;
- LTC4275_Dev pd;
- PWRSRC_Dev powerSource;
-} Power_Cfg;
-
-/*****************************************************************************
- * FUNCTION DECLARATIONS
- *****************************************************************************/
-bool pwr_pre_init();
-bool pwr_post_init();
-
#endif
diff --git a/firmware/ec/inc/subsystem/rffe/rffe.h b/firmware/ec/inc/subsystem/rffe/rffe.h
index a3ac8a3392..45c65bf6ee 100644
--- a/firmware/ec/inc/subsystem/rffe/rffe.h
+++ b/firmware/ec/inc/subsystem/rffe/rffe.h
@@ -50,21 +50,21 @@ typedef struct Fe_Lna_Cfg {
} Fe_Lna_Cfg;
typedef struct Fe_Ch1_Gain_Cfg {
- Fe_Gain_Cfg fe_gain_cfg;
+ Fe_Gain_Cfg* fe_gain_cfg;
} Fe_Ch1_Gain_Cfg;
typedef struct Fe_Ch2_Gain_Cfg {
OcGpio_Pin pin_ch1_2g_lb_band_sel_l;
- Fe_Gain_Cfg fe_gain_cfg;
+ Fe_Gain_Cfg* fe_gain_cfg;
} Fe_Ch2_Gain_Cfg;
typedef struct Fe_Ch1_Lna_Cfg {
- Fe_Lna_Cfg fe_lna_cfg;
+ Fe_Lna_Cfg* fe_lna_cfg;
} Fe_Ch1_Lna_Cfg;
typedef struct Fe_Ch2_Lna_Cfg {
OcGpio_Pin pin_ch1_rf_pwr_off;
- Fe_Lna_Cfg fe_lna_cfg;
+ Fe_Lna_Cfg* fe_lna_cfg;
} Fe_Ch2_Lna_Cfg;
typedef struct Fe_Watchdog_Cfg {
@@ -78,24 +78,19 @@ typedef struct Fe_Watchdog_Cfg {
OcGpio_Pin pin_copol_fpga;
} Fe_Watchdog_Cfg;
-typedef struct Fe_Cfg {
+typedef struct Fe_gpioCfg {
OcGpio_Pin pin_rf_pgood_ldo;
OcGpio_Pin pin_fe_12v_ctrl;
OcGpio_Pin pin_trxfe_conn_reset;
+}Fe_gpioCfg;
- Fe_Ch1_Gain_Cfg fe_ch1_gain_cfg;
- Fe_Ch2_Gain_Cfg fe_ch2_gain_cfg;
- Fe_Ch1_Lna_Cfg fe_ch1_lna_cfg;
- Fe_Ch2_Lna_Cfg fe_ch2_lna_cfg;
- Fe_Watchdog_Cfg fe_watchdog_cfg;
-
- INA226_Dev ina226_ch1_5_7v; /* CH1 5.7V Power Sensor */
- INA226_Dev ina226_ch2_5_7v; /* CH2 5.7V Power Sensor */
- I2C_Dev adt7481_ch1; /* CH1 Temperature Sensor */
- I2C_Dev adt7481_ch2; /* CH2 Temperature Sensor */
- Eeprom_Cfg *eeprom_inventory;
- I2C_Dev ads7830_ch1; /* CH1 Power Monitor */
- I2C_Dev ads7830_ch2; /* CH2 Power Monitor */
+typedef struct Fe_Cfg {
+ Fe_gpioCfg* fe_gpio_cfg;
+ Fe_Ch1_Gain_Cfg* fe_ch1_gain_cfg;
+ Fe_Ch2_Gain_Cfg* fe_ch2_gain_cfg;
+ Fe_Ch1_Lna_Cfg* fe_ch1_lna_cfg;
+ Fe_Ch2_Lna_Cfg* fe_ch2_lna_cfg;
+ Fe_Watchdog_Cfg* fe_watchdog_cfg;
} Fe_Cfg;
typedef struct __attribute__((packed, aligned(1))) {
@@ -106,8 +101,8 @@ typedef struct __attribute__((packed, aligned(1))) {
/*****************************************************************************
* FUNCTION DECLARATIONS
*****************************************************************************/
-bool rffe_pre_init(void *returnValue);
-bool rffe_post_init(eSubSystemStates *ssState);
+bool rffe_pre_init(void *driver, void *returnValue);
+bool rffe_post_init(void *driver, void *ssState);
bool RFFE_reset(void *driver, void *params);
bool RFFE_InventoryGetStatus(void *driver, unsigned int param_id,
diff --git a/firmware/ec/inc/subsystem/rffe/rffe_ctrl.h b/firmware/ec/inc/subsystem/rffe/rffe_ctrl.h
index dd6afcc019..8889d91d1f 100644
--- a/firmware/ec/inc/subsystem/rffe/rffe_ctrl.h
+++ b/firmware/ec/inc/subsystem/rffe/rffe_ctrl.h
@@ -12,23 +12,29 @@
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/Framework.h"
#include "inc/common/global_header.h"
#include "inc/subsystem/rffe/rffe.h"
-#include "src/registry/Framework.h"
/*****************************************************************************
* MACRO DEFINITIONS
*****************************************************************************/
-#define RFFE_CHANNEL1_IO_TX_ATTEN_ADDR 0x18
-#define RFFE_CHANNEL1_IO_RX_ATTEN_ADDR 0x1A
-#define RFFE_CHANNEL2_IO_TX_ATTEN_ADDR 0x1C
-#define RFFE_CHANNEL2_IO_RX_ATTEN_ADDR 0x1D
-#define RFFE_IO_REVPOWER_ALERT_ADDR 0x1B
#define RFFE_IO_BOARD_CFG_ADDR 0x19
/*****************************************************************************
* STRUCT/ENUM DEFINITIONS
*****************************************************************************/
+/* RF Channel Type */
+typedef enum rfChannel {
+ RFFE_CHANNEL1 = 0,
+ RFFE_CHANNEL2,
+ RFFE_MAX_CHANNEL
+} rffeChannel;
+
+typedef struct FE_Ch_Band_cfg {
+ rffeChannel channel;
+}FE_Ch_Band_cfg;
+
/* RFFE Band Type */
typedef enum {
RFFE_BAND2_1900 = 1,
@@ -41,11 +47,9 @@ typedef enum {
RFFE_SHUTDOWN
} rffeBand;
-/* RF Channel Type */
-typedef enum rfChannel {
- RFFE_CHANNEL1 = 0,
- RFFE_CHANNEL2
-} rffeChannel;
+typedef struct FE_Band_Cfg {
+ rffeBand band;
+}FE_Band_Cfg;
/* Power Amplifier Control Type */
typedef enum rfPACtrl {
@@ -60,16 +64,19 @@ typedef struct RfWatchdog_Cfg {
OcGpio_Pin *pin_interrupt;
} RfWatchdog_Cfg;
+typedef struct Fe_Ch_Pwr_Cfg {
+ rffeChannel channel;
+ Fe_Cfg *fe_Rffecfg;
+} Fe_Ch_Pwr_Cfg;
/*****************************************************************************
* FUNCTION DECLARATIONS
*****************************************************************************/
-ReturnStatus rffe_ctrl_get_band(rffeChannel channel, rffeBand *band);
-ReturnStatus rffe_ctrl_configure_power_amplifier(rffeChannel channel,
+bool rffe_ctrl_set_band(rffeChannel channel, rffeBand band);
+bool rffe_ctrl_get_band(rffeChannel channel, rffeBand *band);
+ReturnStatus rffe_ctrl_configure_power_amplifier(Fe_Ch_Pwr_Cfg *channel,
rffePaCtrlType rfPACtrl);
-
bool RFFE_enablePA(void *driver, void *params);
bool RFFE_disablePA(void *driver, void *params);
-
-extern Driver RFFEWatchdog;
+void _rffe_watchdog_handler(void *context);
#endif /* RFFE_CTRL_H_ */
diff --git a/firmware/ec/inc/subsystem/rffe/rffe_powermonitor.h b/firmware/ec/inc/subsystem/rffe/rffe_powermonitor.h
index 402520bec0..147d630c02 100644
--- a/firmware/ec/inc/subsystem/rffe/rffe_powermonitor.h
+++ b/firmware/ec/inc/subsystem/rffe/rffe_powermonitor.h
@@ -12,8 +12,8 @@
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/Framework.h"
#include "rffe_ctrl.h" /* Temporary, for channel # enum */
-#include "src/registry/Framework.h"
/*****************************************************************************
* MACRO DEFINITIONS
@@ -62,11 +62,17 @@ typedef struct __attribute__((packed, aligned(1))) {
rffeStatus rffeStatus;
} rffeStatusData;
+typedef enum FePowerStatus {
+ FE_POWER_STATUS_FORWARD = 0,
+ FE_POWER_STATUS_REVERSE,
+} FePowerStatus;
+
/*****************************************************************************
* FUNCTION DECLARATIONS
*****************************************************************************/
+ReturnStatus rffe_powermonitor_read_power(const I2C_Dev *i2c_dev,
+ eRffeStatusParamId rfPowerSelect,
+ uint16_t *rfpower);
void rffe_powermonitor_createtask(void);
-extern Driver RFPowerMonitor;
-
#endif /* RFFE_POWERMONITOR_H_ */
diff --git a/firmware/ec/inc/subsystem/sdr/sdr.h b/firmware/ec/inc/subsystem/sdr/sdr.h
index d2821d021a..3cc985545e 100644
--- a/firmware/ec/inc/subsystem/sdr/sdr.h
+++ b/firmware/ec/inc/subsystem/sdr/sdr.h
@@ -12,10 +12,11 @@
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "drivers/OcGpio.h"
#include "inc/devices/adt7481.h"
#include "inc/devices/eeprom.h"
#include "inc/devices/ina226.h"
-#include "drivers/OcGpio.h"
+
#include
@@ -38,7 +39,6 @@
#define SDR_CURRENT_SENSOR_ADDR 0x41
/* FX3 IO Expander Device Address */
-#define SDR_FX3_IOEXP_ADDRESS 0x1E
#define SDR_EEPROM_IOEXP_ADDRESS 0x1F
/*****************************************************************************
@@ -50,26 +50,22 @@ typedef struct Sdr_FpgaCfg {
const I2C_Dev temp_sensor;
} Sdr_FpgaCfg;
-typedef struct Sdr_Cfg {
- Sdr_FpgaCfg fpga;
- Eeprom_Cfg *eeprom_inventory;
- INA226_Dev current_sensor;
-
+typedef struct Sdr_gpioCfg {
OcGpio_Pin pin_sdr_reg_ldo_pgood;
OcGpio_Pin pin_trxfe_12v_onoff;
OcGpio_Pin pin_rf_fe_io_reset;
OcGpio_Pin pin_sdr_reset_in;
OcGpio_Pin pin_ec_trxfe_reset;
OcGpio_Pin pin_fx3_reset;
-} Sdr_Cfg;
+}Sdr_gpioCfg;
/*****************************************************************************
* FUNCTION DECLARATIONS
*****************************************************************************/
-void sdr_pwr_control(uint8_t control); /* TODO: hack to let OBC work */
+void sdr_pwr_control(Sdr_gpioCfg *driver, uint8_t control); /* TODO: hack to let OBC work */
/* Schema hooks */
-bool SDR_Init(void *return_buf);
+bool SDR_Init(void *driver, void *return_buf);
bool Sdr_InventoryGetStatus(void *driver, unsigned int param_id,
void *return_buf);
bool SDR_fx3Reset(void *driver, void *params);
diff --git a/firmware/ec/inc/subsystem/sync/sync.h b/firmware/ec/inc/subsystem/sync/sync.h
index 6df3e86b1f..5acd29ab81 100644
--- a/firmware/ec/inc/subsystem/sync/sync.h
+++ b/firmware/ec/inc/subsystem/sync/sync.h
@@ -12,9 +12,9 @@
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "drivers/OcGpio.h"
#include "inc/devices/adt7481.h"
#include "inc/devices/sx1509.h" /* Just for POST check - remove for 0.2 */
-#include "drivers/OcGpio.h"
#include
@@ -28,19 +28,13 @@
#define SYNC_GPS_TASK_PRIORITY 2
#define SYNC_GPS_TASK_STACK_SIZE 1024
-#define SYNC_IO_DEVICE_ADDR 0x71
#define SYNC_TEMP_SENSOR_ADDR 0x4C
/*****************************************************************************
* STRUCT/ENUM DEFINITIONS
*****************************************************************************/
/* Subsystem config */
-typedef struct Sync_Cfg {
- const I2C_Dev temp_sens;
- const I2C_Dev io_exp; /* Temporary - for POST */
-
- /* TODO: this pins are just lumped together, they'll be broken into their
- * respective drivers in time */
+typedef struct Sync_gpioCfg {
OcGpio_Pin pin_spdt_cntrl_lvl;
OcGpio_Pin pin_warmup_survey_init_sel;
OcGpio_Pin pin_r_phase_lock_ioexp;
@@ -50,9 +44,8 @@ typedef struct Sync_Cfg {
OcGpio_Pin pin_temp_alert;
OcGpio_Pin pin_spdt_cntrl_lte_cpu_gps_lvl;
OcGpio_Pin pin_init_survey_sel;
-
OcGpio_Pin pin_ec_sync_reset;
-} Sync_Cfg;
+} Sync_gpioCfg;
typedef enum gpsStatus {
GPS_NOTLOCKED = 0,
@@ -63,7 +56,7 @@ typedef enum gpsStatus {
* FUNCTION DECLARATIONS
*****************************************************************************/
/* Schema hooks */
-bool SYNC_Init(void *return_buf);
+bool SYNC_Init(void *driver, void *return_buf);
bool SYNC_reset(void *driver, void *params);
bool SYNC_GpsStatus(void *driver, unsigned int param_id, void *return_buf);
diff --git a/firmware/ec/inc/subsystem/sys/sys.h b/firmware/ec/inc/subsystem/sys/sys.h
index d7a33257e8..e014d5b82b 100644
--- a/firmware/ec/inc/subsystem/sys/sys.h
+++ b/firmware/ec/inc/subsystem/sys/sys.h
@@ -8,12 +8,15 @@
*/
#ifndef _SYS_H
#define _SYS_H
+#include "common/inc/global/Framework.h"
-#include "src/registry/Framework.h"
+#include
+#include
bool SYS_cmdReset(void *driver, void *params);
bool SYS_cmdEcho(void *driver, void *params);
-
+bool SYS_post_enable(void **postActivate);
+bool SYS_post_get_results(void **getpostResultMsg);
extern const Driver Driver_EepromSID;
extern const Driver Driver_EepromInv;
extern const Driver Driver_MAC;
diff --git a/firmware/ec/inc/subsystem/testModule/testModule.h b/firmware/ec/inc/subsystem/testModule/testModule.h
index 6e1397dc39..cb1f71ea93 100644
--- a/firmware/ec/inc/subsystem/testModule/testModule.h
+++ b/firmware/ec/inc/subsystem/testModule/testModule.h
@@ -12,10 +12,10 @@
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
+#include "common/inc/global/Framework.h"
#include "drivers/OcGpio.h"
#include "helpers/attribute.h"
-#include "src/registry/Framework.h"
/*****************************************************************************
* STRUCT/ENUM DEFINITIONS
diff --git a/firmware/ec/inc/subsystem/watchdog/watchdog.h b/firmware/ec/inc/subsystem/watchdog/watchdog.h
index 3e70a00752..a8b704bd46 100644
--- a/firmware/ec/inc/subsystem/watchdog/watchdog.h
+++ b/firmware/ec/inc/subsystem/watchdog/watchdog.h
@@ -12,7 +12,7 @@
/*****************************************************************************
* MACRO DEFINITIONS
*****************************************************************************/
-#define WATCHDOG_TASK_STACK_SIZE 512
+#define WATCHDOG_TASK_STACK_SIZE 1024
#define WATCHDOG_TASK_PRIORITY 2
#endif /* WATCHDOG_H_ */
diff --git a/firmware/ec/inc/utils/ocmp_util.h b/firmware/ec/inc/utils/ocmp_util.h
index 8aa9339749..9aae16ebc4 100644
--- a/firmware/ec/inc/utils/ocmp_util.h
+++ b/firmware/ec/inc/utils/ocmp_util.h
@@ -6,14 +6,14 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef INC_UTILS_OCMP_UTIL_H_
#define INC_UTILS_OCMP_UTIL_H_
+#include "common/inc/global/ocmp_frame.h"
+
#include
#include
#include
-#include "inc/common/ocmp_frame.h"
/*****************************************************************************
** FUNCTION NAME : OCMP_mallocFrame
diff --git a/firmware/ec/libs/.exclude b/firmware/ec/libs/.exclude
deleted file mode 100644
index 8c863310d8..0000000000
--- a/firmware/ec/libs/.exclude
+++ /dev/null
@@ -1 +0,0 @@
-This file exists to prevent Eclipse/CDT from adding the C sources contained in this directory (or below) to any enclosing project.
diff --git a/firmware/ec/libs/makefile.libs b/firmware/ec/libs/makefile.libs
deleted file mode 100644
index 1b134a306f..0000000000
--- a/firmware/ec/libs/makefile.libs
+++ /dev/null
@@ -1,62 +0,0 @@
-#
-# This file was generated based on the configuration script:
-# /Users/kashi/work/OpenCellular/review/firmware/OpenCellular.cfg
-#
-# This makefile may be included in other makefiles that need to build
-# the libraries containing the compiled source files generated as
-# part of the configuration step.
-
-#
-# ======== GEN_SRC_DIR =========
-# The path to the sources generated during configuration
-#
-# This path must be either absolute or relative to the build directory.
-#
-# The absolute path to the generated source directory (at the time the
-# sources were generated) is:
-# /Users/kashi/work/OpenCellular/review/firmware/libs
-#
-GEN_SRC_DIR ?= libs
-
-ifeq (,$(wildcard $(GEN_SRC_DIR)))
-$(error "ERROR: GEN_SRC_DIR must be set to the directory containing the generated sources")
-endif
-
-#
-# ======== .force ========
-# The .force goal is used to force the build of any goal that names it as
-# a prerequisite
-#
-.PHONY: .force
-
-#
-# ======== library macros ========
-#
-sysbios_SRC = $(GEN_SRC_DIR)/sysbios
-sysbios_LIB = $(GEN_SRC_DIR)/sysbios/sysbios.am4fg
-
-#
-# ======== dependencies ========
-#
-all: $(sysbios_LIB)
-clean: .sysbios_clean
-
-
-# ======== convenient build goals ========
-.PHONY: sysbios
-sysbios: $(GEN_SRC_DIR)/sysbios/sysbios.am4fg
-
-# CDT managed make executables depend on $(OBJS)
-OBJS += $(sysbios_LIB)
-
-#
-# ======== rules ========
-#
-$(sysbios_LIB): .force
- @echo making $@ ...
- @$(MAKE) -C $(sysbios_SRC)
-
-.sysbios_clean:
- @echo cleaning $(sysbios_SRC) ...
- -@$(MAKE) --no-print-directory -C $(sysbios_SRC) clean
-
diff --git a/firmware/ec/libs/sysbios/_BIOS.o.dep b/firmware/ec/libs/sysbios/_BIOS.o.dep
deleted file mode 100644
index 77bbeae42d..0000000000
--- a/firmware/ec/libs/sysbios/_BIOS.o.dep
+++ /dev/null
@@ -1,58 +0,0 @@
-_BIOS.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/System.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/ISystemSupport.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/System_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/System_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ICore.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Core_CoreProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/internal/BIOS.xdc.h
diff --git a/firmware/ec/libs/sysbios/gates_GateHwi.o.dep b/firmware/ec/libs/sysbios/gates_GateHwi.o.dep
deleted file mode 100644
index 09fbb3287f..0000000000
--- a/firmware/ec/libs/sysbios/gates_GateHwi.o.dep
+++ /dev/null
@@ -1,55 +0,0 @@
-gates_GateHwi.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/gates/GateHwi.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/gates/package/internal/GateHwi.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/gates/GateHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/gates/package/package.defs.h
diff --git a/firmware/ec/libs/sysbios/gates_GateMutex.o.dep b/firmware/ec/libs/sysbios/gates_GateMutex.o.dep
deleted file mode 100644
index 1f1d6433cd..0000000000
--- a/firmware/ec/libs/sysbios/gates_GateMutex.o.dep
+++ /dev/null
@@ -1,59 +0,0 @@
-gates_GateMutex.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/gates/GateMutex.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Semaphore.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITaskSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Task_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/gates/package/internal/GateMutex.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/gates/GateMutex.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/gates/package/package.defs.h
diff --git a/firmware/ec/libs/sysbios/gnu_ReentSupport.o.dep b/firmware/ec/libs/sysbios/gnu_ReentSupport.o.dep
deleted file mode 100644
index 4dc8cb55b8..0000000000
--- a/firmware/ec/libs/sysbios/gnu_ReentSupport.o.dep
+++ /dev/null
@@ -1,85 +0,0 @@
-gnu_ReentSupport.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/rts/gnu/ReentSupport.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITaskSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Task_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/rts/gnu/package/internal/ReentSupport.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/rts/gnu/ReentSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/rts/gnu/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Semaphore.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/reent.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/reent.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/_ansi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/newlib.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/config.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/machine/ieeefp.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/features.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/_types.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/machine/_types.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/machine/_default_types.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/lock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/machine/types.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/string.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/_ansi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/string.h
diff --git a/firmware/ec/libs/sysbios/gnu_SemiHostSupport.o.dep b/firmware/ec/libs/sysbios/gnu_SemiHostSupport.o.dep
deleted file mode 100644
index ceafd3a196..0000000000
--- a/firmware/ec/libs/sysbios/gnu_SemiHostSupport.o.dep
+++ /dev/null
@@ -1,28 +0,0 @@
-gnu_SemiHostSupport.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/rts/gnu/SemiHostSupport.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/rts/gnu/package/internal/SemiHostSupport.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/rts/gnu/SemiHostSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/rts/gnu/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h
diff --git a/firmware/ec/libs/sysbios/hal_Cache.o.dep b/firmware/ec/libs/sysbios/hal_Cache.o.dep
deleted file mode 100644
index 9743ac98b2..0000000000
--- a/firmware/ec/libs/sysbios/hal_Cache.o.dep
+++ /dev/null
@@ -1,31 +0,0 @@
-hal_Cache.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Cache.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/internal/Cache.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Cache.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ICache.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Cache_CacheProxy.h
diff --git a/firmware/ec/libs/sysbios/hal_CacheNull.o.dep b/firmware/ec/libs/sysbios/hal_CacheNull.o.dep
deleted file mode 100644
index fed8214d73..0000000000
--- a/firmware/ec/libs/sysbios/hal_CacheNull.o.dep
+++ /dev/null
@@ -1,30 +0,0 @@
-hal_CacheNull.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/CacheNull.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/internal/CacheNull.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/CacheNull.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ICache.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h
diff --git a/firmware/ec/libs/sysbios/hal_Hwi.o.dep b/firmware/ec/libs/sysbios/hal_Hwi.o.dep
deleted file mode 100644
index e41180bc8c..0000000000
--- a/firmware/ec/libs/sysbios/hal_Hwi.o.dep
+++ /dev/null
@@ -1,53 +0,0 @@
-hal_Hwi.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/internal/Hwi.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h
diff --git a/firmware/ec/libs/sysbios/hal_Hwi_stack.o.dep b/firmware/ec/libs/sysbios/hal_Hwi_stack.o.dep
deleted file mode 100644
index c3b2401b68..0000000000
--- a/firmware/ec/libs/sysbios/hal_Hwi_stack.o.dep
+++ /dev/null
@@ -1,57 +0,0 @@
-hal_Hwi_stack.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi_stack.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ICore.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Core_CoreProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/internal/Hwi.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h
diff --git a/firmware/ec/libs/sysbios/hal_Hwi_startup.o.dep b/firmware/ec/libs/sysbios/hal_Hwi_startup.o.dep
deleted file mode 100644
index 4acddecb23..0000000000
--- a/firmware/ec/libs/sysbios/hal_Hwi_startup.o.dep
+++ /dev/null
@@ -1,52 +0,0 @@
-hal_Hwi_startup.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi_startup.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/internal/Hwi.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h
diff --git a/firmware/ec/libs/sysbios/hal_Timer.o.dep b/firmware/ec/libs/sysbios/hal_Timer.o.dep
deleted file mode 100644
index 6d4f3276ac..0000000000
--- a/firmware/ec/libs/sysbios/hal_Timer.o.dep
+++ /dev/null
@@ -1,37 +0,0 @@
-hal_Timer.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Timer.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/internal/Timer.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Timer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Timer_TimerProxy.h
diff --git a/firmware/ec/libs/sysbios/heaps_HeapMem.o.dep b/firmware/ec/libs/sysbios/heaps_HeapMem.o.dep
deleted file mode 100644
index cef949f46d..0000000000
--- a/firmware/ec/libs/sysbios/heaps_HeapMem.o.dep
+++ /dev/null
@@ -1,39 +0,0 @@
-heaps_HeapMem.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/heaps/HeapMem.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Gate.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Gate__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Gate__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/heaps/package/internal/HeapMem.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/heaps/HeapMem.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/heaps/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/heaps/package/HeapMem_Module_GateProxy.h
diff --git a/firmware/ec/libs/sysbios/knl_Clock.o.dep b/firmware/ec/libs/sysbios/knl_Clock.o.dep
deleted file mode 100644
index 7dbf866ef4..0000000000
--- a/firmware/ec/libs/sysbios/knl_Clock.o.dep
+++ /dev/null
@@ -1,59 +0,0 @@
-knl_Clock.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/internal/Clock.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h
diff --git a/firmware/ec/libs/sysbios/knl_Event.o.dep b/firmware/ec/libs/sysbios/knl_Event.o.dep
deleted file mode 100644
index 32369b3641..0000000000
--- a/firmware/ec/libs/sysbios/knl_Event.o.dep
+++ /dev/null
@@ -1,66 +0,0 @@
-knl_Event.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITaskSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Task_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/internal/Event.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event__epilogue.h
diff --git a/firmware/ec/libs/sysbios/knl_Idle.o.dep b/firmware/ec/libs/sysbios/knl_Idle.o.dep
deleted file mode 100644
index f12d3d1864..0000000000
--- a/firmware/ec/libs/sysbios/knl_Idle.o.dep
+++ /dev/null
@@ -1,59 +0,0 @@
-knl_Idle.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Idle.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ICore.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Core_CoreProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/internal/Idle.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Idle.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h
diff --git a/firmware/ec/libs/sysbios/knl_Intrinsics.o.dep b/firmware/ec/libs/sysbios/knl_Intrinsics.o.dep
deleted file mode 100644
index e39582687d..0000000000
--- a/firmware/ec/libs/sysbios/knl_Intrinsics.o.dep
+++ /dev/null
@@ -1,39 +0,0 @@
-knl_Intrinsics.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Intrinsics.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/internal/Intrinsics.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Intrinsics.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Intrinsics__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IIntrinsicsSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Intrinsics_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Intrinsics__epilogue.h
diff --git a/firmware/ec/libs/sysbios/knl_Mailbox.o.dep b/firmware/ec/libs/sysbios/knl_Mailbox.o.dep
deleted file mode 100644
index d4f704ff36..0000000000
--- a/firmware/ec/libs/sysbios/knl_Mailbox.o.dep
+++ /dev/null
@@ -1,82 +0,0 @@
-knl_Mailbox.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Mailbox.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/string.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/_ansi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/newlib.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/config.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/machine/ieeefp.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/features.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/reent.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/_ansi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/_types.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/machine/_types.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/machine/_default_types.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/lock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/sys/string.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Semaphore.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITaskSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Task_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/internal/Mailbox.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Mailbox.h
diff --git a/firmware/ec/libs/sysbios/knl_Queue.o.dep b/firmware/ec/libs/sysbios/knl_Queue.o.dep
deleted file mode 100644
index c444028ba8..0000000000
--- a/firmware/ec/libs/sysbios/knl_Queue.o.dep
+++ /dev/null
@@ -1,54 +0,0 @@
-knl_Queue.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/internal/Queue.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h
diff --git a/firmware/ec/libs/sysbios/knl_Semaphore.o.dep b/firmware/ec/libs/sysbios/knl_Semaphore.o.dep
deleted file mode 100644
index 1e6191652e..0000000000
--- a/firmware/ec/libs/sysbios/knl_Semaphore.o.dep
+++ /dev/null
@@ -1,68 +0,0 @@
-knl_Semaphore.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Semaphore.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITaskSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Task_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/internal/Semaphore.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Semaphore.h
diff --git a/firmware/ec/libs/sysbios/knl_Swi.o.dep b/firmware/ec/libs/sysbios/knl_Swi.o.dep
deleted file mode 100644
index e7a6ee73a3..0000000000
--- a/firmware/ec/libs/sysbios/knl_Swi.o.dep
+++ /dev/null
@@ -1,73 +0,0 @@
-knl_Swi.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/System.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/ISystemSupport.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/System_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/System_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITaskSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Task_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Intrinsics.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Intrinsics__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IIntrinsicsSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Intrinsics_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Intrinsics__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/internal/Swi.xdc.h
diff --git a/firmware/ec/libs/sysbios/knl_Swi_andn.o.dep b/firmware/ec/libs/sysbios/knl_Swi_andn.o.dep
deleted file mode 100644
index c05a700240..0000000000
--- a/firmware/ec/libs/sysbios/knl_Swi_andn.o.dep
+++ /dev/null
@@ -1,55 +0,0 @@
-knl_Swi_andn.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi_andn.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/internal/Swi.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h
diff --git a/firmware/ec/libs/sysbios/knl_Task.o.dep b/firmware/ec/libs/sysbios/knl_Task.o.dep
deleted file mode 100644
index 79df6fb31c..0000000000
--- a/firmware/ec/libs/sysbios/knl_Task.o.dep
+++ /dev/null
@@ -1,70 +0,0 @@
-knl_Task.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Idle.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Intrinsics.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Intrinsics__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IIntrinsicsSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Intrinsics_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Intrinsics__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/internal/Task.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITaskSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Task_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__epilogue.h
diff --git a/firmware/ec/libs/sysbios/lm4_Timer.o.dep b/firmware/ec/libs/sysbios/lm4_Timer.o.dep
deleted file mode 100644
index 819c080ba4..0000000000
--- a/firmware/ec/libs/sysbios/lm4_Timer.o.dep
+++ /dev/null
@@ -1,52 +0,0 @@
-lm4_Timer.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/lm4/Timer.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/catalog/arm/peripherals/timers/timer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/lm4/package/internal/Timer.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/lm4/Timer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/lm4/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h
diff --git a/firmware/ec/libs/sysbios/lm4_TimestampProvider.o.dep b/firmware/ec/libs/sysbios/lm4_TimestampProvider.o.dep
deleted file mode 100644
index 3af8d1df31..0000000000
--- a/firmware/ec/libs/sysbios/lm4_TimestampProvider.o.dep
+++ /dev/null
@@ -1,60 +0,0 @@
-lm4_TimestampProvider.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/lm4/TimestampProvider.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/lm4/Timer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/lm4/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/lm4/package/internal/TimestampProvider.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/lm4/TimestampProvider.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimestamp.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/ITimestampProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/ITimestampClient.h
diff --git a/firmware/ec/libs/sysbios/m3_Hwi.o.dep b/firmware/ec/libs/sysbios/m3_Hwi.o.dep
deleted file mode 100644
index 1bf6c1027b..0000000000
--- a/firmware/ec/libs/sysbios/m3_Hwi.o.dep
+++ /dev/null
@@ -1,63 +0,0 @@
-m3_Hwi.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/System.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/ISystemSupport.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/System_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/System_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITaskSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Task_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/internal/Hwi.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h
diff --git a/firmware/ec/libs/sysbios/m3_TaskSupport.o.dep b/firmware/ec/libs/sysbios/m3_TaskSupport.o.dep
deleted file mode 100644
index 5c8393f9f8..0000000000
--- a/firmware/ec/libs/sysbios/m3_TaskSupport.o.dep
+++ /dev/null
@@ -1,50 +0,0 @@
-m3_TaskSupport.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/TaskSupport.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITaskSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Task_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/internal/TaskSupport.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/TaskSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h
diff --git a/firmware/ec/libs/sysbios/makefile b/firmware/ec/libs/sysbios/makefile
deleted file mode 100644
index 89097c853c..0000000000
--- a/firmware/ec/libs/sysbios/makefile
+++ /dev/null
@@ -1,155 +0,0 @@
-vpath % /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/
-vpath %.c /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/
-
-CCOPTS = -Wunused -Wunknown-pragmas -ffunction-sections -fdata-sections -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -mabi=aapcs -g -O3 -I/Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/$(GCCTARG)/include -Dfar= -D__DYNAMIC_REENT__ -Dti_sysbios_knl_Task_minimizeLatency__D=FALSE -Dti_sysbios_knl_Clock_stopCheckNext__D=FALSE -Dti_sysbios_family_arm_m3_Hwi_enableException__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_disablePriority__D=32U -Dti_sysbios_family_arm_m3_Hwi_numSparseInterrupts__D=0U
-
-XDC_ROOT = /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/
-
-BIOS_ROOT = /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/
-
-BIOS_DEFS = -Dti_sysbios_BIOS_swiEnabled__D=TRUE -Dti_sysbios_BIOS_taskEnabled__D=TRUE -Dti_sysbios_BIOS_clockEnabled__D=TRUE -Dti_sysbios_BIOS_runtimeCreatesEnabled__D=TRUE -Dti_sysbios_hal_Hwi_DISABLE_ALL_HOOKS -Dti_sysbios_knl_Swi_DISABLE_ALL_HOOKS -Dti_sysbios_BIOS_smpEnabled__D=FALSE -Dti_sysbios_Build_useHwiMacros -Dti_sysbios_knl_Swi_numPriorities__D=16 -Dti_sysbios_knl_Task_deleteTerminatedTasks__D=TRUE -Dti_sysbios_knl_Task_numPriorities__D=16 -Dti_sysbios_knl_Task_checkStackFlag__D=TRUE -Dti_sysbios_knl_Task_initStackFlag__D=TRUE -Dti_sysbios_knl_Clock_TICK_SOURCE=ti_sysbios_knl_Clock_TickSource_TIMER -Dti_sysbios_knl_Clock_TICK_MODE=ti_sysbios_knl_Clock_TickMode_PERIODIC -Dti_sysbios_hal_Core_delegate_getId=ti_sysbios_hal_CoreNull_getId__E -Dti_sysbios_hal_Core_delegate_interruptCore=ti_sysbios_hal_CoreNull_interruptCore__E -Dti_sysbios_hal_Core_delegate_lock=ti_sysbios_hal_CoreNull_lock__E -Dti_sysbios_hal_Core_delegate_unlock=ti_sysbios_hal_CoreNull_unlock__E -Dti_sysbios_hal_Core_numCores__D=1 -Dti_sysbios_hal_CoreNull_numCores__D=1 -Dti_sysbios_utils_Load_taskEnabled__D=FALSE -Dti_sysbios_utils_Load_swiEnabled__D=FALSE -Dti_sysbios_utils_Load_hwiEnabled__D=FALSE -Dti_sysbios_family_arm_m3_Hwi_dispatcherSwiSupport__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_dispatcherTaskSupport__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_dispatcherAutoNestingSupport__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_dispatcherIrpTrackingSupport__D=TRUE -Dti_sysbios_knl_Semaphore_supportsEvents__D=FALSE -Dti_sysbios_knl_Semaphore_supportsPriority__D=FALSE
-
-BIOS_INC = -I"/Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/"
-
-TARGET_INC = -I"/Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/"
-
-INCS = $(BIOS_INC) $(TARGET_INC)
-
-GCCTARG = arm-none-eabi
-
-CC = /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/arm-none-eabi-gcc -c -MD -MF $@.dep $(CCOPTS)
-ASM = /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/arm-none-eabi-gcc -c -x assembler-with-cpp $(CCOPTS)
-AR = /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/arm-none-eabi-ar cr
-
-DEL = rm -f
-CP = cp -f
-
-define RM
- $(if $(wildcard $1),$(DEL) $1,:)
-endef
-
-define ASSEMBLE
- @echo asmm4fg $< ...
- @$(ASM) $(BIOS_DEFS) -I "/Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/" -Dxdc_target_types__=/Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h -Dxdc_target_name__=M4F $(INCS) $<
-endef
-
-define COMPILE
- @echo clm4fg $< ...
- @$(CC) $(BIOS_DEFS) -I "/Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/" -Dxdc_target_types__=/Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h -Dxdc_target_name__=M4F $(INCS) $<
-endef
-
-
-all: sysbios.am4fg
-
-m3_Hwi_asm_gnu.o: family/arm/m3/Hwi_asm_gnu.sv7M makefile
- @-$(call RM, $@)
- $(ASSEMBLE) -o m3_Hwi_asm_gnu.o
-
-m3_Hwi_asm_switch_gnu.o: family/arm/m3/Hwi_asm_switch_gnu.sv7M makefile
- @-$(call RM, $@)
- $(ASSEMBLE) -o m3_Hwi_asm_switch_gnu.o
-
-m3_IntrinsicsSupport_asm_gnu.o: family/arm/m3/IntrinsicsSupport_asm_gnu.sv7M makefile
- @-$(call RM, $@)
- $(ASSEMBLE) -o m3_IntrinsicsSupport_asm_gnu.o
-
-m3_TaskSupport_asm_gnu.o: family/arm/m3/TaskSupport_asm_gnu.sv7M makefile
- @-$(call RM, $@)
- $(ASSEMBLE) -o m3_TaskSupport_asm_gnu.o
-
-
-_BIOS.o: BIOS.c makefile
- @-$(call RM, _BIOS.o)
- $(COMPILE) -o _BIOS.o
-knl_Clock.o: knl/Clock.c makefile
- @-$(call RM, knl_Clock.o)
- $(COMPILE) -o knl_Clock.o
-knl_Idle.o: knl/Idle.c makefile
- @-$(call RM, knl_Idle.o)
- $(COMPILE) -o knl_Idle.o
-knl_Intrinsics.o: knl/Intrinsics.c makefile
- @-$(call RM, knl_Intrinsics.o)
- $(COMPILE) -o knl_Intrinsics.o
-knl_Event.o: knl/Event.c makefile
- @-$(call RM, knl_Event.o)
- $(COMPILE) -o knl_Event.o
-knl_Mailbox.o: knl/Mailbox.c makefile
- @-$(call RM, knl_Mailbox.o)
- $(COMPILE) -o knl_Mailbox.o
-knl_Queue.o: knl/Queue.c makefile
- @-$(call RM, knl_Queue.o)
- $(COMPILE) -o knl_Queue.o
-knl_Semaphore.o: knl/Semaphore.c makefile
- @-$(call RM, knl_Semaphore.o)
- $(COMPILE) -o knl_Semaphore.o
-knl_Swi.o: knl/Swi.c makefile
- @-$(call RM, knl_Swi.o)
- $(COMPILE) -o knl_Swi.o
-knl_Swi_andn.o: knl/Swi_andn.c makefile
- @-$(call RM, knl_Swi_andn.o)
- $(COMPILE) -o knl_Swi_andn.o
-knl_Task.o: knl/Task.c makefile
- @-$(call RM, knl_Task.o)
- $(COMPILE) -o knl_Task.o
-hal_Cache.o: hal/Cache.c makefile
- @-$(call RM, hal_Cache.o)
- $(COMPILE) -o hal_Cache.o
-hal_CacheNull.o: hal/CacheNull.c makefile
- @-$(call RM, hal_CacheNull.o)
- $(COMPILE) -o hal_CacheNull.o
-hal_Hwi.o: hal/Hwi.c makefile
- @-$(call RM, hal_Hwi.o)
- $(COMPILE) -o hal_Hwi.o
-hal_Hwi_stack.o: hal/Hwi_stack.c makefile
- @-$(call RM, hal_Hwi_stack.o)
- $(COMPILE) -o hal_Hwi_stack.o
-hal_Hwi_startup.o: hal/Hwi_startup.c makefile
- @-$(call RM, hal_Hwi_startup.o)
- $(COMPILE) -o hal_Hwi_startup.o
-hal_Timer.o: hal/Timer.c makefile
- @-$(call RM, hal_Timer.o)
- $(COMPILE) -o hal_Timer.o
-m3_Hwi.o: family/arm/m3/Hwi.c makefile
- @-$(call RM, m3_Hwi.o)
- $(COMPILE) -o m3_Hwi.o
-m3_TaskSupport.o: family/arm/m3/TaskSupport.c makefile
- @-$(call RM, m3_TaskSupport.o)
- $(COMPILE) -o m3_TaskSupport.o
-gnu_ReentSupport.o: rts/gnu/ReentSupport.c makefile
- @-$(call RM, gnu_ReentSupport.o)
- $(COMPILE) -o gnu_ReentSupport.o
-gnu_SemiHostSupport.o: rts/gnu/SemiHostSupport.c makefile
- @-$(call RM, gnu_SemiHostSupport.o)
- $(COMPILE) -o gnu_SemiHostSupport.o
-gates_GateHwi.o: gates/GateHwi.c makefile
- @-$(call RM, gates_GateHwi.o)
- $(COMPILE) -o gates_GateHwi.o
-gates_GateMutex.o: gates/GateMutex.c makefile
- @-$(call RM, gates_GateMutex.o)
- $(COMPILE) -o gates_GateMutex.o
-heaps_HeapMem.o: heaps/HeapMem.c makefile
- @-$(call RM, heaps_HeapMem.o)
- $(COMPILE) -o heaps_HeapMem.o
-utils_Load.o: utils/Load.c makefile
- @-$(call RM, utils_Load.o)
- $(COMPILE) -o utils_Load.o
-utils_Load_CPU.o: utils/Load_CPU.c makefile
- @-$(call RM, utils_Load_CPU.o)
- $(COMPILE) -o utils_Load_CPU.o
-lm4_TimestampProvider.o: family/arm/lm4/TimestampProvider.c makefile
- @-$(call RM, lm4_TimestampProvider.o)
- $(COMPILE) -o lm4_TimestampProvider.o
-lm4_Timer.o: family/arm/lm4/Timer.c makefile
- @-$(call RM, lm4_Timer.o)
- $(COMPILE) -o lm4_Timer.o
-
-sysbios.am4fg: m3_Hwi_asm_gnu.o m3_Hwi_asm_switch_gnu.o m3_IntrinsicsSupport_asm_gnu.o m3_TaskSupport_asm_gnu.o _BIOS.o knl_Clock.o knl_Idle.o knl_Intrinsics.o knl_Event.o knl_Mailbox.o knl_Queue.o knl_Semaphore.o knl_Swi.o knl_Swi_andn.o knl_Task.o hal_Cache.o hal_CacheNull.o hal_Hwi.o hal_Hwi_stack.o hal_Hwi_startup.o hal_Timer.o m3_Hwi.o m3_TaskSupport.o gnu_ReentSupport.o gnu_SemiHostSupport.o gates_GateHwi.o gates_GateMutex.o heaps_HeapMem.o utils_Load.o utils_Load_CPU.o lm4_TimestampProvider.o lm4_Timer.o
- @echo arm4fg $^ ...
- @-$(call RM, $@)
- @$(AR) $@ $^
-
-
-clean:
- @$(DEL) ../makefile.libs
- @-$(call RM, *)
-
diff --git a/firmware/ec/libs/sysbios/sysbios.am4fg b/firmware/ec/libs/sysbios/sysbios.am4fg
deleted file mode 100644
index 3011b59781..0000000000
Binary files a/firmware/ec/libs/sysbios/sysbios.am4fg and /dev/null differ
diff --git a/firmware/ec/libs/sysbios/utils_Load.o.dep b/firmware/ec/libs/sysbios/utils_Load.o.dep
deleted file mode 100644
index 25562569f3..0000000000
--- a/firmware/ec/libs/sysbios/utils_Load.o.dep
+++ /dev/null
@@ -1,81 +0,0 @@
-utils_Load.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/utils/Load.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Timestamp.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/ITimestampClient.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/ITimestampProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Timestamp_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ICore.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Core_CoreProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/gates/GateMutex.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/gates/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITaskSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Task_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Semaphore.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Event__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/utils/package/internal/Load.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/utils/Load.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/utils/package/package.defs.h
diff --git a/firmware/ec/libs/sysbios/utils_Load_CPU.o.dep b/firmware/ec/libs/sysbios/utils_Load_CPU.o.dep
deleted file mode 100644
index 4635a6baf8..0000000000
--- a/firmware/ec/libs/sysbios/utils_Load_CPU.o.dep
+++ /dev/null
@@ -1,76 +0,0 @@
-utils_Load_CPU.o: \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/utils/Load_CPU.c \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/std.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stdarg.h \
- /Users/kashi/work/tools/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/include/stddef.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm/M4F.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/std.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/gnu/targets/arm//libs/install-native/arm-none-eabi/include/stdint.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Startup.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/xdc.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Types__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IModule.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IHeap.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IInstance.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Main.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/IGateProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Main_Module_GateProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Error__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Memory.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Memory_HeapProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Timestamp.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/ITimestampClient.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/ITimestampProvider.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/package/Timestamp_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Diags__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Text.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Log__epilogue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__prologue.h \
- /Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/xdc/runtime/Assert__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/package/BIOS_RtsGateProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/BIOS__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ICore.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Core_CoreProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Core__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/IHwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/family/arm/m3/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/package/Hwi_HwiProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/hal/Hwi__epilogue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Idle.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/utils/package/internal/Load.xdc.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/utils/Load.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/utils/package/package.defs.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Queue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__prologue.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITaskSupport.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Clock.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/interfaces/ITimer.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Swi.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Clock_TimerProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/package/Task_SupportProxy.h \
- /Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/ti/sysbios/knl/Task__epilogue.h
diff --git a/firmware/ec/src/OC_CONNECT1.c b/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT1.c
similarity index 61%
rename from firmware/ec/src/OC_CONNECT1.c
rename to firmware/ec/platform/oc-sdr/cfg/OC_CONNECT1.c
index af74335c23..414e63c2dd 100644
--- a/firmware/ec/src/OC_CONNECT1.c
+++ b/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT1.c
@@ -1,3 +1,40 @@
+/*******************************************************************************
+ Filename: OC_CONNECT1.c
+ Revised: $Date: 2015-06-02 11:18:40 -0700 (Tue, 02 Jun 2015) $
+ Revision: $Revision: 43957 $
+
+ Description: This file contains utility functions.
+
+ Copyright 2014 Texas Instruments Incorporated. All rights reserved.
+
+ IMPORTANT: Your use of this Software is limited to those specific rights
+ granted under the terms of a software license agreement between the user
+ who downloaded the software, his/her employer (which must be your employer)
+ and Texas Instruments Incorporated (the "License"). You may not use this
+ Software unless you agree to abide by the terms of the License. The License
+ limits your use, and you acknowledge, that the Software may not be modified,
+ copied or distributed unless embedded on a Texas Instruments microcontroller
+ or used solely and exclusively in conjunction with a Texas Instruments radio
+ frequency transceiver, which is integrated into your product. Other than for
+ the foregoing purpose, you may not use, reproduce, copy, prepare derivative
+ works of, modify, distribute, perform, display or sell this Software and/or
+ its documentation for any purpose.
+
+ YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
+ PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
+ INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
+ NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
+ TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
+ NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
+ LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
+ INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
+ OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
+ OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
+ (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
+
+ Should you have any questions regarding your right to use this Software,
+ contact Texas Instruments Incorporated at www.TI.com.
+*******************************************************************************/
/**
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
@@ -18,6 +55,7 @@
#include
#include
#include
+#include
#include
#include
@@ -27,8 +65,6 @@
#include
#include
-#include "OC_CONNECT1.h"
-
#ifndef TI_DRIVERS_UART_DMA
#define TI_DRIVERS_UART_DMA 0
#endif
@@ -339,30 +375,14 @@ const GPIOTiva_Config GPIOTiva_config = {
* subsystems. It will effectively replace board.h. I've kept the header
* includes here since I'm thinking we'll want to move this out at some point
*/
-
-#include "drivers/GpioNative.h"
+#include "common/inc/global/ocmp_frame.h"
#include "drivers/GpioSX1509.h"
#include "drivers/GpioPCA9557.h"
-#include "inc/common/ocmp_frame.h"
-#include "inc/devices/eeprom.h"
-#include "inc/devices/eth_sw.h"
-#include "inc/devices/ext_battery.h" /* Just for battery resistor configs */
-#include "inc/devices/int_battery.h"
-#include "inc/subsystem/bms/bms.h"
-#include "inc/subsystem/gpp/gpp.h"
-#include "inc/subsystem/hci/hci.h"
-#include "inc/subsystem/obc/obc.h"
-#include "inc/subsystem/power/power.h"
-#include "inc/subsystem/rffe/rffe_ctrl.h"
-#include "inc/subsystem/rffe/rffe_powermonitor.h"
-#include "inc/subsystem/rffe/rffe_sensor.h"
-#include "inc/subsystem/sdr/sdr.h"
-#include "inc/subsystem/sync/sync.h"
-#include "inc/subsystem/testModule/testModule.h"
+#include "drivers/GpioNative.h"
OcGpio_Port ec_io;
-OcGpio_Port gbc_io_0;
OcGpio_Port gbc_io_1;
+OcGpio_Port gbc_io_0;
OcGpio_Port sdr_fx3_io;
//OcGpio_Port sdr_eeprom_wp_io;
OcGpio_Port fe_ch1_gain_io;
@@ -376,7 +396,6 @@ OcGpio_Port ec_io = {
.fn_table = &GpioNative_fnTable,
};
-#define BIGBROTHER_IOEXP0_ADDRESS 0x71
OcGpio_Port gbc_io_0 = {
.fn_table = &GpioSX1509_fnTable,
.cfg = &(SX1509_Cfg) {
@@ -386,7 +405,6 @@ OcGpio_Port gbc_io_0 = {
.object_data = &(SX1509_Obj){},
};
-#define BIGBROTHER_IOEXP1_ADDRESS 0x70
OcGpio_Port gbc_io_1 = {
.fn_table = &GpioSX1509_fnTable,
.cfg = &(SX1509_Cfg) {
@@ -462,535 +480,6 @@ OcGpio_Port sync_io = {
.object_data = &(SX1509_Obj){},
};
-/* These are terrible pin names, but they match the net names... */
-OcGpio_Pin pin_inven_eeprom_wp = { &gbc_io_0, 1, OCGPIO_CFG_OUT_OD_NOPULL };
-OcGpio_Pin pin_s_id_eeprom_wp = { &gbc_io_0, 2, OCGPIO_CFG_OUT_OD_NOPULL };
-OcGpio_Pin pin_tempsen_evt1 = { &gbc_io_0, 4 };
-OcGpio_Pin pin_tempsen_evt2 = { &gbc_io_0, 5 };
-OcGpio_Pin pin_tempsen_evt3 = { &gbc_io_0, 6 };
-OcGpio_Pin pin_tempsen_evt4 = { &gbc_io_0, 7 };
-OcGpio_Pin pin_tempsen_evt5 = { &gbc_io_0, 8 };
-OcGpio_Pin eth_sw_tiva_intn = { &gbc_io_0, 11 };
-
-/*****************************************************************************
- * EEPROM CONFIG
- *****************************************************************************/
-#define CAT24C256 { .page_size = 64, .mem_size = (256 / 8) }
-
-Eeprom_Cfg eeprom_gbc_sid = {
- .i2c_dev = { OC_CONNECT1_I2C7, 0x51 },
- .pin_wp = &pin_s_id_eeprom_wp,
- .type = CAT24C256,
-};
-
-Eeprom_Cfg eeprom_gbc_inv = {
- .i2c_dev = { OC_CONNECT1_I2C7, 0x50 },
- .pin_wp = &pin_inven_eeprom_wp,
- .type = CAT24C256,
-};
-
-Eeprom_Cfg eeprom_sdr_inv = {
- .i2c_dev = { OC_CONNECT1_I2C3, 0x50 },
- /* .pin_wp = &(OcGpio_Pin){ &sdr_eeprom_wp_io, 0 }, */
- .pin_wp = NULL, /* IO Expander disabled on rev c */
- .type = CAT24C256,
-};
-
-Eeprom_Cfg eeprom_fe_inv = {
- .i2c_dev = { OC_CONNECT1_I2C4, 0x50 },
- .pin_wp = &(OcGpio_Pin){ &fe_ch1_lna_io, 0 },
- .type = CAT24C256,
-};
-
-/*****************************************************************************
- * SYSTEM CONFIG
- *****************************************************************************/
-Power_Cfg g_power_cfg = {
- /* EC_PD_PWRGD_OK */
- .pin_ec_pd_pwrgd_ok = { &ec_io, OC_EC_PD_PWRGD_ALERT },
- /* SOLAR_AUX_PRSNT_N */
- .pin_solar_aux_prsnt_n = { &ec_io, OC_EC_PWR_PRSNT_SOLAR_AUX },
- /* POE_PRSNT_N */
- .pin_poe_prsnt_n = { &ec_io, OC_EC_PWR_PRSNT_POE },
- /* LT4275_EC_nT2P */
- .pin_lt4275_ec_nt2p = { &ec_io, OC_EC_PWR_PD_NT2P },
- /* nECPSE_RST */
- .pin_necpse_rst = { &ec_io, OC_EC_PWR_PSE_RESET },
- /* EC_LT4015_I2C_SEL */
- .pin_lt4015_i2c_sel = { &gbc_io_1, 4, OCGPIO_CFG_OUT_STD },
- /* INT_BAT_PRSNT */
- .pin_int_bat_prsnt = { &gbc_io_0, 11 },
- /* EXT_BAT_PRSNT */
- .pin_ext_bat_prsnt = { &gbc_io_0, 12 },
- /* TODO: consider inverting int/ext_bat_prsnt since the opto-isolator
- * basically inverts the line */
- .lead_acid_temp_sens = {
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C1,
- .slave_addr = PWR_LEAD_ACID_BATT_DEV_TEMP_SENS_ADDR
- },
- .pin_evt = &pin_tempsen_evt1,
- },
- .obj = {NULL},
- },
- .ext_bat_charger = {
- .cfg = {
- .i2c_dev = {
- .bus = OC_CONNECT1_I2C0,
- .slave_addr = 0x68, /* LTC4015 I2C address in 7-bit format */
- },
- .chem = LTC4015_CHEM_LEAD_ACID,
- .r_snsb = PWR_EXT_BATT_RSNSB,
- .r_snsi = PWR_EXT_BATT_RSNSI,
- .cellcount = 6,
- .pin_lt4015_i2c_sel = { &gbc_io_1, 4, OCGPIO_CFG_OUT_OD_NOPULL },
- .pin_alert = &(OcGpio_Pin){ &ec_io,
- OC_EC_PWR_LACID_ALERT },
- },
- .obj = {},
- },
- .int_bat_charger = {
- .cfg = {
- .i2c_dev = {
- .bus = OC_CONNECT1_I2C0,
- .slave_addr = 0x68, /* LTC4015 I2C address in 7-bit format */
- },
- .chem = LTC4015_CHEM_LI_ION,
- .r_snsb = PWR_INT_BATT_RSNSB,
- .r_snsi = PWR_INT_BATT_RSNSI,
- .cellcount = 3,
- .pin_lt4015_i2c_sel = { &gbc_io_1, 4, OCGPIO_CFG_OUT_OD_NOPULL },
- .pin_alert = &(OcGpio_Pin){ &ec_io,
- OC_EC_PWR_LION_ALERT },
- },
- .obj = {},
- },
- .pse = {
- .cfg = {
- .i2c_dev = {
- .bus = OC_CONNECT1_I2C8,
- .slave_addr = 0x2F, /* LTC4274 I2C address in 7-bit format */
- },
- .pin_evt = &(OcGpio_Pin){ &ec_io,
- OC_EC_GBC_PSE_ALERT },
- },
- .obj = {},
- },
- .pd = {
- .cfg = {
- .pin_evt = &(OcGpio_Pin){ &ec_io,
- OC_EC_PD_PWRGD_ALERT },
- .pin_detect = &(OcGpio_Pin){ &ec_io,
- OC_EC_PWR_PD_NT2P },
-
- },
- .obj = {},
- },
- .powerSource = { /*Added as a place holder for now.*/
- .cfg = {
-
- },
- .obj = {},
- },
-};
-
-Bms_Cfg g_bms_cfg = {
- .ec_current_sensor_12v = {
- /* 12V Power Sensor */
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C6,
- .slave_addr = BMS_EC_CURRENT_SENSOR_12V_ADDR,
- },
- .pin_alert = &(OcGpio_Pin){ &ec_io,
- OC_EC_GBC_INA_ALERT },
- },
- },
- .ec_current_sensor_3p3v = {
- /* 3.3V Power Sensor */
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C7,
- .slave_addr = BMS_EC_CURRENT_SENSOR_3P3V_ADDR,
- },
- .pin_alert = &(OcGpio_Pin){ &ec_io,
- OC_EC_GBC_INA_ALERT },
- },
- },
- .ec_temp_sensor = {
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C1,
- .slave_addr = BMS_EC_TEMP_SENSOR_ADDR
- },
- .pin_evt = &pin_tempsen_evt2,
- },
- .obj = {},
- },
-};
-
-Hci_Cfg g_hci_cfg = {
- .buzzer = {
- .pin_en = { &gbc_io_0, 10, OCGPIO_CFG_OUT_OD_NOPULL },
- },
- .led = {
- .temp_sensor = {
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C8,
- .slave_addr = HCI_LED_TEMP_SENSOR_ADDR
- },
- .pin_evt = NULL,
- },
- .obj = {},
- },
- .sx1509_dev[HCI_LED_DRIVER_LEFT] = {
- .bus = OC_CONNECT1_I2C8,
- .slave_addr = LED_SX1509_LEFT_ADDRESS,
- },
- .sx1509_dev[HCI_LED_DRIVER_RIGHT] = {
- .bus = OC_CONNECT1_I2C8,
- .slave_addr = LED_SX1509_RIGHT_ADDRESS,
- },
- /* EC_GPIO */
- .pin_ec_gpio = { &ec_io, OC_EC_HCI_LED_RESET },
- },
-};
-
-Gpp_Cfg g_gpp_cfg = {
- .ap = {
- .current_sensor = {
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C6,
- .slave_addr = GPP_AP_CURRENT_SENSOR_ADDR,
- },
- .pin_alert = &(OcGpio_Pin){ &ec_io,
- OC_EC_GBC_AP_INA_ALERT },
- },
- },
- .temp_sensor = {
- {
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C1,
- .slave_addr = GPP_AP_TEMPSENS1_ADDR
- },
- .pin_evt = &pin_tempsen_evt3,
- },
- .obj = {},
- },
- {
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C1,
- .slave_addr = GPP_AP_TEMPSENS2_ADDR
- },
- .pin_evt = &pin_tempsen_evt5,
- },
- .obj = {},
- },
- {
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C1,
- .slave_addr = GPP_AP_TEMPSENS3_ADDR
- },
- .pin_evt = &pin_tempsen_evt4,
- },
- .obj = {},
- },
- },
- },
- .msata = {
- .current_sensor = {
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C6,
- .slave_addr = GPP_MSATA_CURRENT_SENSOR_ADDR,
- },
- .pin_alert = &(OcGpio_Pin){ &ec_io,
- OC_EC_GBC_AP_INA_ALERT },
- },
- },
- },
-
- /* SOC_PLTRST_N */
- .pin_soc_pltrst_n = { &ec_io, OC_EC_GPP_SOC_PLTRST },
- /* TIVA_SOC_GPIO2 */
- .pin_ap_boot_alert1 = { &ec_io, OC_EC_GPP_AP_BM_1 },
- /* TIVA_SOC_GPIO3 */
- .pin_ap_boot_alert2 = { &ec_io, OC_EC_GPP_AP_BM_2 },
- /* SOC_COREPWROK */
- .pin_soc_corepwr_ok = { &ec_io, OC_EC_GPP_PMIC_CORE_PWR },
- /* MSATA_EC_DAS */
- .pin_msata_ec_das = { &ec_io, OC_EC_GPP_MSATA_DAS },
- /* LT4256_EC_PWRGD */
- .pin_lt4256_ec_pwrgd = { &ec_io, OC_EC_GPP_PWRGD_PROTECTION },
- /* AP_12V_ONOFF */
- .pin_ap_12v_onoff = { &ec_io, OC_EC_GPP_PMIC_CTRL },
- /* EC_RESET_TO_PROC */
- .pin_ec_reset_to_proc = { &ec_io, OC_EC_GPP_RST_TO_PROC },
-};
-
-Sdr_Cfg g_sdr_cfg = {
- .fpga = {
- .current_sensor = {
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C3,
- .slave_addr = SDR_FPGA_CURRENT_SENSOR_ADDR,
- },
- .pin_alert = &(OcGpio_Pin){ &ec_io,
- OC_EC_SDR_FPGA_TEMP_INA_ALERT },
- },
- },
- .temp_sensor = {
- .bus = OC_CONNECT1_I2C3,
- .slave_addr = SDR_FPGA_TEMP_SENSOR_ADDR
- },
- },
- .eeprom_inventory = &eeprom_sdr_inv,
- .current_sensor = {
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C6,
- .slave_addr = SDR_CURRENT_SENSOR_ADDR,
- },
- .pin_alert = &(OcGpio_Pin){ &ec_io,
- OC_EC_SDR_INA_ALERT },
- },
- },
- /* FX3_RESET */
- .pin_fx3_reset = { &sdr_fx3_io, 0 },
- /* EC_TRXFECONN_GPIO2/SDR_REG_LDO_PGOOD */
- .pin_sdr_reg_ldo_pgood = { &ec_io, OC_EC_SDR_PWR_GD },
- /* TRXFE_12V_ONOFF */
- .pin_trxfe_12v_onoff = { &ec_io, OC_EC_SDR_PWR_CNTRL },
- /* EC_FE_RESET_OUT/RF_FE_IO_RESET */
- .pin_rf_fe_io_reset = { &ec_io, OC_EC_SDR_FE_IO_RESET_CTRL },
- /* EC_TRXFECONN_GPIO1/SDR_RESET_IN */
- .pin_sdr_reset_in = { &ec_io, OC_EC_SDR_DEVICE_CONTROL },
- /* EC_TRXFE_RESET */
- .pin_ec_trxfe_reset = { &ec_io, OC_EC_RFFE_RESET },
- /* FX3_RESET */
- .pin_fx3_reset = { &sdr_fx3_io, 0 },
-};
-
-Fe_Cfg g_fe_cfg = {
- /* EC_TRXFECONN_GPIO3/RF_PGOOD_LDO */
- .pin_rf_pgood_ldo = { &ec_io, OC_EC_FE_PWR_GD },
- /* FE_12V_CTRL */
- .pin_fe_12v_ctrl = { &ec_io, OC_EC_FE_CONTROL },
- .fe_ch1_gain_cfg = {
- .fe_gain_cfg = {
- /* CH1_TX_ATTN_16DB */
- .pin_tx_attn_16db = { &fe_ch1_gain_io, 1 },
- /* CH1_TX_ATTN_P5DB */
- .pin_tx_attn_p5db = { &fe_ch1_gain_io, 2 },
- /* CH1_TX_ATTN_1DB */
- .pin_tx_attn_1db = { &fe_ch1_gain_io, 3 },
- /* CH1_TX_ATTN_2DB */
- .pin_tx_attn_2db = { &fe_ch1_gain_io, 4 },
- /* CH1_TX_ATTN_4DB */
- .pin_tx_attn_4db = { &fe_ch1_gain_io, 5 },
- /* CH1_TX_ATTN_8DB */
- .pin_tx_attn_8db = { &fe_ch1_gain_io, 6 },
- /* CH1_TX_ATTN_ENB */
- .pin_tx_attn_enb = { &fe_ch1_gain_io, 7 },
- },
- },
- .fe_ch2_gain_cfg = {
- /* CH1_2G_LB_BAND_SEL_L */
- .pin_ch1_2g_lb_band_sel_l = { &fe_ch2_gain_io, 0 },
- .fe_gain_cfg = {
- /* CH2_TX_ATTN_16DB */
- .pin_tx_attn_16db = { &fe_ch2_gain_io, 1 },
- /* CH2_TX_ATTN_P5DB */
- .pin_tx_attn_p5db = { &fe_ch2_gain_io, 2 },
- /* CH2_TX_ATTN_1DB */
- .pin_tx_attn_1db = { &fe_ch2_gain_io, 3 },
- /* CH2_TX_ATTN_2DB */
- .pin_tx_attn_2db = { &fe_ch2_gain_io, 4 },
- /* CH2_TX_ATTN_4DB */
- .pin_tx_attn_4db = { &fe_ch2_gain_io, 5 },
- /* CH2_TX_ATTN_8DB */
- .pin_tx_attn_8db = { &fe_ch2_gain_io, 6 },
- /* CH2_TX_ATTN_ENB */
- .pin_tx_attn_enb = { &fe_ch2_gain_io, 7 },
- },
- },
- .fe_ch1_lna_cfg = {
- .fe_lna_cfg = {
- /* CH1_RX_ATTN_P5DB */
- .pin_rx_attn_p5db = { &fe_ch1_lna_io, 2 },
- /* CH1_RX_ATTN_1DB */
- .pin_rx_attn_1db = { &fe_ch1_lna_io, 3 },
- /* CH1_RX_ATTN_2DB */
- .pin_rx_attn_2db = { &fe_ch1_lna_io, 4 },
- /* CH1_RX_ATTN_4DB */
- .pin_rx_attn_4db = { &fe_ch1_lna_io, 5 },
- /* CH1_RX_ATTN_8DB */
- .pin_rx_attn_8db = { &fe_ch1_lna_io, 6 },
- /* CH1_RX_ATTN_ENB */
- .pin_rx_attn_enb = { &fe_ch1_lna_io, 7 },
- },
- },
- .fe_ch2_lna_cfg = {
- /* CH1_RF_PWR_OFF */
- .pin_ch1_rf_pwr_off = { &fe_ch2_lna_io, 1 },
- .fe_lna_cfg = {
- /* CH2_RX_ATTN_P5DB */
- .pin_rx_attn_p5db = { &fe_ch2_lna_io, 2 },
- /* CH2_RX_ATTN_1DB */
- .pin_rx_attn_1db = { &fe_ch2_lna_io, 3 },
- /* CH2_RX_ATTN_2DB */
- .pin_rx_attn_2db = { &fe_ch2_lna_io, 4 },
- /* CH2_RX_ATTN_4DB */
- .pin_rx_attn_4db = { &fe_ch2_lna_io, 5 },
- /* CH2_RX_ATTN_8DB */
- .pin_rx_attn_8db = { &fe_ch2_lna_io, 6 },
- /* CH2_RX_ATTN_ENB */
- .pin_rx_attn_enb = { &fe_ch2_lna_io, 7 },
- },
- },
- .pin_trxfe_conn_reset = { &ec_io, OC_EC_FE_TRXFE_CONN_RESET },
- .fe_watchdog_cfg = {
- /* AOSEL_FPGA */
- .pin_aosel_fpga = { &fe_watchdog_io, 0 },
- /* CH2_RF_PWR_OFF */
- .pin_ch2_rf_pwr_off = { &fe_watchdog_io, 1 },
- /* CO6_WD */
- .pin_co6_wd = { &fe_watchdog_io, 2 },
- /* CO5_WD */
- .pin_co5_wd = { &fe_watchdog_io, 3 },
- /* CO4_WD */
- .pin_co4_wd = { &fe_watchdog_io, 4 },
- /* CO3_WD */
- .pin_co3_wd = { &fe_watchdog_io, 5 },
- /* CO2_WD */
- .pin_co2_wd = { &fe_watchdog_io, 6 },
- /* COPOL_FPGA */
- .pin_copol_fpga = { &fe_watchdog_io, 7 },
- },
- .ina226_ch1_5_7v = {
- /* CH1 5.7V Sensor */
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C4,
- .slave_addr = RFFE_INA226_CH1_5_7V_ADDR,
- },
- .pin_alert = &(OcGpio_Pin){ &ec_io,
- OC_EC_RFFE_TEMP_INA_ALERT },
- },
- },
- .ina226_ch2_5_7v = {
- /* CH2 5.7V Sensor */
- .cfg = {
- .dev = {
- .bus = OC_CONNECT1_I2C4,
- .slave_addr = RFFE_INA226_CH2_5_7V_ADDR,
- },
- .pin_alert = &(OcGpio_Pin){ &ec_io,
- OC_EC_RFFE_TEMP_INA_ALERT },
- },
- },
- .adt7481_ch1 = {
- .bus = OC_CONNECT1_I2C4,
- .slave_addr = RFFE_CH1_TEMP_SENSOR_ADDR,
- },
- .adt7481_ch2 = {
- .bus = OC_CONNECT1_I2C4,
- .slave_addr = RFFE_CH2_TEMP_SENSOR_ADDR,
- },
- .eeprom_inventory = &eeprom_fe_inv,
- .ads7830_ch1 = {
- .bus = OC_CONNECT1_I2C4,
- .slave_addr = RFFE_CHANNEL1_ADC_ADDR,
- },
- .ads7830_ch2 = {
- .bus = OC_CONNECT1_I2C4,
- .slave_addr = RFFE_CHANNEL2_ADC_ADDR,
- },
-};
-
-Sync_Cfg g_sync_cfg = {
- .temp_sens = {
- .bus = OC_CONNECT1_I2C7,
- .slave_addr = SYNC_TEMP_SENSOR_ADDR,
- },
- .io_exp = {
- .bus = OC_CONNECT1_I2C7,
- .slave_addr = SYNC_IO_DEVICE_ADDR,
- },
- /* SPDT_CNTRL_LVL */
- .pin_spdt_cntrl_lvl = { &sync_io, 0, OCGPIO_CFG_OUT_OD_NOPULL },
- /* WARMUP_SURVEY_INIT_SEL */
- .pin_warmup_survey_init_sel = { &sync_io, 1, OCGPIO_CFG_OUT_OD_NOPULL },
- /* R_PHASE_LOCK_IOEXP */
- .pin_r_phase_lock_ioexp = { &sync_io, 4, OCGPIO_CFG_IN_PU },
- /* R_LOCK_OK_IOEXP */
- .pin_r_lock_ok_ioexp = { &sync_io, 5, OCGPIO_CFG_IN_PU },
- /* R_ALARM_IOEXP */
- .pin_r_alarm_ioexp = { &sync_io, 6, OCGPIO_CFG_IN_PU },
- /* 12V_REG_ENB */
- .pin_12v_reg_enb = { &sync_io, 7, OCGPIO_CFG_OUT_STD },
- /* TEMP_ALERT */
- .pin_temp_alert = { &sync_io, 8, OCGPIO_CFG_IN_PU },
- /* SPDT_CNTRL_LTE_CPU_GPS_LVL */
- .pin_spdt_cntrl_lte_cpu_gps_lvl = { &sync_io, 9, OCGPIO_CFG_OUT_OD_NOPULL },
- /* INIT_SURVEY_SEL */
- .pin_init_survey_sel = { &sync_io, 10, OCGPIO_CFG_OUT_OD_NOPULL },
- /* EC_SYNC_RESET */
- .pin_ec_sync_reset = { &ec_io, OC_EC_SYNC_RESET },
-};
-
-Obc_Cfg g_obc_cfg = {
- .iridium_cfg = {
- .uart = OC_CONNECT1_UARTXR0,
- /* IRIDIUM_RSTIOEXP */
- .pin_enable = { &sync_io, 2, OCGPIO_CFG_OUT_STD },
- /* R_NW_AVAIL */
- .pin_nw_avail = { &sync_io, 3, OCGPIO_CFG_IN_PU },
- },
- /* 12V_REG_ENB */
- .pin_pwr_en = &(OcGpio_Pin){ &sync_io, 7, OCGPIO_CFG_OUT_STD },
-};
-
-Eth_Sw_Cfg g_eth_cfg = {
- .pin_evt = NULL,
- .pin_ec_ethsw_reset = { &ec_io, OC_EC_ETH_SW_RESET },
- .eth_switch = {},
-};
-
-void *sys_config[] = {
- [OC_SS_SYS] = NULL,
- [OC_SS_PWR] = &g_power_cfg,
- [OC_SS_BMS] = &g_bms_cfg,
- [OC_SS_HCI] = &g_hci_cfg,
- [OC_SS_ETH_SWT] = &g_eth_cfg,
- [OC_SS_OBC] = &g_obc_cfg,
- [OC_SS_GPP] = &g_gpp_cfg,
- [OC_SS_SDR] = &g_sdr_cfg,
- [OC_SS_RF] = &g_fe_cfg,
- [OC_SS_SYNC] = &g_sync_cfg,
- [OC_SS_TEST_MODULE] = &(TestMod_Cfg){
- .g510_cfg = {
- .uart = OC_CONNECT1_UART4,
- /* 2G_SIM_PRESENCE */
- .pin_sim_present = { &gbc_io_1, 0, OCGPIO_CFG_IN_PU },
-
- /* NOTE: enable & power go through MOSFETs, inverting them */
- /* 2GMODULE_POWEROFF */
- .pin_enable = { &gbc_io_1, 2, OCGPIO_CFG_INVERT },
- /* EC_2GMODULE_PWR_ON */
- .pin_pwr_en = { &gbc_io_1, 1, OCGPIO_CFG_INVERT },
- },
- .pin_ant_sw = {},
- },
-};
-
/*
* ======== OC_CONNECT1_initGPIO ========
*/
@@ -1362,7 +851,6 @@ void OC_CONNECT1_initUART(void)
/*
* =============================== USB ===============================
*/
-
/*
* ======== OC_CONNECT1_usbBusFaultHwi ========
*/
@@ -1477,4 +965,4 @@ void OC_CONNECT1_initWatchdog(void)
SysCtlPeripheralEnable(SYSCTL_PERIPH_WDOG0);
Watchdog_init();
-}
+}
\ No newline at end of file
diff --git a/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_FE.c b/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_FE.c
new file mode 100644
index 0000000000..5945373ba4
--- /dev/null
+++ b/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_FE.c
@@ -0,0 +1,333 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/global/OC_CONNECT1.h"
+#include "common/inc/ocmp_wrappers/ocmp_adt7481.h"
+#include "common/inc/ocmp_wrappers/ocmp_dat-xxr5a-pp.h"
+#include "common/inc/ocmp_wrappers/ocmp_ina226.h"
+#include "inc/subsystem/rffe/rffe_ctrl.h"
+#include "inc/subsystem/rffe/rffe_powermonitor.h"
+#include "inc/subsystem/rffe/rffe_sensor.h"
+#include "inc/subsystem/testModule/testModule.h"
+#include "inc/devices/debug_ocgpio.h"
+#include "inc/devices/dat-xxr5a-pp.h"
+
+extern Fe_Cfg g_fe_cfg;
+SCHEMA_IMPORT OcGpio_Port ec_io;
+SCHEMA_IMPORT OcGpio_Port gbc_io_1;
+SCHEMA_IMPORT OcGpio_Port fe_ch1_gain_io;
+SCHEMA_IMPORT OcGpio_Port fe_ch1_lna_io;
+SCHEMA_IMPORT OcGpio_Port fe_ch2_gain_io;
+SCHEMA_IMPORT OcGpio_Port fe_ch2_lna_io;
+SCHEMA_IMPORT OcGpio_Port fe_watchdog_io;
+
+/*****************************************************************************
+ * EEPROM CONFIG
+ *****************************************************************************/
+Eeprom_Cfg eeprom_fe_inv = {
+ .i2c_dev = { OC_CONNECT1_I2C4, 0x50 },
+ .pin_wp = &(OcGpio_Pin){ &fe_ch1_lna_io, 0 },
+ .type = CAT24C256,
+ .ss = OC_SS_RF,
+};
+/*****************************************************************************
+ * SYSTEM CONFIG
+ *****************************************************************************/
+/* RFFE Subsystem Config.*/
+// FE Channel 1 Power sensor.
+INA226_Dev fe_ch1_ps_5_7v = {
+ /* CH1 5.7V Sensor */
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C4,
+ .slave_addr = RFFE_INA226_CH1_5_7V_ADDR,
+ },
+ .pin_alert = &(OcGpio_Pin){ &ec_io,
+ OC_EC_RFFE_TEMP_INA_ALERT },
+ },
+};
+
+//FE Channel 2 Power sensor.
+INA226_Dev fe_ch2_ps_5_7v = {
+ /* CH2 5.7V Sensor */
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C4,
+ .slave_addr = RFFE_INA226_CH2_5_7V_ADDR,
+ },
+ .pin_alert = &(OcGpio_Pin){ &ec_io,
+ OC_EC_RFFE_TEMP_INA_ALERT },
+ },
+};
+
+//FE Channel 1 temperature sensor.
+I2C_Dev fe_ch1_ts = {
+ .bus = OC_CONNECT1_I2C4,
+ .slave_addr = RFFE_CH1_TEMP_SENSOR_ADDR,
+};
+
+//FE Channel 2 temperature sensor.
+I2C_Dev fe_ch2_ts = (I2C_Dev){
+ .bus = OC_CONNECT1_I2C4,
+ .slave_addr = RFFE_CH2_TEMP_SENSOR_ADDR,
+};
+
+//FE EEPROM inventory
+void* fe_eeprom_inventory = &eeprom_fe_inv;
+
+//FE Channel 1 ADC
+I2C_Dev fe_ch1_ads7830 = {
+ .bus = OC_CONNECT1_I2C4,
+ .slave_addr = RFFE_CHANNEL1_ADC_ADDR,
+};
+
+//FE Channel 2 ADC
+I2C_Dev fe_ch2_ads7830 = {
+ .bus = OC_CONNECT1_I2C4,
+ .slave_addr = RFFE_CHANNEL2_ADC_ADDR,
+};
+
+Fe_Gain_Cfg fe_ch1_gain = {
+ /* CH1_TX_ATTN_16DB */
+ .pin_tx_attn_16db = { &fe_ch1_gain_io, 1 },
+ /* CH1_TX_ATTN_P5DB */
+ .pin_tx_attn_p5db = { &fe_ch1_gain_io, 2 },
+ /* CH1_TX_ATTN_1DB */
+ .pin_tx_attn_1db = { &fe_ch1_gain_io, 3 },
+ /* CH1_TX_ATTN_2DB */
+ .pin_tx_attn_2db = { &fe_ch1_gain_io, 4 },
+ /* CH1_TX_ATTN_4DB */
+ .pin_tx_attn_4db = { &fe_ch1_gain_io, 5 },
+ /* CH1_TX_ATTN_8DB */
+ .pin_tx_attn_8db = { &fe_ch1_gain_io, 6 },
+ /* CH1_TX_ATTN_ENB */
+ .pin_tx_attn_enb = { &fe_ch1_gain_io, 7 },
+};
+
+Fe_Gain_Cfg fe_ch2_gain = {
+ /* CH2_TX_ATTN_16DB */
+ .pin_tx_attn_16db = { &fe_ch2_gain_io, 1 },
+ /* CH2_TX_ATTN_P5DB */
+ .pin_tx_attn_p5db = { &fe_ch2_gain_io, 2 },
+ /* CH2_TX_ATTN_1DB */
+ .pin_tx_attn_1db = { &fe_ch2_gain_io, 3 },
+ /* CH2_TX_ATTN_2DB */
+ .pin_tx_attn_2db = { &fe_ch2_gain_io, 4 },
+ /* CH2_TX_ATTN_4DB */
+ .pin_tx_attn_4db = { &fe_ch2_gain_io, 5 },
+ /* CH2_TX_ATTN_8DB */
+ .pin_tx_attn_8db = { &fe_ch2_gain_io, 6 },
+ /* CH2_TX_ATTN_ENB */
+ .pin_tx_attn_enb = { &fe_ch2_gain_io, 7 },
+};
+
+Fe_Lna_Cfg fe_ch1_lna = {
+ /* CH1_RX_ATTN_P5DB */
+ .pin_rx_attn_p5db = { &fe_ch1_lna_io, 2 },
+ /* CH1_RX_ATTN_1DB */
+ .pin_rx_attn_1db = { &fe_ch1_lna_io, 3 },
+ /* CH1_RX_ATTN_2DB */
+ .pin_rx_attn_2db = { &fe_ch1_lna_io, 4 },
+ /* CH1_RX_ATTN_4DB */
+ .pin_rx_attn_4db = { &fe_ch1_lna_io, 5 },
+ /* CH1_RX_ATTN_8DB */
+ .pin_rx_attn_8db = { &fe_ch1_lna_io, 6 },
+ /* CH1_RX_ATTN_ENB */
+ .pin_rx_attn_enb = { &fe_ch1_lna_io, 7 },
+};
+
+Fe_Lna_Cfg fe_ch2_lna = {
+ /* CH2_RX_ATTN_P5DB */
+ .pin_rx_attn_p5db = { &fe_ch2_lna_io, 2 },
+ /* CH2_RX_ATTN_1DB */
+ .pin_rx_attn_1db = { &fe_ch2_lna_io, 3 },
+ /* CH2_RX_ATTN_2DB */
+ .pin_rx_attn_2db = { &fe_ch2_lna_io, 4 },
+ /* CH2_RX_ATTN_4DB */
+ .pin_rx_attn_4db = { &fe_ch2_lna_io, 5 },
+ /* CH2_RX_ATTN_8DB */
+ .pin_rx_attn_8db = { &fe_ch2_lna_io, 6 },
+ /* CH2_RX_ATTN_ENB */
+ .pin_rx_attn_enb = { &fe_ch2_lna_io, 7 },
+};
+
+//FE watch dog
+Fe_Watchdog_Cfg fe_watchdog_cfg = {
+ /* AOSEL_FPGA */
+ .pin_aosel_fpga = { &fe_watchdog_io, 0 },
+ /* CH2_RF_PWR_OFF */
+ .pin_ch2_rf_pwr_off = { &fe_watchdog_io, 1 },
+ /* CO6_WD */
+ .pin_co6_wd = { &fe_watchdog_io, 2 },
+ /* CO5_WD */
+ .pin_co5_wd = { &fe_watchdog_io, 3 },
+ /* CO4_WD */
+ .pin_co4_wd = { &fe_watchdog_io, 4 },
+ /* CO3_WD */
+ .pin_co3_wd = { &fe_watchdog_io, 5 },
+ /* CO2_WD */
+ .pin_co2_wd = { &fe_watchdog_io, 6 },
+ /* COPOL_FPGA */
+ .pin_copol_fpga = { &fe_watchdog_io, 7 },
+};
+
+Fe_gpioCfg fe_gpiocfg = {
+ /* EC_TRXFECONN_GPIO3/RF_PGOOD_LDO */
+ .pin_rf_pgood_ldo = { &ec_io, OC_EC_FE_PWR_GD },
+ /* FE_12V_CTRL */
+ .pin_fe_12v_ctrl = { &ec_io, OC_EC_FE_CONTROL },
+ .pin_trxfe_conn_reset = { &ec_io, OC_EC_FE_TRXFE_CONN_RESET },
+};
+
+//FE Ch1 TX Gain control
+Fe_Ch1_Gain_Cfg fe_ch1_tx_gain_cfg = (Fe_Ch1_Gain_Cfg) {
+ .fe_gain_cfg = &fe_ch1_gain,
+};
+
+//FE Ch2 TX Gain control
+Fe_Ch2_Gain_Cfg fe_ch2_tx_gain_cfg = (Fe_Ch2_Gain_Cfg) {
+ /* CH1_2G_LB_BAND_SEL_L */
+ .pin_ch1_2g_lb_band_sel_l = { &fe_ch2_gain_io, 0 },
+ .fe_gain_cfg = &fe_ch2_gain,
+};
+
+//FE Ch1 LNA config
+Fe_Ch1_Lna_Cfg fe_ch1_rx_gain_cfg = (Fe_Ch1_Lna_Cfg) {
+ .fe_lna_cfg = &fe_ch1_lna,
+};
+
+//FE Ch2 LNA config
+Fe_Ch2_Lna_Cfg fe_ch2_rx_gain_cfg = (Fe_Ch2_Lna_Cfg) {
+ /* CH1_RF_PWR_OFF */
+ .pin_ch1_rf_pwr_off = { &fe_ch2_lna_io, 1 },
+ .fe_lna_cfg = &fe_ch2_lna,
+};
+
+/* FE CH watch dog */
+RfWatchdog_Cfg fe_ch1_watchdog = {
+ .pin_alert_lb = &fe_watchdog_cfg.pin_co6_wd,
+ .pin_alert_hb = &fe_watchdog_cfg.pin_co5_wd,
+ .pin_interrupt = &fe_gpiocfg.pin_trxfe_conn_reset,
+};
+
+/* FE CH watch dog */
+RfWatchdog_Cfg fe_ch2_watchdog = {
+ .pin_alert_lb = &fe_watchdog_cfg.pin_co3_wd,
+ .pin_alert_hb = &fe_watchdog_cfg.pin_co4_wd,
+ .pin_interrupt = &fe_gpiocfg.pin_trxfe_conn_reset,
+};
+
+/* FE GPIO's */
+Fe_Cfg fe_rffecfg = {
+ .fe_gpio_cfg = &fe_gpiocfg,
+ .fe_ch1_gain_cfg = (Fe_Ch1_Gain_Cfg*)&fe_ch1_tx_gain_cfg,
+ .fe_ch2_gain_cfg = (Fe_Ch2_Gain_Cfg*)&fe_ch2_tx_gain_cfg,
+ .fe_ch1_lna_cfg = (Fe_Ch1_Lna_Cfg*)&fe_ch1_rx_gain_cfg,
+ .fe_ch2_lna_cfg = (Fe_Ch2_Lna_Cfg*)&fe_ch2_rx_gain_cfg,
+ .fe_watchdog_cfg = (Fe_Watchdog_Cfg*)&fe_watchdog_cfg,
+};
+
+FE_Ch_Band_cfg fe_ch1_bandcfg = {
+ .channel = RFFE_CHANNEL1,
+};
+
+FE_Ch_Band_cfg fe_ch2_bandcfg = {
+ .channel = RFFE_CHANNEL2,
+};
+
+Fe_Ch_Pwr_Cfg fe_ch1_pwrcfg = {
+ .channel = RFFE_CHANNEL1,
+ .fe_Rffecfg = (Fe_Cfg*)&fe_rffecfg
+};
+
+Fe_Ch_Pwr_Cfg fe_ch2_pwrcfg = {
+ .channel = RFFE_CHANNEL2,
+ .fe_Rffecfg = (Fe_Cfg*)&fe_rffecfg
+};
+
+// TestModule
+TestMod_Cfg testModuleCfg = (TestMod_Cfg){
+ .g510_cfg = {
+ .uart = OC_CONNECT1_UART4,
+ /* 2G_SIM_PRESENCE */
+ .pin_sim_present = { &gbc_io_1, 0, OCGPIO_CFG_IN_PU },
+
+ /* NOTE: enable & power go through MOSFETs, inverting them */
+ /* 2GMODULE_POWEROFF */
+ .pin_enable = { &gbc_io_1, 2, OCGPIO_CFG_INVERT },
+ /* EC_2GMODULE_PWR_ON */
+ .pin_pwr_en = { &gbc_io_1, 1, OCGPIO_CFG_INVERT },
+ },
+ .pin_ant_sw = {},
+};
+
+// RFFE IO EXPANDERS
+S_OCGPIO_Cfg debug_fe_ioexpanderx18 = {
+ .port = &fe_ch1_gain_io,
+};
+
+S_OCGPIO_Cfg debug_fe_ioexpanderx1C = {
+ .port = &fe_ch2_gain_io,
+};
+
+S_OCGPIO_Cfg debug_fe_ioexpanderx1B = {
+ .port = &fe_watchdog_io,
+};
+
+S_OCGPIO_Cfg debug_fe_ioexpanderx1A = {
+ .port = &fe_ch1_lna_io,
+};
+
+S_OCGPIO_Cfg debug_fe_ioexpanderx1D = {
+ .port = &fe_ch2_lna_io,
+};
+
+//FE Factory config
+const ADT7481_Config fact_fe_ch1_adt7481_cfg = {
+ .lowlimit = -20,
+ .highlimit = 80,
+ .critlimit = 85,
+};
+
+const INA226_Config fact_fe_ch1_ps_cfg = {
+ .current_lim = 2000,
+};
+
+const ADT7481_Config fact_fe_ch2_adt7481_cfg = {
+ .lowlimit = -20,
+ .highlimit = 80,
+ .critlimit = 85,
+};
+
+const INA226_Config fact_fe_ch2_ps_cfg = {
+ .current_lim = 2000,
+};
+
+const DATR5APP_Config fact_ch1_tx_gain_cfg = {
+ .attenuation = INT16_MAX, /* Default to max attenuation */
+};
+
+const DATR5APP_Config fact_ch1_rx_gain_cfg = {
+ .attenuation = INT16_MAX, /* Default to max attenuation */
+};
+
+const DATR5APP_Config fact_ch2_tx_gain_cfg = {
+ .attenuation = INT16_MAX, /* Default to max attenuation */
+};
+
+const DATR5APP_Config fact_ch2_rx_gain_cfg = {
+ .attenuation = INT16_MAX, /* Default to max attenuation */
+};
+
+const FE_Band_Cfg fact_ch1_band_cfg = {
+ .band = RFFE_BAND8_900,
+};
+
+const FE_Band_Cfg fact_ch2_band_cfg = {
+ .band = RFFE_BAND8_900,
+};
\ No newline at end of file
diff --git a/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_GBC.c b/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_GBC.c
new file mode 100644
index 0000000000..02a4c1dcda
--- /dev/null
+++ b/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_GBC.c
@@ -0,0 +1,568 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/global/ocmp_frame.h"
+#include "common/inc/ocmp_wrappers/ocmp_ina226.h"
+#include "common/inc/ocmp_wrappers/ocmp_ltc4015.h"
+#include "common/inc/ocmp_wrappers/ocmp_ltc4274.h"
+#include "common/inc/ocmp_wrappers/ocmp_se98a.h"
+#include "common/inc/ocmp_wrappers/ocmp_debugi2c.h"
+#include "common/inc/global/OC_CONNECT1.h"
+#include "drivers/GpioSX1509.h"
+#include "inc/devices/debug_ocgpio.h"
+#include "inc/devices/debug_oci2c.h"
+#include "inc/devices/debug_ocmdio.h"
+#include "inc/devices/ext_battery.h" /* Just for battery resistor configs */
+#include "inc/devices/int_battery.h"
+#include "inc/subsystem/hci/hci.h"
+#include "inc/subsystem/bms/bms.h"
+#include "inc/subsystem/gpp/gpp.h"
+#include "inc/subsystem/power/power.h"
+#include "inc/devices/eth_sw.h"
+#include "inc/devices/eeprom.h"
+#include
+#include
+
+SCHEMA_IMPORT OcGpio_Port ec_io;
+SCHEMA_IMPORT OcGpio_Port gbc_io_0;
+SCHEMA_IMPORT OcGpio_Port gbc_io_1;
+SCHEMA_IMPORT const Driver_fxnTable LTC4274_fxnTable;
+
+/* These are terrible pin names, but they match the net names... */
+OcGpio_Pin pin_inven_eeprom_wp = { &gbc_io_0, 1, OCGPIO_CFG_OUT_OD_NOPULL };
+OcGpio_Pin pin_s_id_eeprom_wp = { &gbc_io_0, 2, OCGPIO_CFG_OUT_OD_NOPULL };
+OcGpio_Pin pin_tempsen_evt1 = { &gbc_io_0, 4 };
+OcGpio_Pin pin_tempsen_evt2 = { &gbc_io_0, 5 };
+OcGpio_Pin pin_tempsen_evt3 = { &gbc_io_0, 6 };
+OcGpio_Pin pin_tempsen_evt4 = { &gbc_io_0, 7 };
+OcGpio_Pin pin_tempsen_evt5 = { &gbc_io_0, 8 };
+OcGpio_Pin eth_sw_tiva_intn = { &gbc_io_0, 11 };
+
+/*****************************************************************************
+ * EEPROM CONFIG
+ *****************************************************************************/
+Eeprom_Cfg eeprom_gbc_sid = {
+ .i2c_dev = { OC_CONNECT1_I2C7, 0x51 },
+ .pin_wp = &pin_s_id_eeprom_wp,
+ .type = CAT24C256,
+ .ss = OC_SS_SYS,
+};
+
+Eeprom_Cfg eeprom_gbc_inv = {
+ .i2c_dev = { OC_CONNECT1_I2C7, 0x50 },
+ .pin_wp = &pin_inven_eeprom_wp,
+ .type = CAT24C256,
+ .ss = OC_SS_SYS,
+};
+
+/*****************************************************************************
+ * SYSTEM CONFIG
+ *****************************************************************************/
+/* Power SubSystem Config */
+//Lead Acid Temperature sensor.
+SE98A_Dev gbc_pwr_lead_acid_ts = {
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C1,
+ .slave_addr = PWR_LEAD_ACID_BATT_DEV_TEMP_SENS_ADDR
+ },
+ .pin_evt = &pin_tempsen_evt1,
+ },
+ .obj = {},
+};
+
+//Lead acid battery charge controller.
+LTC4015_Dev gbc_pwr_ext_bat_charger = {
+ .cfg = {
+ .i2c_dev = {
+ .bus = OC_CONNECT1_I2C0,
+ .slave_addr = 0x68, /* LTC4015 I2C address in 7-bit format */
+ },
+ .chem = LTC4015_CHEM_LEAD_ACID,
+ .r_snsb = PWR_EXT_BATT_RSNSB,
+ .r_snsi = PWR_EXT_BATT_RSNSI,
+ .cellcount = 6,
+ .pin_lt4015_i2c_sel = { &gbc_io_1, 4, OCGPIO_CFG_OUT_OD_NOPULL },
+ .pin_alert = &(OcGpio_Pin){ &ec_io,
+ OC_EC_PWR_LACID_ALERT },
+ },
+ .obj = {},
+ };
+
+//Lithium ion battery charge controller.
+LTC4015_Dev gbc_pwr_int_bat_charger = {
+ .cfg = {
+ .i2c_dev = {
+ .bus = OC_CONNECT1_I2C0,
+ .slave_addr = 0x68, /* LTC4015 I2C address in 7-bit format */
+ },
+ .chem = LTC4015_CHEM_LI_ION,
+ .r_snsb = PWR_INT_BATT_RSNSB,
+ .r_snsi = PWR_INT_BATT_RSNSI,
+ .cellcount = 3,
+ .pin_lt4015_i2c_sel = { &gbc_io_1, 4, OCGPIO_CFG_OUT_OD_NOPULL },
+ .pin_alert = &(OcGpio_Pin){ &ec_io, OC_EC_PWR_LION_ALERT },
+ },
+ .obj = {},
+};
+
+//Power Source Equipment
+LTC4274_Dev gbc_pwr_pse = {
+ .cfg = {
+ .i2c_dev = {
+ .bus = OC_CONNECT1_I2C8,
+ .slave_addr = 0x2F, /* LTC4274 I2C address in 7-bit format */
+ },
+ .pin_evt = &(OcGpio_Pin){ &ec_io,
+ OC_EC_GBC_PSE_ALERT },
+ .reset_pin ={ &ec_io, OC_EC_PWR_PSE_RESET },
+ },
+ .obj = {},
+};
+
+//Power Device
+LTC4275_Dev gbc_pwr_pd = {
+ .cfg = {
+ .pin_evt = &(OcGpio_Pin){ &ec_io,
+ OC_EC_PD_PWRGD_ALERT },
+ .pin_detect = &(OcGpio_Pin){ &ec_io,
+ OC_EC_PWR_PD_NT2P },
+
+ },
+ .obj = {},
+ };
+
+//Power Source
+PWRSRC_Dev gbc_pwr_powerSource = { /*Added as a place holder for now.*/
+ .cfg = {
+ /* SOLAR_AUX_PRSNT_N */
+ .pin_solar_aux_prsnt_n = { &ec_io, OC_EC_PWR_PRSNT_SOLAR_AUX },
+ /* POE_PRSNT_N */
+ .pin_poe_prsnt_n = { &ec_io, OC_EC_PWR_PRSNT_POE },
+ /* INT_BAT_PRSNT */
+ .pin_int_bat_prsnt = { &gbc_io_0, 11 },
+ /* EXT_BAT_PRSNT */
+ .pin_ext_bat_prsnt = { &gbc_io_0, 12 },
+ },
+ .obj = {},
+};
+
+/* BMS SubSystem Config */
+//EC Power sensor for 12V rail.
+INA226_Dev gbc_bms_ec_ps_12v = {
+ /* 12V Power Sensor */
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C6,
+ .slave_addr = BMS_EC_CURRENT_SENSOR_12V_ADDR,
+ },
+ .pin_alert = &(OcGpio_Pin){ &ec_io,
+ OC_EC_GBC_INA_ALERT },
+ },
+};
+
+//EC Power sensor for 3.3V rail.
+INA226_Dev gbc_bms_ec_ps_3p3v = {
+ /* 3.3V Power Sensor */
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C7,
+ .slave_addr = BMS_EC_CURRENT_SENSOR_3P3V_ADDR,
+ },
+ .pin_alert = &(OcGpio_Pin){ &ec_io,
+ OC_EC_GBC_INA_ALERT },
+ },
+};
+
+// EC Temperature sensor.
+SE98A_Dev gbc_bms_ec_ts = {
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C1,
+ .slave_addr = BMS_EC_TEMP_SENSOR_ADDR
+ },
+ .pin_evt = &pin_tempsen_evt2,
+ },
+ .obj = {},
+};
+
+/* HCI SubSystem Config */
+// Buzzer
+HciBuzzer_Cfg gbc_hci_buzzer = {
+ .pin_en = { &gbc_io_0, 10, OCGPIO_CFG_OUT_OD_NOPULL },
+};
+
+/* Ethernet Subsystem Config */
+Eth_Sw_Cfg g_eth_cfg = {
+ .pin_evt = NULL,
+ .pin_ec_ethsw_reset = { &ec_io, OC_EC_ETH_SW_RESET },
+ .eth_switch = {},
+};
+
+//PORT 0
+Eth_cfg gbc_eth_port0 = {
+ .eth_sw_cfg = &g_eth_cfg,
+ .eth_sw_port = PORT0,
+};
+
+//PORT 1
+Eth_cfg gbc_eth_port1 = {
+ .eth_sw_cfg = &g_eth_cfg,
+ .eth_sw_port = PORT1,
+};
+
+//PORT 2
+Eth_cfg gbc_eth_port2 = {
+ .eth_sw_cfg = &g_eth_cfg,
+ .eth_sw_port = PORT2,
+};
+
+//PORT 3
+Eth_cfg gbc_eth_port3 = {
+ .eth_sw_cfg = &g_eth_cfg,
+ .eth_sw_port = PORT3,
+};
+
+//PORT 4
+Eth_cfg gbc_eth_port4 = {
+ .eth_sw_cfg = &g_eth_cfg,
+ .eth_sw_port = PORT4,
+};
+
+/* GPP Subsystem Config*/
+//EC Power sensor for 12V rail.
+INA226_Dev gbc_gpp_ap_ps = {
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C6,
+ .slave_addr = GPP_AP_CURRENT_SENSOR_ADDR,
+ },
+ .pin_alert = &(OcGpio_Pin){ &ec_io,
+ OC_EC_GBC_AP_INA_ALERT },
+ },
+};
+
+// AP Temperature sensor
+SE98A_Dev gbc_gpp_ap_ts1 = {
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C1,
+ .slave_addr = GPP_AP_TEMPSENS1_ADDR
+ },
+ .pin_evt = &pin_tempsen_evt3,
+ },
+ .obj = {},
+};
+
+SE98A_Dev gbc_gpp_ap_ts2 = {
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C1,
+ .slave_addr = GPP_AP_TEMPSENS2_ADDR
+ },
+ .pin_evt = &pin_tempsen_evt5,
+ },
+ .obj = {},
+};
+
+SE98A_Dev gbc_gpp_ap_ts3 = {
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C1,
+ .slave_addr = GPP_AP_TEMPSENS3_ADDR
+ },
+ .pin_evt = &pin_tempsen_evt4,
+ },
+ .obj = {},
+};
+
+//mSATA power sensor
+INA226_Dev gbc_gpp_msata_ps = {
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C6,
+ .slave_addr = GPP_MSATA_CURRENT_SENSOR_ADDR,
+ },
+ .pin_alert = &(OcGpio_Pin){ &ec_io,
+ OC_EC_GBC_AP_INA_ALERT },
+ },
+};
+
+Gpp_gpioCfg gbc_gpp_gpioCfg = (Gpp_gpioCfg){
+ /* SOC_PLTRST_N */
+ .pin_soc_pltrst_n = { &ec_io, OC_EC_GPP_SOC_PLTRST },
+ /* TIVA_SOC_GPIO2 */
+ .pin_ap_boot_alert1 = { &ec_io, OC_EC_GPP_AP_BM_1 },
+ /* TIVA_SOC_GPIO3 */
+ .pin_ap_boot_alert2 = { &ec_io, OC_EC_GPP_AP_BM_2 },
+ /* SOC_COREPWROK */
+ .pin_soc_corepwr_ok = { &ec_io, OC_EC_GPP_PMIC_CORE_PWR },
+ /* MSATA_EC_DAS */
+ .pin_msata_ec_das = { &ec_io, OC_EC_GPP_MSATA_DAS },
+ /* LT4256_EC_PWRGD */
+ .pin_lt4256_ec_pwrgd = { &ec_io, OC_EC_GPP_PWRGD_PROTECTION },
+ /* AP_12V_ONOFF */
+ .pin_ap_12v_onoff = { &ec_io, OC_EC_GPP_PMIC_CTRL },
+ /* EC_RESET_TO_PROC */
+ .pin_ec_reset_to_proc = { &ec_io, OC_EC_GPP_RST_TO_PROC },
+};
+
+/* Debug Subsystem Config.*/
+//I2C Bus
+S_I2C_Cfg debug_I2C0 = {
+ .bus = OC_CONNECT1_I2C0,
+};
+
+S_I2C_Cfg debug_I2C1 = {
+ .bus = OC_CONNECT1_I2C1,
+};
+
+S_I2C_Cfg debug_I2C2 = {
+ .bus = OC_CONNECT1_I2C2,
+};
+
+S_I2C_Cfg debug_I2C3 = {
+ .bus = OC_CONNECT1_I2C3,
+};
+
+S_I2C_Cfg debug_I2C4 = {
+ .bus = OC_CONNECT1_I2C4,
+};
+
+S_I2C_Cfg debug_I2C6 = {
+ .bus = OC_CONNECT1_I2C6,
+};
+
+S_I2C_Cfg debug_I2C7 = {
+ .bus = OC_CONNECT1_I2C7,
+};
+
+S_I2C_Cfg debug_I2C8 = {
+ .bus = OC_CONNECT1_I2C8,
+};
+
+// MDIO PORTS
+S_MDIO_Cfg debug_mdio_phyport0 = {
+ .port = OC_CONNECT1_PHYPORT0,
+};
+
+S_MDIO_Cfg debug_mdio_phyport1 = {
+ .port = OC_CONNECT1_PHYPORT1,
+};
+
+S_MDIO_Cfg debug_mdio_phyport2 = {
+ .port = OC_CONNECT1_PHYPORT2,
+};
+
+S_MDIO_Cfg debug_mdio_phyport3 = {
+ .port = OC_CONNECT1_PHYPORT3,
+};
+
+S_MDIO_Cfg debug_mdio_phyport4 = {
+ .port = OC_CONNECT1_PHYPORT4,
+};
+
+S_MDIO_Cfg debug_mdio_global2 = {
+ .port = OC_CONNECT1_GLOBAL2,
+};
+
+S_MDIO_Cfg debug_mdio_swport0 = {
+ .port = OC_CONNECT1_SWPORT0,
+};
+
+S_MDIO_Cfg debug_mdio_swport1 = {
+ .port = OC_CONNECT1_SWPORT1,
+};
+
+S_MDIO_Cfg debug_mdio_swport2 = {
+ .port = OC_CONNECT1_SWPORT2,
+};
+
+S_MDIO_Cfg debug_mdio_swport3 = {
+ .port = OC_CONNECT1_SWPORT3,
+};
+
+S_MDIO_Cfg debug_mdio_swport4 = {
+ .port = OC_CONNECT1_SWPORT4,
+};
+
+S_MDIO_Cfg debug_mdio_swport5 = {
+ .port = OC_CONNECT1_SWPORT5,
+};
+
+S_MDIO_Cfg debug_mdio_swport6 = {
+ .port = OC_CONNECT1_SWPORT0,
+};
+
+S_MDIO_Cfg debug_mdio_global1 = {
+ .port = OC_CONNECT1_GLOBAL1,
+};
+
+//Native GPIO
+S_OCGPIO_Cfg debug_ec_gpio_pa = {
+ .port = &ec_io,
+ .group = PA,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pb = {
+ .port = &ec_io,
+ .group = PB,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pc = {
+ .port = &ec_io,
+ .group = PC,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pd = {
+ .port = &ec_io,
+ .group = PD,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pe = {
+ .port = &ec_io,
+ .group = PE,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pf = {
+ .port = &ec_io,
+ .group = PF,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pg = {
+ .port = &ec_io,
+ .group = PG,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_ph = {
+ .port = &ec_io,
+ .group = PH,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pj = {
+ .port = &ec_io,
+ .group = PJ,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pk = {
+ .port = &ec_io,
+ .group = PK,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pl = {
+ .port = &ec_io,
+ .group = PL,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pm = {
+ .port = &ec_io,
+ .group = PM,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pn = {
+ .port = &ec_io,
+ .group = PN,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pp = {
+ .port = &ec_io,
+ .group = PP,
+};
+
+S_OCGPIO_Cfg debug_ec_gpio_pq = {
+ .port = &ec_io,
+ .group = PQ,
+};
+
+// GBC IO EXPANDERS
+S_OCGPIO_Cfg debug_gbc_ioexpanderx70 = {
+ .port = &gbc_io_1,
+};
+
+S_OCGPIO_Cfg debug_gbc_ioexpanderx71 = {
+ .port = &gbc_io_0,
+};
+
+
+/* Factory Configuration for the Devices*/
+//Power Factory Config.
+const SE98A_Config fact_bc_se98a = {
+ .lowlimit = -20,
+ .highlimit = 75,
+ .critlimit = 80,
+};
+
+const LTC4015_Config fact_leadAcid_cfg = {
+ .batteryVoltageLow = 9500,
+ .batteryVoltageHigh = 13800,
+ .batteryCurrentLow = 100,
+ .inputVoltageLow = 16200,
+ .inputCurrentHigh = 17000,
+ .inputCurrentLimit = 16500,
+ .icharge = 10660,
+ .vcharge = 12000,
+};
+
+const LTC4015_Config fact_lithiumIon_cfg = {
+ .batteryVoltageLow = 9500,
+ .batteryVoltageHigh = 12600,
+ .batteryCurrentLow = 100,
+ .inputVoltageLow = 16200,
+ .inputCurrentHigh = 5000,
+ .inputCurrentLimit = 5570,
+};
+
+const LTC4274_Config fact_ltc4274_cfg = {
+ .operatingMode = LTC4274_AUTO_MODE,
+ .detectEnable = LTC4274_DETECT_ENABLE,
+ .interruptMask = LTC4274_INTERRUPT_MASK,
+ .interruptEnable = true,
+ .pseHpEnable = LTC4274_HP_ENABLE,
+};
+
+//BMS factory config.
+const SE98A_Config fact_ec_se98a_cfg = {
+ .lowlimit = -20,
+ .highlimit = 75,
+ .critlimit = 80,
+};
+
+const INA226_Config fact_ec_12v_ps_cfg = {
+ .current_lim = 1000,
+};
+
+const INA226_Config fact_ec_3v_ps_cfg = {
+ .current_lim = 1000,
+};
+
+//GPP fact config
+const SE98A_Config fact_ap_se98a_ts1_cfg = {
+ .lowlimit = -20,
+ .highlimit = 75,
+ .critlimit = 80,
+};
+
+const SE98A_Config fact_ap_se98a_ts2_cfg = {
+ .lowlimit = -20,
+ .highlimit = 75,
+ .critlimit = 80,
+};
+
+const SE98A_Config fact_ap_se98a_ts3_cfg = {
+ .lowlimit = -20,
+ .highlimit = 75,
+ .critlimit = 80,
+};
+
+const INA226_Config fact_ap_3v_ps_cfg = {
+ .current_lim = 1500,
+};
+
+const INA226_Config fact_msata_3v_ps_cfg = {
+ .current_lim = 1500,
+};
\ No newline at end of file
diff --git a/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_LED.c b/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_LED.c
new file mode 100644
index 0000000000..42071d7f07
--- /dev/null
+++ b/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_LED.c
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/global/OC_CONNECT1.h"
+#include "common/inc/ocmp_wrappers/ocmp_se98a.h"
+#include "inc/subsystem/hci/hci.h"
+
+SCHEMA_IMPORT OcGpio_Port ec_io;
+SCHEMA_IMPORT OcGpio_Port sync_io;
+/*****************************************************************************
+ * SYSTEM CONFIG
+ *****************************************************************************/
+//LED Temperature sensor
+SE98A_Dev led_hci_ts = {
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C8,
+ .slave_addr = HCI_LED_TEMP_SENSOR_ADDR
+ },
+ .pin_evt = NULL,
+ },
+ .obj = {},
+};
+
+//LED IO Expander
+HciLedCfg led_hci_ioexp ={
+ .sx1509_dev[HCI_LED_DRIVER_LEFT] = {
+ .bus = OC_CONNECT1_I2C8,
+ .slave_addr = LED_SX1509_LEFT_ADDRESS,
+ },
+ .sx1509_dev[HCI_LED_DRIVER_RIGHT] = {
+ .bus = OC_CONNECT1_I2C8,
+ .slave_addr = LED_SX1509_RIGHT_ADDRESS,
+ },
+ /* EC_GPIO */
+ .pin_ec_gpio = { &ec_io, OC_EC_HCI_LED_RESET },
+};
+
+//HCI factory Config
+const SE98A_Config fact_led_se98a_cfg = {
+ .lowlimit = -20,
+ .highlimit = 75,
+ .critlimit = 80,
+};
\ No newline at end of file
diff --git a/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_SDR.c b/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_SDR.c
new file mode 100644
index 0000000000..77a338d3ec
--- /dev/null
+++ b/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_SDR.c
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/ocmp_wrappers/ocmp_adt7481.h"
+#include "common/inc/ocmp_wrappers/ocmp_ina226.h"
+#include "common/inc/global/OC_CONNECT1.h"
+#include "inc/subsystem/sdr/sdr.h"
+#include "inc/devices/debug_ocgpio.h"
+
+SCHEMA_IMPORT OcGpio_Port ec_io;
+SCHEMA_IMPORT OcGpio_Port sdr_fx3_io;
+/*****************************************************************************
+ * EEPROM CONFIG
+ *****************************************************************************/
+Eeprom_Cfg eeprom_sdr_inv = {
+ .i2c_dev = { OC_CONNECT1_I2C3, 0x50 },
+ /* .pin_wp = &(OcGpio_Pin){ &sdr_eeprom_wp_io, 0 }, */
+ .pin_wp = NULL, /* IO Expander disabled on rev c */
+ .type = CAT24C256,
+ .ss = OC_SS_SDR,
+};
+/*****************************************************************************
+ * SYSTEM CONFIG
+ *****************************************************************************/
+/* SDR Subsystem Config.*/
+// SDR FPGA power sensor.
+INA226_Dev sdr_fpga_ps = {
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C3,
+ .slave_addr = SDR_FPGA_CURRENT_SENSOR_ADDR,
+ },
+ .pin_alert = &(OcGpio_Pin){ &ec_io,
+ OC_EC_SDR_FPGA_TEMP_INA_ALERT },
+ },
+};
+
+//SDR FPGA temperature sensor
+I2C_Dev sdr_fpga_ts = {
+ .bus = OC_CONNECT1_I2C3,
+ .slave_addr = SDR_FPGA_TEMP_SENSOR_ADDR,
+};
+
+//SDR EEPROM
+void* sdr_eeprom_inventory = &eeprom_sdr_inv;
+
+//SDR Power sensor
+INA226_Dev sdr_ps = {
+ .cfg = {
+ .dev = {
+ .bus = OC_CONNECT1_I2C6,
+ .slave_addr = SDR_CURRENT_SENSOR_ADDR,
+ },
+ .pin_alert = &(OcGpio_Pin){ &ec_io,
+ OC_EC_SDR_INA_ALERT },
+ },
+};
+
+// SDR IO EXPANDERS
+S_OCGPIO_Cfg debug_sdr_ioexpanderx1E = {
+ .port = &sdr_fx3_io,
+};
+
+//SDR Factory config
+const INA226_Config fact_sdr_3v_ps_cfg = {
+ .current_lim = 3000,
+};
+
+const ADT7481_Config fact_sdr_fpga_adt7481_cfg = {
+ .lowlimit = -20,
+ .highlimit = 75,
+ .critlimit = 85,
+};
+
+const INA226_Config fact_sdr_fpga_ps_cfg = {
+ .current_lim = 500,
+};
+
+Sdr_gpioCfg sdr_gpioCfg = (Sdr_gpioCfg) {
+ /* EC_TRXFECONN_GPIO2/SDR_REG_LDO_PGOOD */
+ .pin_sdr_reg_ldo_pgood = { &ec_io, OC_EC_SDR_PWR_GD },
+ /* TRXFE_12V_ONOFF */
+ .pin_trxfe_12v_onoff = { &ec_io, OC_EC_SDR_PWR_CNTRL },
+ /* EC_FE_RESET_OUT/RF_FE_IO_RESET */
+ .pin_rf_fe_io_reset = { &ec_io, OC_EC_SDR_FE_IO_RESET_CTRL },
+ /* EC_TRXFECONN_GPIO1/SDR_RESET_IN */
+ .pin_sdr_reset_in = { &ec_io, OC_EC_SDR_DEVICE_CONTROL },
+ /* EC_TRXFE_RESET */
+ .pin_ec_trxfe_reset = { &ec_io, OC_EC_RFFE_RESET },
+ /* FX3_RESET */
+ .pin_fx3_reset = { &sdr_fx3_io, 0 },
+};
diff --git a/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_SYNC.c b/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_SYNC.c
new file mode 100644
index 0000000000..dd10ab4141
--- /dev/null
+++ b/firmware/ec/platform/oc-sdr/cfg/OC_CONNECT_SYNC.c
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/global/OC_CONNECT1.h"
+#include "common/inc/ocmp_wrappers/ocmp_adt7481.h"
+#include "inc/subsystem/obc/obc.h"
+#include "inc/subsystem/sync/sync.h"
+#include "inc/devices/debug_ocgpio.h"
+
+SCHEMA_IMPORT OcGpio_Port ec_io;
+SCHEMA_IMPORT OcGpio_Port sync_io;
+/*****************************************************************************
+ * SYSTEM CONFIG
+ *****************************************************************************/
+/* OBC Subsystem Config.*/
+//Irridium
+Iridium_Cfg obc_irridium = {
+ .uart = OC_CONNECT1_UARTXR0,
+ /* IRIDIUM_RSTIOEXP */
+ .pin_enable = { &sync_io, 2, OCGPIO_CFG_OUT_STD },
+ /* R_NW_AVAIL */
+ .pin_nw_avail = { &sync_io, 3, OCGPIO_CFG_IN_PU },
+};
+
+/* Sync Subsystem Config.*/
+//Temperature sensor.
+I2C_Dev sync_gps_ts = {
+ .bus = OC_CONNECT1_I2C7,
+ .slave_addr = SYNC_TEMP_SENSOR_ADDR,
+};
+
+I2C_Dev sync_gps_io = {
+ .bus = OC_CONNECT1_I2C7,
+ .slave_addr = SYNC_IO_DEVICE_ADDR,
+};
+
+// SYNC IO EXPANDERS
+S_OCGPIO_Cfg debug_sync_ioexpanderx71 = {
+ .port = &sync_io,
+};
+
+//Sync Factory config
+const ADT7481_Config fact_sync_ts_cfg = {
+ .lowlimit = -20,
+ .highlimit = 80,
+ .critlimit = 85,
+};
+
+Sync_gpioCfg sync_gpiocfg = (Sync_gpioCfg){
+ /* SPDT_CNTRL_LVL */
+ .pin_spdt_cntrl_lvl = { &sync_io, 0, OCGPIO_CFG_OUT_OD_NOPULL },
+ /* WARMUP_SURVEY_INIT_SEL */
+ .pin_warmup_survey_init_sel = { &sync_io, 1, OCGPIO_CFG_OUT_OD_NOPULL },
+ /* R_PHASE_LOCK_IOEXP */
+ .pin_r_phase_lock_ioexp = { &sync_io, 4, OCGPIO_CFG_IN_PU },
+ /* R_LOCK_OK_IOEXP */
+ .pin_r_lock_ok_ioexp = { &sync_io, 5, OCGPIO_CFG_IN_PU },
+ /* R_ALARM_IOEXP */
+ .pin_r_alarm_ioexp = { &sync_io, 6, OCGPIO_CFG_IN_PU },
+ /* 12V_REG_ENB */
+ .pin_12v_reg_enb = { &sync_io, 7, OCGPIO_CFG_OUT_STD },
+ /* TEMP_ALERT */
+ .pin_temp_alert = { &sync_io, 8, OCGPIO_CFG_IN_PU },
+ /* SPDT_CNTRL_LTE_CPU_GPS_LVL */
+ .pin_spdt_cntrl_lte_cpu_gps_lvl = { &sync_io, 9, OCGPIO_CFG_OUT_OD_NOPULL },
+ /* INIT_SURVEY_SEL */
+ .pin_init_survey_sel = { &sync_io, 10, OCGPIO_CFG_OUT_OD_NOPULL },
+ /* EC_SYNC_RESET */
+ .pin_ec_sync_reset = { &ec_io, OC_EC_SYNC_RESET },
+};
+
+Obc_gpioCfg sync_obc_gpiocfg = {
+ /* 12V_REG_ENB */
+ .pin_pwr_en = &(OcGpio_Pin){ &sync_io, 7, OCGPIO_CFG_OUT_STD },
+};
\ No newline at end of file
diff --git a/firmware/ec/platform/oc-sdr/schema.c b/firmware/ec/platform/oc-sdr/schema.c
deleted file mode 100644
index 27f15ff4a9..0000000000
--- a/firmware/ec/platform/oc-sdr/schema.c
+++ /dev/null
@@ -1,1209 +0,0 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
-#include "OC_CONNECT1.h"
-#include "schema.h"
-#include "src/registry/Framework.h"
-
-/* Framework-provided drivers */
-#include "inc/devices/eth_sw.h"
-#include "inc/devices/ocmp_wrappers/ocmp_adt7481.h"
-#include "inc/devices/ocmp_wrappers/ocmp_dat-xxr5a-pp.h"
-#include "inc/devices/ocmp_wrappers/ocmp_eth_sw.h"
-#include "inc/devices/ocmp_wrappers/ocmp_ina226.h"
-#include "inc/devices/ocmp_wrappers/ocmp_i2c.h"
-#include "inc/devices/ocmp_wrappers/ocmp_led.h"
-#include "inc/devices/ocmp_wrappers/ocmp_ltc4015.h"
-#include "inc/devices/ocmp_wrappers/ocmp_ltc4274.h"
-#include "inc/devices/ocmp_wrappers/ocmp_ltc4275.h"
-#include "inc/devices/ocmp_wrappers/ocmp_ocgpio.h"
-#include "inc/devices/ocmp_wrappers/ocmp_powerSource.h"
-#include "inc/devices/ocmp_wrappers/ocmp_se98a.h"
-#include "inc/devices/ltc4274.h"
-
-#include "inc/subsystem/bms/bms.h" /* Temporary - for sharing bms config */
-#include "inc/subsystem/ethernet/ethernetSS.h"
-#include "inc/subsystem/hci/hci.h" /* Temporary - for sharing hci config */
-#include "inc/subsystem/gpp/gpp.h" /* Temporary - for sharing gpp config */
-#include "inc/subsystem/obc/obc.h"
-#include "inc/subsystem/power/power.h" /* Temporary - for sharing power config */
-#include "inc/subsystem/sdr/sdr.h" /* Temporary - for sharing sdr config */
-#include "inc/subsystem/rffe/rffe.h" /* Temporary - for sharing fe config */
-#include "inc/subsystem/rffe/rffe_powermonitor.h" /* For driver export */
-#include "inc/subsystem/sync/sync.h" /* Temporary - for sharing sdr config */
-#include "inc/subsystem/sys/sys.h"
-#include "inc/subsystem/testModule/testModule.h"
-
-extern OcGpio_Port ec_io;
-extern OcGpio_Port gbc_io_0;
-extern OcGpio_Port gbc_io_1;
-extern OcGpio_Port sdr_fx3_io;
-extern OcGpio_Port fe_ch1_gain_io;
-extern OcGpio_Port fe_ch2_gain_io ;
-extern OcGpio_Port fe_ch1_lna_io;
-extern OcGpio_Port fe_ch2_lna_io;
-extern OcGpio_Port fe_watchdog_io;
-extern OcGpio_Port sync_io;
-
-extern OCSubsystem ssSystem;
-extern OCSubsystem ssPower;
-extern OCSubsystem ssBms;
-extern OCSubsystem ssHci;
-extern OCSubsystem ssEth;
-extern OCSubsystem ssObc;
-extern OCSubsystem ssGpp;
-extern OCSubsystem ssSdr;
-extern OCSubsystem ssRf;
-extern OCSubsystem ssSync;
-extern OCSubsystem ssTestmod;
-extern OCSubsystem ssDbg;
-
-extern Power_Cfg g_power_cfg;
-extern Bms_Cfg g_bms_cfg;
-extern Hci_Cfg g_hci_cfg;
-extern Gpp_Cfg g_gpp_cfg;
-extern Obc_Cfg g_obc_cfg;
-extern Sdr_Cfg g_sdr_cfg;
-extern Fe_Cfg g_fe_cfg;
-extern Sync_Cfg g_sync_cfg;
-extern Eth_Sw_Cfg g_eth_cfg;
-
-extern Eeprom_Cfg eeprom_gbc_sid;
-extern Eeprom_Cfg eeprom_gbc_inv;
-
-const Component sys_schema[SUBSYSTEM_COUNT] = {
- [OC_SS_SYS] = {
- .name = "system",
- .ss = &ssSystem,
- .components = (Component[]){
- {
- .name = "comp_all",
- .driver_cfg = &g_gpp_cfg, /* For reset pin, will revise */
- .components = (Component[]){
- {
- .name = "",
- .driver = &Driver_EepromSID,
- .driver_cfg = &eeprom_gbc_sid,
- },
- {
- .name = "",
- .driver = &Driver_EepromInv,
- .driver_cfg = &eeprom_gbc_inv,
- },
- {
- .name = "",
- .driver = &Driver_MAC,
- },
- {}
- },
- .commands = {
- [OCMP_AXN_TYPE_RESET] = &(Command){
- .name = "reset",
- .cb_cmd = SYS_cmdReset,
- },
- [OCMP_AXN_TYPE_ECHO] = &(Command){
- .name = "echo",
- .cb_cmd = SYS_cmdEcho,
- },
- &(Command){}
- },
- },
- {}
- },
- },
- [OC_SS_PWR] = {
- .name = "power",
- .ss = &ssPower,
- .components = (Component[]){
- {
- .name = "comp_all",
- .components = (Component[]){
- {
- .name = "powerSource",
- .driver = &PWRSRC,
- .driver_cfg = (void *)&g_power_cfg.powerSource,
- },
- {}
- },
-
- },
- {
- .name = "leadacid_tempsensor",
- .components = (Component[]){
- {
- .name = "ts",
- .driver = &SE98A,
- .driver_cfg = (void *)&g_power_cfg.lead_acid_temp_sens,
- .factory_config = &(SE98A_Config){
- .lowlimit = -20,
- .highlimit = 75,
- .critlimit = 80,
- }
- },
- {}
- }
- },
- {
- .name = "leadacid_battery_charger",
- .components = (Component[]){
- {
- .name = "bc",
- .driver = <C4015,
- .driver_cfg = (void *)&g_power_cfg.ext_bat_charger,
- .factory_config = &(LTC4015_Config){
- .batteryVoltageLow = 9500,
- .batteryVoltageHigh = 13800,
- .batteryCurrentLow = 100,
- .inputVoltageLow = 16200,
- .inputCurrentHigh = 17000,
- .inputCurrentLimit = 16500,
- .icharge = 10660,
- .vcharge = 12000,
- }
- },
- {}
- }
- },
- {
- .name = "lion_battery_charger",
- .components = (Component[]){
- {
- .name = "bc",
- .driver = <C4015,
- .driver_cfg = (void *)&g_power_cfg.int_bat_charger,
- .factory_config = &(LTC4015_Config){
- .batteryVoltageLow = 9500,
- .batteryVoltageHigh = 12600,
- .batteryCurrentLow = 100,
- .inputVoltageLow = 16200,
- .inputCurrentHigh = 5000,
- .inputCurrentLimit = 5570,
- }
- },
- {}
- }
- },
- {
- .name = "PSE",
- .driver = <C4274,
- .driver_cfg = (void *)&g_power_cfg.pse,
- .factory_config = &(LTC4274_Config){
- .operatingMode = LTC4274_AUTO_MODE,
- .detectEnable = LTC4274_DETECT_ENABLE,
- .interruptMask = LTC4274_INTERRUPT_MASK,
- .interruptEnable = true,
- .pseHpEnable = LTC4274_HP_ENABLE,
- }
- },
- {
- .name = "PD",
- .driver = <C4275,
- .driver_cfg = (void *)&g_power_cfg.pd,
- },
- {}
- },
- .ssHookSet = &(SSHookSet){
- .preInitFxn = pwr_pre_init,
- .postInitFxn = pwr_post_init,
- },
- },
- [OC_SS_BMS] = {
- .name = "bms",
- .ss = &ssBms,
- .components = (Component[]){
- {
- .name = "comp_all"
- },
- {
- .name = "ec",
- .components = (Component[]){
- {
- .name = "ts",
- .driver = &SE98A,
- .driver_cfg = &g_bms_cfg.ec_temp_sensor,
- .factory_config = &(SE98A_Config){
- .lowlimit = -20,
- .highlimit = 75,
- .critlimit = 80,
- },
- },
- {
- .name = "12v",
- .driver = &INA226,
- .driver_cfg = &g_bms_cfg.ec_current_sensor_12v,
- .factory_config = &(INA226_Config){
- .current_lim = 1000,
- },
- },
- {
- .name = "3v",
- .driver = &INA226,
- .driver_cfg = &g_bms_cfg.ec_current_sensor_3p3v,
- .factory_config = &(INA226_Config){
- .current_lim = 1500,
- },
- },
- {}
- }
- },
- {}
- },
- },
- [OC_SS_HCI] = {
- .name = "hci",
- .ss = &ssHci,
- .ssHookSet = &(SSHookSet){
- .preInitFxn = HCI_Init,
- .postInitFxn = NULL,
- },
- .components = (Component[]){
- {
- .name = "comp_all"
- },
- {
- .name = "led",
- .components = (Component[]){
- {
- .name = "ts",
- .driver = &SE98A,
- .driver_cfg = &g_hci_cfg.led.temp_sensor,
- .factory_config = &(SE98A_Config){
- .lowlimit = -20,
- .highlimit = 75,
- .critlimit = 80,
- },
- },
- {
- .name = "",
- .driver = &HCI_LED,
- },
- {}
- },
- .commands = {
- [OCMP_AXN_TYPE_SET] = &(Command){
- .name = "set",
- .cb_cmd = led_testpattern_control,
- },
- &(Command){}
- },
- },
- {
- /* TODO: Remove buzzer component if there is no OCMP message
- * required */
- .name = "buzzer",
- },
- {}
- },
- },
- [OC_SS_ETH_SWT] = {
- .name = "Ethernet",
- .ss = &ssEth,
- .components = (Component[]){
- {
- .name = "comp_all",
- },
- {
- .name = "port0",
- .driver = Ð_SW,
- .driver_cfg = &(Eth_cfg){
- .eth_sw_cfg = &g_eth_cfg,
- .eth_sw_port = PORT0,
- }
- },
- {
- .name = "port1",
- .driver = Ð_SW,
- .driver_cfg = &(Eth_cfg){
- .eth_sw_cfg = &g_eth_cfg,
- .eth_sw_port = PORT1,
- }
- },
- {
- .name = "port2",
- .driver = Ð_SW,
- .driver_cfg = &(Eth_cfg){
- .eth_sw_cfg = &g_eth_cfg,
- .eth_sw_port = PORT2,
- }
- },
- {
- .name = "port3",
- .driver = Ð_SW,
- .driver_cfg = &(Eth_cfg){
- .eth_sw_cfg = &g_eth_cfg,
- .eth_sw_port = PORT3,
- }
- },
- {
- .name = "port4",
- .driver = Ð_SW,
- .driver_cfg = &(Eth_cfg){
- .eth_sw_cfg = &g_eth_cfg,
- .eth_sw_port = PORT4,
- }
- },
- {}
- },
- .ssHookSet = &(SSHookSet){
- .preInitFxn = eth_sw_pre_init,
- },
- },
- [OC_SS_OBC] = {
- .name = "obc",
- .ss = &ssObc,
- .ssHookSet = &(SSHookSet){
- .preInitFxn = obc_pre_init,
- },
- .components = (Component[]){
- {
- .name = "comp_all",
- .commands = {
- [OCMP_AXN_TYPE_RESET] = &(Command){
- .name = "reset",
- //.cb_cmd = GPP_ap_Reset,
- },
- &(Command){}
- },
- },
- {
- .name = "iridium",
- .driver = &OBC_Iridium,
- .driver_cfg = &g_obc_cfg.iridium_cfg,
- },
- {}
- },
- },
- [OC_SS_GPP] = {
- .name = "gpp",
- .ss = &ssGpp,
- .components = (Component[]){
- {
- .name = "comp_all",
- .commands = {
- [OCMP_AXN_TYPE_RESET] = &(Command){
- .name = "reset",
- .cb_cmd = GPP_ap_Reset,
- },
- &(Command){}
- },
- },
- {
- .name = "ap",
- .components = (Component[]){
- {
- .name = "ts1",
- .driver = &SE98A,
- .driver_cfg = &g_gpp_cfg.ap.temp_sensor[0],
- .factory_config = &(SE98A_Config){
- .lowlimit = -20,
- .highlimit = 75,
- .critlimit = 80,
- },
- },
- {
- .name = "ts2",
- .driver = &SE98A,
- .driver_cfg = &g_gpp_cfg.ap.temp_sensor[1],
- .factory_config = &(SE98A_Config){
- .lowlimit = -20,
- .highlimit = 75,
- .critlimit = 80,
- },
- },
- {
- .name = "ts3",
- .driver = &SE98A,
- .driver_cfg = &g_gpp_cfg.ap.temp_sensor[2],
- .factory_config = &(SE98A_Config){
- .lowlimit = -20,
- .highlimit = 75,
- .critlimit = 80,
- },
- },
- {
- .name = "3v",
- .driver = &INA226,
- .driver_cfg = &g_bms_cfg.ec_current_sensor_3p3v,
- .factory_config = &(INA226_Config){
- .current_lim = 1500,
- },
- },
- {}
- }
- },
- {
- .name = "msata",
- .components = (Component[]){
- {
- .name = "3v",
- .driver = &INA226,
- .driver_cfg = &g_bms_cfg.ec_current_sensor_3p3v,
- .factory_config = &(INA226_Config){
- .current_lim = 1500,
- },
- },
- {}
- }
- },
- {}
- },
- .ssHookSet = &(SSHookSet){
- .preInitFxn = gpp_pre_init,
- .postInitFxn = gpp_post_init,
- },
- },
- [OC_SS_SDR] = {
- .name = "sdr",
- .ss = &ssSdr,
- .components = (Component[]){
- {
- .name = "comp_all",
- .components = (Component[]){
- {
- .name = "ps",
- .driver = &INA226,
- .driver_cfg = &g_sdr_cfg.current_sensor,
- .factory_config = &(INA226_Config){
- .current_lim = 3000,
- },
- },
- {
- /* TODO: this is pretty hw-specific, I think we can
- * dedupe for the other boards, but I don't think
- * a framework level driver is appropriate (although,
- * a proper OC-DB driver might have us revisit this) */
- /* TODO: "eeprom" makes the CLI command pretty verbose,
- * maybe see about a way of making this better:
- * sdr.comp_all.eeprom.dev_id is kind of long */
- .name = "eeprom",
- .driver_cfg = (void *)OC_SS_SDR,
- .driver = &(Driver){
- .name = "Inventory",
- .status = (Parameter[]){
- { .name = "dev_id", .type = TYPE_STR,
- .size = (OC_SDR_BOARD_INFO_SIZE + 1) },
- {}
- },
- .cb_get_status = Sdr_InventoryGetStatus,
- }
- },
- {}
- },
- .commands = {
- [OCMP_AXN_TYPE_RESET] = &(Command){
- .name = "reset",
- .cb_cmd = SDR_reset,
- },
- &(Command){}
- },
- },
- {
- .name = "fpga",
- .components = (Component[]){
- {
- .name = "ts",
- .driver = &ADT7481,
- .driver_cfg = (void *)&g_sdr_cfg.fpga.temp_sensor,
- .factory_config = &(ADT7481_Config){
- .lowlimit = -20,
- .highlimit = 80,
- .critlimit = 85,
- }
- },
- {
- .name = "ps",
- .driver = &INA226,
- .driver_cfg = &g_sdr_cfg.fpga.current_sensor,
- .factory_config = &(INA226_Config){
- .current_lim = 500,
- },
- },
- {}
- }
- },
- {
- .name = "fx3",
- .commands = {
- [OCMP_AXN_TYPE_RESET] = &(Command){
- .name = "reset",
- .cb_cmd = SDR_fx3Reset,
- },
- &(Command){}
- },
- },
- {}
- },
- .ssHookSet = &(SSHookSet){
- .preInitFxn = SDR_Init,
- .postInitFxn = NULL,
- },
- },
- [OC_SS_RF] = {
- .name = "rffe",
- .ss = &ssRf,
- .components = (Component[]){
- {
- .name = "comp_all",
- .components = (Component[]){
- {
- .name = "eeprom",
- .driver_cfg = (void *)OC_SS_RF,
- .driver = &(Driver){
- .name = "Inventory",
- .status = (Parameter[]){
- { .name = "dev_id", .type = TYPE_STR,
- .size = (OC_RFFE_BOARD_INFO_SIZE + 1) },
- {}
- },
- .cb_get_status = RFFE_InventoryGetStatus,
- }
- },
- {}
- },
- .commands = {
- [OCMP_AXN_TYPE_RESET] = &(Command){
- .name = "reset",
- .cb_cmd = RFFE_reset,
- },
- &(Command){}
- },
- },
- {
- .name = "ch1_sensor",
- .components = (Component[]){
- {
- .name = "ts",
- .driver = &ADT7481,
- .driver_cfg = (void *)&g_fe_cfg.adt7481_ch1,
- .factory_config = &(ADT7481_Config){
- .lowlimit = -20,
- .highlimit = 80,
- .critlimit = 85,
- }
- },
- {
- .name = "ps",
- .driver = &INA226,
- .driver_cfg = &g_fe_cfg.ina226_ch1_5_7v,
- .factory_config = &(INA226_Config){
- .current_lim = 2000,
- },
- },
- {}
- }
- },
- {
- .name = "ch2_sensor",
- .components = (Component[]){
- {
- .name = "ts",
- .driver = &ADT7481,
- .driver_cfg = (void *)&g_fe_cfg.adt7481_ch2,
- .factory_config = &(ADT7481_Config){
- .lowlimit = -20,
- .highlimit = 80,
- .critlimit = 85,
- }
- },
- {
- .name = "ps",
- .driver = &INA226,
- .driver_cfg = &g_fe_cfg.ina226_ch2_5_7v,
- .factory_config = &(INA226_Config){
- .current_lim = 2000,
- },
- },
- {}
- }
- },
- {
- .name = "ch1_fe",
- .driver_cfg = (void *)RFFE_CHANNEL1, /* For en/dis context */
- .components = (Component[]){
- {
- .name = "",
- /* Placeholder driver to let us test the DAT driver */
- .driver = &(Driver){
- .config = (Parameter[]){
- { .name = "band", .type = TYPE_UINT16 },
- { .name = "arfcn", .type = TYPE_UINT16 },
- {}
- },
- },
- },
- {
- .name = "watchdog",
- .driver = &RFFEWatchdog,
- .driver_cfg = &(RfWatchdog_Cfg){
- .pin_alert_lb = &g_fe_cfg.fe_watchdog_cfg.pin_co6_wd,
- .pin_alert_hb = &g_fe_cfg.fe_watchdog_cfg.pin_co5_wd,
- .pin_interrupt = &g_fe_cfg.pin_trxfe_conn_reset,
- }
- },
- {
- .name = "power",
- .driver = &RFPowerMonitor,
- .driver_cfg = &g_fe_cfg.ads7830_ch1,
- },
- {
- .name = "tx",
- .driver = &DATXXR5APP,
- /* this struct should be compatible with the DAT cfg struct */
- .driver_cfg = &g_fe_cfg.fe_ch1_gain_cfg.fe_gain_cfg,
- .factory_config = &(DATR5APP_Config){
- .attenuation = INT16_MAX, /* Default to max attenuation */
- }
- },
- {
- .name = "rx",
- .driver = &DATXXR5APP,
- /* this struct should be compatible with the DAT cfg struct */
- .driver_cfg = &g_fe_cfg.fe_ch1_lna_cfg.fe_lna_cfg,
- .factory_config = &(DATR5APP_Config){
- .attenuation = INT16_MAX, /* Default to max attenuation */
- }
- },
- {}
- },
- .commands = {
- [OCMP_AXN_TYPE_ENABLE] = &(Command){
- .name = "enable",
- .cb_cmd = RFFE_enablePA,
- },
- [OCMP_AXN_TYPE_DISABLE] = &(Command){
- .name = "disable",
- .cb_cmd = RFFE_disablePA,
- },
- &(Command){}
- },
- },
- {
- .name = "ch2_fe",
- .driver_cfg = (void *)RFFE_CHANNEL2, /* For en/dis context */
- .components = (Component[]){
- {
- .name = "",
- /* Placeholder driver to let us test the DAT driver */
- .driver = &(Driver){
- .config = (Parameter[]){
- { .name = "band", .type = TYPE_UINT16 },
- { .name = "arfcn", .type = TYPE_UINT16 },
- {}
- },
- }
- },
- {
- .name = "watchdog",
- .driver = &RFFEWatchdog,
- .driver_cfg = &(RfWatchdog_Cfg){
- .pin_alert_lb = &g_fe_cfg.fe_watchdog_cfg.pin_co3_wd,
- .pin_alert_hb = &g_fe_cfg.fe_watchdog_cfg.pin_co4_wd,
- .pin_interrupt = &g_fe_cfg.pin_trxfe_conn_reset,
- }
- },
- {
- .name = "power",
- .driver = &RFPowerMonitor,
- .driver_cfg = &g_fe_cfg.ads7830_ch2,
- },
- {
- .name = "tx",
- .driver = &DATXXR5APP,
- /* this struct should be compatible with the DAT cfg struct */
- .driver_cfg = &g_fe_cfg.fe_ch2_gain_cfg.fe_gain_cfg,
- .factory_config = &(DATR5APP_Config){
- .attenuation = INT16_MAX, /* Default to max attenuation */
- }
- },
- {
- .name = "rx",
- .driver = &DATXXR5APP,
- /* this struct should be compatible with the DAT cfg struct */
- .driver_cfg = &g_fe_cfg.fe_ch2_lna_cfg.fe_lna_cfg,
- .factory_config = &(DATR5APP_Config){
- .attenuation = INT16_MAX, /* Default to max attenuation */
- }
- },
- {}
- },
- .commands = {
- [OCMP_AXN_TYPE_ENABLE] = &(Command){
- .name = "enable",
- .cb_cmd = RFFE_enablePA,
- },
- [OCMP_AXN_TYPE_DISABLE] = &(Command){
- .name = "disable",
- .cb_cmd = RFFE_disablePA,
- },
- &(Command){}
- },
- },
- {}
- },
- .ssHookSet = &(SSHookSet){
- .preInitFxn = rffe_pre_init,
- .postInitFxn = rffe_post_init,
- },
- },
- [OC_SS_SYNC] = {
- .name = "sync",
- .ss = &ssSync,
- .ssHookSet = &(SSHookSet){
- .preInitFxn = SYNC_Init,
- .postInitFxn = NULL,
- },
- .components = (Component[]){
- {
- .name = "comp_all",
- .commands = {
- [OCMP_AXN_TYPE_RESET] = &(Command){
- .name = "reset",
- .cb_cmd = SYNC_reset,
- },
- &(Command){}
- },
- },
- {
- .name = "gps",
- .driver_cfg = (void *)OC_SS_SYNC,
- .driver = &(Driver){
- .name = "sync_ioexp",
- .status = (Parameter[]){
- {
- .name = "gps_lock",
- .type = TYPE_ENUM,
- .values = (Enum_Map[]){
- {0, "Gps Not Locked" },
- {1, "Gps Locked" },
- {}
- },
- },
- {}
- },
- .cb_get_status = SYNC_GpsStatus,
- }
- },
- {
- .name = "temp_sensor",
- .components = (Component[]){
- {
- .name = "ts",
- .driver = &ADT7481,
- .driver_cfg = (void *)&g_sync_cfg.temp_sens,
- .factory_config = &(ADT7481_Config){
- .lowlimit = -20,
- .highlimit = 80,
- .critlimit = 85,
- }
- },
- {}
- }
- },
- {}
- }
- },
- [OC_SS_TEST_MODULE] = {
- .name = "testmodule",
- .ss = &ssTestmod,
- .components = (Component[]){
- {
- .name = "comp_all",
- .commands = {
- [OCMP_AXN_TYPE_RESET] = &(Command){
- .name = "reset",
- .cb_cmd = TestMod_cmdReset,
- },
- &(Command){}
- },
- },
- {
- .name = "2gsim",
- .driver = &Testmod_G510,
- .commands = {
- [OCMP_AXN_DIS_NETWORK] = &(Command){
- .name = "disconnect",
- .cb_cmd = TestMod_cmdDisconnect,
- },
- [OCMP_AXN_CONN_NETWORK] = &(Command){
- .name = "connect",
- .cb_cmd = TestMod_cmdConnect,
- },
- [OCMP_AXN_SEND_SMS] = &(Command){
- .name = "send",
- .cb_cmd = TestMod_cmdSendSms,
- },
- [OCMP_AXN_DIAL_NUMBER] = &(Command){
- .name = "dial",
- .cb_cmd = TestMod_cmdDial,
- },
- [OCMP_AXN_ANSWER] = &(Command){
- .name = "answer",
- .cb_cmd = TestMod_cmdAnswer,
- },
- [OCMP_AXN_HANGUP] = &(Command){
- .name = "hangup",
- .cb_cmd = TestMod_cmdHangup,
- },
- [OCMP_AXN_TYPE_ENABLE] = &(Command){
- .name = "enable",
- .cb_cmd = TestMod_cmdEnable,
- },
- [OCMP_AXN_TYPE_DISABLE] = &(Command){
- .name = "disable",
- .cb_cmd = TestMod_cmdDisable,
- },
- &(Command){}
- },
- },
- {}
- }
- },
- [OC_SS_DEBUG] = {
- .name = "debug",
- .ss = &ssDbg,
- .components = (Component[]){
- {
- .name = "comp_all",
- },
- {
- .name = "I2C_0",
- .components = (Component[]){
- {
- .name = "i2c_0",
- .driver = &OC_I2C,
- .driver_cfg = &(S_I2C_Cfg) {
- .bus = OC_CONNECT1_I2C0,
- }
- },
- {}
- },
- },
- {
- .name = "I2C_1",
- .components = (Component[]){
- {
- .name = "i2c_1",
- .driver = &OC_I2C,
- .driver_cfg = &(S_I2C_Cfg) {
- .bus = OC_CONNECT1_I2C1,
- }
- },
- {}
- },
- },
- {
- .name = "I2C_2",
- .components = (Component[]){
- {
- .name = "i2c_2",
- .driver = &OC_I2C,
- .driver_cfg = &(S_I2C_Cfg) {
- .bus = OC_CONNECT1_I2C2,
- }
- },
- {}
- },
- },
- {
- .name = "I2C_3",
- .components = (Component[]){
- {
- .name = "i2c_3",
- .driver = &OC_I2C,
- .driver_cfg = &(S_I2C_Cfg) {
- .bus = OC_CONNECT1_I2C3,
- }
- },
- {}
- },
- },
- {
- .name = "I2C_4",
- .components = (Component[]){
- {
- .name = "i2c_4",
- .driver = &OC_I2C,
- .driver_cfg = &(S_I2C_Cfg) {
- .bus = OC_CONNECT1_I2C4,
- }
- },
- {}
- },
- },
- {
- .name = "I2C_6",
- .components = (Component[]){
- {
- .name = "i2c_6",
- .driver = &OC_I2C,
- .driver_cfg = &(S_I2C_Cfg) {
- .bus = OC_CONNECT1_I2C6,
- }
- },
- {}
- },
- },
- {
- .name = "I2C_7",
- .components = (Component[]){
- {
- .name = "i2c_7",
- .driver = &OC_I2C,
- .driver_cfg = &(S_I2C_Cfg) {
- .bus = OC_CONNECT1_I2C7,
- }
- },
- {}
- },
- },
- {
- .name = "I2C_8",
- .components = (Component[]){
- {
- .name = "i2c_8",
- .driver = &OC_I2C,
- .driver_cfg = &(S_I2C_Cfg) {
- .bus = OC_CONNECT1_I2C8,
- }
- },
- {}
- },
- },
- {
- .name = "EC",
- .components = (Component[]) {
- {
- .name = "comp_all",
- },
- {
- .name = "PA",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PA,
- }
- },
- {
- .name = "PB",
- .driver = &OC_GPIO,
- .driver_cfg =&(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PB,
- }
- },
- {
- .name = "PC",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PC,
- }
- },
- {
- .name = "PD",
- .driver = &OC_GPIO,
- .driver_cfg =&(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PD,
- }
- },
- {
- .name = "PE",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PE,
- }
- },
- {
- .name = "PF",
- .driver = &OC_GPIO,
- .driver_cfg =&(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PF,
- }
- },
- {
- .name = "PG",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PG,
- }
- },
- {
- .name = "PH",
- .driver = &OC_GPIO,
- .driver_cfg =&(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PH,
- }
- },
- {
- .name = "PJ",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PJ,
- }
- },
- {
- .name = "PK",
- .driver = &OC_GPIO,
- .driver_cfg =&(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PK,
- }
- },
- {
- .name = "PL",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PL,
- }
- },
- {
- .name = "PM",
- .driver = &OC_GPIO,
- .driver_cfg =&(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PM,
- }
- },
- {
- .name = "PN",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PN,
- }
- },
- {
- .name = "PP",
- .driver = &OC_GPIO,
- .driver_cfg =&(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PP,
- }
- },
- {
- .name = "PQ",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &ec_io,
- .group = PQ,
- }
- },
- {}
- },
- },
- {
- .name = "GBC",
- .components = (Component[]) {
- {
- .name = "comp_all",
- },
- {
- .name = "ioexpanderx70",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &gbc_io_1,
- }
- },
- {
- .name = "ioexpanderx71",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &gbc_io_0,
- }
- },
- {}
- },
- },
- {
- .name = "SDR",
- .components = (Component[]) {
- {
- .name = "comp_all",
- },
- {
- .name = "ioexpanderx1E",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &sdr_fx3_io,
- }
- },
- {}
- }
- },
- {
- .name = "FE",
- .components = (Component[]) {
- {
- .name = "comp_all",
- },
- {
- .name = "ioexpanderx18",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &fe_ch1_gain_io,
- }
- },
- {
- .name = "ioexpanderx1C",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &fe_ch2_gain_io,
- }
- },
- {
- .name = "ioexpanderx1B",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &fe_watchdog_io,
- }
- },
- {
- .name = "ioexpanderx1A",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &fe_ch1_lna_io,
- }
- },
- {
- .name = "ioexpanderx1D",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &fe_ch2_lna_io,
- }
- },
- {}
-
- }
- },
- {
- .name = "SYNC",
- .components = (Component[]) {
- {
- .name = "comp_all",
- },
- {
- .name = "ioexpanderx71",
- .driver = &OC_GPIO,
- .driver_cfg = &(S_OCGPIO_Cfg) {
- .port = &sync_io,
- }
- },
- {}
- }
- },
- {}
- },
- }
-};
diff --git a/firmware/ec/platform/oc-sdr/schema/schema.c b/firmware/ec/platform/oc-sdr/schema/schema.c
new file mode 100644
index 0000000000..d877f1b26a
--- /dev/null
+++ b/firmware/ec/platform/oc-sdr/schema/schema.c
@@ -0,0 +1,1178 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+#include "common/inc/global/Framework.h"
+#include "common/inc/ocmp_wrappers/ocmp_adt7481.h"
+#include "common/inc/ocmp_wrappers/ocmp_dat-xxr5a-pp.h"
+#include "common/inc/ocmp_wrappers/ocmp_debugi2c.h"
+#include "common/inc/ocmp_wrappers/ocmp_debugmdio.h"
+#include "common/inc/ocmp_wrappers/ocmp_debugocgpio.h"
+#include "common/inc/ocmp_wrappers/ocmp_debugmdio.h"
+#include "common/inc/ocmp_wrappers/ocmp_eeprom_cat24c04.h"
+#include "common/inc/ocmp_wrappers/ocmp_eth_sw.h"
+#include "common/inc/ocmp_wrappers/ocmp_fe-param.h"
+#include "common/inc/ocmp_wrappers/ocmp_ina226.h"
+#include "common/inc/ocmp_wrappers/ocmp_iridium.h"
+#include "common/inc/ocmp_wrappers/ocmp_led.h"
+#include "common/inc/ocmp_wrappers/ocmp_ltc4015.h"
+#include "common/inc/ocmp_wrappers/ocmp_ltc4274.h"
+#include "common/inc/ocmp_wrappers/ocmp_ltc4275.h"
+#include "common/inc/ocmp_wrappers/ocmp_mac.h"
+#include "common/inc/ocmp_wrappers/ocmp_powersource.h"
+#include "common/inc/ocmp_wrappers/ocmp_rfpowermonitor.h"
+#include "common/inc/ocmp_wrappers/ocmp_rfwatchdog.h"
+#include "common/inc/ocmp_wrappers/ocmp_se98a.h"
+#include "common/inc/ocmp_wrappers/ocmp_syncio.h"
+#include "common/inc/ocmp_wrappers/ocmp_testmodule.h"
+#include "common/inc/global/OC_CONNECT1.h"
+#include "schema.h"
+
+/* SYS Configs*/
+SCHEMA_IMPORT DriverStruct eeprom_gbc_sid;
+SCHEMA_IMPORT DriverStruct eeprom_gbc_inv;
+SCHEMA_IMPORT DriverStruct eeprom_sdr_inv;
+SCHEMA_IMPORT DriverStruct eeprom_fe_inv;
+/* Power SubSystem Configs */
+SCHEMA_IMPORT DriverStruct gbc_pwr_lead_acid_ts;
+SCHEMA_IMPORT DriverStruct gbc_pwr_ext_bat_charger;
+SCHEMA_IMPORT DriverStruct gbc_pwr_int_bat_charger;
+SCHEMA_IMPORT DriverStruct gbc_pwr_pse;
+SCHEMA_IMPORT DriverStruct gbc_pwr_pd ;
+SCHEMA_IMPORT DriverStruct gbc_pwr_powerSource;
+
+/* BMS SubSystem Configs */
+SCHEMA_IMPORT DriverStruct gbc_bms_ec_ps_12v;
+SCHEMA_IMPORT DriverStruct gbc_bms_ec_ps_3p3v;
+SCHEMA_IMPORT DriverStruct gbc_bms_ec_ts;
+
+/*HCI SubSystem Configs*/
+SCHEMA_IMPORT DriverStruct gbc_hci_buzzer;
+SCHEMA_IMPORT DriverStruct led_hci_ts;
+SCHEMA_IMPORT DriverStruct led_hci_ioexp;
+
+/*Ethernet SubSystem Configs*/
+SCHEMA_IMPORT DriverStruct gbc_eth_port0;
+SCHEMA_IMPORT DriverStruct gbc_eth_port1;
+SCHEMA_IMPORT DriverStruct gbc_eth_port2;
+SCHEMA_IMPORT DriverStruct gbc_eth_port3;
+SCHEMA_IMPORT DriverStruct gbc_eth_port4;
+
+/*OBC SubSystem Configs*/
+SCHEMA_IMPORT DriverStruct obc_irridium;
+SCHEMA_IMPORT DriverStruct sync_obc_gpiocfg;
+
+/*GPP SubSystem Configs*/
+SCHEMA_IMPORT DriverStruct gbc_gpp_ap_ps;
+SCHEMA_IMPORT DriverStruct gbc_gpp_ap_ts1;
+SCHEMA_IMPORT DriverStruct gbc_gpp_ap_ts2;
+SCHEMA_IMPORT DriverStruct gbc_gpp_ap_ts3;
+SCHEMA_IMPORT DriverStruct gbc_gpp_msata_ps;
+SCHEMA_IMPORT DriverStruct gbc_gpp_gpioCfg;
+
+/*SDR SubSystem Configs*/
+SCHEMA_IMPORT DriverStruct sdr_fpga_ps;
+SCHEMA_IMPORT DriverStruct sdr_fpga_ts;
+SCHEMA_IMPORT DriverStruct sdr_eeprom_inventory;
+SCHEMA_IMPORT DriverStruct sdr_ps;
+SCHEMA_IMPORT DriverStruct sdr_gpioCfg;
+SCHEMA_IMPORT DriverStruct sdr_fx3_gpiocfg;
+
+/*FE SubSystem Configs*/
+SCHEMA_IMPORT DriverStruct fe_rffecfg;
+SCHEMA_IMPORT DriverStruct fe_ch1_ps_5_7v;
+SCHEMA_IMPORT DriverStruct fe_ch2_ps_5_7v;
+SCHEMA_IMPORT DriverStruct fe_ch1_ts;
+SCHEMA_IMPORT DriverStruct fe_ch2_ts;
+SCHEMA_IMPORT DriverStruct fe_eeprom_inventory;
+SCHEMA_IMPORT DriverStruct fe_ch1_ads7830;
+SCHEMA_IMPORT DriverStruct fe_ch2_ads7830;
+SCHEMA_IMPORT DriverStruct fe_ch1_gain;
+SCHEMA_IMPORT DriverStruct fe_ch2_gain;
+SCHEMA_IMPORT DriverStruct fe_ch1_lna;
+SCHEMA_IMPORT DriverStruct fe_ch2_lna;
+SCHEMA_IMPORT DriverStruct fe_ch1_watchdog;
+SCHEMA_IMPORT DriverStruct fe_ch2_watchdog;
+SCHEMA_IMPORT DriverStruct fe_ch1_tx_gain_cfg;
+SCHEMA_IMPORT DriverStruct fe_ch2_tx_gain_cfg;
+SCHEMA_IMPORT DriverStruct fe_ch1_rx_gain_cfg;
+SCHEMA_IMPORT DriverStruct fe_ch2_rx_gain_cfg;
+SCHEMA_IMPORT DriverStruct fe_ch1_bandcfg;
+SCHEMA_IMPORT DriverStruct fe_ch2_bandcfg;
+SCHEMA_IMPORT DriverStruct fe_ch1_pwrcfg;
+SCHEMA_IMPORT DriverStruct fe_ch2_pwrcfg;
+
+/*Sync SubSystem Configs*/
+SCHEMA_IMPORT DriverStruct sync_gps_ts;
+SCHEMA_IMPORT DriverStruct sync_gps_io;
+SCHEMA_IMPORT DriverStruct sync_gpiocfg;
+
+/*TestModule Subsystem Configd*/
+SCHEMA_IMPORT DriverStruct testModuleCfg;
+
+/*Debug SubSystem Configs*/
+SCHEMA_IMPORT DriverStruct debug_I2C0;
+SCHEMA_IMPORT DriverStruct debug_I2C1;
+SCHEMA_IMPORT DriverStruct debug_I2C2;
+SCHEMA_IMPORT DriverStruct debug_I2C3;
+SCHEMA_IMPORT DriverStruct debug_I2C4;
+SCHEMA_IMPORT DriverStruct debug_I2C6;
+SCHEMA_IMPORT DriverStruct debug_I2C7;
+SCHEMA_IMPORT DriverStruct debug_I2C8;
+
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pa;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pb;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pc;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pd;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pe;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pf;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pg;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_ph;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pj;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pk;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pl;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pm;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pn;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pp;
+SCHEMA_IMPORT DriverStruct debug_ec_gpio_pq;
+
+SCHEMA_IMPORT DriverStruct debug_gbc_ioexpanderx70;
+SCHEMA_IMPORT DriverStruct debug_gbc_ioexpanderx71;
+
+SCHEMA_IMPORT DriverStruct debug_sdr_ioexpanderx1E;
+
+SCHEMA_IMPORT DriverStruct debug_fe_ioexpanderx18;
+SCHEMA_IMPORT DriverStruct debug_fe_ioexpanderx1C;
+SCHEMA_IMPORT DriverStruct debug_fe_ioexpanderx1B;
+SCHEMA_IMPORT DriverStruct debug_fe_ioexpanderx1A;
+SCHEMA_IMPORT DriverStruct debug_fe_ioexpanderx1D;
+
+SCHEMA_IMPORT DriverStruct debug_sync_ioexpanderx71;
+
+SCHEMA_IMPORT DriverStruct debug_mdio_phyport0;
+SCHEMA_IMPORT DriverStruct debug_mdio_phyport1;
+SCHEMA_IMPORT DriverStruct debug_mdio_phyport2;
+SCHEMA_IMPORT DriverStruct debug_mdio_phyport3;
+SCHEMA_IMPORT DriverStruct debug_mdio_phyport4;
+SCHEMA_IMPORT DriverStruct debug_mdio_global1;
+SCHEMA_IMPORT DriverStruct debug_mdio_global2;
+SCHEMA_IMPORT DriverStruct debug_mdio_swport0;
+SCHEMA_IMPORT DriverStruct debug_mdio_swport1;
+SCHEMA_IMPORT DriverStruct debug_mdio_swport2;
+SCHEMA_IMPORT DriverStruct debug_mdio_swport3;
+SCHEMA_IMPORT DriverStruct debug_mdio_swport4;
+SCHEMA_IMPORT DriverStruct debug_mdio_swport5;
+SCHEMA_IMPORT DriverStruct debug_mdio_swport6;
+
+SCHEMA_IMPORT const DriverStruct fact_bc_se98a;
+SCHEMA_IMPORT const DriverStruct fact_leadAcid_cfg;
+SCHEMA_IMPORT const DriverStruct fact_lithiumIon_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ltc4274_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ec_se98a_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ec_12v_ps_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ec_3v_ps_cfg;
+SCHEMA_IMPORT const DriverStruct fact_led_se98a_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ap_se98a_ts1_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ap_se98a_ts2_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ap_se98a_ts3_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ap_3v_ps_cfg;
+SCHEMA_IMPORT const DriverStruct fact_msata_3v_ps_cfg;
+SCHEMA_IMPORT const DriverStruct fact_sdr_3v_ps_cfg;
+SCHEMA_IMPORT const DriverStruct fact_sdr_fpga_adt7481_cfg;
+SCHEMA_IMPORT const DriverStruct fact_sdr_fpga_ps_cfg;
+SCHEMA_IMPORT const DriverStruct fact_fe_ch1_adt7481_cfg;
+SCHEMA_IMPORT const DriverStruct fact_fe_ch1_ps_cfg;
+SCHEMA_IMPORT const DriverStruct fact_fe_ch2_adt7481_cfg;
+SCHEMA_IMPORT const DriverStruct fact_fe_ch2_ps_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ch1_tx_gain_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ch1_rx_gain_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ch2_tx_gain_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ch2_rx_gain_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ch1_band_cfg;
+SCHEMA_IMPORT const DriverStruct fact_ch2_band_cfg;
+SCHEMA_IMPORT const DriverStruct fact_sync_ts_cfg;
+
+//Function Type
+SCHEMA_IMPORT bool gpp_pre_init(void *driver, void *returnValue);
+SCHEMA_IMPORT bool gpp_post_init(void *driver, void *returnValue);
+SCHEMA_IMPORT bool GPP_ap_Reset(void *driver, void *params);
+SCHEMA_IMPORT bool HCI_Init(void *driver, void *returnValue);
+SCHEMA_IMPORT bool RFFE_enablePA(void *driver, void *params);
+SCHEMA_IMPORT bool RFFE_disablePA(void *driver, void *params);
+SCHEMA_IMPORT bool rffe_pre_init(void *driver, void *returnValue);
+SCHEMA_IMPORT bool rffe_post_init(void *driver, void *returnValue);
+SCHEMA_IMPORT bool RFFE_reset(void *driver, void *params);
+SCHEMA_IMPORT bool SDR_Init(void *driver, void *returnValue);
+SCHEMA_IMPORT bool SDR_fx3Reset(void *driver, void *params);
+SCHEMA_IMPORT bool SDR_reset(void *driver, void *returnValue);
+SCHEMA_IMPORT bool SYNC_Init(void *driver, void *returnValue);
+SCHEMA_IMPORT bool SYNC_reset(void *driver, void *params);
+SCHEMA_IMPORT bool SYS_cmdReset(void *driver, void *params);
+SCHEMA_IMPORT bool SYS_cmdEcho(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdEnable(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdDisable(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdDisconnect(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdConnect(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdSendSms(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdDial(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdAnswer(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdHangup(void *driver, void *params);
+SCHEMA_IMPORT bool TestMod_cmdReset(void *driver, void *params);
+SCHEMA_IMPORT bool obc_pre_init(void *driver, void *returnValue);
+SCHEMA_IMPORT bool SYS_post_get_results(void **getpostResult);
+SCHEMA_IMPORT bool SYS_post_enable(void **postActivate);
+
+const Component sys_schema[] = {
+ {
+ .name = "system",
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .driver = &SYSTEMDRV,
+ .driver_cfg = &gbc_gpp_gpioCfg, /* For reset pin, will revise */
+ .components = (Component[]){
+ {
+ .name = "eeprom_sid",
+ .driver = &CAT24C04_gbc_sid,
+ .driver_cfg = &eeprom_gbc_sid,
+ },
+ {
+ .name = "eeprom_inv",
+ .driver = &CAT24C04_gbc_inv,
+ .driver_cfg = &eeprom_gbc_inv,
+ },
+ {
+ .name = "eeprom_mac",
+ .driver = &Driver_MAC,
+ },
+ {}
+ },
+ .commands = (Command[]){
+ {
+ .name = "reset",
+ .cb_cmd = SYS_cmdReset,
+ },
+ {
+ .name = "echo",
+ .cb_cmd = SYS_cmdEcho,
+ },
+ {}
+ },
+ },
+ {}
+ },
+ },
+ {
+ .name = "power",
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .components = (Component[]){
+ {
+ .name = "powerSource",
+ .driver = &PWRSRC,
+ .driver_cfg = &gbc_pwr_powerSource,
+ .postDisabled = POST_DISABLED,
+ },
+ {}
+ },
+ },
+ {
+ .name = "leadacid_sensor",
+ .components = (Component[]){
+ {
+ .name = "temp_sensor1",
+ .driver = &SE98A,
+ .driver_cfg = &gbc_pwr_lead_acid_ts,
+ .factory_config = &fact_bc_se98a,
+ },
+ {}
+ }
+ },
+ {
+ .name = "leadacid",
+ .components = (Component[]){
+ {
+ .name = "battery",
+ .driver = <C4015,
+ .driver_cfg = &gbc_pwr_ext_bat_charger,
+ .factory_config = &fact_leadAcid_cfg,
+ },
+ {}
+ }
+ },
+ {
+ .name = "lion",
+ .components = (Component[]){
+ {
+ .name = "battery",
+ .driver = <C4015,
+ .driver_cfg = &gbc_pwr_int_bat_charger,
+ .factory_config = &fact_lithiumIon_cfg,
+ },
+ {}
+ }
+ },
+ {
+ .name = "pse",
+ .driver = <C4274,
+ .driver_cfg = &gbc_pwr_pse,
+ .factory_config = &fact_ltc4274_cfg,
+ },
+ {
+ .name = "pd",
+ .driver = <C4275,
+ .driver_cfg = &gbc_pwr_pd,
+ },
+ {}
+ },
+ },
+ {
+ .name = "bms",
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "ec",
+ .components = (Component[]){
+ {
+ .name = "temp_sensor1",
+ .driver = &SE98A,
+ .driver_cfg = &gbc_bms_ec_ts,
+ .factory_config = &fact_ec_se98a_cfg,
+ },
+ {
+ .name = "current_sensor1",
+ .driver = &INA226,
+ .driver_cfg = &gbc_bms_ec_ps_12v,
+ .factory_config = &fact_ec_12v_ps_cfg,
+ },
+ {
+ .name = "current_sensor2",
+ .driver = &INA226,
+ .driver_cfg = &gbc_bms_ec_ps_3p3v,
+ .factory_config = &fact_ec_3v_ps_cfg,
+ },
+ {}
+ }
+ },
+ {}
+ },
+ },
+ {
+ .name = "hci",
+ .ssHookSet = &(SSHookSet){
+ .preInitFxn = (ssHook_Cb)HCI_Init,
+ .postInitFxn = NULL,
+ },
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "led",
+ .components = (Component[]){
+ {
+ .name = "temp_sensor1",
+ .driver = &SE98A,
+ .driver_cfg = &led_hci_ts,
+ .factory_config = &fact_led_se98a_cfg,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "fw",
+ .driver = &HCI_LED,
+ .driver_cfg = &led_hci_ioexp,
+ },
+ {}
+ },
+ },
+ {
+ /* TODO: Remove buzzer component if there is no OCMP message
+ * required */
+ .name = "buzzer",
+ .driver_cfg = &gbc_hci_buzzer,
+ .postDisabled = POST_DISABLED,
+ },
+ {}
+ },
+ },
+ {
+ .name = "ethernet",
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "port0",
+ .driver = Ð_SW,
+ .driver_cfg = &gbc_eth_port0,
+ },
+ {
+ .name = "port1",
+ .driver = Ð_SW,
+ .driver_cfg = &gbc_eth_port1,
+ },
+ {
+ .name = "port2",
+ .driver = Ð_SW,
+ .driver_cfg = &gbc_eth_port2,
+ },
+ {
+ .name = "port3",
+ .driver = Ð_SW,
+ .driver_cfg = &gbc_eth_port3,
+ },
+ {
+ .name = "port4",
+ .driver = Ð_SW,
+ .driver_cfg = &gbc_eth_port4,
+ },
+ {}
+ },
+ },
+ {
+ .name = "obc",
+ .ssHookSet = &(SSHookSet){
+ .preInitFxn = (ssHook_Cb)obc_pre_init,
+ .postInitFxn = NULL,
+ },
+ .driver_cfg = &sync_obc_gpiocfg,
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "iridium",
+ .driver = &OBC_Iridium,
+ .driver_cfg = &obc_irridium,
+ },
+ {}
+ },
+ },
+ {
+ .name = "gpp",
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED,
+ },
+
+ {
+ .name = "ap",
+ .components = (Component[]){
+ {
+ .name = "temp_sensor1",
+ .driver = &SE98A,
+ .driver_cfg = &gbc_gpp_ap_ts1,
+ .factory_config = &fact_ap_se98a_ts1_cfg,
+ },
+ {
+ .name = "temp_sensor2",
+ .driver = &SE98A,
+ .driver_cfg = &gbc_gpp_ap_ts2,
+ .factory_config = &fact_ap_se98a_ts2_cfg,
+ },
+ {
+ .name = "temp_sensor3",
+ .driver = &SE98A,
+ .driver_cfg = &gbc_gpp_ap_ts3,
+ .factory_config = &fact_ap_se98a_ts3_cfg,
+ },
+ {
+ .name = "current_sensor1",
+ .driver = &INA226,
+ .driver_cfg = &gbc_gpp_ap_ps,
+ .factory_config = &fact_ap_3v_ps_cfg,
+ },
+ {}
+ },
+ .driver_cfg = &gbc_gpp_gpioCfg,
+ .commands = (Command[]){
+ {
+ .name = "reset",
+ .cb_cmd = GPP_ap_Reset,
+ },
+ {}
+ },
+ },
+ {
+ .name = "msata",
+ .components = (Component[]){
+ {
+ .name = "current_sensor1",
+ .driver = &INA226,
+ .driver_cfg = &gbc_gpp_msata_ps,
+ .factory_config = &fact_msata_3v_ps_cfg,
+ },
+ {}
+ }
+ },
+ {}
+ },
+ .driver_cfg = &gbc_gpp_gpioCfg,
+ .ssHookSet = &(SSHookSet){
+ .preInitFxn = (ssHook_Cb)gpp_pre_init,
+ .postInitFxn = (ssHook_Cb)gpp_post_init,
+ },
+ },
+ {
+ .name = "sdr",
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .components = (Component[]){
+ {
+ .name = "current_sensor1",
+ .driver = &INA226,
+ .driver_cfg = &sdr_ps,
+ .factory_config = &fact_sdr_3v_ps_cfg,
+ },
+ {
+ /* TODO: this is pretty hw-specific, I think we can
+ * dedupe for the other boards, but I don't think
+ * a framework level driver is appropriate (although,
+ * a proper OC-DB driver might have us revisit this) */
+ /* TODO: "eeprom" makes the CLI command pretty verbose,
+ * maybe see about a way of making this better:
+ * sdr.comp_all.eeprom.dev_id is kind of long */
+ .name = "eeprom",
+ .driver_cfg = &eeprom_sdr_inv,
+ .driver = &CAT24C04_sdr_inv,
+ },
+ {}
+ },
+ .driver_cfg =&sdr_gpioCfg,
+ .commands = (Command[]){
+ {
+ .name = "reset",
+ .cb_cmd = SDR_reset,
+ },
+ {}
+ },
+ },
+ {
+ .name = "fpga",
+ .components = (Component[]){
+ {
+ .name = "temp_sensor1",
+ .driver = &ADT7481,
+ .driver_cfg = &sdr_fpga_ts,
+ .factory_config = &fact_sdr_fpga_adt7481_cfg,
+ },
+ {
+ .name = "current_sensor1",
+ .driver = &INA226,
+ .driver_cfg = &sdr_fpga_ps,
+ .factory_config = &fact_sdr_fpga_ps_cfg,
+ },
+ {}
+ }
+ },
+ {
+ .name = "fx3",
+ .driver_cfg = &sdr_gpioCfg,
+ .commands = (Command[]){
+ {
+ .name = "reset",
+ .cb_cmd = SDR_fx3Reset,
+ },
+ {}
+ },
+ .postDisabled = POST_DISABLED,
+ },
+ {}
+ },
+ .driver_cfg = &sdr_gpioCfg,
+ .ssHookSet = &(SSHookSet){
+ .preInitFxn = (ssHook_Cb)SDR_Init,
+ .postInitFxn = NULL,
+ },
+ },
+ {
+ .name = "rffe",
+ .driver_cfg = &fe_rffecfg,
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .components = (Component[]){
+ {
+ .name = "eeprom",
+ .driver = &CAT24C04_fe_inv,
+ .driver_cfg = &eeprom_fe_inv,
+ },
+ {}
+ },
+ .driver_cfg = &sdr_gpioCfg,
+ .commands =(Command[]){
+ {
+ .name = "reset",
+ .cb_cmd = RFFE_reset,
+ },
+ {}
+ },
+ },
+ {
+ .name = "ch1_sensor",
+ .components = (Component[]){
+ {
+ .name = "temp_sensor1",
+ .driver = &ADT7481,
+ .driver_cfg = &fe_ch1_ts,
+ .factory_config = &fact_fe_ch1_adt7481_cfg,
+ },
+ {
+ .name = "current_sensor1",
+ .driver = &INA226,
+ .driver_cfg = &fe_ch1_ps_5_7v,
+ .factory_config = &fact_fe_ch1_ps_cfg,
+ },
+ {}
+ }
+ },
+ {
+ .name = "ch2_sensor",
+ .components = (Component[]){
+ {
+ .name = "temp_sensor1",
+ .driver = &ADT7481,
+ .driver_cfg = &fe_ch2_ts,
+ .factory_config = &fact_fe_ch2_adt7481_cfg,
+ },
+ {
+ .name = "current_sensor1",
+ .driver = &INA226,
+ .driver_cfg = &fe_ch2_ps_5_7v,
+ .factory_config = &fact_fe_ch2_ps_cfg,
+ },
+ {}
+ }
+ },
+ {
+ .name = "ch1_fe",
+ .driver_cfg = &fe_ch1_pwrcfg, /* For en/dis context */
+ .components = (Component[]){
+ {
+ .name = "ch1_band",
+ /* Placeholder driver to let us test the DAT driver */
+ .driver = &FE_Param,
+ .driver_cfg = &fe_ch1_bandcfg,
+ .factory_config = &fact_ch1_band_cfg,
+ },
+ {
+ .name = "watchdog",
+ .driver = &RFFEWatchdog,
+ .driver_cfg = &fe_ch1_watchdog,
+ },
+ {
+ .name = "power",
+ .driver = &RFPowerMonitor,
+ .driver_cfg = &fe_ch1_ads7830,
+ },
+ {
+ .name = "tx",
+ .driver = &DATXXR5APP,
+ /* this struct should be compatible with the DAT cfg struct */
+ .driver_cfg = &fe_ch1_gain,
+ .factory_config = &fact_ch1_tx_gain_cfg,
+ },
+ {
+ .name = "rx",
+ .driver = &DATXXR5APP,
+ /* this struct should be compatible with the DAT cfg struct */
+ .driver_cfg = &fe_ch1_lna,
+ .factory_config = &fact_ch1_rx_gain_cfg,
+ },
+ {}
+ },
+ .commands = (Command[]){
+ {
+ .name = "enable",
+ .cb_cmd = RFFE_enablePA,
+ },
+ {
+ .name = "disable",
+ .cb_cmd = RFFE_disablePA,
+ },
+ {}
+ },
+ },
+ {
+ .name = "ch2_fe",
+ .driver_cfg = &fe_ch2_pwrcfg, /* For en/dis context */
+ .components = (Component[]){
+ {
+ .name = "ch2_band",
+ /* Placeholder driver to let us test the DAT driver */
+ .driver = &FE_Param,
+ .driver_cfg = &fe_ch2_bandcfg,
+ .factory_config = &fact_ch2_band_cfg,
+ },
+ {
+ .name = "watchdog",
+ .driver = &RFFEWatchdog,
+ .driver_cfg = &fe_ch2_watchdog,
+ },
+ {
+ .name = "power",
+ .driver = &RFPowerMonitor,
+ .driver_cfg = &fe_ch2_ads7830,
+ },
+ {
+ .name = "tx",
+ .driver = &DATXXR5APP,
+ /* this struct should be compatible with the DAT cfg struct */
+ .driver_cfg = &fe_ch2_gain,
+ .factory_config = &fact_ch2_tx_gain_cfg,
+ },
+ {
+ .name = "rx",
+ .driver = &DATXXR5APP,
+ /* this struct should be compatible with the DAT cfg struct */
+ .driver_cfg = &fe_ch2_lna,
+ .factory_config = &fact_ch2_rx_gain_cfg,
+ },
+ {}
+ },
+ .commands = (Command[]){
+ {
+ .name = "enable",
+ .cb_cmd = RFFE_enablePA,
+ },
+ {
+ .name = "disable",
+ .cb_cmd = RFFE_disablePA,
+ },
+ {}
+ },
+ },
+ {}
+ },
+ .driver_cfg = &fe_rffecfg,
+ .ssHookSet = &(SSHookSet){
+ .preInitFxn = (ssHook_Cb)rffe_pre_init,
+ .postInitFxn = (ssHook_Cb)rffe_post_init,
+ },
+ },
+ {
+ .name = "sync",
+ .driver_cfg = &sync_gpiocfg,
+ .ssHookSet = &(SSHookSet){
+ .preInitFxn = (ssHook_Cb)SYNC_Init,
+ .postInitFxn = NULL,
+ },
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .driver_cfg = &sync_gpiocfg,
+ .commands = (Command[]){
+ {
+ .name = "reset",
+ .cb_cmd = SYNC_reset,
+ },
+ {}
+ },
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "gps",
+ .driver_cfg = &sync_gpiocfg,
+ .driver = &Sync_IO,
+ },
+ {
+ .name = "sensor",
+ .components = (Component[]){
+ {
+ .name = "temp_sensor1",
+ .driver = &ADT7481,
+ .driver_cfg = &sync_gps_ts,
+ .factory_config = &fact_sync_ts_cfg,
+ },
+ {}
+ }
+ },
+ {}
+ }
+ },
+ {
+ .name = "testmodule",
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .commands = (Command[]){
+ {
+ .name = "reset",
+ .cb_cmd = TestMod_cmdReset,
+ },
+ {}
+ },
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "2gsim",
+ .driver = &Testmod_G510,
+ .driver_cfg = &testModuleCfg,
+ },
+ {}
+ }
+ },
+ {
+ .name = "debug",
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "I2C",
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED
+ },
+ {
+ .name = "bus0",
+ .driver = &OC_I2C,
+ .driver_cfg = &debug_I2C0,
+ .postDisabled = POST_DISABLED
+ },
+ {
+ .name = "bus1",
+ .driver = &OC_I2C,
+ .driver_cfg = &debug_I2C1,
+ .postDisabled = POST_DISABLED
+ },
+ {
+ .name = "bus2",
+ .driver = &OC_I2C,
+ .driver_cfg = &debug_I2C2,
+ .postDisabled = POST_DISABLED
+ },
+ {
+ .name = "bus3",
+ .driver = &OC_I2C,
+ .driver_cfg = &debug_I2C3,
+ .postDisabled = POST_DISABLED
+ },
+ {
+ .name = "bus4",
+ .driver = &OC_I2C,
+ .driver_cfg = &debug_I2C4,
+ .postDisabled = POST_DISABLED
+ },
+ {
+ .name = "bus6",
+ .driver = &OC_I2C,
+ .driver_cfg = &debug_I2C6,
+ .postDisabled = POST_DISABLED
+ },
+ {
+ .name = "bus7",
+ .driver = &OC_I2C,
+ .driver_cfg = &debug_I2C7,
+ .postDisabled = POST_DISABLED
+ },
+ {
+ .name = "bus8",
+ .driver = &OC_I2C,
+ .driver_cfg = &debug_I2C8,
+ .postDisabled = POST_DISABLED
+ },
+ {}
+ },
+ },
+ {
+ .name = "ec",
+ .components = (Component[]){
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PA",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pa,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PB",
+ .driver = &OC_GPIO,
+ .driver_cfg =&debug_ec_gpio_pb,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PC",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pc,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PD",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pd,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PE",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pe,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PF",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pf,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PG",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pg,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PH",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_ph,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PJ",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pj,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PK",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pk,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PL",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pl,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PM",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pm,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PN",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pn,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PP",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pn,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "PQ",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_ec_gpio_pq,
+ .postDisabled = POST_DISABLED,
+ },
+ {}
+ },
+ },
+ {
+ .name = "gbc",
+ .components = (Component[]) {
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "ioexpanderx70",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_gbc_ioexpanderx70,
+ },
+ {
+ .name = "ioexpanderx71",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_gbc_ioexpanderx71,
+ },
+ {}
+ },
+ },
+ {
+ .name = "sdr",
+ .components = (Component[]) {
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "ioexpanderx1E",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_sdr_ioexpanderx1E,
+ },
+ {}
+ }
+ },
+ {
+ .name = "fe",
+ .components = (Component[]) {
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "ioexpanderx18",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_sdr_ioexpanderx1E,
+ },
+ {
+ .name = "ioexpanderx1C",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_fe_ioexpanderx1C,
+ },
+ {
+ .name = "ioexpanderx1B",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_fe_ioexpanderx1B,
+ },
+ {
+ .name = "ioexpanderx1A",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_fe_ioexpanderx1A,
+ },
+ {
+ .name = "ioexpanderx1D",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_fe_ioexpanderx1D,
+ },
+ {}
+
+ }
+ },
+ {
+ .name = "sync",
+ .components = (Component[]) {
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "ioexpanderx71",
+ .driver = &OC_GPIO,
+ .driver_cfg = &debug_sync_ioexpanderx71,
+ },
+ {}
+ }
+ },
+ {
+ .name = "ethernet",
+ .components = (Component[]) {
+ {
+ .name = "comp_all",
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "port0",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_phyport0,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "port1",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_phyport1,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "port2",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_phyport2,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "port3",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_phyport3,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "port4",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_phyport4,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "global1",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_global1,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "global2",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_global2,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "swport0",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_swport0,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "swport1",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_swport1,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "swport2",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_swport2,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "swport3",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_swport3,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "swport4",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_swport4,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "swport5",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_swport5,
+ .postDisabled = POST_DISABLED,
+ },
+ {
+ .name = "swport6",
+ .driver = &OC_MDIO,
+ .driver_cfg = &debug_mdio_swport6,
+ .postDisabled = POST_DISABLED,
+ },
+ {}
+ }
+ },
+ {}
+ },
+ },
+ {}
+};
diff --git a/firmware/ec/platform/oc-sdr/schema.h b/firmware/ec/platform/oc-sdr/schema/schema.h
similarity index 76%
rename from firmware/ec/platform/oc-sdr/schema.h
rename to firmware/ec/platform/oc-sdr/schema/schema.h
index b83aed6a04..e5f11ff9d5 100644
--- a/firmware/ec/platform/oc-sdr/schema.h
+++ b/firmware/ec/platform/oc-sdr/schema/schema.h
@@ -6,13 +6,9 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef _SCHEMA_H
#define _SCHEMA_H
-/* TODO: clean this up - this should dictate the subsystems, not the other way around */
-#include "inc/common/ocmp_frame.h"
-
#define SUBSYSTEM_COUNT OC_SS_MAX_LIMIT
#endif /* _SCHEMA_H */
diff --git a/firmware/ec/src/.project b/firmware/ec/src/.project
deleted file mode 100644
index f7d6de6781..0000000000
--- a/firmware/ec/src/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
- src
-
-
-
-
-
-
-
-
diff --git a/firmware/ec/src/Board.h b/firmware/ec/src/Board.h
index 699fcbbbcc..7a8842ee49 100644
--- a/firmware/ec/src/Board.h
+++ b/firmware/ec/src/Board.h
@@ -1,11 +1,40 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
+/*******************************************************************************
+ Filename: Board.h
+ Revised: $Date: 2015-06-02 11:18:40 -0700 (Tue, 02 Jun 2015) $
+ Revision: $Revision: 43957 $
+
+ Description: This file contains utility functions.
+
+ Copyright 2014 Texas Instruments Incorporated. All rights reserved.
+
+ IMPORTANT: Your use of this Software is limited to those specific rights
+ granted under the terms of a software license agreement between the user
+ who downloaded the software, his/her employer (which must be your employer)
+ and Texas Instruments Incorporated (the "License"). You may not use this
+ Software unless you agree to abide by the terms of the License. The License
+ limits your use, and you acknowledge, that the Software may not be modified,
+ copied or distributed unless embedded on a Texas Instruments microcontroller
+ or used solely and exclusively in conjunction with a Texas Instruments radio
+ frequency transceiver, which is integrated into your product. Other than for
+ the foregoing purpose, you may not use, reproduce, copy, prepare derivative
+ works of, modify, distribute, perform, display or sell this Software and/or
+ its documentation for any purpose.
+
+ YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
+ PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
+ INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
+ NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
+ TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
+ NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
+ LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
+ INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
+ OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
+ OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
+ (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
+
+ Should you have any questions regarding your right to use this Software,
+ contact Texas Instruments Incorporated at www.TI.com.
+*******************************************************************************/
#ifndef __BOARD_H
#define __BOARD_H
@@ -13,7 +42,7 @@
extern "C" {
#endif
-#include "OC_CONNECT1.h"
+#include "common/inc/global/OC_CONNECT1.h"
#define Board_initEMAC OC_CONNECT1_initEMAC
#define Board_initGeneral OC_CONNECT1_initGeneral
diff --git a/firmware/ec/src/Devices/adt7481.c b/firmware/ec/src/Devices/adt7481.c
index c3ee54e6a8..2fac3e31fa 100644
--- a/firmware/ec/src/Devices/adt7481.c
+++ b/firmware/ec/src/Devices/adt7481.c
@@ -189,6 +189,38 @@ ReturnStatus adt7481_get_mfg_id(const I2C_Dev *i2c_dev,
return status;
}
+/*****************************************************************************
+ ** FUNCTION NAME : adt7481_probe
+ **
+ ** DESCRIPTION : Read the Manufacturer ID from Temperature sensor ADT7481.
+ **
+ ** ARGUMENTS : I2C driver config and POST Data struct
+ ** id.
+ **
+ ** RETURN TYPE : ePostCode
+ **
+ *****************************************************************************/
+ePostCode adt7481_probe(const I2C_Dev *i2c_dev,
+ POSTData *postData)
+{
+ ePostCode postcode = POST_DEV_MISSING;
+ ReturnStatus status = RETURN_OK;
+ uint8_t devId = 0x0000;
+ uint8_t manfId = 0x0000;
+ status = adt7481_get_dev_id(i2c_dev, &devId);
+ status = adt7481_get_mfg_id(i2c_dev, &manfId);
+ if (status != RETURN_OK) {
+ postcode = POST_DEV_MISSING;
+ } else if ((devId == TEMP_ADT7481_DEV_ID)
+ && (manfId == TEMP_ADT7481_MANF_ID)) {
+ postcode = POST_DEV_FOUND;
+ } else {
+ postcode = POST_DEV_ID_MISMATCH;
+ }
+ post_update_POSTData(postData, i2c_dev->bus, i2c_dev->slave_addr,manfId, devId);
+ return postcode;
+}
+
/******************************************************************************
* @fn adt7481_get_config1
*
diff --git a/firmware/ec/src/Devices/eeprom.c b/firmware/ec/src/Devices/eeprom.c
index 888bfefd18..86ca9c62d2 100644
--- a/firmware/ec/src/Devices/eeprom.c
+++ b/firmware/ec/src/Devices/eeprom.c
@@ -11,11 +11,15 @@
// HEADER FILES
//*****************************************************************************
#include "inc/devices/eeprom.h"
+
#include "Board.h"
#include "inc/common/global_header.h"
#include "inc/common/byteorder.h"
+
#include
+#ifndef UT_FRAMEWORK
#include /* TODO: for htons - clean up this random include */
+#endif
#include
#define WP_ASSERT 1
@@ -109,7 +113,7 @@ ReturnStatus eeprom_read(Eeprom_Cfg *cfg,
** RETURN TYPE : Success or failure
**
*****************************************************************************/
-ReturnStatus eeprom_write(Eeprom_Cfg *cfg,
+ReturnStatus eeprom_write(const Eeprom_Cfg *cfg,
uint16_t address,
const void *buffer,
size_t size)
@@ -272,10 +276,9 @@ ReturnStatus eeprom_read_oc_info(uint8_t * oc_serial)
status = eeprom_read(&eeprom_gbc_sid, OC_CONNECT1_SERIAL_INFO,
oc_serial, OC_CONNECT1_SERIAL_SIZE);
if (status != RETURN_OK) {
- LOGGER_ERROR("EEPROM:ERROR:: Failed to get I2C Bus for EEPROM device 0x%x.\n",
- eeprom_gbc_sid.i2c_dev.slave_addr);
+ LOGGER_ERROR("EEPROM:ERROR:: Failed to get I2C Bus for GBC serial ID EEPROM.\n");
} else {
- LOGGER_ERROR("EEPROM:Info:: OC Connect1 %s.\n", oc_serial);
+ LOGGER_ERROR("EEPROM:Info:: OC Connect1 %d.\n", *oc_serial);
}
return status;
}
@@ -291,32 +294,28 @@ ReturnStatus eeprom_read_oc_info(uint8_t * oc_serial)
** RETURN TYPE : Success or failure
**
*****************************************************************************/
-ReturnStatus eeprom_read_board_info(OCMPSubsystem subSystem, uint8_t * rom_info)
+ReturnStatus eeprom_read_board_info(const Eeprom_Cfg *cfg, uint8_t * rom_info)
{
ReturnStatus status = RETURN_NOTOK;
uint8_t info_size = 0x00;
uint16_t eepromOffset = 0x0000;
- Eeprom_Cfg *cfg = NULL;
- switch (subSystem) {
+ switch (cfg->ss) {
case OC_SS_SYS:
{
info_size = OC_GBC_BOARD_INFO_SIZE;
eepromOffset = OC_GBC_BOARD_INFO;
- cfg = &eeprom_gbc_sid;
break;
}
case OC_SS_SDR:
{
info_size = OC_SDR_BOARD_INFO_SIZE;
eepromOffset = OC_SDR_BOARD_INFO;
- cfg = &eeprom_sdr_inv;
break;
}
case OC_SS_RF:
{
info_size = OC_RFFE_BOARD_INFO_SIZE;
eepromOffset = OC_RFFE_BOARD_INFO;
- cfg = &eeprom_fe_inv;
break;
}
default:
@@ -346,31 +345,27 @@ ReturnStatus eeprom_read_board_info(OCMPSubsystem subSystem, uint8_t * rom_info)
** RETURN TYPE : Success or failure
**
*****************************************************************************/
-ReturnStatus eeprom_read_device_info_record(OCMPSubsystem subSystem,
+ReturnStatus eeprom_read_device_info_record(const Eeprom_Cfg *cfg,
uint8_t recordNo,
char * device_info)
{
ReturnStatus status = RETURN_NOTOK;
uint8_t info_size = OC_DEVICE_INFO_SIZE;
uint16_t eepromOffset = 0x0000;
- Eeprom_Cfg *cfg = NULL;
- switch (subSystem) {
+ switch (cfg->ss) {
case OC_SS_SYS:
{
eepromOffset = OC_GBC_DEVICE_INFO + (recordNo * info_size);
- cfg = &eeprom_gbc_sid;
break;
}
case OC_SS_SDR:
{
eepromOffset = OC_SDR_DEVICE_INFO + (recordNo * info_size);
- cfg = &eeprom_sdr_inv;
break;
}
case OC_SS_RF:
{
eepromOffset = OC_RFFE_DEVICE_INFO + (recordNo * info_size);
- cfg = &eeprom_fe_inv;
break;
}
default:
@@ -401,31 +396,27 @@ ReturnStatus eeprom_read_device_info_record(OCMPSubsystem subSystem,
** RETURN TYPE : Success or failure
**
*****************************************************************************/
-ReturnStatus eeprom_write_device_info_record(OCMPSubsystem subSystem,
+ReturnStatus eeprom_write_device_info_record(Eeprom_Cfg *cfg,
uint8_t recordNo,
char * device_info)
{
ReturnStatus status = RETURN_NOTOK;
uint8_t info_size = OC_DEVICE_INFO_SIZE;
uint16_t eepromOffset = 0x0000;
- Eeprom_Cfg *cfg = NULL;
- switch (subSystem) {
+ switch (cfg->ss) {
case OC_SS_SYS:
{
eepromOffset = OC_GBC_DEVICE_INFO + (recordNo * info_size);
- cfg = &eeprom_gbc_sid;
break;
}
case OC_SS_SDR:
{
eepromOffset = OC_SDR_DEVICE_INFO + (recordNo * info_size);
- cfg = &eeprom_sdr_inv;
break;
}
case OC_SS_RF:
{
eepromOffset = OC_RFFE_DEVICE_INFO + (recordNo * info_size);
- cfg = &eeprom_fe_inv;
break;
}
default:
diff --git a/firmware/ec/src/Devices/eth_sw.c b/firmware/ec/src/Devices/eth_sw.c
index a845c0a6db..3f325dfe5f 100644
--- a/firmware/ec/src/Devices/eth_sw.c
+++ b/firmware/ec/src/Devices/eth_sw.c
@@ -10,33 +10,69 @@
//*****************************************************************************
// Standard Header files
//*****************************************************************************
-
#include "inc/devices/eth_sw.h"
+
#include "inc/devices/88E6071_registers.h"
#include "inc/common/global_header.h"
#include "inc/devices/mdio_bb.h"
#include "registry/SSRegistry.h"
+#include "src/interfaces/Ethernet/tcp_tx_rx.h"
+
+#include
+#include
#define CLEAR_BIT(x, y) (y = (~x) & y)
#define SET_BIT(x, y) (y = x | y)
+#define MACLOOPBACK 0
+#define LINELOOPBACK 1
+#define EXTLOOPBACK 2
+#define TCPHANDLERSTACK 1024
+#define MAX 4
+#define IPSTRING_LENGTH 16
+#define ETHTIVACLEINT_TASK_PRIORITY 1
+char ethTivaClientTaskStack[TCPHANDLERSTACK];
-/* GPP device config */
-extern void *sys_config[];
-#define ETH ((Eth_Cfg *)sys_config[OC_SS_ETH_SWT])
+static bool s_eth_sw_linkup = false;
+const char *destIp;
+uint8_t numRepeat;
+char convStr[IPSTRING_LENGTH];
+char temp[IPSTRING_LENGTH];
+char *tempBuf=temp;
-ePostCode eth_sw_probe()
+void eth_sw_configure(Eth_cfg* ethCfg)
+{
+ uint8_t link_up;
+ uint16_t read_val = 0;
+ if (!s_eth_sw_linkup) {
+ OcGpio_configure(ðCfg->eth_sw_cfg->pin_ec_ethsw_reset, OCGPIO_CFG_OUTPUT| OCGPIO_CFG_OUT_HIGH);
+ SysCtlDelay(16000000); //400ms delay
+ }
+ read_val = mdiobb_read_by_paging(PHY_PORT_0, REG_PHY_SPEC_STATUS);
+ link_up = (RT_LINK & read_val) ? 1 : 0;
+ DEBUG("ETHSW: Linkup: %d \n", link_up);
+ if (link_up == 1) {
+ s_eth_sw_linkup = true;
+ } else {
+ s_eth_sw_linkup = false;
+ }
+}
+
+ePostCode eth_sw_probe( POSTData *postData)
{
ePostCode eth_sw_found = POST_DEV_MISSING;
uint16_t switch_pid = 0;
+ uint16_t devId = 0x00;
/*Switch idenifier*/
switch_pid = mdiobb_read(0x8, 3);
switch_pid = (switch_pid >>4);
if (switch_pid == ETH_SW_PRODUCT_ID) {
/* Phy Identifier */
- if (mdiobb_read_data(0, REG_PHY_ID_1) == PHY_IDENTIFIER) {
+ devId = mdiobb_read_by_paging(0, REG_PHY_ID_1);
+ if ( devId == PHY_IDENTIFIER) {
eth_sw_found = POST_DEV_FOUND;
}
}
+ post_update_POSTData(postData, 0xFF, 0xFF, 0xFF, devId);
LOGGER_DEBUG("ETHSW::INFO:: Ethernet switch %s.\n",
((eth_sw_found == POST_DEV_FOUND) ? "found" : "not found"));
return eth_sw_found;
@@ -48,14 +84,14 @@ void eth_enable_interrupt()
mdiobb_write(GLOBAL_1, REG_GLOBAL_CONTROL, DEV_INT_EN);
mdiobb_write(GLOBAL_2, REG_INTERRUPT_MASK, DEFAULT_PHY_INTS);
for (port = 0; port < 5; port++) {
- mdiobb_write_data(port, REG_PHY_INTERRUPT_EN, DEFUALT_INT);
+ mdiobb_write_by_paging(port, REG_PHY_INTERRUPT_EN, DEFUALT_INT);
}
}
uint16_t get_interrupt_status(uint8_t port)
{
/* read the register REG_PHY_INTERRUPT_EN */
- return mdiobb_read_data(port, REG_PHY_INTERRUPT_STATUS);
+ return mdiobb_read_by_paging(port, REG_PHY_INTERRUPT_STATUS);
}
/*****************************************************************************
@@ -86,11 +122,11 @@ static void _ethernet_sw_isr(void *context) {
switch (interrupt_status & (1 << i)) {
case SPEED_INT_STATUS:
{
- if (mdiobb_read_data(port, REG_PHY_CONTROL) & AUTONEG_EN) {
- value = (RES_SPEED & mdiobb_read_data(port, REG_PHY_SPEC_STATUS)) ?
+ if (mdiobb_read_by_paging(port, REG_PHY_CONTROL) & AUTONEG_EN) {
+ value = (RES_SPEED & mdiobb_read_by_paging(port, REG_PHY_SPEC_STATUS)) ?
SPEED_100M : SPEED_10M;
} else {
- value = (SPEED & mdiobb_read_data(port, REG_PHY_CONTROL)) ?
+ value = (SPEED & mdiobb_read_by_paging(port, REG_PHY_CONTROL)) ?
SPEED_100M : SPEED_10M;
}
eth_Evt = ETH_EVT_SPEED;
@@ -98,11 +134,11 @@ static void _ethernet_sw_isr(void *context) {
break;
case DUPLEX_INT_STATUS:
{
- if (mdiobb_read_data(port, REG_PHY_CONTROL) & AUTONEG_EN) {
- value = (RES_DUPLEX & mdiobb_read_data(port, REG_PHY_SPEC_STATUS)) ?
+ if (mdiobb_read_by_paging(port, REG_PHY_CONTROL) & AUTONEG_EN) {
+ value = (RES_DUPLEX & mdiobb_read_by_paging(port, REG_PHY_SPEC_STATUS)) ?
FULL_DUPLEX : HALF_DUPLEX;
} else {
- value = (DUPLEX & mdiobb_read_data(port, REG_PHY_CONTROL)) ?
+ value = (DUPLEX & mdiobb_read_by_paging(port, REG_PHY_CONTROL)) ?
FULL_DUPLEX : HALF_DUPLEX;
}
eth_Evt = ETH_EVT_DUPLEX;
@@ -110,42 +146,42 @@ static void _ethernet_sw_isr(void *context) {
break;
case AUTONEG_COMPLETE_INT_STATUS:
{
- read_val = mdiobb_read_data(port, REG_PHY_STATUS);
+ read_val = mdiobb_read_by_paging(port, REG_PHY_STATUS);
value = (AUTONEG_DONE & read_val) ? 1 : 0;
eth_Evt = ETH_EVT_AUTONEG;
}
break;
case LINK_CHANGE_INT_STATUS:
{
- read_val = mdiobb_read_data(port, REG_PHY_SPEC_STATUS);
+ read_val = mdiobb_read_by_paging(port, REG_PHY_SPEC_STATUS);
value = (RT_LINK & read_val) ? 1 : 0;
eth_Evt = ETH_EVT_LINK;
}
break;
case MDI_CROSSOVER_INT_STATUS:
{
- read_val = mdiobb_read_data(port, REG_PHY_SPEC_STATUS);
+ read_val = mdiobb_read_by_paging(port, REG_PHY_SPEC_STATUS);
value = (MDI_CROSSOVER_STATUS & read_val) ? 1 : 0;
eth_Evt = ETH_EVT_CROSSOVER;
}
break;
case ENERGY_DET_INT_STATUS:
{
- read_val = mdiobb_read_data(port, REG_PHY_SPEC_STATUS);
+ read_val = mdiobb_read_by_paging(port, REG_PHY_SPEC_STATUS);
value = (SLEEP_MODE & read_val) ? 1 : 0;
eth_Evt = ETH_EVT_ENERGY;
}
break;
case POLARITY_INT_STATUS:
{
- read_val = mdiobb_read_data(port, REG_PHY_SPEC_STATUS);
+ read_val = mdiobb_read_by_paging(port, REG_PHY_SPEC_STATUS);
value = (POLARITY & read_val) ? 1 : 0;
eth_Evt = ETH_EVT_POLARITY;
break;
}
case JABBER_INT_STATUS:
{
- read_val = mdiobb_read_data(port, REG_PHY_SPEC_STATUS);
+ read_val = mdiobb_read_by_paging(port, REG_PHY_SPEC_STATUS);
value = (JABBER_DET & read_val) ? 1 : 0;
eth_Evt = ETH_EVT_JABBER;
}
@@ -193,11 +229,11 @@ ePostCode eth_sw_init(Eth_cfg *ethCfg)
ReturnStatus eth_sw_get_status_speed(uint8_t port, port_speed *speed)
{
ReturnStatus ret = RETURN_OK;
- if (mdiobb_read_data(port, REG_PHY_CONTROL) & AUTONEG_EN)
- *speed = (RES_SPEED & mdiobb_read_data(port, REG_PHY_SPEC_STATUS)) ?
+ if (mdiobb_read_by_paging(port, REG_PHY_CONTROL) & AUTONEG_EN)
+ *speed = (RES_SPEED & mdiobb_read_by_paging(port, REG_PHY_SPEC_STATUS)) ?
SPEED_100M : SPEED_10M;
else
- *speed = (SPEED & mdiobb_read_data(port, REG_PHY_CONTROL)) ?
+ *speed = (SPEED & mdiobb_read_by_paging(port, REG_PHY_CONTROL)) ?
SPEED_100M : SPEED_10M;
return ret;
}
@@ -205,11 +241,11 @@ ReturnStatus eth_sw_get_status_speed(uint8_t port, port_speed *speed)
ReturnStatus eth_sw_get_status_duplex(uint8_t port, port_duplex *duplex)
{
ReturnStatus ret = RETURN_OK;
- if (mdiobb_read_data(port, REG_PHY_CONTROL) & AUTONEG_EN)
- *duplex = (RES_DUPLEX & mdiobb_read_data(port, REG_PHY_SPEC_STATUS)) ?
+ if (mdiobb_read_by_paging(port, REG_PHY_CONTROL) & AUTONEG_EN)
+ *duplex = (RES_DUPLEX & mdiobb_read_by_paging(port, REG_PHY_SPEC_STATUS)) ?
FULL_DUPLEX : HALF_DUPLEX;
else
- *duplex = (DUPLEX & mdiobb_read_data(port, REG_PHY_CONTROL)) ?
+ *duplex = (DUPLEX & mdiobb_read_by_paging(port, REG_PHY_CONTROL)) ?
FULL_DUPLEX : HALF_DUPLEX;
return ret;
}
@@ -217,7 +253,7 @@ ReturnStatus eth_sw_get_status_duplex(uint8_t port, port_duplex *duplex)
ReturnStatus eth_sw_get_status_auto_neg(uint8_t port, uint8_t *autoneg_on)
{
ReturnStatus ret = RETURN_OK;
- *autoneg_on = (AUTONEG_EN & mdiobb_read_data(port, REG_PHY_CONTROL)) ?
+ *autoneg_on = (AUTONEG_EN & mdiobb_read_by_paging(port, REG_PHY_CONTROL)) ?
1 : 0;
return ret;
}
@@ -225,7 +261,7 @@ ReturnStatus eth_sw_get_status_auto_neg(uint8_t port, uint8_t *autoneg_on)
ReturnStatus eth_sw_get_status_sleep_mode(uint8_t port, uint8_t *sleep_mode_en)
{
ReturnStatus ret = RETURN_OK;
- *sleep_mode_en = (SLEEP_MODE & mdiobb_read_data(port, REG_PHY_SPEC_STATUS)) ?
+ *sleep_mode_en = (SLEEP_MODE & mdiobb_read_by_paging(port, REG_PHY_SPEC_STATUS)) ?
1 : 0;
return ret;
}
@@ -233,7 +269,7 @@ ReturnStatus eth_sw_get_status_sleep_mode(uint8_t port, uint8_t *sleep_mode_en)
ReturnStatus eth_sw_get_status_auto_neg_complete(uint8_t port, uint8_t *autoneg_complete)
{
ReturnStatus ret = RETURN_OK;
- *autoneg_complete = (AUTONEG_DONE & mdiobb_read_data(port, REG_PHY_STATUS)) ?
+ *autoneg_complete = (AUTONEG_DONE & mdiobb_read_by_paging(port, REG_PHY_STATUS)) ?
1 : 0;
return ret;
}
@@ -242,7 +278,7 @@ ReturnStatus eth_sw_get_status_link_up(uint8_t port, uint8_t *link_up)
{
ReturnStatus ret = RETURN_OK;
uint16_t read_val = 0;
- read_val = mdiobb_read_data(port, REG_PHY_SPEC_STATUS);
+ read_val = mdiobb_read_by_paging(port, REG_PHY_SPEC_STATUS);
*link_up = (RT_LINK & read_val) ? 1 : 0;
return ret;
}
@@ -257,22 +293,22 @@ ReturnStatus restart_autoneg(uint8_t port)
return ret;
}
-ReturnStatus eth_sw_set_config_speed(uint8_t port, port_duplex speed)
+ReturnStatus eth_sw_set_config_speed(uint8_t port, port_speed speed)
{
ReturnStatus ret = RETURN_OK;
uint16_t read_val =0x0000;
switch (speed) {
case SPEED_10M:
- read_val = mdiobb_read_data(port, REG_PHY_CONTROL);
+ read_val = mdiobb_read_by_paging(port, REG_PHY_CONTROL);
CLEAR_BIT((AUTONEG_EN | SPEED), read_val);
SET_BIT(SOFT_RESET, read_val);
- mdiobb_write_data(port, REG_PHY_CONTROL, read_val);
+ mdiobb_write_by_paging(port, REG_PHY_CONTROL, read_val);
break;
case SPEED_100M:
- read_val = mdiobb_read_data(port, REG_PHY_CONTROL);
+ read_val = mdiobb_read_by_paging(port, REG_PHY_CONTROL);
CLEAR_BIT(AUTONEG_EN, read_val);
SET_BIT((SOFT_RESET | SPEED), read_val);
- mdiobb_write_data(port, REG_PHY_CONTROL, read_val);
+ mdiobb_write_by_paging(port, REG_PHY_CONTROL, read_val);
break;
case SPEED_AUTONEG:
restart_autoneg(port);
@@ -290,16 +326,16 @@ ReturnStatus eth_sw_set_config_duplex(uint8_t port, port_duplex duplex)
uint16_t read_val =0x0000;
switch (duplex) {
case SPEED_10M:
- read_val = mdiobb_read_data(port, REG_PHY_CONTROL);
- CLEAR_BIT((AUTONEG_EN | SPEED), read_val);
+ read_val = mdiobb_read_by_paging(port, REG_PHY_CONTROL);
+ CLEAR_BIT((AUTONEG_EN | DUPLEX), read_val);
SET_BIT(SOFT_RESET, read_val);
- mdiobb_write_data(port, REG_PHY_CONTROL, read_val);
+ mdiobb_write_by_paging(port, REG_PHY_CONTROL, read_val);
break;
case SPEED_100M:
- read_val = mdiobb_read_data(port, REG_PHY_CONTROL);
+ read_val = mdiobb_read_by_paging(port, REG_PHY_CONTROL);
CLEAR_BIT(AUTONEG_EN, read_val);
- SET_BIT((SOFT_RESET | SPEED), read_val);
- mdiobb_write_data(port, REG_PHY_CONTROL, read_val);
+ SET_BIT((SOFT_RESET | DUPLEX), read_val);
+ mdiobb_write_by_paging(port, REG_PHY_CONTROL, read_val);
break;
case SPEED_AUTONEG:
restart_autoneg(port);
@@ -335,7 +371,7 @@ ReturnStatus eth_sw_set_config_sleep_mode_enable(uint8_t port,uint8_t sleep_mode
ReturnStatus get_interrupt(uint8_t port)
{
/* read the register REG_PHY_INTERRUPT_EN */
- return mdiobb_read_data(port, REG_PHY_INTERRUPT_EN);
+ return mdiobb_read_by_paging(port, REG_PHY_INTERRUPT_EN);
}
ReturnStatus eth_sw_set_config_interrupt_enable(uint8_t port, uint8_t *interrupt_mask)
@@ -387,7 +423,7 @@ ReturnStatus eth_sw_set_config_interrupt_enable(uint8_t port, uint8_t *interrupt
return RETURN_NOTOK;
}
}
- mdiobb_write_data(port, REG_PHY_INTERRUPT_EN, write_val);
+ mdiobb_write_by_paging(port, REG_PHY_INTERRUPT_EN, write_val);
return ret;
}
@@ -399,6 +435,126 @@ ReturnStatus eth_sw_set_config_soft_reset(uint8_t port)
return ret;
}
+ReturnStatus eth_sw_enable_loopback(void *driver, void *params){
+ ReturnStatus status = RETURN_OK;
+ Eth_cfg* s_eth_cfg = (Eth_cfg*)driver;
+ Eth_LoopBack_Params* s_eth_lpback = (Eth_LoopBack_Params*)params;
+ switch (s_eth_lpback->loopBackType)
+ {
+ case MACLOOPBACK:
+ status = eth_sw_enable_macloopback(s_eth_cfg->eth_sw_port);
+ break;
+ /*TODO: Implementation to be done for Line and External Loopback*/
+ case LINELOOPBACK:
+ case EXTLOOPBACK:
+ default:
+ break;
+ }
+ return status;
+}
+
+ReturnStatus eth_sw_disable_loopback(void *driver, void *params){
+ ReturnStatus status = RETURN_OK;
+ Eth_cfg* s_eth_cfg = (Eth_cfg*)driver;
+ Eth_LoopBack_Params* s_eth_lpback = (Eth_LoopBack_Params*)params;
+ switch (s_eth_lpback->loopBackType)
+ {
+ case MACLOOPBACK:
+ status = eth_sw_disable_macloopback(s_eth_cfg->eth_sw_port);
+ break;
+ /*TODO: Implementation to be done for Line and External Loopback*/
+ case LINELOOPBACK:
+ case EXTLOOPBACK:
+ default:
+ break;
+ }
+ return status;
+}
+
+ReturnStatus eth_sw_enable_macloopback(uint8_t port)
+{
+ ReturnStatus ret = RETURN_OK;
+ /*For MacLoopback, autonegotiation must be disabled*/
+ mdiobb_clear_bits(port, REG_PHY_CONTROL, AUTONEG_EN);
+ /*Set Loopback bit in PHY control register*/
+ mdiobb_set_bits(port, REG_PHY_CONTROL, LOOPBACK_EN);
+ return ret;
+}
+
+ReturnStatus eth_sw_disable_macloopback(uint8_t port)
+{
+ ReturnStatus ret = RETURN_OK;
+ mdiobb_clear_bits(port, REG_PHY_CONTROL, LOOPBACK_EN);
+ return ret;
+}
+
+ReturnStatus eth_sw_enable_packet_gen(void *driver, void *params)
+{
+ ReturnStatus ret = RETURN_OK;
+ Eth_cfg* s_eth_cfg = (Eth_cfg*)driver;
+ Eth_PacketGen_Params* s_eth_packetParams = (Eth_PacketGen_Params*)params;
+ /*Packet generator params such as packet length, payload type, frame count etc are set in REG_C45_PACKET_GEN*/
+ mdiobb_write_by_paging_c45(s_eth_cfg->eth_sw_port, REG_C45_PACKET_GEN, s_eth_packetParams->reg_value);
+ return ret;
+}
+
+ReturnStatus eth_sw_disable_packet_gen(void *driver)
+{
+ ReturnStatus ret = RETURN_OK;
+ Eth_cfg* s_eth_cfg = (Eth_cfg*)driver;
+ mdiobb_clear_bits_C45(s_eth_cfg->eth_sw_port, REG_C45_PACKET_GEN, PACKET_GEN_EN);
+ return ret;
+}
+
+char *convString(int i, char *result)
+{
+ sprintf(result,"%d",i);
+ return result;
+}
+
+ReturnStatus eth_sw_config_tiva_client(void *driver, void *params) {
+ ReturnStatus ret = RETURN_OK;
+ int count = 0;
+ Eth_cfg* s_eth_cfg = (Eth_cfg*)driver;
+ Eth_TcpClient_Params *s_eth_tcpParams = (Eth_TcpClient_Params*)params;
+
+ Task_Handle taskHandle_client;
+ Task_Params taskParams;
+ Error_Block eb;
+
+ /* Make sure Error_Block is initialized */
+ Error_init(&eb);
+
+ /*Convert 4 bytes received from host to a proper Ipv4 address*/
+ memset(&convStr, '\0', IPSTRING_LENGTH);
+ do {
+ convString(s_eth_tcpParams->ipAddress[count], tempBuf);
+ strcat(convStr, tempBuf);
+ if((MAX - 1) != count) {
+ strcat(convStr, ".");
+ }
+ count++;
+ } while (count < MAX);
+ destIp = convStr;
+ numRepeat = s_eth_tcpParams->repeat;
+ /*
+ * Create the Task that farms outgoing TCP connection.
+ * arg0 will be the port that this task sends the test data to.
+ */
+ Task_Params_init(&taskParams);
+ taskParams.stack = ethTivaClientTaskStack;
+ taskParams.stackSize = TCPHANDLERSTACK;
+ taskParams.priority = ETHTIVACLEINT_TASK_PRIORITY;
+ taskParams.arg0 = s_eth_tcpParams->tcpPort;
+
+ taskHandle_client = Task_create((Task_FuncPtr) tcpHandler_client, &taskParams, &eb);
+ if (taskHandle_client == NULL) {
+ System_printf("Failed to create taskHandle_client Task\n");
+ }
+ System_flush();
+ return ret;
+}
+
ReturnStatus eth_sw_set_config_restart_neg(uint8_t port)
{
ReturnStatus ret = RETURN_OK;
@@ -411,10 +567,10 @@ ReturnStatus eth_sw_set_config_restart_neg(uint8_t port)
ReturnStatus eth_sw_get_config_speed(uint8_t port, port_speed* speed)
{
ReturnStatus ret = RETURN_OK;
- if (AUTONEG_EN & mdiobb_read_data(port, REG_PHY_CONTROL))
+ if (AUTONEG_EN & mdiobb_read_by_paging(port, REG_PHY_CONTROL))
*speed = SPEED_AUTONEG;
else
- *speed = SPEED & mdiobb_read_data(port, REG_PHY_CONTROL) ?
+ *speed = SPEED & mdiobb_read_by_paging(port, REG_PHY_CONTROL) ?
SPEED_100M : SPEED_10M;
return ret;
}
@@ -422,10 +578,10 @@ ReturnStatus eth_sw_get_config_speed(uint8_t port, port_speed* speed)
ReturnStatus eth_sw_get_config_duplex(uint8_t port, port_duplex* duplex)
{
ReturnStatus ret = RETURN_OK;
- if (AUTONEG_EN & mdiobb_read_data(port, REG_PHY_CONTROL))
+ if (AUTONEG_EN & mdiobb_read_by_paging(port, REG_PHY_CONTROL))
*duplex = DUPLEX_AUTONEG;
else
- *duplex = (DUPLEX & mdiobb_read_data(port, REG_PHY_CONTROL)) ?
+ *duplex = (DUPLEX & mdiobb_read_by_paging(port, REG_PHY_CONTROL)) ?
FULL_DUPLEX : HALF_DUPLEX;
return ret;
}
@@ -433,7 +589,7 @@ ReturnStatus eth_sw_get_config_duplex(uint8_t port, port_duplex* duplex)
ReturnStatus eth_sw_get_config_power_down(uint8_t port, uint8_t* power_dwn)
{
ReturnStatus ret = RETURN_OK;
- *power_dwn = (PWR_DOWN & mdiobb_read_data(port-1, REG_PHY_CONTROL)) ?
+ *power_dwn = (PWR_DOWN & mdiobb_read_by_paging(port, REG_PHY_CONTROL)) ?
1 : 0;
return ret;
}
@@ -441,7 +597,7 @@ ReturnStatus eth_sw_get_config_power_down(uint8_t port, uint8_t* power_dwn)
ReturnStatus eth_sw_get_config_sleep_mode(uint8_t port, uint8_t* sleep_mode)
{
ReturnStatus ret = RETURN_OK;
- *sleep_mode = (ENERGY_DET & mdiobb_read_data(port, REG_PHY_SPEC_CONTROL)) ?
+ *sleep_mode = (ENERGY_DET & mdiobb_read_by_paging(port, REG_PHY_SPEC_CONTROL)) ?
1 : 0;
return ret;
}
@@ -450,6 +606,6 @@ ReturnStatus eth_sw_get_config_interrupt_enable(uint8_t port, uint8_t* interrupt
{
ReturnStatus ret = RETURN_OK;
/* read the register REG_PHY_INTERRUPT_EN */
- *interrupt_enb = mdiobb_read_data(port, REG_PHY_INTERRUPT_EN);
+ *interrupt_enb = mdiobb_read_by_paging(port, REG_PHY_INTERRUPT_EN);
return ret;
}
diff --git a/firmware/ec/src/Devices/g510.c b/firmware/ec/src/Devices/g510.c
new file mode 100644
index 0000000000..71fa7fbafc
--- /dev/null
+++ b/firmware/ec/src/Devices/g510.c
@@ -0,0 +1,464 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "devices/uart/gsm.h"
+#include "helpers/array.h"
+#include "helpers/math.h"
+#include "helpers/uart.h"
+#include "inc/common/global_header.h"
+#include "inc/subsystem/testModule/testModule.h"
+#include "platform/oc-sdr/schema/schema.h"
+#include "registry/SSRegistry.h"
+
+#include
+#include
+#include
+
+#include
+#include
+
+/* TODO: move to helper? */
+#define STATIC_STRLEN(s) (ARRAY_SIZE(s) - 1)
+
+#define TESTMOD_TASK_PRIORITY 2
+#define TESTMOD_TASK_STACK_SIZE 2048
+
+#define G510_WRITE_TIMEOUT 500
+#define G510_READ_TIMEOUT 5000
+/* G510 enable line is active-low */
+#define GSM_EN_ASSERT (0)
+#define GSM_EN_DEASSERT (1)
+
+#define GSM_PWR_EN_ASSERT (1)
+#define GSM_PWR_EN_DEASSERT (0)
+
+#define GSM_SHUTDOWN_TIME 200
+#define GSM_COOLDOWN_TIME 50
+
+typedef enum {
+ TWOG_SIM_CALLSTATE_CHANGE = 0,
+ TWOG_SIM_INCOMING_MSG = 1,
+ TWOG_SIM_ALERT_PARAMS_MAX /* Limiter */
+} eTEST_MOD_ALERTParam;
+
+typedef enum {
+ TWOG_CALL_EVT_RING = 0,
+ TWOG_CALL_EVT_CALL_END = 1,
+} eTEST_MODE_CallEvent;
+
+typedef enum {
+ TWOG_IMEI = 0,
+ TWOG_IMSI = 1,
+ TWOG_GETMFG = 2,
+ TWOG_GETMODEL = 3,
+ TWOG_RSSI = 4,
+ TWOG_BER = 5,
+ TWOG_REGSTATUS = 6,
+ TWOG_NETWORK_OP_INFO = 7,
+ TWOG_CELLID = 8,
+ TWOG_BSIC = 9,
+ TWOG_LASTERR = 10,
+ TWOG_PARAM_MAX /* Limiter */
+} eTestModule_StatusParam;
+
+static UART_Handle uartGsm;
+static GSM_Handle s_hGsm = NULL;
+
+static Semaphore_Handle sem_simReady;
+static Semaphore_Handle sem_sms;
+
+static Char testmodTaskStack[TESTMOD_TASK_STACK_SIZE];
+
+static volatile int sms_idx = -1;
+
+static void simReady_cb(void *context)
+{
+ Semaphore_post(sem_simReady);
+}
+
+static void cmti_cb(const GsmCmtiInfo *info, void *context)
+{
+ sms_idx = info->index;
+ Semaphore_post(sem_sms);
+}
+
+static void call_state_cb(const GsmClccInfo *info, void *context)
+{
+ LOGGER("CLCC %u\n", info->call_state);
+ switch (info->call_state) {
+ case GSM_CALL_STATE_INCOMING: {
+ eTEST_MODE_CallEvent callState = TWOG_CALL_EVT_RING;
+ OCMP_GenerateAlert(context, TWOG_SIM_CALLSTATE_CHANGE, &callState);
+ break;
+ }
+ case GSM_CALL_STATE_RELEASED: {
+ eTEST_MODE_CallEvent callState = TWOG_CALL_EVT_CALL_END;
+ OCMP_GenerateAlert(context, TWOG_SIM_CALLSTATE_CHANGE, &callState);
+ break;
+ }
+ }
+}
+
+/* Configures the various IO pins associated with this subsystem */
+static bool configure_io(TestMod_Cfg *testmod_cfg) {
+ //const TestMod_Cfg *testmod_cfg = (TestMod_Cfg *)testModuleCfg;
+ G510_Cfg *cfg = &testmod_cfg->g510_cfg;
+
+ OcGpio_configure(&cfg->pin_sim_present, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&cfg->pin_enable, OCGPIO_CFG_OUTPUT |
+ OCGPIO_CFG_OUT_LOW);
+ OcGpio_configure(&cfg->pin_pwr_en, OCGPIO_CFG_OUTPUT |
+ OCGPIO_CFG_OUT_LOW);
+
+ return true;
+}
+
+static UART_Handle open_comm(TestMod_Cfg * testmod_cfg)
+{
+ //const TestMod_Cfg *testmod_cfg = (TestMod_Cfg *)testModuleCfg;
+
+ // Open GSM UART
+ UART_Params uartParams;
+ UART_Params_init(&uartParams);
+ uartParams.writeDataMode = UART_DATA_BINARY;
+ uartParams.readDataMode = UART_DATA_BINARY;
+ uartParams.readReturnMode = UART_RETURN_FULL;
+ uartParams.readEcho = UART_ECHO_OFF;
+ uartParams.baudRate = 115200;
+ uartParams.dataLength = UART_LEN_8;
+ uartParams.parityType = UART_PAR_NONE;
+ uartParams.stopBits = UART_STOP_ONE;
+ uartParams.writeTimeout = G510_WRITE_TIMEOUT;
+ uartParams.readTimeout = G510_READ_TIMEOUT;
+ return UART_open(testmod_cfg->g510_cfg.uart, &uartParams);
+}
+
+static bool g510_reset(TestMod_Cfg * testmod_cfg)
+{
+ //const TestMod_Cfg *testmod_cfg = (TestMod_Cfg *)testModuleCfg;
+ const G510_Cfg *cfg = &testmod_cfg->g510_cfg;
+
+ /* Ensure the enable line is high (deasserted) so the module doesn't
+ * restart itself */
+ OcGpio_write(&cfg->pin_enable, GSM_EN_DEASSERT);
+
+ /* Void any data already in modem, then send reset command */
+ static const char CTRL_X = 0x18;
+ static const char resetCmd[] = "AT+CFUN=0\r\n";
+ UART_write(uartGsm, &CTRL_X, sizeof(CTRL_X));
+ UART_write(uartGsm, resetCmd, STATIC_STRLEN(resetCmd));
+
+ /* Wait for module to catch up */
+ Task_sleep(GSM_SHUTDOWN_TIME);
+
+ /* Kill power to be sure */
+ OcGpio_write(&cfg->pin_pwr_en, GSM_PWR_EN_DEASSERT);
+ UART_flush(uartGsm);
+ Task_sleep(GSM_COOLDOWN_TIME);
+
+ /* Enable the module. We can keep the line asserted - the module requires an
+ * edge before it will look at this line again */
+ OcGpio_write(&cfg->pin_enable, GSM_EN_ASSERT);
+ OcGpio_write(&cfg->pin_pwr_en, GSM_PWR_EN_ASSERT);
+
+ /* Wait for the module to be ready */
+ const char bootStr[] = "AT command ready\r\n";
+ char buf[STATIC_STRLEN(bootStr)];
+
+ if (UART_read(uartGsm, buf, sizeof(buf)) < sizeof(buf)) {
+ LOGGER_ERROR("Timeout waiting for G510\n");
+ return false;
+ }
+
+ if (memcmp(buf, bootStr, sizeof(buf)) != 0) {
+ LOGGER_ERROR("Unrecognized G510 boot str: %.*s\n", (int)sizeof(buf),
+ buf);
+ return false;
+ }
+
+ return true;
+}
+
+
+ReturnStatus g510_init(TestMod_Cfg* testModuleCfg, const void *alert_token)
+{
+ if (!configure_io(testModuleCfg)) {
+ return RETURN_NOTOK;
+ }
+
+ uartGsm = open_comm(testModuleCfg);
+ if (!uartGsm) {
+ return RETURN_NOTOK;
+ }
+
+ LOGGER("Resetting GSM module\n");
+ if (!g510_reset(testModuleCfg)) {
+ return RETURN_NOTOK;
+ }
+ Task_sleep(100); // FIXME: this lets things catch up when using the emulator
+ LOGGER("GSM module ready\n");
+
+ // Configure SBD module
+ const GsmCallbackList cbList = {
+ .creg = NULL,
+ .simReady = simReady_cb,
+ .cmti = cmti_cb,
+ .ring = NULL, /* We're using clcc, so ignore RING alerts */
+ .clcc = call_state_cb,
+ };
+
+ GsmCgsnInfo cgsnInfo;
+ s_hGsm = GSM_init(uartGsm, &cbList, (void *)alert_token);
+
+ if (!s_hGsm) {
+ return RETURN_NOTOK;
+ }
+
+ GSM_cgsn(s_hGsm, &cgsnInfo);
+ LOGGER("IMEI: %s\n", cgsnInfo.imei);
+
+ // TODO: call cfun to ensure radio is active (this setting is sticky)
+
+ GSM_creg(s_hGsm, GSM_CREG_STATUS_ENABLE_LOC);
+
+ LOGGER("Test module ready\n");
+
+ return RETURN_OK;
+}
+
+static void testModule_task(UArg a0, UArg a1)
+{
+ const void *alert_token = (const void *)a0;
+
+ /* Wait for our SIM card to be ready and then finish init */
+ Semaphore_pend(sem_simReady, BIOS_WAIT_FOREVER);
+ LOGGER("TESTMOD::SIM Ready\n");
+
+ uint64_t imsi;
+ GSM_cimi(s_hGsm, &imsi);
+ /* TODO: hack because System_printf is crappy and doesn't support %llu */
+ char imsiStr[16];
+ snprintf(imsiStr, sizeof(imsiStr), "%"PRIu64, imsi);
+ LOGGER("IMSI: %s\n", imsiStr);
+
+ /* NOTE: if the message storage fills up, the G510 will just
+ * reject any SMS from the network, so we need to make sure
+ * it's clear
+ */
+ GSM_cmgd(s_hGsm, 1, GSM_CMGD_DELETE_ALL);
+
+ GSM_clccSet(s_hGsm, true); /* Enable clcc (call state) msg */
+
+ /* Finish device configuration */
+ if (!GSM_cnmi(s_hGsm, 2, 1, 0, 0 , 0) || /* enable sms arrival notif */
+ !GSM_cmgf(s_hGsm, GSM_MSG_FMT_TEXT) || /* set to text mode */
+ !GSM_csmp(s_hGsm, 17, 167, 0, 0) || /* text mode parameters */
+ !GSM_csdh(s_hGsm, true)) { /* display extra info for cgmr */
+ s_hGsm = NULL; /* TODO: proper teardown of handle */
+ }
+
+ while (Semaphore_pend(sem_sms, BIOS_WAIT_FOREVER)) {
+ if (sms_idx >= 0) {
+ GSM_cnma(s_hGsm);
+ static char sms[160];
+ if (GSM_cmgr(s_hGsm, sms_idx, sms, NULL)) {
+ LOGGER("SMS: %.*s\n", 50, sms); // System_printf has a limited buffer
+ OCMP_GenerateAlert(alert_token, TWOG_SIM_INCOMING_MSG, sms);
+ } else {
+ LOGGER_ERROR("TESTMOD:Failed to read SMS\n");
+ }
+
+ GSM_cmgd(s_hGsm, sms_idx, GSM_CMGD_DELETE_AT_INDEX);
+ sms_idx = -1;
+
+ //if (GSM_cmgs(s_hGsm, "29913", "Hello from GSM :)") < 0) {
+ // LOGGER_ERROR("TESTMOD:Error sending SMS\n");
+ //}
+ }
+ }
+}
+
+ePostCode g510_task_init(void *driver, const void **config,
+ const void *alert_token)
+{
+ /* TODO: there's probably a better way to wait on the sim card */
+ sem_simReady = Semaphore_create(0, NULL, NULL);
+ sem_sms = Semaphore_create(0, NULL, NULL);
+ if (!sem_simReady || !sem_sms) {
+ LOGGER_ERROR("TESTMOD:ERROR:: Failed creating semaphores\n");
+ Semaphore_delete(&sem_simReady);
+ Semaphore_delete(&sem_sms);
+ return POST_DEV_CFG_FAIL;
+ }
+
+ /* TODO: it's less than ideal to have a dedicated task for this */
+ /* Create a task */
+ Task_Params taskParams;
+ Task_Params_init(&taskParams);
+ taskParams.stack = testmodTaskStack;
+ taskParams.stackSize = TESTMOD_TASK_STACK_SIZE;
+ taskParams.priority = TESTMOD_TASK_PRIORITY;
+ taskParams.arg0 = (intptr_t)alert_token;
+ Task_Handle task = Task_create(testModule_task, &taskParams, NULL);
+ if (!task) {
+ LOGGER("TESTMOD::FATAL: Unable to start G510 task\n");
+ Semaphore_delete(&sem_simReady);
+ Semaphore_delete(&sem_sms);
+ return POST_DEV_CFG_FAIL;
+ }
+
+ if (g510_init(driver,alert_token) != RETURN_OK) {
+ return POST_DEV_CFG_FAIL;
+ }
+ return POST_DEV_CFG_DONE;
+}
+
+bool g510_get_imei( TestMod_2G_Status_Data *p2gStatusData)
+{
+ GsmCgsnInfo cgsnInfo;
+ if (!GSM_cgsn(s_hGsm, &cgsnInfo)) {
+ return false;
+ }
+ p2gStatusData->imei = strtoull(cgsnInfo.imei, NULL, 10);
+ return true;
+}
+
+bool g510_get_imsi( TestMod_2G_Status_Data *p2gStatusData)
+{
+ uint64_t imsi;
+ if (!GSM_cimi(s_hGsm, &imsi)) {
+ return false;
+ }
+ p2gStatusData->imsi = imsi;
+ return true;
+}
+
+bool g510_get_mfg( TestMod_2G_Status_Data *p2gStatusData)
+{
+ GsmCgmiInfo cgmiInfo;
+ if (!GSM_cgmi(s_hGsm, &cgmiInfo)) {
+ return false;
+ }
+ /* TODO: idea - make safe strncpy that always terminates str */
+ strncpy(p2gStatusData->mfg, cgmiInfo.mfgId,
+ sizeof(p2gStatusData->mfg));
+ return true;
+}
+
+bool g510_get_model( TestMod_2G_Status_Data *p2gStatusData)
+{
+ GsmCgmmInfo cgmmInfo;
+ if (!GSM_cgmm(s_hGsm, &cgmmInfo)) {
+ return false;
+ }
+ strncpy(p2gStatusData->model, cgmmInfo.model,
+ sizeof(p2gStatusData->model));
+ return true;
+}
+
+bool g510_get_rssi( TestMod_2G_Status_Data *p2gStatusData)
+{
+ GsmCsqInfo csqInfo;
+ if (!GSM_csq(s_hGsm, &csqInfo)) {
+ return false;
+ }
+ p2gStatusData->rssi = csqInfo.rssi;
+ return true;
+}
+
+bool g510_get_ber( TestMod_2G_Status_Data *p2gStatusData)
+{
+ GsmCsqInfo csqInfo;
+ if (!GSM_csq(s_hGsm, &csqInfo)) {
+ return false;
+ }
+ p2gStatusData->ber = csqInfo.ber;
+ return true;
+}
+
+bool g510_get_regStatus( TestMod_2G_Status_Data *p2gStatusData)
+{
+ GsmCregInfo cregInfo;
+ if (!GSM_cregRead(s_hGsm, &cregInfo)) {
+ return false;
+ }
+ p2gStatusData->regStat = cregInfo.stat;
+ return true;
+}
+
+bool g510_get_cellId( TestMod_2G_Status_Data *p2gStatusData)
+{
+ /* NOTE: requires CREG mode 2 (unsolicited + location info) */
+ GsmCregInfo cregInfo;
+ if (!GSM_cregRead(s_hGsm, &cregInfo)) {
+ return false;
+ }
+ p2gStatusData->cid = cregInfo.cid;
+ return true;
+}
+
+/* Command handling */
+bool TestMod_cmdEnable(void *driver, void *params)
+{
+ LOGGER("TESTMOD 2G Enable\n");
+ return GSM_cfun(s_hGsm, GSM_CFUN_FULL);
+}
+
+bool TestMod_cmdDisable(void *driver, void *params)
+{
+ LOGGER("TESTMOD 2G Disable\n");
+ return GSM_cfun(s_hGsm, GSM_CFUN_AIRPLANE);
+}
+
+bool TestMod_cmdDisconnect(void *driver, void *params)
+{
+ LOGGER("TESTMOD 2G Disconnect\n");
+ return GSM_cops(s_hGsm, GSM_COPS_MODE_DEREG, GSM_COPS_FMT_NUMERIC, "");
+}
+
+bool TestMod_cmdConnect(void *driver, void *params)
+{
+ LOGGER("TESTMOD 2G Connect\n");
+ return GSM_cops(s_hGsm, GSM_COPS_MODE_AUTO, GSM_COPS_FMT_NUMERIC, "");
+}
+
+bool TestMod_cmdSendSms(void *driver, void *params)
+{
+ LOGGER("TESTMOD 2G SMS\n");
+ /* TODO: we assume number is null terminated, should have check */
+ TestModule_sms *sms = params;
+ return GSM_cmgs(s_hGsm, sms->number, sms->msg);
+}
+
+bool TestMod_cmdDial(void *driver, void *params)
+{
+ /* TODO: we assume number is null terminated, should have check */
+ char *number = params;
+ /* TODO: watch for call state change to determine if successful */
+ LOGGER("TESTMOD 2G Dial\n");
+ return GSM_d(s_hGsm, number);
+}
+
+bool TestMod_cmdAnswer(void *driver, void *params)
+{
+ LOGGER("TESTMOD 2G answer\n");
+ return GSM_a(s_hGsm);
+}
+
+bool TestMod_cmdHangup(void *driver, void *params)
+{
+ LOGGER("TESTMOD 2G hangup\n");
+ return GSM_h(s_hGsm);
+}
+
+bool TestMod_cmdReset(void *driver, void *params)
+{
+ LOGGER("TESTMOD Reset\n");
+ return false; /* Not yet implemented */
+}
+
diff --git a/firmware/ec/src/Devices/i2c/threaded_int.c b/firmware/ec/src/Devices/i2c/threaded_int.c
index 1d2de0abfa..c5ce2746de 100644
--- a/firmware/ec/src/Devices/i2c/threaded_int.c
+++ b/firmware/ec/src/Devices/i2c/threaded_int.c
@@ -6,6 +6,7 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
+
#include "threaded_int.h"
#include "inc/common/global_header.h"
diff --git a/firmware/ec/src/Devices/i2c/threaded_int.h b/firmware/ec/src/Devices/i2c/threaded_int.h
index a4f271fc55..891b77587e 100644
--- a/firmware/ec/src/Devices/i2c/threaded_int.h
+++ b/firmware/ec/src/Devices/i2c/threaded_int.h
@@ -6,6 +6,7 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
+
#pragma once
#ifndef DEVICES_I2C_THREADED_INT_H_
diff --git a/firmware/ec/src/Devices/i2cbus.c b/firmware/ec/src/Devices/i2cbus.c
index ea3f68797b..96b5e5b9be 100644
--- a/firmware/ec/src/Devices/i2cbus.c
+++ b/firmware/ec/src/Devices/i2cbus.c
@@ -10,11 +10,10 @@
//*****************************************************************************
// HEADER FILES
//*****************************************************************************
-#include "inc/common/i2cbus.h"
-
#include "Board.h"
#include "helpers/array.h"
#include "inc/common/global_header.h"
+#include "inc/common/i2cbus.h"
/* TI-RTOS driver files */
#include
@@ -150,4 +149,3 @@ ReturnStatus i2c_reg_read( I2C_Handle i2cHandle,
}
return status;
}
-
diff --git a/firmware/ec/src/Devices/ina226.c b/firmware/ec/src/Devices/ina226.c
index 533fb0e6d9..c1b8f6463d 100644
--- a/firmware/ec/src/Devices/ina226.c
+++ b/firmware/ec/src/Devices/ina226.c
@@ -11,11 +11,11 @@
// HEADER FILES
//*****************************************************************************
#include "inc/devices/ina226.h"
+
#include "devices/i2c/threaded_int.h"
+#include "inc/common/byteorder.h"
#include "inc/common/global_header.h"
#include "helpers/memory.h"
-#include "inc/common/byteorder.h"
-
/*****************************************************************************
* REGISTER DEFINITIONS
@@ -558,7 +558,7 @@ ReturnStatus ina226_enableAlert(INA226_Dev *dev, INA226_Event evt)
/*****************************************************************************
*****************************************************************************/
-ePostCode ina226_probe(INA226_Dev *dev)
+ePostCode ina226_probe(INA226_Dev *dev, POSTData *postData)
{
uint16_t devId = 0x00;
uint16_t manfId = 0x0000;
@@ -575,6 +575,6 @@ ePostCode ina226_probe(INA226_Dev *dev)
if (manfId != INA226_MANFACTURE_ID) {
return POST_DEV_ID_MISMATCH;
}
-
+ post_update_POSTData(postData, dev->cfg.dev.bus, dev->cfg.dev.slave_addr,manfId, devId);
return POST_DEV_FOUND;
}
diff --git a/firmware/ec/src/Devices/led.c b/firmware/ec/src/Devices/led.c
index 5604d06c3c..62be616e2d 100644
--- a/firmware/ec/src/Devices/led.c
+++ b/firmware/ec/src/Devices/led.c
@@ -11,8 +11,9 @@
// HEADER FILES
//*****************************************************************************
#include "inc/devices/led.h"
-#include "inc/common/global_header.h"
+#include "common/inc/global/post_frame.h"
+#include "inc/common/global_header.h"
#include "inc/subsystem/hci/hci.h"
#include
@@ -24,8 +25,6 @@
/*****************************************************************************
* CONSTANTS DEFINITIONS
*****************************************************************************/
-extern void *sys_config[];
-#define HCI ((Hci_Cfg *)sys_config[OC_SS_HCI])
/* List of LEDS on the LED board.
----------------------------------------------------------
@@ -175,16 +174,16 @@ static const hciLedData ledData[HCI_LED_TOTAL_NOS] = {
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-ReturnStatus hci_led_turnon_green(void)
+ReturnStatus hci_led_turnon_green(const HciLedCfg *driver)
{
ReturnStatus status = RETURN_OK;
/* Turn On Left side Green LEDs */
- status = ioexp_led_set_data(&HCI->led.sx1509_dev[HCI_LED_DRIVER_LEFT],
+ status = ioexp_led_set_data(&driver->sx1509_dev[HCI_LED_DRIVER_LEFT],
SX1509_REG_AB, 0x55, 0x55);
if (status == RETURN_OK) {
/* Turn On Right side Green LEDs */
- status = ioexp_led_set_data(&HCI->led.sx1509_dev[HCI_LED_DRIVER_RIGHT],
+ status = ioexp_led_set_data(&driver->sx1509_dev[HCI_LED_DRIVER_RIGHT],
SX1509_REG_AB, 0x55, 0x55);
}
return status;
@@ -200,16 +199,16 @@ ReturnStatus hci_led_turnon_green(void)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-ReturnStatus hci_led_turnon_red(void)
+ReturnStatus hci_led_turnon_red(const HciLedCfg *driver)
{
ReturnStatus status = RETURN_OK;
/* Turn On Left side Red LEDs */
- status = ioexp_led_set_data(&HCI->led.sx1509_dev[HCI_LED_DRIVER_LEFT],
+ status = ioexp_led_set_data(&driver->sx1509_dev[HCI_LED_DRIVER_LEFT],
SX1509_REG_AB, 0xAA, 0xAA);
if (status == RETURN_OK) {
/* Turn On Right side Red LEDs */
- status = ioexp_led_set_data(&HCI->led.sx1509_dev[HCI_LED_DRIVER_RIGHT],
+ status = ioexp_led_set_data(&driver->sx1509_dev[HCI_LED_DRIVER_RIGHT],
SX1509_REG_AB, 0xAA, 0xAA);
}
return status;
@@ -225,16 +224,16 @@ ReturnStatus hci_led_turnon_red(void)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-ReturnStatus hci_led_turnoff_all(void)
+ReturnStatus hci_led_turnoff_all(const HciLedCfg *driver)
{
ReturnStatus status = RETURN_OK;
/* Turn Off Left side LEDs */
- status = ioexp_led_set_data(&HCI->led.sx1509_dev[HCI_LED_DRIVER_LEFT],
+ status = ioexp_led_set_data(&driver->sx1509_dev[HCI_LED_DRIVER_LEFT],
SX1509_REG_AB, LED_OFF, LED_OFF);
if (status == RETURN_OK) {
/* Turn Off Right side LEDs */
- status = ioexp_led_set_data(&HCI->led.sx1509_dev[HCI_LED_DRIVER_RIGHT],
+ status = ioexp_led_set_data(&driver->sx1509_dev[HCI_LED_DRIVER_RIGHT],
SX1509_REG_AB, LED_OFF, LED_OFF);
}
return status;
@@ -281,17 +280,17 @@ static ReturnStatus hci_led_configure_sx1509_onofftime(const I2C_Dev *ioexpDev)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-static ReturnStatus hci_led_configure_onofftime(void)
+static ReturnStatus hci_led_configure_onofftime(const HciLedCfg *driver)
{
ReturnStatus status = RETURN_OK;
/* Configure LED driver parameters(RegTOn, RegOff) for Left side LEDs */
status = hci_led_configure_sx1509_onofftime(
- &HCI->led.sx1509_dev[HCI_LED_DRIVER_LEFT]);
+ &driver->sx1509_dev[HCI_LED_DRIVER_LEFT]);
if (status == RETURN_OK) {
/* Configure LED driver parameters(RegTOn, RegOff) for Right side LEDs */
hci_led_configure_sx1509_onofftime(
- &HCI->led.sx1509_dev[HCI_LED_DRIVER_RIGHT]);
+ &driver->sx1509_dev[HCI_LED_DRIVER_RIGHT]);
}
return status;
}
@@ -307,28 +306,28 @@ static ReturnStatus hci_led_configure_onofftime(void)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-ReturnStatus hci_led_system_boot(void)
+ReturnStatus hci_led_system_boot(const HciLedCfg *driver)
{
ReturnStatus status = RETURN_OK;
uint8_t index = 0;
uint8_t regValue = 0;
/* Turn off all LEDs */
- status = hci_led_turnoff_all();
+ status = hci_led_turnoff_all(driver);
if (status != RETURN_OK) {
return status;
}
/* Turn on the LEDs one by one from Left to Right of LED Board */
for (index = 0; index < HCI_LED_TOTAL_NOS; index++) {
status = ioexp_led_get_data(
- &HCI->led.sx1509_dev[ledData[index].ioexpDev],
+ &driver->sx1509_dev[ledData[index].ioexpDev],
ledData[index].ledReg,
®Value);
regValue &= ledData[index].ledGreen;
status = ioexp_led_set_data(
- &HCI->led.sx1509_dev[ledData[index].ioexpDev],
+ &driver->sx1509_dev[ledData[index].ioexpDev],
ledData[index].ledReg, regValue,
0);
if (status != RETURN_OK) {
@@ -351,24 +350,24 @@ ReturnStatus hci_led_system_boot(void)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-ReturnStatus hci_led_system_running(void)
+ReturnStatus hci_led_system_running(const HciLedCfg *driver)
{
ReturnStatus status = RETURN_OK;
/* Turn off all LEDs */
- status = hci_led_turnoff_all();
+ status = hci_led_turnoff_all(driver);
if (status != RETURN_OK) {
return status;
}
/* Configure on and off time of LED GPIO pins */
- status = hci_led_configure_onofftime();
+ status = hci_led_configure_onofftime(driver);
if (status != RETURN_OK) {
return status;
}
/* Turn on all the green LEDS */
- status = hci_led_turnon_green();
+ status = hci_led_turnon_green(driver);
return status;
}
@@ -384,24 +383,24 @@ ReturnStatus hci_led_system_running(void)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-ReturnStatus hci_led_system_failure(void)
+ReturnStatus hci_led_system_failure(const HciLedCfg *driver)
{
ReturnStatus status = RETURN_OK;
/* Turn off all LEDs */
- status = hci_led_turnoff_all();
+ status = hci_led_turnoff_all(driver);
if (status != RETURN_OK) {
return status;
}
/* Configure on and off time of LED GPIO pins */
- status = hci_led_configure_onofftime();
+ status = hci_led_configure_onofftime(driver);
if (status != RETURN_OK) {
return status;
}
/* Turn on all the Red LEDS */
- status = hci_led_turnon_red();
+ status = hci_led_turnon_red(driver);
return status;
}
@@ -417,12 +416,12 @@ ReturnStatus hci_led_system_failure(void)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-ReturnStatus hci_led_radio_failure(void)
+ReturnStatus hci_led_radio_failure(const HciLedCfg *driver)
{
ReturnStatus status = RETURN_OK;
/* Turn off all LEDs */
- status = hci_led_turnoff_all();
+ status = hci_led_turnoff_all(driver);
if (status == RETURN_OK) {
/* Turn On Left side Red LEDs */
status = ioexp_led_set_data(HCI_LED_DRIVER_LEFT, SX1509_REG_AB, 0xAA, 0xAA);
@@ -442,15 +441,15 @@ ReturnStatus hci_led_radio_failure(void)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-ReturnStatus hci_led_backhaul_failure(void)
+ReturnStatus hci_led_backhaul_failure(const HciLedCfg *driver)
{
ReturnStatus status = RETURN_OK;
/* Turn off all LEDs */
- status = hci_led_turnoff_all();
+ status = hci_led_turnoff_all(driver);
if (status == RETURN_OK) {
/* Turn On Right side Red LEDs */
- status = ioexp_led_set_data(&HCI->led.sx1509_dev[HCI_LED_DRIVER_RIGHT],
+ status = ioexp_led_set_data(&driver->sx1509_dev[HCI_LED_DRIVER_RIGHT],
SX1509_REG_AB, 0xAA, 0xAA);
}
return status;
@@ -467,7 +466,7 @@ ReturnStatus hci_led_backhaul_failure(void)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-ReturnStatus led_init(void)
+ReturnStatus led_init(const HciLedCfg *driver)
{
ReturnStatus status = RETURN_OK;
uint8_t index;
@@ -487,30 +486,30 @@ ReturnStatus led_init(void)
/* Initilaize Left and Right LED driver SX1509 to turn on LED */
for (index = 0; index < HCI_LED_DRIVER_COUNT; index++) {
DEBUG("HCILED:INFO:: Initilaizing LED driver SX1509 0x%x.\n",\
- HCI->led.sx1509_dev[index].slave_addr);
+ driver->sx1509_dev[index].slave_addr);
/* Do software reset for LED driver */
- status = ioexp_led_software_reset(&HCI->led.sx1509_dev[index]);
+ status = ioexp_led_software_reset(&driver->sx1509_dev[index]);
if (status != RETURN_OK) {
return status;
}
/* Disable input buffer (RegInputDisable) */
- status = ioexp_led_config_inputbuffer(&HCI->led.sx1509_dev[index],
+ status = ioexp_led_config_inputbuffer(&driver->sx1509_dev[index],
SX1509_REG_AB, 0xFF, 0xFF);
if (status != RETURN_OK) {
return status;
}
/* Disable pull-up (RegPullUp) */
- status = ioexp_led_config_pullup(&HCI->led.sx1509_dev[index],
+ status = ioexp_led_config_pullup(&driver->sx1509_dev[index],
SX1509_REG_AB, 0x00, 0x00);
if (status != RETURN_OK) {
return status;
}
/* Enable open drain (RegOpenDrain) */
- status = ioexp_led_config_opendrain(&HCI->led.sx1509_dev[index],
+ status = ioexp_led_config_opendrain(&driver->sx1509_dev[index],
SX1509_REG_AB, 0xFF, 0xFF);
if (status != RETURN_OK) {
return status;
@@ -518,14 +517,14 @@ ReturnStatus led_init(void)
/* Set direction to output (RegDir) –
* by default RegData is set high => LED OFF */
- status = ioexp_led_config_data_direction(&HCI->led.sx1509_dev[index],
+ status = ioexp_led_config_data_direction(&driver->sx1509_dev[index],
SX1509_REG_AB, 0x00, 0x00);
if (status != RETURN_OK) {
return status;
}
/* Configure internal clock oscillator frequency */
- status = ioexp_led_config_clock(&HCI->led.sx1509_dev[index],
+ status = ioexp_led_config_clock(&driver->sx1509_dev[index],
SX1509_INTERNAL_CLOCK_2MHZ,
SX1509_CLOCK_OSC_IN);
if (status != RETURN_OK) {
@@ -533,54 +532,59 @@ ReturnStatus led_init(void)
}
/* Configure LED driver clock and mode if relevant (RegMisc) */
- status = ioexp_led_config_misc(&HCI->led.sx1509_dev[index],
+ status = ioexp_led_config_misc(&driver->sx1509_dev[index],
REG_MISC_VALUE);
if (status != RETURN_OK) {
return status;
}
/* Enable LED driver operation (RegLEDDriverEnable) */
- status = ioexp_led_enable_leddriver(&HCI->led.sx1509_dev[index],
+ status = ioexp_led_enable_leddriver(&driver->sx1509_dev[index],
SX1509_REG_AB, 0xFF, 0xFF);
if (status != RETURN_OK) {
return status;
}
DEBUG("HCILED:INFO:: LED driver SX1509 0x%x is Initialized.\n",
- HCI->led.sx1509_dev[index].slave_addr);
+ driver->sx1509_dev[index].slave_addr);
}
return status;
}
+void led_configure(HciLedCfg* driver) {
+ /* Initialize IO pins */
+ OcGpio_configure(&driver->pin_ec_gpio, OCGPIO_CFG_OUTPUT |
+ OCGPIO_CFG_OUT_HIGH);
+}
/*****************************************************************************
** FUNCTION NAME : led_probe
**
** DESCRIPTION : Check LED module is present or not by reading Test
** register of LED driver(SX1509) on LED board.
**
- ** ARGUMENTS : None
+ ** ARGUMENTS : HCI Config driver and Postdata pointer.
**
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-ePostCode led_probe(void)
+ePostCode led_probe(const HciLedCfg *driver, POSTData* postData)
{
ReturnStatus status = RETURN_NOTOK;
uint8_t regValue = 0x00;
/* Read Test Register 1 of LED driver SX1509 of Left LED Module(RegTest1) */
status = ioexp_led_read_testregister_1(
- &HCI->led.sx1509_dev[HCI_LED_DRIVER_LEFT], ®Value);
+ &driver->sx1509_dev[HCI_LED_DRIVER_LEFT], ®Value);
if (status != RETURN_OK) {
return POST_DEV_MISSING;
}
/* Read Test Register 1 of LED driver SX1509 of Right LED Module(RegTest1) */
status |= ioexp_led_read_testregister_1(
- &HCI->led.sx1509_dev[HCI_LED_DRIVER_RIGHT], ®Value);
+ &driver->sx1509_dev[HCI_LED_DRIVER_RIGHT], ®Value);
if (status != RETURN_OK) {
return POST_DEV_MISSING;
}
-
+ post_update_POSTData(postData, &driver->sx1509_dev[HCI_LED_DRIVER_LEFT].bus, &driver->sx1509_dev[HCI_LED_DRIVER_LEFT].slave_addr,0xFF, 0xFF);
return POST_DEV_FOUND;
}
diff --git a/firmware/ec/src/Devices/ltc4015.c b/firmware/ec/src/Devices/ltc4015.c
index bbb0637292..f519682cfa 100644
--- a/firmware/ec/src/Devices/ltc4015.c
+++ b/firmware/ec/src/Devices/ltc4015.c
@@ -11,11 +11,12 @@
// HEADER FILES
//*****************************************************************************
#include "inc/devices/ltc4015.h"
-#include "ltc4015_registers.h"
-#include "inc/common/byteorder.h"
+
#include "devices/i2c/threaded_int.h"
+#include "inc/common/byteorder.h"
#include "helpers/math.h"
#include "helpers/memory.h"
+#include "ltc4015_registers.h"
#include
#include /* For abort() */
@@ -583,7 +584,12 @@ ReturnStatus LTC4015_enableChargerStateAlerts(LTC4015_Dev *dev,
return _enable_charger_state_alerts(dev, alert_reg);
}
-ePostCode LTC4015_probe(LTC4015_Dev *dev)
+void LTC4015_configure(LTC4015_Dev *dev)
+{
+ OcGpio_configure(&dev->cfg.pin_lt4015_i2c_sel, OCGPIO_CFG_OUTPUT);
+}
+
+ePostCode LTC4015_probe(LTC4015_Dev *dev, POSTData *postData)
{
uint16_t ltcStatusReg = 0;
/* TODO: Check reading bits from System regsiter is enough to conclude
@@ -594,5 +600,6 @@ ePostCode LTC4015_probe(LTC4015_Dev *dev)
if (!(ltcStatusReg & LTC4015_CHARGER_ENABLED)) {
return POST_DEV_MISSING;
}
+ post_update_POSTData(postData, dev->cfg.i2c_dev.bus, dev->cfg.i2c_dev.slave_addr,0xFF, 0xFF);
return POST_DEV_FOUND;
}
diff --git a/firmware/ec/src/Devices/ltc4274.c b/firmware/ec/src/Devices/ltc4274.c
index f9ba6923a9..37a541855a 100644
--- a/firmware/ec/src/Devices/ltc4274.c
+++ b/firmware/ec/src/Devices/ltc4274.c
@@ -10,11 +10,11 @@
//*****************************************************************************
// HEADER FILES
//*****************************************************************************
+#include "inc/devices/ltc4274.h"
#include "Board.h"
#include "inc/common/global_header.h"
#include "inc/common/i2cbus.h"
-#include "inc/devices/ltc4274.h"
#include "inc/subsystem/power/power.h"
#include
@@ -124,9 +124,6 @@ typedef struct {
static tPower_PSEStatus_Info PSEStatus_Info;
-extern void *sys_config[];
-#define PWR ((Power_Cfg *)sys_config[OC_SS_PWR])
-
/******************************************************************************
* @fn ltc4274_raw_write
*
@@ -569,7 +566,7 @@ ReturnStatus ltc4274_get_class_status(const I2C_Dev *i2c_dev, ePSEClassType *pse
LOGGER("LTC4274:ERROR:: PSE class status read failed.\n");
}
if (!(LTC4274_CLASSIFICATION_COMPLETE(val))) {
- *pseClass =LTC4274_DETECT_ERROR;
+ *pseClass = LTC4274_CLASS_ERROR;
} else {
status = ltc4274_read( i2c_dev, LTC4274_REG_STATUS, &val);
if (status != RETURN_OK) {
@@ -801,12 +798,12 @@ ReturnStatus ltc4274_debug_read(const I2C_Dev *i2c_dev,
*
* @return void
*/
-void ltc4274_enable(uint8_t enableVal)
+void ltc4274_enable(LTC4274_Dev* dev, uint8_t enableVal)
{
if (enableVal) {
- OcGpio_write(&PWR->pin_necpse_rst, false);
+ OcGpio_write(&dev->cfg.reset_pin, false);
} else {
- OcGpio_write(&PWR->pin_necpse_rst, true);
+ OcGpio_write(&dev->cfg.reset_pin, true);
}
}
@@ -862,6 +859,24 @@ ReturnStatus ltc4274_detect(const I2C_Dev *i2c_dev,
return status;
}
+/*****************************************************************************
+ ** FUNCTION NAME : ltc4274_config
+ **
+ ** DESCRIPTION : configure gpio and bring it out of reset .
+ **
+ ** ARGUMENTS : None
+ **
+ ** RETURN TYPE : ePostCode
+ **
+ *****************************************************************************/
+void ltc4274_config(LTC4274_Dev *dev)
+{
+ OcGpio_configure(&dev->cfg.reset_pin, OCGPIO_CFG_OUTPUT |
+ OCGPIO_CFG_OUT_HIGH);
+ //Enable PSE device.
+ ltc4274_enable(dev,true);
+}
+
/*****************************************************************************
** FUNCTION NAME : ltc4274_probe
**
@@ -872,12 +887,12 @@ ReturnStatus ltc4274_detect(const I2C_Dev *i2c_dev,
** RETURN TYPE : ePostCode
**
*****************************************************************************/
-ePostCode ltc4274_probe(const I2C_Dev *i2c_dev)
+ePostCode ltc4274_probe(const LTC4274_Dev *dev, POSTData *postData)
{
ePostCode postcode = POST_DEV_MISSING;
uint8_t devId = 0x00;
ReturnStatus status = RETURN_NOTOK;
- status = ltc4274_get_devid(i2c_dev, &devId);
+ status = ltc4274_get_devid(&dev->cfg.i2c_dev, &devId);
if (status != RETURN_OK) {
postcode = POST_DEV_MISSING;
} else if (devId == LTC4274_DEV_ID){
@@ -885,6 +900,7 @@ ePostCode ltc4274_probe(const I2C_Dev *i2c_dev)
} else {
postcode = POST_DEV_ID_MISMATCH;
}
+ post_update_POSTData(postData, dev->cfg.i2c_dev.bus, dev->cfg.i2c_dev.slave_addr,0xFF, devId);
return postcode;
}
@@ -898,14 +914,14 @@ ePostCode ltc4274_probe(const I2C_Dev *i2c_dev)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-ReturnStatus ltc4274_reset()
+ReturnStatus ltc4274_reset(LTC4274_Dev *dev)
{
ReturnStatus status = RETURN_OK;
- OcGpio_write(&PWR->pin_necpse_rst, true);
+ OcGpio_write(&dev->cfg.reset_pin, true);
Task_sleep(100);
- OcGpio_write(&PWR->pin_necpse_rst, false);
+ OcGpio_write(&dev->cfg.reset_pin, false);
return status;
@@ -976,7 +992,7 @@ void ltc4274_init(LTC4274_Dev *dev)
dev->obj.mutex = GateMutex_create(NULL, NULL);
if (!dev->obj.mutex) {
- return RETURN_NOTOK;
+ return;
}
ltc4274_initPSEStateInfo();
@@ -984,7 +1000,7 @@ void ltc4274_init(LTC4274_Dev *dev)
if (dev->cfg.pin_evt) {
const uint32_t pin_evt_cfg = OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_FALLING;
if (OcGpio_configure(dev->cfg.pin_evt, pin_evt_cfg) < OCGPIO_SUCCESS) {
- return RETURN_NOTOK;
+ return ;
}
/* Use a threaded interrupt to handle IRQ */
diff --git a/firmware/ec/src/Devices/ltc4275.c b/firmware/ec/src/Devices/ltc4275.c
index 1eb81badca..96eea7ffc1 100644
--- a/firmware/ec/src/Devices/ltc4275.c
+++ b/firmware/ec/src/Devices/ltc4275.c
@@ -6,22 +6,22 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
+
//*****************************************************************************
// HEADER FILES
//*****************************************************************************
#include "inc/devices/ltc4275.h"
-#include "inc/common/byteorder.h"
+
#include "devices/i2c/threaded_int.h"
#include "helpers/math.h"
#include "helpers/memory.h"
+#include "inc/common/byteorder.h"
#include "inc/subsystem/power/power.h"
+
#include
#include
-extern void *sys_config[];
-#define PWR ((Power_Cfg *)sys_config[OC_SS_PWR])
-
tPower_PDStatus_Info PDStatus_Info;
@@ -36,13 +36,9 @@ tPower_PDStatus_Info PDStatus_Info;
*/
static void ltc4275_handle_irq(void *context) {
LTC4275_Dev *dev = context;
- uint8_t class = 0;
- uint8_t powerGood= 0;
- ReturnStatus res = RETURN_NOTOK;
+
const IArg mutexKey = GateMutex_enter(dev->obj.mutex); {
-
- ltc4275_update_status();
-
+ ltc4275_update_status(dev);
} GateMutex_leave(dev->obj.mutex, mutexKey);
/* See if we have a callback assigned to handle alerts */
@@ -61,6 +57,21 @@ static void ltc4275_handle_irq(void *context) {
}
}
+/******************************************************************************
+ * @fn ltc4275_configure
+ *
+ * @brief configure GPIO's.
+ *
+ * @args None
+ *
+ * @return None
+ */
+void ltc4275_config(const LTC4275_Dev *dev)
+{
+ OcGpio_configure(dev->cfg.pin_evt, OCGPIO_CFG_INPUT);
+ OcGpio_configure(dev->cfg.pin_detect, OCGPIO_CFG_INPUT);
+}
+
/******************************************************************************
* @fn ltc4275_probe
*
@@ -70,14 +81,14 @@ static void ltc4275_handle_irq(void *context) {
*
* @return None
*/
-ePostCode ltc4275_probe(LTC4275_Dev *dev)
+ePostCode ltc4275_probe(const LTC4275_Dev *dev, POSTData *postData)
{
ePostCode postCode = POST_DEV_MISSING;
ePDPowerState pdStatus = LTC4275_POWERGOOD_NOTOK;
- ReturnStatus ret = ltc4275_get_power_good(&pdStatus);
+ ReturnStatus ret = ltc4275_get_power_good(dev, &pdStatus);
if (ret != RETURN_OK) {
LOGGER("LTC4275::ERROR: Power good signal read failed.\n");
- return ret;
+ return postCode;
}
if (pdStatus == LTC4275_POWERGOOD ) {
PDStatus_Info.pdStatus.classStatus = LTC4275_CLASSTYPE_UNKOWN;
@@ -91,6 +102,7 @@ ePostCode ltc4275_probe(LTC4275_Dev *dev)
PDStatus_Info.state = LTC4275_STATE_NOTOK;
PDStatus_Info.pdalert = LTC4275_DISCONNECT_ALERT;
}
+ post_update_POSTData(postData, 0xFF,0xFF,0xFF,0xFF);
return postCode;
}
@@ -113,13 +125,13 @@ ReturnStatus ltc4275_init(LTC4275_Dev *dev)
return RETURN_NOTOK;
}
- ret = ltc4275_get_power_good(&PDStatus_Info.pdStatus.powerGoodStatus);
+ ret = ltc4275_get_power_good(dev, &PDStatus_Info.pdStatus.powerGoodStatus);
if (ret != RETURN_OK) {
LOGGER("LTC4275::ERROR: Power good signal read failed.\n");
return ret;
}
if (PDStatus_Info.pdStatus.powerGoodStatus == LTC4275_POWERGOOD) {
- ret = ltc4275_get_class(&PDStatus_Info.pdStatus.classStatus);
+ ret = ltc4275_get_class(dev, &PDStatus_Info.pdStatus.classStatus);
if (ret != RETURN_OK) {
LOGGER("LTC4275::ERROR: Reading PD classification failed.\n");
return ret;
@@ -166,14 +178,14 @@ void ltc4275_set_alert_handler(LTC4275_Dev *dev, LTC4275_CallbackFn alert_cb,
*
* @return ReturnStatus
*/
-ReturnStatus ltc4275_get_power_good(ePDPowerState *val)
+ReturnStatus ltc4275_get_power_good(const LTC4275_Dev *dev, ePDPowerState *val)
{
ReturnStatus ret = RETURN_OK;
/*set default to 1*/
*val = LTC4275_POWERGOOD_NOTOK;
/* Check Power Good */
- *val = (ePDPowerState) OcGpio_read(&PWR->pin_ec_pd_pwrgd_ok);
+ *val = (ePDPowerState) OcGpio_read(dev->cfg.pin_evt);
if(*val == 0)
{
*val = LTC4275_POWERGOOD;
@@ -191,7 +203,7 @@ ReturnStatus ltc4275_get_power_good(ePDPowerState *val)
*
* @return ReturnStatus
*/
-ReturnStatus ltc4275_get_class(ePDClassType *val)
+ReturnStatus ltc4275_get_class(const LTC4275_Dev *dev, ePDClassType *val)
{
ReturnStatus ret = RETURN_OK;
uint8_t i = 0;
@@ -200,7 +212,7 @@ ReturnStatus ltc4275_get_class(ePDClassType *val)
uint8_t toggle = 0;
for (i = 0; i < 15; i++) {
- value = OcGpio_read(&PWR->pin_lt4275_ec_nt2p);
+ value = OcGpio_read(dev->cfg.pin_detect);
LOGGER_DEBUG("LTC4275:INFO:: PD-nT2P activity status %d.\n", value);
if (value == 1) {
*val = LTC4275_CLASSTYPE_2;
@@ -230,19 +242,19 @@ ReturnStatus ltc4275_get_class(ePDClassType *val)
*
* @return None
*/
-void ltc4275_update_status()
+void ltc4275_update_status(const LTC4275_Dev *dev)
{
ReturnStatus ret = RETURN_NOTOK;
- ret = ltc4275_get_power_good(&PDStatus_Info.pdStatus.powerGoodStatus);
+ ret = ltc4275_get_power_good(dev,&PDStatus_Info.pdStatus.powerGoodStatus);
if (ret != RETURN_OK) {
LOGGER("LTC4275::ERROR: Power good signal read failed.\n");
- return ret;
+ return;
}
if (PDStatus_Info.pdStatus.powerGoodStatus == LTC4275_POWERGOOD) {
- ret = ltc4275_get_class(&PDStatus_Info.pdStatus.classStatus);
+ ret = ltc4275_get_class(dev, &PDStatus_Info.pdStatus.classStatus);
if (ret != RETURN_OK) {
LOGGER("LTC4275::ERROR: Reading PD classification failed.\n");
- return ret;
+ return;
}
if (PDStatus_Info.pdStatus.classStatus == LTC4275_CLASSTYPE_POEPP) {
PDStatus_Info.state = LTC4275_STATE_OK;
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_adt7481.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_adt7481.c
index c5c6b220b9..58aad286cd 100644
--- a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_adt7481.c
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_adt7481.c
@@ -6,11 +6,10 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-#include "src/registry/Framework.h"
+#include "common/inc/ocmp_wrappers/ocmp_adt7481.h"
#include "helpers/array.h"
#include "inc/devices/adt7481.h"
-#include "inc/devices/ocmp_wrappers/ocmp_adt7481.h"
typedef enum Adt7481Status {
ADT7481_STATUS_TEMPERATURE = 0,
@@ -85,31 +84,18 @@ static bool _set_config(void *driver, unsigned int param_id,
return false;
}
-static ePostCode _probe(void *driver)
+static ePostCode _probe(void *driver, POSTData *postData)
{
- ReturnStatus status = RETURN_OK;
- ePostCode postcode = POST_DEV_MISSING;
- uint8_t devId = 0x0000;
- uint8_t manfId = 0x0000;
-
- status = adt7481_get_dev_id(driver, &devId);
- status = adt7481_get_mfg_id(driver, &manfId);
- if (status != RETURN_OK) {
- postcode = POST_DEV_MISSING;
- } else if ((devId == TEMP_ADT7481_DEV_ID)
- && (manfId == TEMP_ADT7481_MANF_ID)) {
- postcode = POST_DEV_FOUND;
- } else {
- postcode = POST_DEV_ID_MISMATCH;
- }
-
- return postcode;
+ return adt7481_probe(driver,postData);
}
static ePostCode _init(void *driver, const void *config,
const void *alert_token)
{
const ADT7481_Config *adt7481_config = config;
+ if (adt7481_config == NULL) {
+ return POST_DEV_CFG_FAIL;
+ }
for (int i = 0; i < ARRAY_SIZE(adt7481_config->limits); ++i) {
if (adt7481_set_local_temp_limit(
driver, i + 1, adt7481_config->limits[i]) != RETURN_OK ||
@@ -136,25 +122,7 @@ static ePostCode _init(void *driver, const void *config,
/* TODO: dedup with SE98A driver */
/* TODO: enable alerts (requires major ADT driver changes) */
-const Driver ADT7481 = {
- .name = "ADT7481",
- .status = (Parameter[]){
- { .name = "temperature", .type = TYPE_UINT8 },
- {}
- },
- .config = (Parameter[]){
- { .name = "lowlimit", .type = TYPE_UINT8 },
- { .name = "highlimit", .type = TYPE_UINT8 },
- { .name = "critlimit", .type = TYPE_UINT8 },
- {}
- },
- .alerts = (Parameter[]){
- { .name = "BAW", .type = TYPE_UINT8 },
- { .name = "AAW", .type = TYPE_UINT8 },
- { .name = "ACW", .type = TYPE_UINT8 },
- {}
- },
-
+const Driver_fxnTable ADT7481_fxnTable = {
/* Message handlers */
.cb_probe = _probe,
.cb_init = _init,
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_cat24c04.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_cat24c04.c
new file mode 100644
index 0000000000..68609e885e
--- /dev/null
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_cat24c04.c
@@ -0,0 +1,159 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/ocmp_wrappers/ocmp_eeprom_cat24c04.h"
+
+#include "common/inc/global/Framework.h"
+#include "inc/common/global_header.h"
+#include "inc/devices/eeprom.h"
+
+#include
+
+static bool _sid_get_status_parameters_data(void *driver,
+ unsigned int param,
+ void *data);
+/*****************************************************************************
+ ** FUNCTION NAME : _sid_get_status_parameters_data
+ **
+ ** DESCRIPTION : Reading Serial Id's from the GBC EEPROM.
+ **
+ ** ARGUMENTS : Pointer to OCMPMessageFrame structure
+ **
+ ** RETURN TYPE : Success or Failure
+ **
+ *****************************************************************************/
+static bool _sid_get_status_parameters_data(void *driver,
+ unsigned int param,
+ void *data)
+{
+ const eOCStatusParamId paramIndex = (eOCStatusParamId)param;
+ const Eeprom_Cfg *cfg = ( Eeprom_Cfg*)driver;
+ ReturnStatus status = RETURN_OK;
+ switch (paramIndex) {
+ case OC_STAT_SYS_SERIAL_ID:
+ {
+ memset(data, '\0', OC_CONNECT1_SERIAL_SIZE + 1);
+ status = eeprom_read_oc_info(data);
+ LOGGER_DEBUG("SYS:INFO:::: OC Connect1 serial id %s.\n",
+ data);
+ break;
+ }
+ case OC_STAT_SYS_GBC_BOARD_ID:
+ {
+ memset(data, '\0', OC_GBC_BOARD_INFO_SIZE + 1);
+ status = eeprom_read_board_info(cfg, data);
+ LOGGER_DEBUG("SYS:INFO:::: OC Connect1 GBC board is %s.\n",
+ data);
+ break;
+ }
+ default:
+ {
+ status = RETURN_NOTOK;
+ }
+ }
+ return (status == RETURN_OK);
+}
+
+/*****************************************************************************
+ ** FUNCTION NAME : Sdr_InventoryGetStatus
+ **
+ ** DESCRIPTION : Reading Serial Id's from the SDR EEPROM.
+ **
+ ** ARGUMENTS : Pointer to OCMPMessageFrame structure
+ **
+ ** RETURN TYPE : Success or Failure
+ **
+ *****************************************************************************/
+bool Sdr_InventoryGetStatus(void *driver, unsigned int param_id,
+ void *return_buf) {
+ const Eeprom_Cfg *cfg = ( Eeprom_Cfg*)driver;
+ switch (param_id) {
+ case 0: /* TODO: gross magic number */
+ memset(return_buf,'\0', OC_SDR_BOARD_INFO_SIZE + 1);
+ if (eeprom_read_board_info(cfg, return_buf) == RETURN_OK) {
+ return true;
+ }
+ LOGGER_DEBUG("SDR:INFO:: Board id: %s\n", return_buf);
+ break;
+ default:
+ LOGGER_ERROR("SDR:ERROR::Unknown param %u\n", param_id);
+ break;
+ }
+ return false;
+}
+/*****************************************************************************
+ ** FUNCTION NAME : RFFE_InventoryGetStatus
+ **
+ ** DESCRIPTION : Reading Serial Id's from the RFFE EEPROM.
+ **
+ ** ARGUMENTS : Pointer to OCMPMessageFrame structure
+ **
+ ** RETURN TYPE : Success or Failure
+ **
+ *****************************************************************************/
+bool RFFE_InventoryGetStatus(void *driver, unsigned int param_id,
+ void *return_buf) {
+ const Eeprom_Cfg *cfg = (Eeprom_Cfg *)driver;
+ switch (param_id) {
+ case 0: /* TODO: gross magic number */
+ memset(return_buf, '\0', OC_RFFE_BOARD_INFO_SIZE + 1);
+ if (eeprom_read_board_info(cfg, return_buf)
+ == RETURN_OK) {
+ return true;
+ }
+ LOGGER_DEBUG("RFFE:INFO:: Board id: %s\n", return_buf);
+ break;
+ default:
+ LOGGER_ERROR("RFFE:ERROR::Unknown param %u\n", param_id);
+ break;
+ }
+ return false;
+}
+
+static ePostCode _init_eeprom(void *driver, const void **config,
+ const void *alert_token)
+{
+ Eeprom_Cfg *eeprom = (Eeprom_Cfg *)driver;
+ uint8_t write = 0x01;
+ uint8_t read = 0x00;
+
+ eeprom_init(eeprom);
+ eeprom_enable_write(eeprom);
+ eeprom_write(eeprom, OC_TEST_ADDRESS, &write, 1);
+ NOP_DELAY(); /* TODO: the eeprom driver should handle this */
+ eeprom_disable_write(eeprom);
+ eeprom_read(eeprom, OC_TEST_ADDRESS, &read, 1);
+
+ if (write == read) {
+ return POST_DEV_CFG_DONE;
+ }
+ return POST_DEV_CFG_FAIL;
+}
+
+const Driver_fxnTable CAT24C04_gbc_sid_fxnTable = {
+ /* Message handlers */
+ .cb_init = _init_eeprom,
+ .cb_get_status = _sid_get_status_parameters_data,
+};
+
+const Driver_fxnTable CAT24C04_gbc_inv_fxnTable= {
+ .cb_init = _init_eeprom,
+};
+
+const Driver_fxnTable CAT24C04_sdr_inv_fxnTable = {
+ /* Message handlers */
+ .cb_init = _init_eeprom,
+ .cb_get_status = Sdr_InventoryGetStatus,
+};
+
+const Driver_fxnTable CAT24C04_fe_inv_fxnTable = {
+ /* Message handlers */
+ .cb_init = _init_eeprom,
+ .cb_get_status = RFFE_InventoryGetStatus,
+};
+
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_dat-xxr5a-pp.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_dat-xxr5a-pp.c
index 25de42a3ef..e9826ae1ed 100644
--- a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_dat-xxr5a-pp.c
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_dat-xxr5a-pp.c
@@ -1,9 +1,21 @@
-#include "src/registry/Framework.h"
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/ocmp_wrappers/ocmp_dat-xxr5a-pp.h"
+#include "common/inc/global/Framework.h"
#include "drivers/PinGroup.h"
#include "helpers/math.h"
+#include "inc/subsystem/rffe/rffe.h"
#include "inc/common/global_header.h"
-#include "inc/devices/ocmp_wrappers/ocmp_dat-xxr5a-pp.h"
+#include "inc/devices/dat-xxr5a-pp.h"
+
+#include
typedef enum DatConfig {
DAT_CONFIG_ATTENUATION = 0,
@@ -11,6 +23,7 @@ typedef enum DatConfig {
static bool _get_config(void *driver, unsigned int param_id,
void *return_buf) {
+ bool ret = false;
switch (param_id) {
case DAT_CONFIG_ATTENUATION: {
DATR5APP_Cfg *cfg = driver;
@@ -20,18 +33,21 @@ static bool _get_config(void *driver, unsigned int param_id,
.pins = cfg->pin_group
};
if (PinGroup_read(&pin_group, &atten) != RETURN_OK) {
- return false;
+ ret = false;
+ } else {
+ LOGGER_DEBUG("DAT-XXR5A-PP+:DEBUG:: Attenuation is %.1f\n",
+ (atten / 2.0));
+ *(int16_t *)return_buf = atten;
+ ret = true;
}
- LOGGER_DEBUG("DAT-XXR5A-PP+:DEBUG:: Attenuation is %.1f\n",
- (atten / 2.0));
- *(int16_t *)return_buf = atten;
break;
}
- default:
+ default: {
LOGGER_ERROR("DAT-XXR5A-PP+::Unknown config param %d\n", param_id);
- return false;
+ ret = false;
+ }
}
- return false;
+ return ret;
}
static bool _set_attenuation(void *driver, int16_t atten)
@@ -47,6 +63,8 @@ static bool _set_attenuation(void *driver, int16_t atten)
/* Disable input latch */
OcGpio_write(&cfg->pin_le, false);
+ /* Attenuation enable */
+ // OcGpio_write(&cfg->pin_tx_attn_enb, true);
/* Set the attenuation value */
/* TODO: value is provided as x2, so 0.5 value is bit 0, consider
@@ -67,7 +85,6 @@ static bool _set_attenuation(void *driver, int16_t atten)
Task_sleep(1);
OcGpio_write(&cfg->pin_le, false);
Task_sleep(1);
-
return true;
}
@@ -103,7 +120,8 @@ static ePostCode _probe(void *driver)
static ePostCode _init(void *driver, const void *config,
const void *alert_token)
{
- DATR5APP_Cfg *cfg = driver;
+ DATR5APP_Cfg *cfg = (DATR5APP_Cfg *)driver;
+ DATR5APP_Config *cfg_atten = (DATR5APP_Config *)config;
PinGroup pin_group = {
.num_pin = DATR5APP_PIN_COUNT,
.pins = cfg->pin_group
@@ -117,20 +135,11 @@ static ePostCode _init(void *driver, const void *config,
}
/* Set default attenuation */
- _set_attenuation(driver, ((DATR5APP_Config *)config)->attenuation);
-
+ _set_attenuation(driver, cfg_atten->attenuation);
return POST_DEV_CFG_DONE;
}
-const Driver DATXXR5APP = {
- .name = "DAT-XXR5A-PP+",
- .status = NULL,
- .config = (Parameter[]){
- { .name = "atten", .type = TYPE_INT16 },
- {}
- },
- .alerts = NULL,
-
+const Driver_fxnTable DATXXR5APP_fxnTable = {
/* Message handlers */
.cb_probe = _probe,
.cb_init = _init,
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_debugi2c.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_debugi2c.c
new file mode 100644
index 0000000000..a6e3c75584
--- /dev/null
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_debugi2c.c
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "inc/ocmp_wrappers/ocmp_debugi2c.h"
+
+#include "common/inc/global/ocmp_frame.h"
+#include "common/inc/global/Framework.h"
+#include "inc/common/global_header.h"
+#include "inc/common/i2cbus.h"
+#include "inc/devices/debug_oci2c.h"
+
+
+/* TI-RTOS driver files */
+#include
+
+bool i2c_read(void* i2c_cfg, void *oci2c )
+{
+ S_I2C_Cfg* s_oc_i2c_cfg = (S_I2C_Cfg*)i2c_cfg;
+ S_OCI2C* s_oci2c = (S_OCI2C*)oci2c;
+ I2C_Handle i2cHandle = i2c_open_bus(s_oc_i2c_cfg->bus);
+ return (i2c_reg_read(i2cHandle, s_oci2c->slaveAddress, s_oci2c->reg_address, &s_oci2c->reg_value, s_oci2c->number_of_bytes) == RETURN_OK);
+}
+
+bool i2c_write(void* i2c_cfg, void *oci2c )
+{
+ S_I2C_Cfg* s_oc_i2c_cfg = (S_I2C_Cfg*)i2c_cfg;
+ S_OCI2C* s_oci2c = (S_OCI2C*)oci2c;
+ I2C_Handle i2cHandle = i2c_open_bus(s_oc_i2c_cfg->bus);
+ return (i2c_reg_write(i2cHandle, s_oci2c->slaveAddress, s_oci2c->reg_address, s_oci2c->reg_value, s_oci2c->number_of_bytes) == RETURN_OK);
+}
+
+
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_debugmdio.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_debugmdio.c
new file mode 100644
index 0000000000..b92595ed2e
--- /dev/null
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_debugmdio.c
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2018-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "inc/ocmp_wrappers/ocmp_debugmdio.h"
+
+#include "common/inc/global/ocmp_frame.h"
+#include "common/inc/global/Framework.h"
+#include "inc/common/global_header.h"
+#include "inc/devices/88E6071_registers.h"
+#include "inc/devices/debug_ocmdio.h"
+
+#include "inc/devices/mdio_bb.h"
+
+#define CLAUSE_45_REQUEST(reg_address) check_clause_45(s_ocmdio->reg_address)
+#define PORT_REG_REQUEST(port) check_clause_22(s_oc_mdio_cfg->port)
+#define PHY_PORT_MAX 5
+
+bool check_clause_45(uint16_t regAddr) {
+ bool status = false;
+ if (REG_C45_PACKET_GEN == regAddr || REG_C45_CRC_ERROR_COUNTER == regAddr)
+ status = true;
+ return status;
+}
+
+bool check_clause_22(uint8_t port) {
+ bool status = false;
+ if (port < PHY_PORT_MAX)
+ status = true;
+ return status;
+}
+
+bool mdio_read(void* mdio_cfg, void *ocmdio )
+{
+ S_MDIO_Cfg* s_oc_mdio_cfg = (S_MDIO_Cfg*)mdio_cfg;
+ S_OCMDIO* s_ocmdio = (S_OCMDIO*)ocmdio;
+ s_ocmdio->reg_value= 0xf00f;
+
+ if (CLAUSE_45_REQUEST(reg_address))
+ /*PHY registers use Reg 13 and Reg 14 as paging mechanism to access Clause 45 registers*/
+ s_ocmdio->reg_value = mdiobb_read_by_paging_c45(s_oc_mdio_cfg->port, s_ocmdio->reg_address);
+ else if (PORT_REG_REQUEST(port))
+ /*PHY registers use Reg 13 and Reg 14 as paging mechanism to access Clause 22 registers*/
+ s_ocmdio->reg_value = mdiobb_read_by_paging(s_oc_mdio_cfg->port, s_ocmdio->reg_address);
+ else
+ /*GLOBAL and SWITCH registers can be accessed directly*/
+ s_ocmdio->reg_value = mdiobb_read(s_oc_mdio_cfg->port, s_ocmdio->reg_address);
+ return 0;
+}
+
+bool mdio_write(void* mdio_cfg, void *ocmdio )
+{
+ S_MDIO_Cfg* s_oc_mdio_cfg = (S_MDIO_Cfg*)mdio_cfg;
+ S_OCMDIO* s_ocmdio = (S_OCMDIO*)ocmdio;
+
+ if (CLAUSE_45_REQUEST(reg_address)) {
+ /*PHY registers use Reg 13 and Reg 14 as paging mechanism to access Clause 45 registers*/
+ mdiobb_write_by_paging_c45(s_oc_mdio_cfg->port, s_ocmdio->reg_address, s_ocmdio->reg_value);
+ s_ocmdio->reg_value = mdiobb_read_by_paging_c45(s_oc_mdio_cfg->port, s_ocmdio->reg_address);
+ }
+ else if (PORT_REG_REQUEST(port)) {
+ /*PHY registers use Reg 13 and Reg 14 as paging mechanism to access Clause 22 registers*/
+ mdiobb_write_by_paging(s_oc_mdio_cfg->port, s_ocmdio->reg_address, s_ocmdio->reg_value);
+ s_ocmdio->reg_value = mdiobb_read_by_paging(s_oc_mdio_cfg->port, s_ocmdio->reg_address);
+ }
+ else {
+ /*GLOBAL and SWITCH registers can be accessed directly*/
+ mdiobb_write(s_oc_mdio_cfg->port, s_ocmdio->reg_address, s_ocmdio->reg_value);
+ s_ocmdio->reg_value = mdiobb_read(s_oc_mdio_cfg->port, s_ocmdio->reg_address);
+ }
+ return 0;
+}
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ocgpio.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_debugocgpio.c
similarity index 63%
rename from firmware/ec/src/Devices/ocmp_wrappers/ocmp_ocgpio.c
rename to firmware/ec/src/Devices/ocmp_wrappers/ocmp_debugocgpio.c
index 28cf234b71..4015186273 100644
--- a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ocgpio.c
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_debugocgpio.c
@@ -6,19 +6,23 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-#include "src/registry/Framework.h"
+#include "inc/ocmp_wrappers/ocmp_debugocgpio.h"
+#include "common/inc/global/Framework.h"
+#include "common/inc/global/ocmp_frame.h"
#include "inc/common/global_header.h"
-#include "inc/common/ocmp_frame.h"
-#include "inc/devices/ocmp_wrappers/ocmp_ocgpio.h"
+#include "inc/devices/debug_ocgpio.h"
+
#include
#define NO_GPIO_PINS_IN_GROUP 8
extern GPIO_PinConfig gpioPinConfigs[];
-static bool ocgpio_set(S_OCGPIO_Cfg* oc_gpio_cfg, S_OCGPIO *s_oc_gpio )
+bool ocgpio_set(void* gpio_cfg, void* oc_gpio )
{
+ S_OCGPIO_Cfg* oc_gpio_cfg = (S_OCGPIO_Cfg*)gpio_cfg;
+ S_OCGPIO* s_oc_gpio = (S_OCGPIO*)oc_gpio;
int ret = 0;
uint8_t idx = ((oc_gpio_cfg->group != 0)?(((oc_gpio_cfg->group-1) * NO_GPIO_PINS_IN_GROUP) + s_oc_gpio->pin):s_oc_gpio->pin);
OcGpio_Pin ocgpio = { (oc_gpio_cfg->port), idx, ((oc_gpio_cfg->group != 0)?(gpioPinConfigs[idx]>>16):OCGPIO_CFG_OUT_STD)};
@@ -27,8 +31,10 @@ static bool ocgpio_set(S_OCGPIO_Cfg* oc_gpio_cfg, S_OCGPIO *s_oc_gpio )
return (ret == 0);
}
-static bool ocgpio_get(S_OCGPIO_Cfg* oc_gpio_cfg, S_OCGPIO *s_oc_gpio )
+bool ocgpio_get(void* gpio_cfg, void* oc_gpio )
{
+ S_OCGPIO_Cfg* oc_gpio_cfg = (S_OCGPIO_Cfg*)gpio_cfg;
+ S_OCGPIO* s_oc_gpio = (S_OCGPIO*)oc_gpio;
int ret = 0;
uint8_t idx = ((oc_gpio_cfg->group != 0)?(((oc_gpio_cfg->group-1) * NO_GPIO_PINS_IN_GROUP) + s_oc_gpio->pin):s_oc_gpio->pin);
OcGpio_Pin ocgpio = { (oc_gpio_cfg->port), idx, ((oc_gpio_cfg->group!= 0)?(gpioPinConfigs[idx]>>16):OCGPIO_CFG_IN_PU)};
@@ -40,10 +46,13 @@ static bool ocgpio_get(S_OCGPIO_Cfg* oc_gpio_cfg, S_OCGPIO *s_oc_gpio )
return (ret == 0);
}
-static ePostCode _probe(void *driver)
+static ePostCode _probe(S_OCGPIO_Cfg* oc_gpio_cfg)
{
- //Dummy functions.
- return POST_DEV_FOUND;
+ if (OcGpio_probe(oc_gpio_cfg->port) != 0) {
+ return POST_DEV_MISSING;
+ } else {
+ return POST_DEV_FOUND;
+ }
}
static ePostCode _init(void *driver, const void *config,
@@ -53,26 +62,8 @@ static ePostCode _init(void *driver, const void *config,
return POST_DEV_CFG_DONE;
}
-const Driver OC_GPIO = {
- .name = "OC_GPIO",
- .argList = (Parameter[]){
- { .name = "pin", .type = TYPE_UINT8 },
- { .name = "value", .type = TYPE_UINT8 },
- {}
- },
- .commands = {
- [OCMP_AXN_TYPE_GET] = &(Command){
- .name = "get",
- .cb_cmd = ocgpio_get,
- },
- [OCMP_AXN_TYPE_SET] = &(Command){
- .name = "set",
- .cb_cmd = ocgpio_set,
- },
- &(Command){}
- },
+const Driver_fxnTable DEBUG_OCGPIO_fxnTable = {
/* Message handlers */
- //.cb_probe = _probe,
- //.cb_init = _init,
+ .cb_probe = _probe,
+ .cb_init = _init,
};
-
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_eth_sw.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_eth_sw.c
index 22a7420e95..1d82a94a7d 100644
--- a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_eth_sw.c
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_eth_sw.c
@@ -6,9 +6,52 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
+#include "common/inc/ocmp_wrappers/ocmp_eth_sw.h"
+
+#include "common/inc/global/Framework.h"
#include "inc/devices/eth_sw.h"
-#include "src/registry/Framework.h"
-#include "inc/devices/ocmp_wrappers/ocmp_eth_sw.h"
+
+bool ETHERNET_reset(void *driver, void *params)
+{
+ ReturnStatus status = RETURN_OK;
+ status = eth_sw_set_config_soft_reset(PORT0);
+ return status;
+}
+
+bool ETHERNET_enLoopBk(void *driver, void *params)
+{
+ ReturnStatus status = RETURN_OK;
+ status = eth_sw_enable_loopback(driver, params);
+ return status;
+}
+
+bool ETHERNET_disLoopBk(void *driver, void *params)
+{
+ ReturnStatus status = RETURN_OK;
+ status = eth_sw_disable_loopback(driver, params);
+ return status;
+}
+
+bool ETHERNET_enPktGen(void *driver, void *params)
+{
+ ReturnStatus status = RETURN_OK;
+ status = eth_sw_enable_packet_gen(driver, params);
+ return status;
+}
+
+bool ETHERNET_disPktGen(void *driver, void *params)
+{
+ ReturnStatus status = RETURN_OK;
+ status = eth_sw_disable_packet_gen(driver);
+ return status;
+}
+
+bool ETHERNET_tivaClient(void *driver, void *params)
+{
+ ReturnStatus status = RETURN_OK;
+ status = eth_sw_config_tiva_client(driver, params);
+ return status;
+}
static bool _get_status(void *driver, unsigned int param_id,
void *return_buf)
@@ -78,11 +121,13 @@ static bool _get_config(void *driver, unsigned int param_id,
case ETH_SW_CONFIG_SW_RESET: {
uint8_t *res = return_buf;
*res = 0;
+ return false;
}
case ETH_SW_CONFIG_RESTART_AUTONEG: {
uint8_t *res = return_buf;
*res = 0;
+ return false;
}
default:
LOGGER_ERROR("ETH_SW::Unknown config param %d\n", param_id);
@@ -95,41 +140,36 @@ static bool _set_config(void *driver, unsigned int param_id,
{
Eth_cfg *cfg = (Eth_cfg*)driver;
switch (param_id) {
-#if 0
- KASHIF
case ETH_SW_CONFIG_SPEED: {
- uint8_t *res = data;
- return (eth_sw_set_config_speed(cfg->eth_sw_port, (port_duplex)*res)
+ uint8_t *res = (uint8_t*)data;
+ return (eth_sw_set_config_speed(cfg->eth_sw_port, *res)
== RETURN_OK);
}
case ETH_SW_CONFIG_DUPLEX: {
- uint8_t *res = data;
- return (eth_sw_set_config_duplex(cfg->eth_sw_port, (port_duplex)*res)
+ uint8_t *res = (uint8_t*)data;
+ return (eth_sw_set_config_duplex(cfg->eth_sw_port, *res)
== RETURN_OK);
}
-#endif
case ETH_SW_CONFIG_POWER_DOWN: {
- uint8_t *res = data;
- return (eth_sw_set_config_power_down(cfg->eth_sw_port, res)
+ uint8_t *res = (uint8_t*)data;
+ return (eth_sw_set_config_power_down(cfg->eth_sw_port, *res)
== RETURN_OK);
}
case ETH_SW_CONFIG_SLEEPMODE_EN: {
- uint8_t *res = data;
- return (eth_sw_set_config_sleep_mode_enable(cfg->eth_sw_port, res)
+ uint8_t *res = (uint8_t*)data;
+ return (eth_sw_set_config_sleep_mode_enable(cfg->eth_sw_port, *res)
== RETURN_OK);
}
case ETH_SW_CONFIG_INTERRUPT_EN: {
- uint8_t *res = data;
+ uint8_t *res = (uint8_t*)data;
return (eth_sw_set_config_interrupt_enable(cfg->eth_sw_port, res)
== RETURN_OK);
}
case ETH_SW_CONFIG_SW_RESET: {
- uint8_t *res = data;
return (eth_sw_set_config_soft_reset(cfg->eth_sw_port)
== RETURN_OK);
}
case ETH_SW_CONFIG_RESTART_AUTONEG: {
- uint8_t *res = data;
return (eth_sw_set_config_restart_neg(cfg->eth_sw_port) == RETURN_OK);
}
default:
@@ -138,9 +178,10 @@ static bool _set_config(void *driver, unsigned int param_id,
}
}
-static ePostCode _probe(void *driver)
+static ePostCode _probe(void *driver, POSTData *postData)
{
- return eth_sw_probe(driver);
+ eth_sw_configure(driver);
+ return eth_sw_probe(postData);
}
static void _alert_handler(Eth_Sw_Events evt, int16_t value, void *alert_data)
@@ -190,36 +231,7 @@ static ePostCode _init(void *driver, const void *config,
return ret;
}
-const Driver ETH_SW = {
- .name = "Marvel_88E6071",
- .status = (Parameter[]){
- { .name = "speed", .type = TYPE_UINT8 },
- { .name = "duplex", .type = TYPE_UINT8 },
- { .name = "autoneg_on", .type = TYPE_UINT8 },
- { .name = "sleep_mode_en", .type = TYPE_UINT8 },
- { .name = "autoneg_complete", .type = TYPE_UINT8 },
- { .name = "link_up", .type = TYPE_UINT8 },
- {}
- },
- .config = (Parameter[]){
- { .name = "speed", .type = TYPE_UINT8 },
- { .name = "duplex", .type = TYPE_UINT8 },
- { .name = "autoneg_on", .type = TYPE_UINT8 },
- { .name = "sleep_mode_en", .type = TYPE_UINT8 },
- { .name = "autoneg_complete", .type = TYPE_UINT8 },
- { .name = "link_up", .type = TYPE_UINT8 },
- {}
- },
- .alerts = (Parameter[]){
- { .name = "speed", .type = TYPE_UINT8 },
- { .name = "duplex", .type = TYPE_UINT8 },
- { .name = "autoneg_complete", .type = TYPE_UINT8 },
- { .name = "crossover_det", .type = TYPE_UINT8 },
- { .name = "energy_det", .type = TYPE_UINT8 },
- { .name = "polarity_change", .type = TYPE_UINT8 },
- { .name = "jabber_det", .type = TYPE_UINT8 },
- {}
- },
+const Driver_fxnTable eth_fxnTable = {
/* Message handlers */
.cb_probe = _probe,
.cb_init = _init,
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_fe.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_fe.c
new file mode 100644
index 0000000000..087f835037
--- /dev/null
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_fe.c
@@ -0,0 +1,120 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/ocmp_wrappers/ocmp_fe-param.h"
+
+#include "inc/subsystem/rffe/rffe_ctrl.h"
+
+static FE_Band_Cfg FE_BandCfg[RFFE_MAX_CHANNEL];
+typedef enum FE_ParamCfg {
+ FE_CFG_BAND = 0,
+} FE_ParamCfg;
+
+/*****************************************************************************
+ ** FUNCTION NAME : rffe_ctrl_set_band
+ **
+ ** DESCRIPTION : Set the RF Band.
+ **
+ ** ARGUMENTS : Channel and Band to be read
+ **
+ ** RETURN TYPE : Success or failure
+ **
+ *****************************************************************************/
+bool rffe_ctrl_set_band(rffeChannel channel, rffeBand band)
+{
+ // TODO: Using RFFE_IO_BOARD_CFG_ADDR we should find Band Config.
+ FE_BandCfg[channel].band = band;
+
+ DEBUG("RFFECTRL:INFO:: Channel %s RF Band Configuration is %d .\n",
+ ((channel == 0) ? "1" : "2"), band);
+ return true;
+}
+
+/*****************************************************************************
+ ** FUNCTION NAME : rffe_ctrl_get_band
+ **
+ ** DESCRIPTION : Gets the RF Band.
+ **
+ ** ARGUMENTS : Channel and Band to be read
+ **
+ ** RETURN TYPE : Success or failure
+ **
+ *****************************************************************************/
+bool rffe_ctrl_get_band(rffeChannel channel, rffeBand *band)
+{
+ // TODO: Using RFFE_IO_BOARD_CFG_ADDR we should find Band Config.
+ *band = FE_BandCfg[channel].band;
+
+ DEBUG("RFFECTRL:INFO:: Channel %s RF Band Configuration is %d .\n",
+ ((channel == 0) ? "1" : "2"), *band);
+ return true;
+}
+
+bool static _get_config(void *driver, unsigned int param_id,
+ void *return_buf)
+ {
+ bool ret = false;
+ FE_Ch_Band_cfg *driverCfg = driver;
+ switch (param_id) {
+ case FE_CFG_BAND:
+ {
+ ret = rffe_ctrl_get_band(driverCfg->channel,return_buf);
+ break;
+ }
+ default:
+ {
+ LOGGER_ERROR("FE_PARAM::Unknown config param %d\n", param_id);
+ ret = false;
+ }
+ }
+ return ret;
+}
+
+bool static _set_config(void *driver, unsigned int param_id,
+ void *return_buf)
+{
+ bool ret = false;
+ FE_Ch_Band_cfg *driverCfg = driver;
+ rffeBand *band = (rffeBand*)return_buf;
+ switch (param_id) {
+ case FE_CFG_BAND:
+ {
+ rffeChannel *cfg = driver;
+ ret = rffe_ctrl_set_band(driverCfg->channel,*band);
+ break;
+ }
+ default:
+ {
+ LOGGER_ERROR("FE_PARAM::Unknown config param %d\n", param_id);
+ ret = false;
+ }
+ }
+ return ret;
+}
+
+static ePostCode _probe(void *driver)
+{
+ return POST_DEV_FOUND;
+}
+
+static ePostCode _init(void *driver, const void *config,
+ const void *alert_token)
+{
+ FE_Ch_Band_cfg *driverCfg = (FE_Ch_Band_cfg *)driver;
+ FE_Band_Cfg *cfg = (FE_Band_Cfg *)config;
+ rffe_ctrl_set_band(driverCfg->channel, cfg->band);
+ return POST_DEV_FOUND;
+}
+
+const Driver_fxnTable FE_PARAM_fxnTable = {
+ /* Message handlers */
+ .cb_probe = _probe,
+ .cb_init = _init,
+ .cb_get_config = _get_config,
+ .cb_set_config = _set_config,
+};
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_i2c.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_i2c.c
deleted file mode 100644
index 69f2cbca50..0000000000
--- a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_i2c.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
-#include "src/registry/Framework.h"
-
-#include "inc/common/global_header.h"
-#include "inc/common/ocmp_frame.h"
-#include "inc/devices/ocmp_wrappers/ocmp_i2c.h"
-
-/* TI-RTOS driver files */
-#include
-
-static bool i2c_read(S_I2C_Cfg* i2c_cfg, S_OCI2C *s_oci2c )
-{
- I2C_Handle i2cHandle = i2c_open_bus(i2c_cfg->bus);
- return (i2c_reg_read(i2cHandle, s_oci2c->slaveAddress, s_oci2c->reg_address, &s_oci2c->reg_value, s_oci2c->number_of_bytes) == RETURN_OK);
-}
-
-static bool i2c_write(S_I2C_Cfg* i2c_cfg, S_OCI2C *s_oci2c )
-{
- I2C_Handle i2cHandle = i2c_open_bus(i2c_cfg->bus);
- return (i2c_reg_write(i2cHandle, s_oci2c->slaveAddress, s_oci2c->reg_address, s_oci2c->reg_value, s_oci2c->number_of_bytes) == RETURN_OK);
-}
-
-static ePostCode _probe(void *driver)
-{
- //Dummy functions.
- return POST_DEV_FOUND;
-}
-
-static ePostCode _init(void *driver, const void *config,
- const void *alert_token)
-{
- //Dummy functions.
- return POST_DEV_CFG_DONE;
-}
-
-const Driver OC_I2C = {
- .name = "OC_I2C",
- .argList = (Parameter[]){
- { .name = "slave_address", .type = TYPE_UINT8 },
- { .name = "no_of_bytes", .type = TYPE_UINT8 },
- { .name = "reg_address", .type = TYPE_UINT8 },
- { .name = "reg_values", .type = TYPE_UINT16 },
- {}
- },
- .commands = {
- [OCMP_AXN_TYPE_GET] = &(Command){
- .name = "read",
- .cb_cmd = i2c_read,
- },
- [OCMP_AXN_TYPE_SET] = &(Command){
- .name = "write",
- .cb_cmd = i2c_write,
- },
- &(Command){}
- },
- /* Message handlers */
- //.cb_probe = _probe,
- //.cb_init = _init,
-};
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ina226.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ina226.c
index bc3aedb202..80605227a1 100644
--- a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ina226.c
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ina226.c
@@ -1,7 +1,15 @@
-#include "src/registry/Framework.h"
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/ocmp_wrappers/ocmp_ina226.h"
+#include "common/inc/global/Framework.h"
#include "inc/devices/ina226.h"
-#include "inc/devices/ocmp_wrappers/ocmp_ina226.h"
typedef enum INA226Status {
INA226_STATUS_BUS_VOLTAGE = 0,
@@ -69,9 +77,9 @@ static bool _set_config(void *driver, unsigned int param_id,
}
}
-static ePostCode _probe(void *driver)
+static ePostCode _probe(void *driver, POSTData *postData)
{
- return ina226_probe(driver);
+ return ina226_probe(driver,postData);
}
static void _alert_handler(INA226_Event evt, uint16_t value, void *alert_data)
@@ -108,24 +116,7 @@ static ePostCode _init(void *driver, const void *config,
return POST_DEV_CFG_DONE;
}
-const Driver INA226 = {
- .name = "INA226",
- .status = (Parameter[]){
- { .name = "busvoltage", .type = TYPE_UINT16 },
- { .name = "shuntvoltage", .type = TYPE_UINT16 },
- { .name = "current", .type = TYPE_UINT16 },
- { .name = "power", .type = TYPE_UINT16 },
- {}
- },
- .config = (Parameter[]){
- { .name = "currlimit", .type = TYPE_UINT16 },
- {}
- },
- .alerts = (Parameter[]){
- { .name = "Overcurrent", .type = TYPE_UINT16 },
- {}
- },
-
+const Driver_fxnTable INA226_fxnTable = {
/* Message handlers */
.cb_probe = _probe,
.cb_init = _init,
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_iridium.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_iridium.c
new file mode 100644
index 0000000000..6edccab4ae
--- /dev/null
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_iridium.c
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+//*****************************************************************************
+// HEADER FILES
+//*****************************************************************************
+#include "common/inc/ocmp_wrappers/ocmp_iridium.h"
+
+#include
+#include "inc/common/global_header.h"
+
+static ePostCode _probe(void **driver)
+{
+ /* TODO: this is a problem: we can't probe until we've initialized, but we
+ * don't init until after probing */
+ return POST_DEV_FOUND;
+}
+
+static ePostCode _init(void *driver, const void *config,
+ const void *alert_token)
+{
+ if (sbd_init(driver) != RETURN_OK) {
+ return POST_DEV_CFG_FAIL;
+ }
+ return POST_DEV_CFG_DONE;
+}
+
+static bool _get_status(void *driver, unsigned int param_id,
+ void *return_buf) {
+ bool ret = false;
+ switch (param_id) {
+ case IRIDIUM_NO_OUT_MSG:
+ {
+ ret = sbd9603_get_queueLength(return_buf);
+ break;
+ }
+ case IRIDIUM_LASTERR:
+ {
+ ret = sbd9603_get_lastError(return_buf);
+ break;
+ }
+ case IRIDIUM_IMEI:
+ {
+ ret = sbd9603_get_imei(return_buf);
+ break;
+ }
+ case IRIDIUM_MFG:
+ {
+ ret = sbd9603_get_mfg(return_buf);
+ break;
+ }
+ /* TODO: optimize this - no reason to call CSQ twice */
+ case IRIDIUM_MODEL:
+ {
+ ret = sbd9603_get_model(return_buf);
+ break;
+ }
+ case IRIDIUM_SIG_QUALITY:
+ {
+ ret = sbd9603_get_signalqual(return_buf);
+ break;
+ }
+ case IRIDIUM_REGSTATUS:
+ {
+ ret = sbd9603_get_regStatus(return_buf);
+ break;
+ }
+ default:
+ LOGGER("OBC::ERROR: Unknown param %d\n", param_id);
+ return false;
+ }
+ return ret;
+}
+
+const Driver_fxnTable OBC_fxnTable = {
+ /* Message handlers */
+ .cb_probe = _probe,
+ .cb_init = _init,
+ .cb_get_status = _get_status,
+};
+
+
+
+
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_led.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_led.c
index 32b5118318..4a4030f21b 100644
--- a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_led.c
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_led.c
@@ -1,61 +1,67 @@
-#include "src/registry/Framework.h"
+
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/ocmp_wrappers/ocmp_led.h"
#include "inc/devices/led.h"
-#include "inc/devices/ocmp_wrappers/ocmp_led.h"
/* TODO: Implement enable and disable led commands in future if nedded */
-bool led_testpattern_control(void *driver, void *params)
+bool led_testpattern_control(void *driver, void *param)
{
ReturnStatus status = RETURN_OK;
-
- switch ((ledTestParam) driver) {
+ ledTestParam *testPattern = (ledTestParam*)param;
+ switch (*testPattern) {
case HCI_LED_OFF:
{
- status = hci_led_turnoff_all();
+ status = hci_led_turnoff_all(driver);
break;
}
case HCI_LED_RED:
{
- status = hci_led_turnon_red();
+ status = hci_led_turnon_red(driver);
break;
}
case HCI_LED_GREEN:
{
- status = hci_led_turnon_green();
+ status = hci_led_turnon_green(driver);
+ break;
}
default:
{
- LOGGER_ERROR("HCILED::Unknown param %d\n", params);
+ LOGGER_ERROR("HCILED::Unknown param %d\n", *testPattern);
+ status = RETURN_NOTOK;
}
}
- return status;
+ return (status == RETURN_OK);
}
-static ePostCode _probe(void *driver)
+static ePostCode _probe(void *driver, POSTData* postData)
{
- return led_probe();
+ led_configure(driver);
+ return led_probe(driver, postData);
}
static ePostCode _init(void *driver, const void *config,
const void *alert_token)
{
- if (led_init() != RETURN_OK) {
+ if (led_init(driver) != RETURN_OK) {
return POST_DEV_CFG_FAIL;
}
- if (hci_led_system_boot() != RETURN_OK) {
+ if (hci_led_system_boot(driver) != RETURN_OK) {
return POST_DEV_CFG_FAIL;
}
return POST_DEV_CFG_DONE;
}
-const Driver HCI_LED = {
- .name = "HCI_LED",
- .status = NULL,
- .config = NULL,
- .alerts = NULL,
-
+const Driver_fxnTable LED_fxnTable = {
/* Message handlers */
.cb_probe = _probe,
.cb_init = _init,
@@ -63,3 +69,4 @@ const Driver HCI_LED = {
.cb_get_config = NULL,
.cb_set_config = NULL,
};
+
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ltc4015.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ltc4015.c
index 0cb934c57c..55f67e7758 100644
--- a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ltc4015.c
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ltc4015.c
@@ -1,7 +1,14 @@
-#include "src/registry/Framework.h"
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/ocmp_wrappers/ocmp_ltc4015.h"
#include "inc/devices/ltc4015.h"
-#include "inc/devices/ocmp_wrappers/ocmp_ltc4015.h"
typedef enum LTC4015Status {
LTC4015_STATUS_BATTERY_VOLTAGE = 0,
@@ -45,7 +52,7 @@ static bool _choose_battery_charger(LTC4015_Dev *dev) {
static bool _get_status(void *driver, unsigned int param_id,
void *return_buf) {
if(!_choose_battery_charger(driver))
- return;
+ return false;
switch (param_id) {
case LTC4015_STATUS_BATTERY_VOLTAGE: {
@@ -86,7 +93,7 @@ static bool _get_config(void *driver, unsigned int param_id,
void *return_buf) {
if(!_choose_battery_charger(driver))
- return;
+ return false;
switch (param_id) {
case LTC4015_CONFIG_BATTERY_VOLTAGE_LOW: {
@@ -141,7 +148,7 @@ static bool _get_config(void *driver, unsigned int param_id,
static bool _set_config(void *driver, unsigned int param_id,
const void *data) {
if(!_choose_battery_charger(driver))
- return;
+ return false;
switch (param_id) {
case LTC4015_CONFIG_BATTERY_VOLTAGE_LOW: {
@@ -193,12 +200,13 @@ static bool _set_config(void *driver, unsigned int param_id,
}
}
-static ePostCode _probe(void *driver)
+static ePostCode _probe(void *driver, POSTData *postData)
{
+ LTC4015_configure(driver);
if(!_choose_battery_charger(driver))
- return;
+ return false;
- return LTC4015_probe(driver);
+ return LTC4015_probe(driver, postData);
}
static void _alert_handler(LTC4015_Event evt, int16_t value, void *alert_data)
@@ -235,7 +243,7 @@ static void _alert_handler(LTC4015_Event evt, int16_t value, void *alert_data)
static ePostCode _init(void *driver, const void *config,
const void *alert_token) {
if(!_choose_battery_charger(driver))
- return;
+ return false;
if (LTC4015_init(driver) != RETURN_OK) {
return POST_DEV_CFG_FAIL;
@@ -303,40 +311,7 @@ static ePostCode _init(void *driver, const void *config,
return POST_DEV_CFG_DONE;
}
-const Driver LTC4015 = {
- .name = "LTC4015",
- .status = (Parameter[]){
- { .name = "batteryVoltage", .type = TYPE_INT16 },
- { .name = "batteryCurrent", .type = TYPE_INT16 },
- { .name = "systemVoltage", .type = TYPE_INT16 },
- { .name = "inputVoltage", .type = TYPE_INT16 },
- { .name = "inputCurrent", .type = TYPE_INT16 },
- { .name = "dieTemperature", .type = TYPE_INT16 },
- { .name = "ichargeDAC", .type = TYPE_INT16 },
- {}
- },
- .config = (Parameter[]){
- { .name = "batteryVoltageLow", .type = TYPE_INT16 },
- { .name = "batteryVoltageHigh", .type = TYPE_INT16 },
- { .name = "batteryCurrentLow", .type = TYPE_INT16 },
- { .name = "inputVoltageLow", .type = TYPE_INT16 },
- { .name = "inputCurrentHigh", .type = TYPE_INT16 },
- { .name = "inputCurrentLimit", .type = TYPE_UINT16 },
- { .name = "icharge", .type = TYPE_UINT16 },
- { .name = "vcharge", .type = TYPE_UINT16 },
- { .name = "dieTemperature", .type = TYPE_INT16 },
- {}
- },
- .alerts = (Parameter[]){
- { .name = "BVL", .type = TYPE_INT16 },
- { .name = "BVH", .type = TYPE_INT16 },
- { .name = "BCL", .type = TYPE_INT16 },
- { .name = "IVL", .type = TYPE_INT16 },
- { .name = "ICH", .type = TYPE_INT16 },
- { .name = "DTH", .type = TYPE_INT16 },
- {}
- },
-
+const Driver_fxnTable LTC4015_fxnTable = {
/* Message handlers */
.cb_probe = _probe,
.cb_init = _init,
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ltc4274.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ltc4274.c
index 8436e60e63..b0eef146aa 100644
--- a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ltc4274.c
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ltc4274.c
@@ -6,14 +6,11 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
-#include "src/registry/Framework.h"
+#include "common/inc/ocmp_wrappers/ocmp_ltc4274.h"
#include "helpers/array.h"
#include "helpers/math.h"
#include "inc/devices/ltc4274.h"
-#include "inc/devices/ocmp_wrappers/ocmp_ltc4274.h"
-
typedef enum LTC7274Status {
LTC7274_STATUS_DETECT = 0,
@@ -41,6 +38,13 @@ typedef enum LTC7274Alert {
LTC4274_ALERT_SUPPLY
} LTC7274Alert;
+bool LTC4274_reset(void *driver, void *params)
+{
+ ReturnStatus status = RETURN_OK;
+ status = ltc4274_reset();
+ return status;
+}
+
static bool _get_status(void *driver, unsigned int param_id,
void *return_buf) {
bool ret = true;
@@ -187,9 +191,11 @@ static bool _get_config(void *driver, unsigned int param_id,
}
return ret;
}
-static ePostCode _probe(void *driver)
+static ePostCode _probe(void *driver, POSTData *postData)
{
- return ltc4274_probe(driver);
+ ltc4274_config(driver);
+ return ltc4274_probe(driver, postData);
+
}
static void _alert_handler(LTC4274_Event evt,
@@ -263,35 +269,7 @@ static ePostCode _init(void *driver, const void *config,
return POST_DEV_CFG_DONE;
}
-const Driver LTC4274 = {
- .name = "PSE",
- .status = (Parameter[]){
- { .name = "detectStatus", .type = TYPE_UINT16 },
- { .name = "classStatus", .type = TYPE_UINT16 },
- { .name = "powerGoodStatus", .type = TYPE_UINT16 },
- {}
- },
- .config = (Parameter[]){
- { .name = "operatingMode", .type = TYPE_UINT16 },
- { .name = "detectEnable", .type = TYPE_UINT16 },
- { .name = "interruptMask", .type = TYPE_UINT16 },
- { .name = "interruptEnable", .type = TYPE_UINT16 },
- { .name = "pseHpEnable", .type = TYPE_UINT16 },
- {}
- },
- .alerts = (Parameter[]){
- { .name = "NoAlert", .type = TYPE_UINT8 },
- { .name = "PowerEnable", .type = TYPE_UINT8 },
- { .name = "PowerGood", .type = TYPE_UINT8 },
- { .name = "DiconnectAlert", .type = TYPE_UINT8 },
- { .name = "DetectionAlert", .type = TYPE_UINT8 },
- { .name = "ClassAlert", .type = TYPE_UINT8 },
- { .name = "TCUTAler", .type = TYPE_UINT8 },
- { .name = "TStartAlert", .type = TYPE_UINT8 },
- { .name = "SupplyAlert", .type = TYPE_UINT8 },
- {}
- },
-
+const Driver_fxnTable LTC4274_fxnTable = {
/* Message handlers */
.cb_probe = _probe,
.cb_init = _init,
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ltc4275.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ltc4275.c
index 25bef5a971..8f86fc9f8a 100644
--- a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ltc4275.c
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_ltc4275.c
@@ -6,13 +6,11 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-#include "src/registry/Framework.h"
+#include "common/inc/ocmp_wrappers/ocmp_ltc4275.h"
#include "helpers/array.h"
#include "helpers/math.h"
#include "inc/devices/ltc4275.h"
-#include "inc/devices/ocmp_wrappers/ocmp_ltc4275.h"
-
static bool _get_status(void *driver, unsigned int param_id,
void *return_buf)
@@ -22,7 +20,7 @@ static bool _get_status(void *driver, unsigned int param_id,
case LTC4275_STATUS_CLASS:
{
ePDClassType *res = (ePDClassType*)return_buf;
- if (ltc4275_get_class(res) == RETURN_OK) {
+ if (ltc4275_get_class(driver, res) == RETURN_OK) {
ret = true;
}
}
@@ -30,7 +28,7 @@ static bool _get_status(void *driver, unsigned int param_id,
case LTC4275_STATUS_POWERGOOD:
{
ePDPowerState *res =(ePDPowerState*) return_buf;
- if (ltc4275_get_power_good(res) == RETURN_OK) {
+ if (ltc4275_get_power_good(driver, res) == RETURN_OK) {
ret = true;
}
break;
@@ -46,9 +44,10 @@ static bool _get_status(void *driver, unsigned int param_id,
/*****************************************************************************
*****************************************************************************/
-static ePostCode _probe(void *driver)
+static ePostCode _probe(void *driver, POSTData *postData)
{
- return ltc4275_probe(driver);
+ ltc4275_config(driver);
+ return ltc4275_probe(driver,postData);
}
/*****************************************************************************
@@ -87,20 +86,7 @@ static ePostCode _init(void *driver, const void *config,
return POST_DEV_CFG_DONE;
}
-const Driver LTC4275 = {
- .name = "LTC4275",
- .status = (Parameter[]){
- { .name = "class", .type = TYPE_ENUM },
- { .name = "powerGoodState", .type = TYPE_ENUM },
- {}
- },
- .alerts = (Parameter[]){
- { .name = "INCOMPATIBLE", .type = TYPE_ENUM },
- { .name = "DISCONNECT", .type = TYPE_ENUM },
- { .name = "CONNECT", .type = TYPE_ENUM },
- {}
- },
-
+const Driver_fxnTable LTC4275_fxnTable = {
/* Message handlers */
.cb_probe = _probe,
.cb_init = _init,
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_mac.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_mac.c
new file mode 100644
index 0000000000..89e5514b47
--- /dev/null
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_mac.c
@@ -0,0 +1,232 @@
+/**
+* Copyright (c) 2017-present, Facebook, Inc.
+* All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*/
+#include "common/inc/ocmp_wrappers/ocmp_mac.h"
+
+#include "inc/common/global_header.h"
+
+#include
+#include
+
+typedef enum {
+ OC_SYS_CONF_MAC_ADDRESS = 0
+} eOCConfigParamId;
+
+/*****************************************************************************
+ ** FUNCTION NAME : _get_mac_address
+ **
+ ** DESCRIPTION : Get EC MAC address.
+ **
+ ** ARGUMENTS : Pointer MAC address.
+ **
+ ** RETURN TYPE : true on Success and false on Failure
+ **
+ *****************************************************************************/
+static ReturnStatus _get_mac_address(uint8_t *macAddress)
+{
+ uint32_t ulUser0 = 0, ulUser1 = 0;
+
+ /* Get the MAC address */
+ if((FlashUserGet(&ulUser0, &ulUser1)) != 0) {
+ return RETURN_NOTOK;
+ }
+ uint8_t i = 0;
+ uint8_t temp[6] = {'\0'};
+
+ if ((ulUser0 != 0xffffffff) && (ulUser1 != 0xffffffff)) {
+ /*
+ * Convert the 24/24 split MAC address from NV ram into a 32/16 split
+ * MAC address needed to program the hardware registers, then program
+ * the MAC address into the Ethernet Controller registers.
+ */
+ temp[0] = ((ulUser0 >> 0) & 0xff);
+ temp[1] = ((ulUser0 >> 8) & 0xff);
+ temp[2] = ((ulUser0 >> 16) & 0xff);
+ temp[3] = ((ulUser1 >> 0) & 0xff);
+ temp[4] = ((ulUser1 >> 8) & 0xff);
+ temp[5] = ((ulUser1 >> 16) & 0xff);
+
+ for( i = 0; i < 6; i++ )
+ {
+ sprintf((char *)&macAddress[i*2], "%X", ((temp[i]&0xf0) >> 4));
+ sprintf((char *)&macAddress[(i*2)+1], "%X", temp[i]&0xf);
+ }
+ } else {
+ strncpy((char *)macAddress, "FFFFFFFFFFFF", 12);
+ }
+
+ return RETURN_OK;
+}
+
+static uint32_t str_to_val(const char *str)
+{
+ uint32_t value = 0;
+ uint8_t temp;
+ char *ptr;
+ value = strtol(str, &ptr, 16);
+ temp = (value & 0XFF0000) >> 16;
+ value = (value & 0X00FF00) | ((value & 0X0000FF) << 16);
+ value = value | temp;
+ return value;
+}
+
+/*****************************************************************************
+ ** FUNCTION NAME : _set_mac_address
+ **
+ ** DESCRIPTION : Set EC MAC address.
+ **
+ ** ARGUMENTS : Pointer to MAC address
+ **
+ ** RETURN TYPE : true on Success and false on Failure
+ **
+ *****************************************************************************/
+ReturnStatus _set_mac_address(const uint8_t *macAddress)
+{
+ uint32_t ulUser0, ulUser1;
+ if(macAddress != NULL) {
+ char temp[6];
+ strncpy(temp, (const char *)macAddress, 6);
+ ulUser0 = str_to_val(temp);
+ strncpy(temp, (const char *)(macAddress + 6), 6);
+ ulUser1 = str_to_val(temp);
+ /* Set the MAC address */
+ if((FlashUserSet(ulUser0, ulUser1)) != 0) {
+ return RETURN_NOTOK;
+ } else {
+ if(FlashUserSave() != 0) {
+ return RETURN_NOTOK;
+ }
+ }
+ /*SysCtlDelay(2000000);
+ SysCtlReset();*/
+ }
+
+ return RETURN_OK;
+}
+
+/*****************************************************************************
+ ** FUNCTION NAME : mac_get_config_parameters_data
+ **
+ ** DESCRIPTION : Get OC Config Message.
+ **
+ ** ARGUMENTS : pointer to Driver config, Parameter info
+ ** and pointer to MAC Address.
+ **
+ ** RETURN TYPE : true on Success and false on Failure
+ **
+ *****************************************************************************/
+static bool _mac_get_config_parameters_data(void **driver,
+ unsigned int param,
+ void *pOCConfigData)
+{
+ const eOCConfigParamId paramIndex = (eOCConfigParamId)param;
+ ReturnStatus status = RETURN_OK;
+ switch (paramIndex) {
+ case OC_SYS_CONF_MAC_ADDRESS:
+ {
+ memset(pOCConfigData, '\0', OC_MAC_ADDRESS_SIZE + 1);
+ status = _get_mac_address(pOCConfigData);
+ LOGGER_DEBUG("SYS:INFO:: OC Connect1 MAC Address: %s.\n",
+ pOCConfigData);
+ break;
+ }
+ default:
+ {
+ status = RETURN_NOTOK;
+ }
+ }
+ return (status == RETURN_OK);
+}
+
+/*****************************************************************************
+ ** FUNCTION NAME : mac_set_config_parameters_data
+ **
+ ** DESCRIPTION : Set OC Config Message.
+ **
+ ** ARGUMENTS : pointer to Driver config, Parameter info
+ ** and pointer to MAC Address.
+ **
+ ** RETURN TYPE : true on Success and false on Failure
+ **
+ *****************************************************************************/
+static bool _mac_set_config_parameters_data(void **driver,
+ unsigned int param,
+ const void *pOCConfigData)
+{
+ const eOCConfigParamId paramIndex = (eOCConfigParamId)param;
+ ReturnStatus status = RETURN_OK;
+ switch (paramIndex) {
+ case OC_SYS_CONF_MAC_ADDRESS:
+ {
+ LOGGER_DEBUG("SYS:INFO:: Set OC Connect1 MAC Address to: %s.\n",
+ pOCConfigData);
+ _set_mac_address(pOCConfigData);
+ break;
+ }
+ default:
+ {
+ status = RETURN_NOTOK;
+ }
+ }
+ return (status == RETURN_OK);
+}
+
+static ePostCode _probe_mac(void *driver, const void *config,
+ const void *alert_token)
+{
+ uint8_t macAddress[14];
+ uint32_t ulUser0 = 0, ulUser1 = 0;
+
+ /* Get the MAC address */
+ if((FlashUserGet(&ulUser0, &ulUser1)) != 0) {
+ return POST_DEV_MISSING;
+ }
+ uint8_t i = 0;
+ uint8_t temp[6] = {'\0'};
+
+ if ((ulUser0 != 0xffffffff) && (ulUser1 != 0xffffffff)) {
+ /*
+ * Convert the 24/24 split MAC address from NV ram into a 32/16 split
+ * MAC address needed to program the hardware registers, then program
+ * the MAC address into the Ethernet Controller registers.
+ */
+ temp[0] = ((ulUser0 >> 0) & 0xff);
+ temp[1] = ((ulUser0 >> 8) & 0xff);
+ temp[2] = ((ulUser0 >> 16) & 0xff);
+ temp[3] = ((ulUser1 >> 0) & 0xff);
+ temp[4] = ((ulUser1 >> 8) & 0xff);
+ temp[5] = ((ulUser1 >> 16) & 0xff);
+
+ for( i = 0; i < 6; i++ )
+ {
+ sprintf((char *)&macAddress[i*2], "%X", ((temp[i]&0xf0) >> 4));
+ sprintf((char *)&macAddress[(i*2)+1], "%X", temp[i]&0xf);
+ }
+ } else {
+ strncpy((char *)macAddress, "FFFFFFFFFFFF", 12);
+ return POST_DEV_MISSING;
+ }
+ return POST_DEV_FOUND;
+}
+
+/* Dummy Initialize for MAC */
+static ePostCode _init_mac(void *driver, const void *config,
+ const void *alert_token)
+{
+ return POST_DEV_NO_CFG_REQ;
+}
+
+
+const Driver_fxnTable MAC_fxnTable= {
+ .cb_probe = _probe_mac,
+ .cb_init = _init_mac,
+ .cb_get_config = _mac_get_config_parameters_data,
+ .cb_set_config = _mac_set_config_parameters_data,
+};
+
+
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_powerSource.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_powerSource.c
index cfccfe0216..07d841b92b 100644
--- a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_powerSource.c
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_powerSource.c
@@ -6,13 +6,11 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
+#include "common/inc/ocmp_wrappers/ocmp_powersource.h"
-#include "src/registry/Framework.h"
-
-#include "helpers/array.h"
+#include "common/inc/global/Framework.h"
#include "inc/devices/powerSource.h"
-#include "inc/devices/ocmp_wrappers/ocmp_powerSource.h"
-
+#include "helpers/array.h"
static bool _get_status(void *driver, unsigned int param_id,
void *return_buf)
@@ -20,7 +18,7 @@ static bool _get_status(void *driver, unsigned int param_id,
bool ret = false;
/* TODO: As of now using pwr_get_sourc_info as it is for Power source Update.
* Once we change the handing of the powersource status #298 this will also changed. */
- pwr_get_source_info();
+ pwr_get_source_info(driver);
if ( pwr_process_get_status_parameters_data(param_id,return_buf) == RETURN_OK) {
ret = true;
}
@@ -29,29 +27,18 @@ static bool _get_status(void *driver, unsigned int param_id,
static ePostCode _probe(void *driver)
{
- return POST_DEV_FOUND;
+ pwr_source_config(driver);
+ return POST_DEV_NOSTATUS;
}
static ePostCode _init(void *driver, const void *config,
const void *alert_token)
{
pwr_source_init();
- return POST_DEV_CFG_DONE;
+ return POST_DEV_NO_CFG_REQ;
}
-const Driver PWRSRC = {
- .name = "powerSource",
- .status = (Parameter[]){
- { .name = "poeAvailability", .type = TYPE_UINT8 },
- { .name = "poeAccessebility", .type = TYPE_UINT8 },
- { .name = "solarAvailability", .type = TYPE_UINT8 },
- { .name = "solarAccessebility", .type = TYPE_UINT8 },
- { .name = "extBattAccessebility", .type = TYPE_UINT8 },
- { .name = "extBattAccessebility", .type = TYPE_UINT8 },
- { .name = "intBattAccessebility", .type = TYPE_UINT8 },
- { .name = "intBattAccessebility", .type = TYPE_UINT8 },
- {}
- },
+const Driver_fxnTable PWRSRC_fxnTable = {
/* Message handlers */
.cb_probe = _probe,
.cb_init = _init,
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_rfpowermonitor.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_rfpowermonitor.c
new file mode 100644
index 0000000000..f38ca300ae
--- /dev/null
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_rfpowermonitor.c
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/ocmp_wrappers/ocmp_rfpowermonitor.h"
+
+#include "inc/subsystem/rffe/rffe_powermonitor.h"
+
+/* OCMP message handler */
+static bool _ocmp_get_status(void *driver, unsigned int param_id,
+ void *return_buf) {
+ switch (param_id) {
+ case FE_POWER_STATUS_FORWARD: {
+ if (rffe_powermonitor_read_power(driver,
+ RFFE_STAT_FW_POWER,
+ return_buf) == RETURN_OK) {
+ return true;
+ }
+ break;
+ }
+ case FE_POWER_STATUS_REVERSE: {
+ if (rffe_powermonitor_read_power(driver,
+ RFFE_STAT_REV_POWER,
+ return_buf) == RETURN_OK) {
+ return true;
+ }
+ break;
+ }
+ default:
+ LOGGER_ERROR("RFPOWERMONITOR::Unknown status param %d\n", param_id);
+ return false;
+ }
+ return false;
+}
+
+const Driver_fxnTable RFPowerMonitor_fxnTable = {
+ .cb_get_status = _ocmp_get_status,
+};
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_rfwatchdog.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_rfwatchdog.c
new file mode 100644
index 0000000000..0be282a360
--- /dev/null
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_rfwatchdog.c
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/ocmp_wrappers/ocmp_rfwatchdog.h"
+
+#include "inc/subsystem/rffe/rffe_ctrl.h"
+
+void _rffe_watchdog_handler(void *context)
+{
+ RfWatchdog_Cfg *cfg = context;
+ if (OcGpio_read(cfg->pin_alert_lb) > 0) {
+ OCMP_GenerateAlert(context, 0, NULL);
+ }
+ if (OcGpio_read(cfg->pin_alert_hb) > 0) {
+ OCMP_GenerateAlert(context, 1, NULL);
+ }
+}
+
+static ePostCode _rffe_watchdog_init(void *driver, const void *config,
+ const void *alert_token)
+{
+ RfWatchdog_Cfg *cfg = (RfWatchdog_Cfg *)driver;
+ if (OcGpio_configure(cfg->pin_alert_lb, OCGPIO_CFG_INPUT)) {
+ return POST_DEV_CFG_FAIL;
+ }
+ if (OcGpio_configure(cfg->pin_alert_hb, OCGPIO_CFG_INPUT)) {
+ return POST_DEV_CFG_FAIL;
+ }
+ if (OcGpio_configure(cfg->pin_interrupt, OCGPIO_CFG_INPUT |
+ OCGPIO_CFG_INT_FALLING)) {
+ return POST_DEV_CFG_FAIL;
+ }
+
+ ThreadedInt_Init(cfg->pin_interrupt, _rffe_watchdog_handler, cfg);
+ return POST_DEV_CFG_DONE;
+}
+
+const Driver_fxnTable RFFEWatchdogP_fxnTable = {
+ .cb_init = _rffe_watchdog_init,
+};
+
+
+
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_se98a.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_se98a.c
index 556303f129..3ecc7bb65e 100644
--- a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_se98a.c
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_se98a.c
@@ -1,9 +1,16 @@
-#include "src/registry/Framework.h"
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/ocmp_wrappers/ocmp_se98a.h"
#include "helpers/array.h"
#include "helpers/math.h"
#include "inc/devices/se98a.h"
-#include "inc/devices/ocmp_wrappers/ocmp_se98a.h"
typedef enum Se98aStatus {
SE98A_STATUS_TEMPERATURE = 0,
@@ -76,9 +83,9 @@ static bool _set_config(void *driver, unsigned int param_id,
return false;
}
-static ePostCode _probe(void *driver)
+static ePostCode _probe(void *driver, POSTData *postData)
{
- return se98a_probe(driver);
+ return se98a_probe(driver, postData);
}
static void _alert_handler(SE98A_Event evt, int8_t temperature,
@@ -111,7 +118,6 @@ static ePostCode _init(void *driver, const void *config,
if (se98a_init(driver) != RETURN_OK) {
return POST_DEV_CFG_FAIL;
}
-
if (!config) {
return POST_DEV_CFG_DONE;
}
@@ -131,25 +137,7 @@ static ePostCode _init(void *driver, const void *config,
return POST_DEV_CFG_DONE;
}
-const Driver SE98A = {
- .name = "SE98A",
- .status = (Parameter[]){
- { .name = "temperature", .type = TYPE_UINT8 },
- {}
- },
- .config = (Parameter[]){
- { .name = "lowlimit", .type = TYPE_UINT8 },
- { .name = "highlimit", .type = TYPE_UINT8 },
- { .name = "critlimit", .type = TYPE_UINT8 },
- {}
- },
- .alerts = (Parameter[]){
- { .name = "BAW", .type = TYPE_UINT8 },
- { .name = "AAW", .type = TYPE_UINT8 },
- { .name = "ACW", .type = TYPE_UINT8 },
- {}
- },
-
+const Driver_fxnTable SE98_fxnTable = {
/* Message handlers */
.cb_probe = _probe,
.cb_init = _init,
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_syncio.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_syncio.c
new file mode 100644
index 0000000000..222e0b35cd
--- /dev/null
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_syncio.c
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/ocmp_wrappers/ocmp_syncio.h"
+
+#include "common/inc/global/Framework.h"
+#include "inc/subsystem/sync/sync.h"
+
+const Driver_fxnTable SYNC_fxnTable = {
+ /* Message handlers */
+ .cb_get_status = SYNC_GpsStatus,
+};
+
+
diff --git a/firmware/ec/src/Devices/ocmp_wrappers/ocmp_testmodule.c b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_testmodule.c
new file mode 100644
index 0000000000..fe0d76e5e2
--- /dev/null
+++ b/firmware/ec/src/Devices/ocmp_wrappers/ocmp_testmodule.c
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "common/inc/ocmp_wrappers/ocmp_testmodule.h"
+
+#include "inc/common/global_header.h"
+
+typedef enum {
+ TWOG_IMEI = 0,
+ TWOG_IMSI = 1,
+ TWOG_GETMFG = 2,
+ TWOG_GETMODEL = 3,
+ TWOG_RSSI = 4,
+ TWOG_BER = 5,
+ TWOG_REGSTATUS = 6,
+ TWOG_NETWORK_OP_INFO = 7,
+ TWOG_CELLID = 8,
+ TWOG_BSIC = 9,
+ TWOG_LASTERR = 10,
+ TWOG_PARAM_MAX /* Limiter */
+} eTestModule_StatusParam;
+
+static ePostCode _probe(void **driver)
+{
+ /* TODO: this is a problem: we can't probe until we've initialized, but we
+ * don't init until after probing */
+ return POST_DEV_FOUND;
+}
+
+
+static ePostCode _init(void *driver, const void **config,
+ const void *alert_token)
+{
+ return g510_task_init(driver, config,alert_token);
+}
+
+static bool _get_status(void *driver, unsigned int param_id, void *return_buf)
+{
+ bool ret = false;
+ switch (param_id) {
+ case TWOG_IMEI:
+ {
+ ret = g510_get_imei(return_buf);
+ break;
+ }
+ case TWOG_IMSI:
+ {
+ ret = g510_get_imsi(return_buf);
+ break;
+ }
+ case TWOG_GETMFG:
+ {
+ ret = g510_get_mfg(return_buf);
+ break;
+ }
+ case TWOG_GETMODEL:
+ {
+ ret = g510_get_model(return_buf);
+ break;
+ }
+ /* TODO: optimize this - no reason to call CSQ twice */
+ case TWOG_RSSI:
+ {
+ ret = g510_get_rssi(return_buf);
+ break;
+ }
+ case TWOG_BER:
+ {
+ ret = g510_get_ber(return_buf);
+ break;
+ }
+ case TWOG_REGSTATUS:
+ {
+ ret = g510_get_regStatus(return_buf);
+ break;
+ }
+ case TWOG_NETWORK_OP_INFO:
+ /* TODO: from +COPS=? */
+ return false;
+ case TWOG_CELLID:
+ {
+ ret = g510_get_cellId(return_buf);
+ break;
+ }
+ case TWOG_BSIC:
+ {
+ /* TODO: from +MCELL? */
+ return false;
+ }
+ case TWOG_LASTERR:
+ {
+ /* TODO: implement last error */
+ return false;
+ }
+ default:
+ LOGGER("TESTMOD::ERROR: Unknown param %d\n", param_id);
+ return false;
+ }
+ return ret;
+}
+
+const Driver_fxnTable G510_fxnTable = {
+ /* Message handlers */
+ .cb_probe = _probe,
+ .cb_init = _init,
+ .cb_get_status = _get_status,
+};
diff --git a/firmware/ec/src/Devices/powerSource.c b/firmware/ec/src/Devices/powerSource.c
index da8f624419..0d39207053 100644
--- a/firmware/ec/src/Devices/powerSource.c
+++ b/firmware/ec/src/Devices/powerSource.c
@@ -10,18 +10,18 @@
//*****************************************************************************
// HEADER FILES
//*****************************************************************************
-#include
+#include "inc/devices/powerSource.h"
+
#include "Board.h"
#include "inc/common/global_header.h"
#include "inc/common/i2cbus.h"
-#include
#include "inc/subsystem/power/power.h"
+
+#include
#include
/*****************************************************************************
* MACRO DEFINITIONS
*****************************************************************************/
-extern void *sys_config[];
-#define PWR ((Power_Cfg *)sys_config[OC_SS_PWR])
static tPowerSource Power_SourceInfo[PWR_SRC_MAX];
@@ -74,6 +74,16 @@ static ReturnStatus pwr_source_inuse(ePowerSource *inUse)
}
return ret;
}
+
+void pwr_source_config(PWRSRC_Dev* driver)
+{
+ //Configuring GPIOS
+ OcGpio_configure(&driver->cfg.pin_solar_aux_prsnt_n, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&driver->cfg.pin_poe_prsnt_n, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&driver->cfg.pin_int_bat_prsnt, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&driver->cfg.pin_ext_bat_prsnt, OCGPIO_CFG_INPUT);
+}
+
/*****************************************************************************
** FUNCTION NAME : pwr_source_init
**
@@ -84,13 +94,9 @@ static ReturnStatus pwr_source_inuse(ePowerSource *inUse)
** RETURN TYPE : None
**
*****************************************************************************/
-void pwr_source_init(void)
+void pwr_source_init()
{
- ReturnStatus status = RETURN_NOTOK;
- ePowerSource powerSource = PWR_SRC_AUX_OR_SOLAR ;
ePowerSource itr = PWR_SRC_AUX_OR_SOLAR ;
- uint8_t class =0x00;
-
for (; itr < PWR_SRC_MAX; itr++) {
Power_SourceInfo[itr].powerSource = itr;
Power_SourceInfo[itr].state = PWR_SRC_NON_AVAILABLE;
@@ -107,7 +113,7 @@ void pwr_source_init(void)
*
* @return ReturnStatus
*/
-static ReturnStatus pwr_check_aux_or_solar(void)
+static ReturnStatus pwr_check_aux_or_solar(PWRSRC_Dev *pwrSrcDev)
{
@@ -115,7 +121,7 @@ static ReturnStatus pwr_check_aux_or_solar(void)
ePowerSourceState status=PWR_SRC_NON_AVAILABLE;
//For Checking SOLAR POWER SOURCE
uint8_t value = 0;
- value = OcGpio_read(&PWR->pin_solar_aux_prsnt_n);
+ value = OcGpio_read(&pwrSrcDev->cfg.pin_solar_aux_prsnt_n);
if (value == 0) {
status=PWR_SRC_AVAILABLE;
ret = RETURN_OK;
@@ -133,13 +139,13 @@ static ReturnStatus pwr_check_aux_or_solar(void)
*
* @return ReturnStatus
*/
-static ReturnStatus pwr_check_poe(void)
+static ReturnStatus pwr_check_poe(PWRSRC_Dev *pwrSrcDev)
{
ReturnStatus ret = RETURN_NOTOK;
uint8_t value = 0;
ePowerSourceState status=PWR_SRC_NON_AVAILABLE;
//For Checking POE POWER SOURCE
- value = OcGpio_read(&PWR->pin_poe_prsnt_n);
+ value = OcGpio_read(&pwrSrcDev->cfg.pin_poe_prsnt_n);
if ( value == 0) {
status=PWR_SRC_AVAILABLE;
ret = RETURN_OK;
@@ -157,14 +163,14 @@ static ReturnStatus pwr_check_poe(void)
*
* @return ReturnStatus
*/
-static ReturnStatus pwr_check_int_batt(void)
+static ReturnStatus pwr_check_int_batt(PWRSRC_Dev *pwrSrcDev)
{
ReturnStatus ret = RETURN_NOTOK;
uint8_t value = 0;
ePowerSourceState status=PWR_SRC_NON_AVAILABLE;
//For Checking INTERNAL BATTERY SOURCE
- value = OcGpio_read(&PWR->pin_int_bat_prsnt);
+ value = OcGpio_read(&pwrSrcDev->cfg.pin_int_bat_prsnt);
if (value == 0) { /* If read fails, we'll get a negative value */
status = PWR_SRC_AVAILABLE;
ret = RETURN_OK;
@@ -183,13 +189,13 @@ static ReturnStatus pwr_check_int_batt(void)
*
* @return ReturnStatus
*/
-static ReturnStatus pwr_check_ext_batt(void)
+static ReturnStatus pwr_check_ext_batt(PWRSRC_Dev *pwrSrcDev)
{
ReturnStatus ret = RETURN_NOTOK;
uint8_t value = 0;
ePowerSourceState status=PWR_SRC_NON_AVAILABLE;
- value = OcGpio_read(&PWR->pin_ext_bat_prsnt);
+ value = OcGpio_read(&pwrSrcDev->cfg.pin_ext_bat_prsnt);
if (value == 0) { /* If read fails, we'll get a negative value */
status=PWR_SRC_AVAILABLE;
ret = RETURN_OK;
@@ -208,22 +214,22 @@ static ReturnStatus pwr_check_ext_batt(void)
** RETURN TYPE : None
**
******************************************************************************/
-static void pwr_check_presence_of_source(void)
+static void pwr_check_presence_of_source(PWRSRC_Dev *pwrSrcDev)
{
ReturnStatus ret = RETURN_NOTOK;
- ret = pwr_check_aux_or_solar();
+ ret = pwr_check_aux_or_solar(pwrSrcDev);
LOGGER("POWER:INFO:: Power Source Aux/Solar %s.\n",
((ret == RETURN_OK) ? "available" : "not available"));
- ret = pwr_check_poe();
+ ret = pwr_check_poe(pwrSrcDev);
LOGGER("POWER:INFO:: Power Source POE %s.\n",
((ret == RETURN_OK) ? "available" : "not available"));
- ret = pwr_check_int_batt();
+ ret = pwr_check_int_batt(pwrSrcDev);
LOGGER("POWER:INFO:: Power Source INTERNAL BATTERY %s.\n",
((ret == RETURN_OK) ? "available" : "not available"));
- ret = pwr_check_ext_batt();
+ ret = pwr_check_ext_batt(pwrSrcDev);
LOGGER("POWER:INFO:: Power Source EXTERNAL BATTERY %s.\n",
((ret == RETURN_OK) ? "available" : "not available"));
@@ -240,12 +246,12 @@ static void pwr_check_presence_of_source(void)
** RETURN TYPE : None
**
*****************************************************************************/
-void pwr_get_source_info(void)
+void pwr_get_source_info(PWRSRC_Dev *pwrSrcDev)
{
ReturnStatus status = RETURN_NOTOK;
ePowerSource powerSource = PWR_SRC_AUX_OR_SOLAR;
/* Check the presence of power sources*/
- pwr_check_presence_of_source();
+ pwr_check_presence_of_source(pwrSrcDev);
/* Find the primary power source and update Power Source info for same.*/
status = pwr_source_inuse(&powerSource);
diff --git a/firmware/ec/src/Devices/sbdn9603.c b/firmware/ec/src/Devices/sbdn9603.c
new file mode 100644
index 0000000000..37ea437bf5
--- /dev/null
+++ b/firmware/ec/src/Devices/sbdn9603.c
@@ -0,0 +1,255 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+//*****************************************************************************
+// HEADER FILES
+//*****************************************************************************
+#include "Board.h"
+#include "devices/uart/sbd.h"
+#include "inc/common/global_header.h"
+#include "inc/subsystem/obc/obc.h"
+#include "inc/subsystem/sdr/sdr.h" /* temporary - Only required for 12v enable */
+#include "helpers/array.h"
+#include "platform/oc-sdr/schema/schema.h"
+#include "registry/SSRegistry.h"
+
+#include
+#include
+#include
+
+#include
+#include
+
+//*****************************************************************************
+// MACROS DEFINITION
+//*****************************************************************************
+#define OBC_TASK_PRIORITY 2
+#define OBC_TASK_STACK_SIZE 2048
+
+#define SBD_WRITE_TIMEOUT 500
+
+/* TODO: move to helper? */
+#define STATIC_STRLEN(s) (ARRAY_SIZE(s) - 1)
+
+//*****************************************************************************
+// HANDLES DEFINITION
+//*****************************************************************************
+
+extern OCSubsystem *ss_reg[];
+static UART_Handle uartIridium;
+static SBD_Handle s_hSbd = NULL;
+
+
+static UART_Handle open_comm(const Iridium_Cfg *iridium)
+{
+ DEBUG("Resetting Iridium module\n");
+
+ OcGpio_configure(&iridium->pin_enable, OCGPIO_CFG_OUTPUT |
+ OCGPIO_CFG_OUT_LOW);
+ OcGpio_configure(&iridium->pin_nw_avail, OCGPIO_CFG_INPUT);
+
+ /* reset - for proper reset, Iridium should be disabled for ~2s */
+ OcGpio_write(&iridium->pin_enable, false); /* Just to be sure it's low */
+ Task_sleep(2100); // TODO: should be ~2s
+ OcGpio_write(&iridium->pin_enable, true);
+ Task_sleep(200); // TODO: idk...probably doesn't need to be long
+
+ // Open Iridium UART
+ UART_Params uartParams;
+ UART_Params_init(&uartParams);
+ uartParams.writeDataMode = UART_DATA_BINARY;
+ uartParams.readDataMode = UART_DATA_BINARY;
+ uartParams.readReturnMode = UART_RETURN_FULL;
+ uartParams.readEcho = UART_ECHO_OFF;
+ uartParams.baudRate = 19200;
+ uartParams.dataLength = UART_LEN_8;
+ uartParams.parityType = UART_PAR_NONE;
+ uartParams.stopBits = UART_STOP_ONE;
+ uartParams.writeTimeout = SBD_WRITE_TIMEOUT;
+ return UART_open(iridium->uart, &uartParams);
+}
+
+ReturnStatus sbd_init(const Iridium_Cfg *iridium)
+{
+ uartIridium = open_comm(iridium);
+ if (!uartIridium) {
+ return RETURN_NOTOK;
+ }
+
+ /* Initialize SBD layers */
+// const SbdCallbackList cbList = {
+// .sbdring = sbdring_cb,
+// .ciev = sbdciev_cb,
+// };
+ s_hSbd = SBD_init(uartIridium, NULL, NULL);
+ if (!s_hSbd) {
+ return RETURN_NOTOK;
+ }
+
+ /* TODO: module verification? */
+ if (!SBD_k(s_hSbd, SBD_FLOW_CONTROL_HW) /* Enable HW flow control */
+ || !SBD_sbdmta(s_hSbd, true) /* Ring indication enable */
+ || !SBD_sbdareg(s_hSbd, SBD_AREG_MODE_AUTO) /* Auto registration */
+ || !SBD_cier(s_hSbd, true, false, true, false, false)) { /* Service change indications */
+ /* TODO: handle cleanup */
+ s_hSbd = NULL;
+ return RETURN_NOTOK;
+ }
+
+ return RETURN_OK;
+}
+
+bool sbd9603_get_queueLength( OBC_Iridium_Status_Data *pIridiumStatusData)
+{
+ pIridiumStatusData->outQueueLen = 25;
+ return true;
+}
+
+bool sbd9603_get_lastError( OBC_Iridium_Status_Data *pIridiumStatusData)
+{
+ pIridiumStatusData->lastErr = (OBC_lastError) {
+ .src = ERR_RC_INTERNAL,
+ .code = 5,
+ };
+ return true;
+}
+
+bool sbd9603_get_imei( OBC_Iridium_Status_Data *pIridiumStatusData)
+{
+ bool ret = true;
+ if (!s_hSbd) {
+ ret = false;
+ }
+ SbdcgsnInfo cgsnInfo;
+ if (!SBD_cgsn(s_hSbd, &cgsnInfo)) {
+ ret = false;
+ }
+ pIridiumStatusData->imei = strtoull(cgsnInfo.imei, NULL, 10);
+ return ret;
+}
+
+bool sbd9603_get_mfg( OBC_Iridium_Status_Data *pIridiumStatusData)
+{
+ bool ret = true;
+ if (!s_hSbd) {
+ ret = false;
+ }
+ SbdCgmiInfo cgmiInfo;
+ if (!SBD_cgmi(s_hSbd, &cgmiInfo)) {
+ ret = false;
+ }
+ strncpy(pIridiumStatusData->mfg, cgmiInfo.mfg,
+ sizeof(pIridiumStatusData->mfg));
+ return ret;
+}
+
+bool sbd9603_get_model( OBC_Iridium_Status_Data *pIridiumStatusData)
+{
+
+ bool ret = true;
+ if (!s_hSbd) {
+ ret = false;
+ }
+ SbdCgmmInfo cgmmInfo;
+ if (!SBD_cgmm(s_hSbd, &cgmmInfo)) {
+ ret = false;
+ }
+ /* Model string is verbose - if it's 9600 fam, replace with shorter
+ * model number since we only have 4 characters */
+ char *model = cgmmInfo.model;
+ const char fam_str[] = "IRIDIUM 9600 Family";
+ if (strncmp(model, fam_str, STATIC_STRLEN(fam_str)) == 0) {
+ model = "96xx";
+ }
+ strncpy(pIridiumStatusData->model, model,
+ sizeof(pIridiumStatusData->model));
+ return ret;
+}
+
+bool sbd9603_get_signalqual( OBC_Iridium_Status_Data *pIridiumStatusData)
+{
+ bool ret = true;
+ if (!s_hSbd) {
+ ret = false;
+ }
+ SbdcsqInfo csqInfo;
+ if (!SBD_csqf(s_hSbd, &csqInfo)) {
+ ret = false;
+ }
+ pIridiumStatusData->rssi = csqInfo.rssi;
+ return ret;
+}
+
+bool sbd9603_get_regStatus( OBC_Iridium_Status_Data *pIridiumStatusData)
+{
+ bool ret = true;
+ if (!s_hSbd) {
+ ret = false;
+ }
+ if (!SBD_sbdregRead(s_hSbd, &pIridiumStatusData->regStat)) {
+ ret = false;
+ }
+ return ret;
+}
+
+#include "helpers/memory.h"
+
+static void loopback_test(SBD_Handle hSbd, bool debugLogs)
+{
+ static int loopCount = 1;
+ static unsigned int ticks = 0;
+
+ if (ticks == 0)
+ ticks = Clock_getTicks();
+
+ if (debugLogs) {
+ System_printf("Loop %d\n", loopCount);
+ }
+
+ // Generate a random string
+ static char msg[300];
+ const int msgLen = 1 + (rand() % (sizeof(msg)));
+
+ for (int i = 0; i < msgLen; ++i) {
+ msg[i] = rand() % 256;
+ }
+
+ if (!SBD_sbdwb(hSbd, msg, msgLen)) {
+ System_abort("SBDWB Failed");
+ }
+
+ if (!SBD_sbdtc(hSbd)) {
+ System_abort("SBDTC Failed");
+ }
+
+ char ret[sizeof(msg)] = { };
+ if (SBD_sbdrb(hSbd, ret, msgLen) < msgLen) {
+ System_abort("SBDRB Failed");
+ }
+
+ if (memcmp(msg, ret, msgLen) != 0) {
+ printMemory(msg, msgLen);
+ System_printf("\n");
+ printMemory(ret, msgLen);
+ System_abort("Messages don't match");
+ }
+
+ // Only output every few iterations so printfs don't slow down test
+ if (loopCount % 10 == 0) {
+ if (debugLogs) {
+ System_printf("Time: %d\n", Clock_getTicks() - ticks);
+ System_flush();
+ }
+ ticks = Clock_getTicks();
+ }
+ loopCount++;
+ OCSubsystem *ss = ss_reg[OC_SS_OBC];
+ /* FIXME: hack to keep thread alive so we keep looping */
+ Semaphore_post(ss->sem);
+}
diff --git a/firmware/ec/src/Devices/se98a.c b/firmware/ec/src/Devices/se98a.c
index cbbb579068..7735c47829 100644
--- a/firmware/ec/src/Devices/se98a.c
+++ b/firmware/ec/src/Devices/se98a.c
@@ -7,13 +7,13 @@
* of patent rights can be found in the PATENTS file in the same directory.
*/
#include "inc/devices/se98a.h"
+
#include "inc/common/byteorder.h"
#include "devices/i2c/threaded_int.h"
#include "helpers/math.h"
#include "helpers/memory.h"
#include
-
#include
/*****************************************************************************
@@ -328,9 +328,9 @@ ReturnStatus se98a_init(SE98A_Dev *dev)
}
/* Make sure we're talking to the right device */
- if (se98a_probe(dev) != POST_DEV_FOUND) {
- return RETURN_NOTOK;
- }
+ //if (se98a_probe(dev) != POST_DEV_FOUND) {
+ // return RETURN_NOTOK;
+ //}
/* The only way to truly reset this device is to cycle power - we'll just
* clear out the config register to be safe and clear any interrupts from
@@ -383,7 +383,7 @@ ReturnStatus se98a_enable_alerts(SE98A_Dev *dev)
/*****************************************************************************
*****************************************************************************/
-ePostCode se98a_probe(SE98A_Dev *dev)
+ePostCode se98a_probe(SE98A_Dev *dev, POSTData *postData)
{
uint8_t devId = 0x00;
uint16_t manfId = 0x0000;
@@ -400,6 +400,6 @@ ePostCode se98a_probe(SE98A_Dev *dev)
if (manfId != SE98A_MFG_ID) {
return POST_DEV_ID_MISMATCH;
}
-
+ post_update_POSTData(postData, dev->cfg.dev.bus, dev->cfg.dev.slave_addr,manfId, devId);
return POST_DEV_FOUND;
}
diff --git a/firmware/ec/src/Devices/sx1509.c b/firmware/ec/src/Devices/sx1509.c
index 20e146aa2e..314facf906 100644
--- a/firmware/ec/src/Devices/sx1509.c
+++ b/firmware/ec/src/Devices/sx1509.c
@@ -10,11 +10,11 @@
//*****************************************************************************
// HEADER FILES
//*****************************************************************************
-
#include "inc/devices/sx1509.h"
#include "inc/common/global_header.h"
#include "inc/common/byteorder.h"
+
/*****************************************************************************
* REGISTER DEFINITIONS
*****************************************************************************/
diff --git a/firmware/ec/src/Devices/uart/gsm.c b/firmware/ec/src/Devices/uart/gsm.c
index ef771e81ae..50e3ff8fdd 100644
--- a/firmware/ec/src/Devices/uart/gsm.c
+++ b/firmware/ec/src/Devices/uart/gsm.c
@@ -20,6 +20,10 @@
#define CMGD_TIMEOUT 10000
#define CFUN_TIMEOUT 12000
+#define TESTMOD_TASK_PRIORITY 2
+#define TESTMOD_TASK_STACK_SIZE 2048
+static Char testmodTaskStack[TESTMOD_TASK_STACK_SIZE];
+
static const char CTRL_Z = 26;
static GsmCallbackList gsmCallbackList = {}; // TODO: move into handle
@@ -289,8 +293,8 @@ bool GSM_cregRead(GSM_Handle handle, GsmCregInfo *info_out) {
s_AtRes.param[3].type != AT_PARAM_TYPE_STR) {
return false;
}
- info_out->lac = strtoull(s_AtRes.param[2].pStr, NULL, 16);
- info_out->cid = strtoull(s_AtRes.param[3].pStr, NULL, 16);
+ info_out->lac = strtoumax(s_AtRes.param[2].pStr, NULL, 16);
+ info_out->cid = strtoumax(s_AtRes.param[3].pStr, NULL, 16);
}
return true;
diff --git a/firmware/ec/src/Devices/uart/sbd.h b/firmware/ec/src/Devices/uart/sbd.h
index d5e79893a6..d9faae76d7 100644
--- a/firmware/ec/src/Devices/uart/sbd.h
+++ b/firmware/ec/src/Devices/uart/sbd.h
@@ -6,7 +6,6 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#pragma once
#include
diff --git a/firmware/ec/src/bigbrother.c b/firmware/ec/src/bigbrother.c
index 2a617a3325..9417886a4b 100644
--- a/firmware/ec/src/bigbrother.c
+++ b/firmware/ec/src/bigbrother.c
@@ -14,8 +14,8 @@
#include "Board.h"
#include "comm/gossiper.h"
+#include "common/inc/global/ocmp_frame.h"
#include "drivers/OcGpio.h"
-#include "inc/common/ocmp_frame.h"
#include "inc/common/post.h"
#include "inc/common/system_states.h"
#include "inc/subsystem/hci/hci_buzzer.h"
@@ -98,109 +98,15 @@ static ReturnStatus bigbrother_process_tx_msg(uint8_t *pMsg)
}
/*****************************************************************************
- ** FUNCTION NAME : bb_process_sys_post_msg
+ ** FUNCTION NAME : uart_enable
**
- ** DESCRIPTION : Start the procudre for enabling POST.
+ ** DESCRIPTION : Enable UART link between EC and AP.
**
** ARGUMENTS : None
**
- ** RETURN TYPE : ReturnStatus
+ ** RETURN TYPE : Success or failure
**
*****************************************************************************/
-static ReturnStatus bb_sys_post_enable(void)
-{
- ReturnStatus status = RETURN_OK;
- LOGGER("POST:INFO:: Starting POST test for OpenCellular.\n");
-
- OCMPMessageFrame *postExeMsg = create_ocmp_msg_frame(OC_SS_BB,
- OCMP_MSG_TYPE_POST,
- OCMP_AXN_TYPE_ACTIVE,
- 0x00,
- 0x00,
- 1);
- //OCMPMessageFrame *postExeMsg = (OCMPMessageFrame *)OCMP_mallocFrame(1);
- if (postExeMsg != NULL) {
- postExeMsg->message.ocmp_data[0] = status;
- Util_enqueueMsg(postRxMsgQueue, semPOSTMsg, (uint8_t*) postExeMsg);
- }
- return status;
-}
-
-/*****************************************************************************
- ** FUNCTION NAME : bb_sys_post_get_results
- **
- ** DESCRIPTION : Get POST results from EEPROM.
- **
- ** ARGUMENTS : None
- **
- ** RETURN TYPE : ReturnStatus
- **
- *****************************************************************************/
-ReturnStatus bb_sys_post_get_results(OCMPMessageFrame *getpostResultMsg)
-{
- ReturnStatus status = RETURN_OK;
- /* Return the POST results*/
- uint8_t iter = 0x00;
- uint8_t index = 0x00;
-
- /* Get the subssystem info for which message is required */
- OCMPMessageFrame *postResultMsg = create_ocmp_msg_frame(
- getpostResultMsg->message.subsystem, OCMP_MSG_TYPE_POST,
- OCMP_AXN_TYPE_REPLY,0x00,0x00,30);
- if (postResultMsg) {
- /* Getting data assigned*/
- postResultMsg->header.ocmp_sof = getpostResultMsg->header.ocmp_sof;
- postResultMsg->header.ocmp_interface = getpostResultMsg->header
- .ocmp_interface;
- postResultMsg->header.ocmp_seqNumber = getpostResultMsg->header
- .ocmp_seqNumber;
- for (iter = 0; iter < 30; iter++) {
- if (PostResult[iter].subsystem
- == getpostResultMsg->message.ocmp_data[0]) {
- postResultMsg->message.ocmp_data[(5 * index) + 0] =
- PostResult[iter].subsystem; //SubSystem
- postResultMsg->message.ocmp_data[(5 * index) + 1] =
- PostResult[iter].devSno; //Device serial Number
- postResultMsg->message.ocmp_data[(5 * index) + 2] =
- (PostResult[iter].devId & 0xFF00) >> 8; //Device Id MSB
- postResultMsg->message.ocmp_data[(5 * index) + 3] =
- (PostResult[iter].devId & 0x00FF); //Device Id LSB
- postResultMsg->message.ocmp_data[(5 * index) + 4] =
- PostResult[iter].status; //Status ok
- index++;
- }
- }
- LOGGER_DEBUG("BIGBROTHER:INFO::POST message sent for subsystem 0x%x.\n");
- /*Size of payload*/
- postResultMsg->header.ocmp_frameLen = index * 5;
- /*Updating Subsystem*/
- //postResultMsg->message.subsystem = (OCMPSubsystem)PostResult[iter].subsystem;
- /* Number of devices found under subsytem*/
- postResultMsg->message.parameters = index;
- Util_enqueueMsg(gossiperTxMsgQueue, semGossiperMsg,
- (uint8_t*) postResultMsg);
- index = 0;
- } else {
- LOGGER("BIGBROTHER:ERROR:: Failed to allocate memory for POST results.\n");
- }
- /* Free memory for request message */
- if (getpostResultMsg) {
- free(getpostResultMsg);
- }
- return status;
-}
-
-/*****************************************************************************
- ** FUNCTION NAME : eeprom_enable_write
- **
- ** DESCRIPTION : Read the values from the EEPROM register.
- **
- ** ARGUMENTS : EEPROM (Slave) address, Register address and
- ** pointer to value read.
- **
- ** RETURN TYPE : Success or failure
- **
- *****************************************************************************/
extern OcGpio_Pin pin_uart_sel;
ReturnStatus uart_enable()
@@ -211,122 +117,6 @@ ReturnStatus uart_enable()
return RETURN_OK;
}
-/*****************************************************************************
- ** FUNCTION NAME : bb_sys_post_complete
- **
- ** DESCRIPTION : Get POST results from EEPROM.
- **
- ** ARGUMENTS : None
- **
- ** RETURN TYPE : ReturnStatus
- **
- *****************************************************************************/
-ReturnStatus bb_sys_post_complete(OCMPMessageFrame *postResultMsg)
-{
- ReturnStatus status = RETURN_OK;
- LOGGER_DEBUG("BIGBROTHER:INFO::POST test is completed.\n");
- return status;
-}
-
-/*****************************************************************************
- ** FUNCTION NAME : bb_process_sys_post_msg
- **
- ** DESCRIPTION : Start the procudre for enabling POST.
- **
- ** ARGUMENTS : None
- **
- ** RETURN TYPE : ReturnStatus
- **
- *****************************************************************************/
-static ReturnStatus bb_sys_post_activate(OCMPMessageFrame *postExeMsg)
-{
- /*TODO: Look if all the task has been spwaned.*/
- ReturnStatus status = RETURN_OK;
- LOGGER_DEBUG("BIGBROTHER:INFO::Processing Big Brother subsystem POST Activate message.\n");
- if (postExeMsg != NULL) {
- postExeMsg->message.ocmp_data[0] = status;
- Util_enqueueMsg(postRxMsgQueue, semPOSTMsg, (uint8_t*) postExeMsg);
- }
- return RETURN_OK;
-}
-
-/*****************************************************************************
- ** FUNCTION NAME : bb_process_sys_post_msg
- **
- ** DESCRIPTION : Processes the big brother incoming post messages.
- **
- ** ARGUMENTS : Pointer to OCMPMessageFrame structure
- **
- ** RETURN TYPE : ReturnStatus
- **
- *****************************************************************************/
-static ReturnStatus bb_process_sys_post_msg(OCMPMessageFrame *pMsg)
-{
- ReturnStatus status = RETURN_NOTOK;
- LOGGER_DEBUG("BIGBROTHER:INFO::Processing Big Brother subsystem POST message.\n");
- switch (pMsg->message.action) {
- case OCMP_AXN_TYPE_ENABLE:
- {
- status = bb_sys_post_enable();
- bigbrother_process_tx_msg((uint8_t*) pMsg);
- break;
- }
- case OCMP_AXN_TYPE_ACTIVE:
- {
- status = bb_sys_post_activate(pMsg);
- break;
- }
- case OCMP_AXN_TYPE_GET:
- {
- status = bb_sys_post_get_results(pMsg);
- break;
- }
- case OCMP_AXN_TYPE_REPLY:
- {
- /* Sent by POST once all the testing is over*/
- //Change system state to initialized.
- status = bb_sys_post_complete(pMsg);
- //Event_post(interruptEvent, Event_Id_00);
- break;
- }
- default:
- {
- LOGGER_ERROR("BIGBROTHER::ERROR::No such action type present in the OpenCellular System for POST message.\n");
- if (pMsg)
- free(pMsg);
- }
- }
- return status;
-}
-
-/*****************************************************************************
- ** FUNCTION NAME : bb_process_sys_msg
- **
- ** DESCRIPTION : Processes the big brother incoming messages for
- ** OpenCellular system.
- **
- ** ARGUMENTS : Pointer to OCMPMessageFrame structure
- **
- ** RETURN TYPE : None
- **
- *****************************************************************************/
-static void bb_process_sys_msg(OCMPMessageFrame *pMsg)
-{
- LOGGER_DEBUG("BIGBROTHER:INFO::Processing Big Brother System messages.\n");
- switch (pMsg->message.msgtype) {
- case OCMP_MSG_TYPE_POST:
- bb_process_sys_post_msg(pMsg);
- break;
- default:
- LOGGER_ERROR("BIGBROTHER::ERROR::No such message type present in "
- "the OpenCellular System.\n");
- if (pMsg) {
- free(pMsg);
- }
- break;
- }
-}
-
/*****************************************************************************
** FUNCTION NAME : bigbrother_process_rx_msg
**
@@ -343,21 +133,18 @@ static ReturnStatus bigbrother_process_rx_msg(uint8_t *pMsg)
LOGGER_DEBUG("BIGBROTHER:INFO:: Processing Big Brother RX Message.\n");
OCMPMessageFrame * pOCMPMessageFrame = (OCMPMessageFrame *) pMsg;
if (pOCMPMessageFrame != NULL) {
- LOGGER_DEBUG("BIGBROTHER:INFO:: RX Msg recieved with Length: 0x%x, Interface: 0x%x, Seq.No: 0x%x, TimeStamp: 0x%x.\n",
- pOCMPMessageFrame->header.ocmp_frameLen,
- pOCMPMessageFrame->header.ocmp_interface,
- pOCMPMessageFrame->header.ocmp_seqNumber,
- pOCMPMessageFrame->header.ocmp_timestamp);
+ LOGGER_DEBUG("BIGBROTHER:INFO:: RX Msg recieved with Length: 0x%x,"
+ "Interface: 0x%x, Seq.No: 0x%x, TimeStamp: 0x%x.\n",
+ pOCMPMessageFrame->header.ocmpFrameLen,
+ pOCMPMessageFrame->header.ocmpInterface,
+ pOCMPMessageFrame->header.ocmpSeqNumber,
+ pOCMPMessageFrame->header.ocmpTimestamp);
// Forward this to respective subsystem.
- if (pOCMPMessageFrame->message.subsystem == OC_SS_BB) {
- bb_process_sys_msg(pOCMPMessageFrame);
- } else {
- if (!SSRegistry_sendMessage(pOCMPMessageFrame->message.subsystem,
- pMsg)) {
- LOGGER_ERROR("BIGBROTHER::ERROR::Subsystem %d doesn't exist\n",
- pOCMPMessageFrame->message.subsystem);
- free(pMsg);
- }
+ if (!SSRegistry_sendMessage(pOCMPMessageFrame->message.subsystem,
+ pMsg)) {
+ LOGGER_ERROR("BIGBROTHER::ERROR::Subsystem %d doesn't exist\n",
+ pOCMPMessageFrame->message.subsystem);
+ free(pMsg);
}
} else {
LOGGER_ERROR("BIGBROTHER:ERROR:: No message recieved.\n");
diff --git a/firmware/ec/src/comm/gossiper.c b/firmware/ec/src/comm/gossiper.c
index 3d93882527..5c981cc0a2 100644
--- a/firmware/ec/src/comm/gossiper.c
+++ b/firmware/ec/src/comm/gossiper.c
@@ -11,9 +11,10 @@
* HEADER FILES
*****************************************************************************/
#include "comm/gossiper.h"
+
+#include "common/inc/global/ocmp_frame.h"
#include "inc/common/bigbrother.h"
#include "inc/common/global_header.h"
-#include "inc/common/ocmp_frame.h"
#include "inc/interfaces/uartdma.h"
#include
@@ -182,10 +183,10 @@ static ReturnStatus gossiper_process_rx_msg(uint8_t *pMsg)
OCMPMessageFrame * pOCMPMessageFrame = (OCMPMessageFrame *) pMsg;
if (pOCMPMessageFrame != NULL) {
LOGGER_DEBUG("GOSSIPER:INFO:: RX Msg recieved with Length: 0x%x, Interface: 0x%x, Seq.No: 0x%x, TimeStamp: 0x%x.\n",
- pOCMPMessageFrame->header.ocmp_frameLen,
- pOCMPMessageFrame->header.ocmp_interface,
- pOCMPMessageFrame->header.ocmp_seqNumber,
- pOCMPMessageFrame->header.ocmp_timestamp);
+ pOCMPMessageFrame->header.ocmpFrameLen,
+ pOCMPMessageFrame->header.ocmpInterface,
+ pOCMPMessageFrame->header.ocmpSeqNumber,
+ pOCMPMessageFrame->header.ocmpTimestamp);
/*Update the Debug info required based on the debug jumper connected*/
//status = CheckDebugEnabled()
if (pOCMPMessageFrame->message.msgtype == OCMP_MSG_TYPE_DEBUG) {
@@ -221,15 +222,15 @@ static ReturnStatus gossiper_process_tx_msg(uint8_t *pMsg)
LOGGER_DEBUG("GOSSIPER:INFO:: Processing Gossiper TX Message.\n");
OCMPMessageFrame * pOCMPMessageFrame = (OCMPMessageFrame *) pMsg;
if (pOCMPMessageFrame != NULL) {
- if (pOCMPMessageFrame->header.ocmp_interface == OCMP_COMM_IFACE_UART) {
+ if (pOCMPMessageFrame->header.ocmpInterface == OCMP_COMM_IFACE_UART) {
status = gossiper_uart_send_msg(pMsg);
- } else if (pOCMPMessageFrame->header.ocmp_interface
+ } else if (pOCMPMessageFrame->header.ocmpInterface
== OCMP_COMM_IFACE_ETHERNET) {
status = gossiper_ethernet_send_msg(pMsg);
- } else if (pOCMPMessageFrame->header.ocmp_interface
+ } else if (pOCMPMessageFrame->header.ocmpInterface
== OCMP_COMM_IFACE_SBD) {
// Will be added later.
- } else if (pOCMPMessageFrame->header.ocmp_interface
+ } else if (pOCMPMessageFrame->header.ocmpInterface
== OCMP_COMM_IFACE_USB) {
status = gossiper_usb_send_msg(pMsg);
}
diff --git a/firmware/ec/src/comm/gossiper.h b/firmware/ec/src/comm/gossiper.h
index 7203d64206..1fd6672765 100644
--- a/firmware/ec/src/comm/gossiper.h
+++ b/firmware/ec/src/comm/gossiper.h
@@ -6,6 +6,7 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
+
#ifndef GOSSIPER_H_
#define GOSSIPER_H_
diff --git a/firmware/ec/src/drivers/GpioNative.c b/firmware/ec/src/drivers/GpioNative.c
index 68911f49d5..ff89fe3392 100644
--- a/firmware/ec/src/drivers/GpioNative.c
+++ b/firmware/ec/src/drivers/GpioNative.c
@@ -18,6 +18,10 @@
static GateMutex_Handle s_cb_data_mutex;
+static int GpioNative_probe(void) {
+ //This probe function is just a dummy as we are all ready accessing EC.
+ return OCGPIO_SUCCESS;
+}
void GpioNative_init(void) {
s_cb_data_mutex = GateMutex_create(NULL, NULL);
}
@@ -167,6 +171,7 @@ static int GpioNative_enableInt(const OcGpio_Pin *pin) {
}
const OcGpio_FnTable GpioNative_fnTable = {
+ .probe = GpioNative_probe,
.write = GpioNative_write,
.read = GpioNative_read,
.configure = GpioNative_configure,
diff --git a/firmware/ec/src/drivers/GpioPCA9557.c b/firmware/ec/src/drivers/GpioPCA9557.c
index db28d3f01f..454a1c97e7 100644
--- a/firmware/ec/src/drivers/GpioPCA9557.c
+++ b/firmware/ec/src/drivers/GpioPCA9557.c
@@ -14,6 +14,16 @@
#include "inc/common/global_header.h"
#include "inc/devices/pca9557.h"
+static int GpioPCA9557_probe(const OcGpio_Port *port) {
+ /* if we are able to read configuration register this means PCA device is accessible*/
+ const PCA9557_Cfg *pca_cfg = port->cfg;
+ PCA9557_Obj *obj = port->object_data;
+ if (PCA9557_getConfig(&pca_cfg->i2c_dev, &obj->reg_config) != RETURN_OK) {
+ return OCGPIO_FAILURE;
+ }
+ return OCGPIO_SUCCESS;
+}
+
static int GpioPCA9557_init(const OcGpio_Port *port) {
const PCA9557_Cfg *pca_cfg = port->cfg;
PCA9557_Obj *obj = port->object_data;
@@ -152,6 +162,7 @@ static int GpioPCA9557_enableInt(const OcGpio_Pin *pin) {
}
const OcGpio_FnTable GpioPCA9557_fnTable = {
+ .probe = GpioPCA9557_probe,
.init = GpioPCA9557_init,
.write = GpioPCA9557_write,
.read = GpioPCA9557_read,
diff --git a/firmware/ec/src/drivers/GpioSX1509.c b/firmware/ec/src/drivers/GpioSX1509.c
index d6a5a8df66..7fd6ace204 100644
--- a/firmware/ec/src/drivers/GpioSX1509.c
+++ b/firmware/ec/src/drivers/GpioSX1509.c
@@ -55,6 +55,17 @@ static void HandleIRQ(void *context) {
}
}
+static int GpioSX1509_probe(const OcGpio_Port *port) {
+ /* if we are able to read configuration register this means PCA device is accessible*/
+ const SX1509_Cfg *sx_cfg = port->cfg;
+ SX1509_Obj *obj = port->object_data;
+ uint8_t input_reg;
+ if (ioexp_led_get_data(&sx_cfg->i2c_dev, 0, &input_reg) != RETURN_OK) {
+ return OCGPIO_FAILURE;
+ }
+ return OCGPIO_SUCCESS;
+}
+
static int GpioSX1509_init(const OcGpio_Port *port) {
const SX1509_Cfg *sx_cfg = port->cfg;
SX1509_Obj *obj = port->object_data;
@@ -372,6 +383,7 @@ cleanup:
}
const OcGpio_FnTable GpioSX1509_fnTable = {
+ .probe = GpioSX1509_probe,
.init = GpioSX1509_init,
.write = GpioSX1509_write,
.read = GpioSX1509_read,
diff --git a/firmware/ec/src/drivers/GpioSX1509.h b/firmware/ec/src/drivers/GpioSX1509.h
index 87292532e2..054a476f6e 100644
--- a/firmware/ec/src/drivers/GpioSX1509.h
+++ b/firmware/ec/src/drivers/GpioSX1509.h
@@ -6,14 +6,12 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef _GPIOSX1509_H_
#define _GPIOSX1509_H_
-#include "OcGpio.h"
-
-#include "inc/common/ocmp_frame.h"
+#include "common/inc/global/ocmp_frame.h"
#include "inc/devices/sx1509.h"
+#include "OcGpio.h"
#include
diff --git a/firmware/ec/src/drivers/OcGpio.c b/firmware/ec/src/drivers/OcGpio.c
index bbf210d5e4..579f53cd9b 100644
--- a/firmware/ec/src/drivers/OcGpio.c
+++ b/firmware/ec/src/drivers/OcGpio.c
@@ -6,6 +6,5 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
-#include "OcGpio.h"
+#include "drivers/OcGpio.h"
diff --git a/firmware/ec/src/drivers/OcGpio.h b/firmware/ec/src/drivers/OcGpio.h
index 89ce4f0e6f..1f881ff7a2 100644
--- a/firmware/ec/src/drivers/OcGpio.h
+++ b/firmware/ec/src/drivers/OcGpio.h
@@ -6,7 +6,6 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef _OCGPIO_H_
#define _OCGPIO_H_
@@ -34,6 +33,7 @@ typedef int (*OcGpio_disableIntFn) (const OcGpio_Pin *pin);
typedef int (*OcGpio_enableIntFn) (const OcGpio_Pin *pin);
typedef struct OcGpio_FnTable {
+ OcGpio_initFn probe;
OcGpio_initFn init; /*!< Port initialization - called once */
OcGpio_writeFn write;
OcGpio_readFn read;
@@ -148,13 +148,30 @@ typedef union OcGpio_ioCfg {
* OcGpio.c instead.
*/
+/*! Probe the device for POStT
+ * probe function
+ * @param pin OcGPio_Port pointer to the driver instance to find the device
+ * @return 0 on success, negative on failure
+ */
+static inline int OcGpio_probe(const OcGpio_Port *port) {
+ if( port && port->fn_table && port->fn_table->probe) {
+ return port->fn_table->probe(port);
+ } else {
+ return OCGPIO_FAILURE;
+ }
+}
+
/*! Initialize the port - tempted to remove in favor of more generic device
* init function
* @param pin OcGPio_Port pointer to the driver instance to initialize
* @return 0 on success, negative on failure
*/
static inline int OcGpio_init(const OcGpio_Port *port) {
- return port->fn_table->init(port);
+ if( port && port->fn_table && port->fn_table->init) {
+ return port->fn_table->init(port);
+ } else {
+ return OCGPIO_FAILURE;
+ }
}
/*! Write a value to a GPIO pin
@@ -163,7 +180,12 @@ static inline int OcGpio_init(const OcGpio_Port *port) {
* @return 0 on success, negative on failure
*/
static inline int OcGpio_write(const OcGpio_Pin *pin, bool value) {
- return pin->port->fn_table->write(pin, value);
+ if( pin && pin->port && pin->port->fn_table &&
+ pin->port->fn_table->write) {
+ return pin->port->fn_table->write(pin, value);
+ } else {
+ return OCGPIO_FAILURE;
+ }
}
/*! Read a value from a GPIO pin
@@ -171,7 +193,12 @@ static inline int OcGpio_write(const OcGpio_Pin *pin, bool value) {
* @return Boolean value of pin, or negative if failure
*/
static inline int OcGpio_read(const OcGpio_Pin *pin) {
- return pin->port->fn_table->read(pin);
+ if( pin && pin->port && pin->port->fn_table &&
+ pin->port->fn_table->read) {
+ return pin->port->fn_table->read(pin);
+ } else {
+ return OCGPIO_FAILURE;
+ }
}
/*! Configure a GPIO pin's parameters (both io and hw params)
@@ -181,7 +208,12 @@ static inline int OcGpio_read(const OcGpio_Pin *pin) {
* @return 0 on success, negative on failure
*/
static inline int OcGpio_configure(const OcGpio_Pin *pin, uint32_t cfg) {
- return pin->port->fn_table->configure(pin, cfg);
+ if( pin && pin->port && pin->port->fn_table &&
+ pin->port->fn_table->configure) {
+ return pin->port->fn_table->configure(pin, cfg);
+ } else {
+ return OCGPIO_FAILURE;
+ }
}
/*! Add a callback subscriber to an interrupt-enabled pin
@@ -194,7 +226,12 @@ static inline int OcGpio_configure(const OcGpio_Pin *pin, uint32_t cfg) {
static inline int OcGpio_setCallback (const OcGpio_Pin *pin,
OcGpio_CallbackFn callback,
void *context) {
- return pin->port->fn_table->setCallback(pin, callback, context);
+ if( pin && pin->port && pin->port->fn_table &&
+ pin->port->fn_table->setCallback) {
+ return pin->port->fn_table->setCallback(pin, callback, context);
+ } else {
+ return OCGPIO_FAILURE;
+ }
}
/*! Disable pin interrupt
@@ -202,7 +239,12 @@ static inline int OcGpio_setCallback (const OcGpio_Pin *pin,
* @return 0 on success, negative on failure
*/
static inline int OcGpio_disableInt(const OcGpio_Pin *pin) {
- return pin->port->fn_table->disableInt(pin);
+ if( pin && pin->port && pin->port->fn_table &&
+ pin->port->fn_table->disableInt) {
+ return pin->port->fn_table->disableInt(pin);
+ } else {
+ return OCGPIO_FAILURE;
+ }
}
/*! Enable pin interrupt
@@ -212,7 +254,12 @@ static inline int OcGpio_disableInt(const OcGpio_Pin *pin) {
* @return 0 on success, negative on failure
*/
static inline int OcGpio_enableInt(const OcGpio_Pin *pin) {
- return pin->port->fn_table->enableInt(pin);
+ if( pin && pin->port && pin->port->fn_table &&
+ pin->port->fn_table->enableInt) {
+ return pin->port->fn_table->enableInt(pin);
+ } else {
+ return OCGPIO_FAILURE;
+ }
}
#endif /* _OCGPIO_H_ */
diff --git a/firmware/ec/src/drivers/PinGroup.c b/firmware/ec/src/drivers/PinGroup.c
index 7417d9a494..0de4f7c5e9 100644
--- a/firmware/ec/src/drivers/PinGroup.c
+++ b/firmware/ec/src/drivers/PinGroup.c
@@ -42,7 +42,7 @@ ReturnStatus PinGroup_read(const PinGroup *group, uint8_t *value)
if (group->pins[i].port) {
int pin_val = OcGpio_read(&group->pins[i]);
if (pin_val > OCGPIO_FAILURE) {
- *value |= (0x01 << i);
+ *value |= (pin_val << i);
} else {
return RETURN_NOTOK;
}
diff --git a/firmware/ec/src/drivers/PinGroup.h b/firmware/ec/src/drivers/PinGroup.h
index d1e43a3ddd..10155ddf23 100644
--- a/firmware/ec/src/drivers/PinGroup.h
+++ b/firmware/ec/src/drivers/PinGroup.h
@@ -6,7 +6,6 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#ifndef _PIN_GROUP_H_
#define _PIN_GROUP_H_
diff --git a/firmware/ec/src/drivers/mdio_bb.c b/firmware/ec/src/drivers/mdio_bb.c
index 76316e2e76..0a8cecf52f 100644
--- a/firmware/ec/src/drivers/mdio_bb.c
+++ b/firmware/ec/src/drivers/mdio_bb.c
@@ -174,7 +174,7 @@ int mdiobb_write(int phy, int reg, uint16_t val)
return 0;
}
-void mdiobb_write_data(int smi_device, int reg_addr, int data)
+void mdiobb_write_by_paging(int smi_device, int reg_addr, int data)
{
int read_val = 0;
int write_reg = 0;
@@ -201,7 +201,7 @@ void mdiobb_write_data(int smi_device, int reg_addr, int data)
} while (1);
}
-int mdiobb_read_data(int smi_device, int reg_addr)
+int mdiobb_read_by_paging(int smi_device, int reg_addr)
{
int read_val = 0xf00f;
int write_reg = 0;
@@ -233,7 +233,7 @@ int mdiobb_read_data(int smi_device, int reg_addr)
}
/* Try to write directly using 0x18 and 0x19 registers */
-void mdiobb_write_data_c45( int smi_device,
+void mdiobb_write_by_paging_c45( int smi_device,
unsigned int reg_addr,
unsigned int data)
{
@@ -317,7 +317,7 @@ void mdiobb_write_data_c45( int smi_device,
}
/* try to read the C45 registers using 13 and 14 registers */
-unsigned int mdiobb_read_data_c45(int smi_device, unsigned int reg_addr)
+unsigned int mdiobb_read_by_paging_c45(int smi_device, unsigned int reg_addr)
{
unsigned int read_val = 0xf00f;
unsigned int write_reg = 0;
@@ -407,7 +407,7 @@ void mdiobb_set_bits(int smi_device, int reg_addr, int datamask)
/*
* First take the contains of the register
*/
- read_val = mdiobb_read_data(smi_device, reg_addr);
+ read_val = mdiobb_read_by_paging(smi_device, reg_addr);
datamask |= read_val;
/*
@@ -441,7 +441,7 @@ void mdiobb_clear_bits(int smi_device, int reg_addr, int datamask)
/*
* First take the contains of the register
*/
- read_val = mdiobb_read_data(smi_device, reg_addr);
+ read_val = mdiobb_read_by_paging(smi_device, reg_addr);
datamask = (~datamask) & read_val;
/*
* First make sure Switch is idle for the operation by reading the bit 15
@@ -475,11 +475,11 @@ void mdiobb_set_bits_C45( int smi_device,
/*
* First take the contains of the register and set the bits.
*/
- read_val = mdiobb_read_data_c45(smi_device, reg_addr);
+ read_val = mdiobb_read_by_paging_c45(smi_device, reg_addr);
datamask |= read_val;
/* Write back into the register */
- mdiobb_write_data_c45(smi_device, reg_addr, datamask);
+ mdiobb_write_by_paging_c45(smi_device, reg_addr, datamask);
}
void mdiobb_clear_bits_C45( int smi_device,
@@ -491,11 +491,11 @@ void mdiobb_clear_bits_C45( int smi_device,
/*
* First take the contains of the register clear the bits
*/
- read_val = mdiobb_read_data_c45(smi_device, reg_addr);
+ read_val = mdiobb_read_by_paging_c45(smi_device, reg_addr);
datamask = (~datamask) & read_val;
/* Write back into the register */
- mdiobb_write_data_c45(smi_device, reg_addr, datamask);
+ mdiobb_write_by_paging_c45(smi_device, reg_addr, datamask);
}
void prepare_mdio(void)
diff --git a/firmware/ec/src/interfaces/Ethernet/tcp_tx_rx.c b/firmware/ec/src/interfaces/Ethernet/tcp_tx_rx.c
index c8cd80c2c9..cf4bce485c 100644
--- a/firmware/ec/src/interfaces/Ethernet/tcp_tx_rx.c
+++ b/firmware/ec/src/interfaces/Ethernet/tcp_tx_rx.c
@@ -9,8 +9,10 @@
#include "Board.h"
#include "comm/gossiper.h"
-#include "inc/common/ocmp_frame.h"
+#include "common/inc/global/ocmp_frame.h"
#include "inc/utils/util.h"
+#include "inc/common/global_header.h"
+#include
#include
#include
@@ -26,7 +28,8 @@
#include
#include
#include
-//#include KASHIF
+
+#include
#include
#define TCPPORT 1000
@@ -42,6 +45,9 @@ Queue_Struct ethTxMsg;
int bytesRcvd;
+extern const char *destIp;
+extern uint8_t numRepeat;
+
/* Prototypes */
Void tcpHandler(UArg arg0, UArg arg1);
@@ -56,7 +62,7 @@ Void tcp_Tx_Worker(UArg arg0, UArg arg1)
int bytesSent;
uint8_t *buffer;
- System_printf("tcpWorker: start clientfd = 0x%x\n", clientfd);
+ LOGGER_DEBUG("tcpWorker: start clientfd = 0x%x\n", clientfd);
while (clientfd) {
Semaphore_pend(ethTxsem, BIOS_WAIT_FOREVER);
@@ -64,7 +70,7 @@ Void tcp_Tx_Worker(UArg arg0, UArg arg1)
buffer = Util_dequeueMsg(ethTxMsgQueue);
bytesSent = send(clientfd, buffer, TCPPACKETSIZE, 0);
if (bytesSent < 0) {
- System_printf("Error: send failed.\n");
+ LOGGER_DEBUG("Error: send failed.\n");
break;
}
}
@@ -82,11 +88,11 @@ Void tcp_Rx_Worker(UArg arg0, UArg arg1)
int clientfd = (int) arg0;
char buffer[TCPPACKETSIZE];
- System_printf("tcpWorker: start clientfd = 0x%x\n", clientfd);
+ LOGGER_DEBUG("tcpWorker: start clientfd = 0x%x\n", clientfd);
while ((bytesRcvd = recv(clientfd, buffer, TCPPACKETSIZE, 0)) > 0) {
Util_enqueueMsg(gossiperRxMsgQueue, semGossiperMsg, (uint8_t *) buffer);
}
- System_printf("tcpWorker stop clientfd = 0x%x\n", clientfd);
+ LOGGER_DEBUG("tcpWorker stop clientfd = 0x%x\n", clientfd);
close(clientfd);
}
@@ -105,6 +111,54 @@ static void sw_update_cb(void) {
SoftwareUpdateBegin(sys_clk.lo);
}
+/*
+ * ======== tcpHandler_client ========
+ * Create new Task to make new TCP connection and sends test data.
+ */
+
+Void tcpHandler_client(UArg arg0, UArg arg1)
+{
+ SOCKET lSocket;
+ struct sockaddr_in sLocalAddr;
+ /*Tiva operates at 120Mhz. We use delays based on this*/
+ uint32_t g_ui32SysClock = 120000000;
+
+ fdOpenSession(TaskSelf());
+
+ lSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+ if (lSocket < 0) {
+ LOGGER_DEBUG("tcpHandler: socket failed\n");
+ Task_exit();
+ return;
+ }else {
+ LOGGER_DEBUG(" %d socket success\n", fdError());
+ }
+ System_flush();
+ memset((char *)&sLocalAddr, 0, sizeof(sLocalAddr));
+ LOGGER_DEBUG(" Ip in client: %s\n",destIp);
+ sLocalAddr.sin_family = AF_INET;
+ sLocalAddr.sin_addr.s_addr = inet_addr(destIp);
+ sLocalAddr.sin_port = htons(arg0);
+
+ while(connect(lSocket, (struct sockaddr *)&sLocalAddr, sizeof(sLocalAddr)) < 0){
+ SysCtlDelay(g_ui32SysClock/100/3);
+ }
+ System_flush();
+ /* Test pattern to be sent across the TCP connection to external server */
+ char *buffer = "5A A5 5A A5 5A";
+ int nbytes = 14; /* Test Pattern length */
+
+ while (numRepeat > 0) {
+ send(lSocket, (char *)buffer, nbytes, 0 );
+ Task_sleep(500);
+ numRepeat--;
+ System_flush();
+ }
+ if (lSocket > 0)
+ close(lSocket);
+ fdCloseSession(TaskSelf());
+}
+
/*
* ======== tcpHandler ========
* Creates new Task to handle new TCP connections.
@@ -127,7 +181,7 @@ Void tcpHandler(UArg arg0, UArg arg1)
server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (server == -1) {
- System_printf("Error: socket not created.\n");
+ LOGGER_DEBUG("Error: socket not created.\n");
goto shutdown;
}
@@ -138,26 +192,26 @@ Void tcpHandler(UArg arg0, UArg arg1)
status = bind(server, (struct sockaddr *) &localAddr, sizeof(localAddr));
if (status == -1) {
- System_printf("Error: bind failed.\n");
+ LOGGER_DEBUG("Error: bind failed.\n");
goto shutdown;
}
status = listen(server, NUMTCPWORKERS);
if (status == -1) {
- System_printf("Error: listen failed.\n");
+ LOGGER_DEBUG("Error: listen failed.\n");
goto shutdown;
}
optval = 1;
if (setsockopt(server, SOL_SOCKET, SO_KEEPALIVE, &optval, optlen) < 0) {
- System_printf("Error: setsockopt failed\n");
+ LOGGER_DEBUG("Error: setsockopt failed\n");
goto shutdown;
}
while ((clientfd = accept(server, (struct sockaddr *) &clientAddr, &addrlen))
!= -1) {
- System_printf("tcpHandler: Creating thread clientfd = %d\n", clientfd);
+ LOGGER_DEBUG("tcpHandler: Creating thread clientfd = %d\n", clientfd);
/* Init the Error_Block */
Error_init(&eb);
@@ -169,7 +223,7 @@ Void tcpHandler(UArg arg0, UArg arg1)
task_Tx_Handle = Task_create((Task_FuncPtr) tcp_Tx_Worker,
&task_Tx_Params, &eb);
if (task_Tx_Handle == NULL) {
- System_printf("Error: Failed to create new Task\n");
+ LOGGER_DEBUG("Error: Failed to create new Task\n");
close(clientfd);
}
@@ -180,7 +234,7 @@ Void tcpHandler(UArg arg0, UArg arg1)
task_Rx_Handle = Task_create((Task_FuncPtr) tcp_Rx_Worker,
&task_Rx_Params, &eb);
if (task_Rx_Handle == NULL) {
- System_printf("Error: Failed to create new Task\n");
+ LOGGER_DEBUG("Error: Failed to create new Task\n");
close(clientfd);
}
@@ -188,7 +242,7 @@ Void tcpHandler(UArg arg0, UArg arg1)
addrlen = sizeof(clientAddr);
}
- System_printf("Error: accept failed.\n");
+ LOGGER_DEBUG("Error: accept failed.\n");
shutdown: if (server > 0) {
close(server);
@@ -254,7 +308,7 @@ void netOpenHook()
taskParams.arg0 = TCPPORT;
taskHandle = Task_create((Task_FuncPtr) tcpHandler, &taskParams, &eb);
if (taskHandle == NULL) {
- System_printf("netOpenHook: Failed to create tcpHandler Task\n");
+ LOGGER_DEBUG("netOpenHook: Failed to create tcpHandler Task\n");
}
/* Start a thread to listen for SW update packets */
diff --git a/firmware/ec/src/interfaces/Ethernet/tcp_tx_rx.h b/firmware/ec/src/interfaces/Ethernet/tcp_tx_rx.h
new file mode 100644
index 0000000000..770560d61f
--- /dev/null
+++ b/firmware/ec/src/interfaces/Ethernet/tcp_tx_rx.h
@@ -0,0 +1,17 @@
+/**
+ * Copyright (c) 2018-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+#ifndef SRC_INTERFACES_ETHERNET_TCP_TX_RX_H_
+#define SRC_INTERFACES_ETHERNET_TCP_TX_RX_H_
+Void tcp_Tx_Worker(UArg arg0, UArg arg1);
+Void tcp_Rx_Worker(UArg arg0, UArg arg1);
+Void tcpHandler(UArg arg0, UArg arg1);
+Void tcpHandler_client(UArg arg0, UArg arg1);
+
+#endif /* SRC_INTERFACES_ETHERNET_TCP_TX_RX_H_ */
diff --git a/firmware/ec/src/interfaces/UART/uartdma.c b/firmware/ec/src/interfaces/UART/uartdma.c
index a5cd411409..872b88f74c 100644
--- a/firmware/ec/src/interfaces/UART/uartdma.c
+++ b/firmware/ec/src/interfaces/UART/uartdma.c
@@ -6,14 +6,14 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
+
//*****************************************************************************
// HEADER FILES
//*****************************************************************************
-#include "inc/interfaces/uartdma.h"
-
#include "comm/gossiper.h"
+#include "common/inc/global/ocmp_frame.h"
+#include "inc/interfaces/uartdma.h"
#include "inc/common/global_header.h"
-#include "inc/common/ocmp_frame.h"
#include
#include
diff --git a/firmware/ec/src/interfaces/USB/usb.c b/firmware/ec/src/interfaces/USB/usb.c
index 1ff5e9d40e..e892ea4ec3 100644
--- a/firmware/ec/src/interfaces/USB/usb.c
+++ b/firmware/ec/src/interfaces/USB/usb.c
@@ -6,14 +6,15 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
+
//*****************************************************************************
// HEADER FILES
//*****************************************************************************
-#include "inc/interfaces/usbcdcd.h"
#include "comm/gossiper.h"
+#include "common/inc/global/ocmp_frame.h"
+#include "inc/interfaces/usbcdcd.h"
#include "inc/common/global_header.h"
-#include "inc/common/ocmp_frame.h"
#include "inc/utils/util.h"
#include
diff --git a/firmware/ec/src/main.c b/firmware/ec/src/main.c
index 32c3e4f5bd..1f3c3e9f2e 100644
--- a/firmware/ec/src/main.c
+++ b/firmware/ec/src/main.c
@@ -26,7 +26,6 @@ extern int ethernet_start(void);
static void openCellular_init(void)
{
-
LOGGER_DEBUG("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n");
LOGGER_DEBUG("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n");
LOGGER_DEBUG("|||| |||| |||| ||||| |||||| |||| |||| |||| ||||||||| ||||||||| |||| |||| ||||||||| |||| ||||\n");
@@ -38,7 +37,6 @@ static void openCellular_init(void)
LOGGER_DEBUG("|||| |||| |||||||||| ||||| |||||| |||| |||| |||| |||| |||| |||| |||| |||| |||| |||| ||||\n");
LOGGER_DEBUG("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n");
LOGGER_DEBUG("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n");
-
LOGGER_DEBUG("\nOCWare v"
xstr(_FW_REV_MAJOR_)"."
xstr(_FW_REV_MINOR_)"."
@@ -59,7 +57,6 @@ int main(void)
{
/* Install an exit handler to catch if we fault out */
System_atexit(exit_handler);
-
openCellular_init();
/* Call board init functions */
Board_initGeneral();
@@ -69,9 +66,7 @@ int main(void)
Board_initUART();
ethernet_start();
bigbrother_createtask();
-
/* Start BIOS */
BIOS_start();
-
return (0);
}
diff --git a/firmware/ec/src/post.c b/firmware/ec/src/post/post.c
similarity index 56%
rename from firmware/ec/src/post.c
rename to firmware/ec/src/post/post.c
index 5dbc340321..354b0b9ca3 100644
--- a/firmware/ec/src/post.c
+++ b/firmware/ec/src/post/post.c
@@ -11,10 +11,11 @@
// HEADER FILES
//*****************************************************************************
#include "inc/common/post.h"
-#include "inc/common/post_frame.h"
+
#include "comm/gossiper.h"
+#include "common/inc/global/ocmp_frame.h"
+#include "common/inc/global/post_frame.h"
#include "inc/common/bigbrother.h"
-#include "inc/common/ocmp_frame.h"
#include "inc/devices/eth_sw.h"
#include "inc/subsystem/bms/bms.h"
#include "inc/subsystem/gpp/gpp.h"
@@ -57,6 +58,7 @@ static Char postTaskStack[POST_TASK_STACK_SIZE];
/* POST state */
static uint8_t postState = 0;
static OCMPSubsystem POST_subSystem;
+extern POSTData PostResult[POST_RECORDS];
/*****************************************************************************
* FUNCTION DECLARATIONS
@@ -70,8 +72,89 @@ static void post_process_rx_msg(OCMPMessageFrame *pPOSTMsg);
static void post_move_to_next_subsystem();
static void post_update_result_to_bigbrother(OCMPMessageFrame *pPOSTMsg);
-POSTData PostResult[POST_RECORDS] = { { 0 } };
-static uint8_t deviceCount = 0;
+/*****************************************************************************
+ ** FUNCTION NAME : _post_complete
+ **
+ ** DESCRIPTION : Get POST results from EEPROM.
+ **
+ ** ARGUMENTS : None
+ **
+ ** RETURN TYPE : None
+ **
+ *****************************************************************************/
+void _post_complete()
+{
+ uint8_t iter = 0;
+ LOGGER_DEBUG("POST:INFO::POST test is completed.\n");
+ LOGGER_DEBUG("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n");
+ LOGGER_DEBUG("|||||||||||||||||||||||||||||||||||||||||||||||||||||||POST TABLE|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n");
+ /* POST results */
+ for (iter = 0; iter < POST_RECORDS; iter++) {
+ LOGGER_DEBUG("\t POST:INFO:: POSTRESULT SS: 0x%x Device S.No: 0x%x I2C Bus: 0x%x Device Addr: 0x%x Device Id: 0x%x Manufacture Id: 0x%x Status: 0x%x.\n",
+ PostResult[iter].subsystem, PostResult[iter].devSno,
+ PostResult[iter].i2cBus, PostResult[iter].devAddr,
+ PostResult[iter].devId, PostResult[iter].manId,
+ PostResult[iter].status);
+ }
+ LOGGER_DEBUG("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n");
+ LOGGER_DEBUG("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n");
+}
+
+
+/*****************************************************************************
+ ** FUNCTION NAME : post_data_init
+ **
+ ** DESCRIPTION : Initializes post struct.
+ **
+ ** ARGUMENTS : subsystem , device serial number
+ **
+ ** RETURN TYPE : None
+ **
+ *****************************************************************************/
+void post_init_POSTData(POSTData *pData,OCMPSubsystem subsystem, uint8_t devSno)
+{
+ pData->subsystem = subsystem;
+ pData->devSno = devSno;
+ pData->i2cBus = 0xFF;
+ pData->devAddr = 0xFF;
+ pData->manId = 0xFFFF;
+ pData->devId = 0xFFFF;
+ pData->status = POST_DEV_MISSING;
+}
+
+/*****************************************************************************
+ ** FUNCTION NAME : post_update_deviceInfo
+ **
+ ** DESCRIPTION : Update bus, device address, manufacturing ID and device ID in post struct.\
+ ** if no I2C bus is associated with device than it will be updated to 0xFF.
+ **
+ ** ARGUMENTS : I2C Bus, Address, man Id, device Id.
+ **
+ ** RETURN TYPE : None
+ **
+ *****************************************************************************/
+void post_update_POSTData(POSTData *pData, uint8_t I2CBus, uint8_t devAddress, uint16_t manId, uint16_t devId)
+{
+ pData->i2cBus = I2CBus;
+ pData->devAddr = devAddress;
+ pData->manId = manId;
+ pData->devId = devId;
+}
+
+/*****************************************************************************
+ ** FUNCTION NAME : post_update_deviceStatus
+ **
+ ** DESCRIPTION : Update post status
+ **
+ ** ARGUMENTS : POSTData and status.
+ **
+ ** RETURN TYPE : None
+ **
+ *****************************************************************************/
+void post_update_POSTStatus(POSTData *pData, ePostCode status)
+{
+ pData->status = status;
+}
/*****************************************************************************
** FUNCTION NAME : post_move_to_next_subsystem
@@ -87,7 +170,7 @@ static void post_move_to_next_subsystem()
{
POST_subSystem = (OCMPSubsystem) (POST_subSystem + (OCMPSubsystem) 1);
if (POST_subSystem > OC_SS_MAX_LIMIT) {
- POST_subSystem = OC_SS_BB;
+ POST_subSystem = OC_SS_SYS;
}
}
@@ -103,7 +186,7 @@ static void post_move_to_next_subsystem()
*****************************************************************************/
static void post_update_result_to_bigbrother(OCMPMessageFrame *pPOSTMsg)
{
- pPOSTMsg->message.subsystem = OC_SS_BB; //OC_SUBSYSTEM_MAX_LIMIT subsystem number taken for bigbrother
+ pPOSTMsg->message.subsystem = OC_SS_SYS; //OC_SUBSYSTEM_MAX_LIMIT subsystem number taken for bigbrother
memcpy((pPOSTMsg->message.ocmp_data), &postState, 1);
Util_enqueueMsg(bigBrotherRxMsgQueue, semBigBrotherMsg,
(uint8_t*) pPOSTMsg);
@@ -122,33 +205,28 @@ static void post_update_result_to_bigbrother(OCMPMessageFrame *pPOSTMsg)
static ReturnStatus post_process_msg(OCMPSubsystem OC_subSystem)
{
ReturnStatus status = RETURN_OK;
- LOGGER_DEBUG("POST:INFO:: Processing execute POST for the Subsystem %d.\n",
- OC_subSystem);
- OCMPMessageFrame *postFrame = post_create_execute_msg(OC_subSystem);
-
- if (OC_subSystem == OC_SS_WD) {
- /* TODO: WD no implementaion added, POST is completetd here.*/
- /* Once Test module added POST completetion message has to be sent
- * at OC_SS_MAX_LIMIT */
- post_update_result_to_bigbrother(postFrame);
- POST_subSystem = OC_SS_BB;
- } else if (OC_subSystem == OC_SS_MAX_LIMIT) {
- post_update_result_to_bigbrother(postFrame);
- POST_subSystem = OC_SS_BB;
+ if (OC_subSystem == OC_SS_MAX_LIMIT) {
+ _post_complete();
+ POST_subSystem = OC_SS_SYS;
} else {
- if (!SSRegistry_sendMessage(OC_subSystem, postFrame)) {
- LOGGER_DEBUG("POST:ERROR::Subsystem %d does not exist\n",
- OC_subSystem);
+ OCMPMessageFrame *postFrame = post_create_execute_msg(OC_subSystem);
+ if (postFrame) {
+ if (!SSRegistry_sendMessage(OC_subSystem, postFrame)) {
+ LOGGER_DEBUG("POST:ERROR::Subsystem %d does not exist\n",
+ OC_subSystem);
+ }
+ } else {
+ LOGGER_DEBUG("POST:ERROR::Out of memory.\n");
+ status = RETURN_NOTOK;
}
}
-
return status;
}
/*****************************************************************************
** FUNCTION NAME : post_create_execute_msg
**
- ** DESCRIPTION : create excecute POST message for subsystem.
+ ** DESCRIPTION : create execute POST message for subsystem.
**
** ARGUMENTS : Subsystem
**
@@ -157,24 +235,44 @@ static ReturnStatus post_process_msg(OCMPSubsystem OC_subSystem)
*****************************************************************************/
static OCMPMessageFrame* post_create_execute_msg(OCMPSubsystem OC_subSystem)
{
- uint8_t dummyByte = 0xff;
- OCMPActionType actionType = OCMP_AXN_TYPE_ACTIVE;
- LOGGER_DEBUG("POST:INFO:: Processing execute POST for the Subsystem %d.\n",
- OC_subSystem);
- if(OC_subSystem == OC_SS_MAX_LIMIT) {
- OC_subSystem = OC_SS_BB;
- actionType = OCMP_AXN_TYPE_REPLY;
- } else {
- actionType = OCMP_AXN_TYPE_ACTIVE;
- }
+ LOGGER_DEBUG("POST:INFO::Activation POST for SS %d.",OC_subSystem);
OCMPMessageFrame *postExeMsg = create_ocmp_msg_frame(OC_subSystem,
OCMP_MSG_TYPE_POST,
- actionType,0x00,0x00,1);
+ OCMP_AXN_TYPE_ACTIVE,
+ 0x00,0x00,1);
return postExeMsg;
}
/*****************************************************************************
- ** FUNCTION NAME : post_process_rx_msg
+ ** FUNCTION NAME : post_create_enable_msg
+ **
+ ** DESCRIPTION : create execute POST message for subsystem.
+ **
+ ** ARGUMENTS : Subsystem
+ **
+ ** RETURN TYPE : None
+ **
+ *****************************************************************************/
+static OCMPMessageFrame* post_create_enable_msg(OCMPSubsystem OC_subSystem)
+{
+ uint8_t dummyByte = 0xff;
+ OCMPActionType actionType = OCMP_AXN_TYPE_ENABLE;
+ LOGGER_DEBUG("POST:INFO::Enabling system for POST.");
+ if(OC_subSystem == OC_SS_MAX_LIMIT) {
+ OC_subSystem = OC_SS_SYS;
+ actionType = OCMP_AXN_TYPE_REPLY;
+ } else {
+ actionType = OCMP_AXN_TYPE_ENABLE;
+ }
+ OCMPMessageFrame *postExeMsg = create_ocmp_msg_frame(OC_subSystem,
+ OCMP_MSG_TYPE_POST,
+ actionType,0x00,0x00,1);
+ return postExeMsg;
+}
+
+
+/*****************************************************************************
+ ** FUNCTION NAME : post_activate
**
** DESCRIPTION : Processes the POST Acks received from the subssystems.
**
@@ -186,28 +284,28 @@ static OCMPMessageFrame* post_create_execute_msg(OCMPSubsystem OC_subSystem)
static void post_activate(OCMPMessageFrame *pPOSTMsg)
{
ReturnStatus POSTAckstatus = RETURN_NOTOK;
- LOGGER_DEBUG("POST:INFO:: Processing POST Ack received from the Subsystem %d.\n",
- POST_subSystem);
- System_printf("POST:INFO:: Processing POST Ack received from the Subsystem %d.\n",
- POST_subSystem);
+ LOGGER_DEBUG("POST:INFO:: Processing POST Ack received from the "
+ "Subsystem %d.\n",POST_subSystem);
System_flush();
//Do the casting for the pMsg
//POSTAckstatus = (ReturnStatus) (pPOSTMsg->message.ocmp_data);
memcpy(&POSTAckstatus, pPOSTMsg->message.ocmp_data, 1);
- //Compare the Ack
- if (POST_subSystem == OC_SS_BB) {
- postState = RETURN_OK;
- }
- if (pPOSTMsg->message.subsystem == POST_subSystem) {
- postState = (!POSTAckstatus) & postState;
- LOGGER_DEBUG("POST:INFO:: POST status for 0x%x Subsystem is 0x%x and OC POST status is 0x%x.\n",
- POST_subSystem, POSTAckstatus, postState);
- if (pPOSTMsg) {
- free(pPOSTMsg);
+ if ( (pPOSTMsg->message.subsystem == OC_SS_SYS)
+ && (pPOSTMsg->message.action == OCMP_AXN_TYPE_ACTIVE) ){
+ post_process_msg(POST_subSystem);
+ } else {
+ if (pPOSTMsg->message.subsystem == POST_subSystem) {
+ postState = (!POSTAckstatus) & postState;
+ LOGGER_DEBUG("POST:INFO:: POST status for 0x%x Subsystem is 0x%x"
+ " and OC POST status is 0x%x.\n",
+ POST_subSystem, POSTAckstatus, postState);
+ if (pPOSTMsg) {
+ free(pPOSTMsg);
+ }
}
+ post_move_to_next_subsystem();
+ post_process_msg(POST_subSystem);
}
- post_move_to_next_subsystem();
- post_process_msg(POST_subSystem);
}
/*****************************************************************************
@@ -226,14 +324,12 @@ static void post_process_rx_msg(OCMPMessageFrame *pPOSTMsg)
switch (pPOSTMsg->message.action) {
case OCMP_AXN_TYPE_ACTIVE:
case OCMP_AXN_TYPE_REPLY:
- {
- post_activate(pPOSTMsg);
- }
- break;
+ post_activate(pPOSTMsg);
+ break;
default:
{
- LOGGER_ERROR("POST::ERROR::Unkown action type 0x%x for POST message.\n",
- pPOSTMsg->message.action);
+ LOGGER_ERROR("POST::ERROR::Unkown action type 0x%x for POST"
+ " message.\n", pPOSTMsg->message.action);
/*TODO: Return POST fail to BB*/
}
}
@@ -263,12 +359,17 @@ static void post_task_init(void)
/* Reset POST state to fail */
postState = 0;
- POST_subSystem = OC_SS_BB;
+ POST_subSystem = OC_SS_SYS;
+ OCMPMessageFrame *postEnableMsg = create_ocmp_msg_frame(OC_SS_SYS,
+ OCMP_MSG_TYPE_POST,
+ OCMP_AXN_TYPE_ACTIVE,
+ 0x00,
+ 0x00,
+ 1);
/*Ask for activate permission from BB system*/
- OCMPMessageFrame *postFrame = post_create_execute_msg(OC_SS_BB);
- if (postFrame) {
+ if (postEnableMsg) {
Util_enqueueMsg(bigBrotherRxMsgQueue, semBigBrotherMsg,
- (uint8_t*) postFrame);
+ (uint8_t*) postEnableMsg);
}
}
diff --git a/firmware/ec/src/post/post_util.c b/firmware/ec/src/post/post_util.c
new file mode 100644
index 0000000000..c241d621a6
--- /dev/null
+++ b/firmware/ec/src/post/post_util.c
@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2017-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+#include "inc/common/post_util.h"
+
+#include "inc/common/post.h"
+#include "inc/common/system_states.h"
+#include "platform/oc-sdr/schema/schema.h"
+#include "src/registry/SSRegistry.h"
+
+extern const Component sys_schema[OC_SS_MAX_LIMIT];
+extern OCSubsystem *ss_reg[SUBSYSTEM_COUNT];
+POSTData PostResult[POST_RECORDS] = { { 0 } };
+static uint8_t deviceCount = 0;
+
+#ifdef UT_POST
+/*
+ * TODO: Duplicating the definition of the following three functions from post.c for the UT framework
+ * If we include post.c in the UT framework , we are exposing a lot of OS dependent APIs like create_task ,
+ * util_queue etc to the Windows Cygwin environment which will create linking issues.
+ * This will get fixed as part of #419
+ */
+
+void post_update_POSTStatus(POSTData *pData, ePostCode status)
+{
+ pData->status = status;
+}
+
+void post_init_POSTData(POSTData *pData,OCMPSubsystem subsystem, uint8_t devSno)
+{
+ pData->subsystem = subsystem;
+ pData->devSno = devSno;
+ pData->i2cBus = 0xFF;
+ pData->devAddr = 0xFF;
+ pData->manId = 0xFFFF;
+ pData->devId = 0xFFFF;
+ pData->status = POST_DEV_MISSING;
+}
+
+void post_update_POSTData(POSTData *pData, uint8_t I2CBus, uint8_t devAddress, uint16_t manId, uint16_t devId)
+{
+ pData->i2cBus = I2CBus;
+ pData->devAddr = devAddress;
+ pData->manId = manId;
+ pData->devId = devId;
+}
+#else
+/* Execute POST for a given device driver (performs deep copy of alert_data) */
+static ePostCode _postDriver(const Component *subsystem,
+ const Component *dev,
+ const AlertData *alert_data,
+ POSTData* postData, OCSubsystem *ss)
+{
+#if 0
+ if (!dev->driver) {
+ return POST_DEV_NO_DRIVER_EXIST;
+ }
+#endif
+ ePostCode postcode = POST_DEV_FOUND;
+ if (dev->driver->fxnTable->cb_probe) {
+ postcode = dev->driver->fxnTable->cb_probe(dev->driver_cfg,postData);
+ post_update_POSTStatus(postData, postcode);
+ }
+ LOGGER_DEBUG("%s:INFO:: %s (%s) %s\n", subsystem->name,
+ dev->name, dev->driver->name,
+ (postcode == POST_DEV_FOUND) ? "found" : "not found");
+
+ if (postcode == POST_DEV_FOUND) {
+ if (ss->state == SS_STATE_INIT) {
+ if (dev->driver->fxnTable->cb_init) {
+ AlertData *alert_data_cp = malloc(sizeof(AlertData));
+ *alert_data_cp = *alert_data;
+ postcode = dev->driver->fxnTable->cb_init(dev->driver_cfg,
+ dev->factory_config,
+ alert_data_cp);
+ } else {
+ postcode = POST_DEV_NO_CFG_REQ;
+ }
+ post_update_POSTStatus(postData, postcode);
+ LOGGER_DEBUG("%s:INFO:: Configuration for %s (%s) is %s\n",
+ subsystem->name,
+ dev->name,
+ dev->driver->name,
+ (postcode == POST_DEV_CFG_DONE) ? "ok":(postcode == POST_DEV_NO_CFG_REQ) ? "not required." : "failed.");
+ }
+ }
+}
+
+ReturnStatus _execPost(OCMPMessageFrame *pMsg,
+ unsigned int subsystem_id)
+{
+ const Component *subsystem = &sys_schema[subsystem_id];
+ OCSubsystem *ss = ss_reg[subsystem_id];
+ /* TODO: this is messy and assumes we have a pointer to the subsystem -
+ * we'll want to change this once the framework is more mature */
+ if (ss->state == SS_STATE_PWRON) {
+ ss->state = SS_STATE_INIT;
+ }
+
+ /* Iterate over each component & device within the subsystem, calling
+ * its post callback */
+ ReturnStatus status = RETURN_OK;
+ if((subsystem->ssHookSet)&&
+ (ss->state == SS_STATE_INIT)) {
+ if(subsystem->ssHookSet->preInitFxn) {
+ if (!(subsystem->ssHookSet->preInitFxn(subsystem->driver_cfg, &(ss->state)))) {
+ status = RETURN_NOTOK;
+ return status;
+ }
+ }
+ }
+ POSTData postData;
+ ePostCode postcode = POST_DEV_MISSING;
+ uint8_t devSno = 0;
+ const Component *comp = &subsystem->components[0];
+ for (uint8_t comp_id = 0; (comp && comp->name); ++comp, ++comp_id) { /* Component level (ec, ap, ch1, etc.) */
+ /* If we have a driver at the component level, init */
+ AlertData alert_data = {
+ .subsystem = (OCMPSubsystem)subsystem_id,
+ .componentId = comp_id,
+ .deviceId = 0,
+ };
+ if(!comp->components) {
+ if (comp->postDisabled == POST_DISABLED ) {
+ continue ;
+ }
+ devSno++;
+ post_init_POSTData(&postData,subsystem_id,devSno);
+ //TODO: If postcode is configuration failure what should beth recovery action.
+ if (_postDriver(subsystem, comp, &alert_data, &postData, ss) == POST_DEV_NO_DRIVER_EXIST) {
+ devSno--;
+ } else {
+ post_update_POSTresult(&postData);
+ }
+ } else {
+ const Component *dev = &comp->components[0];
+ for (uint8_t dev_id = 0; (dev && dev->name); ++dev, ++dev_id) { /* Device level (ts, ina, etc) */
+ AlertData alert_data = {
+ .subsystem = (OCMPSubsystem)subsystem_id,
+ .componentId = comp_id,
+ .deviceId = dev_id,
+ };
+ if(dev->postDisabled == POST_DISABLED ) {
+ continue;
+ }
+ devSno++;
+ post_init_POSTData(&postData,subsystem_id,devSno);
+ if(_postDriver(subsystem, dev, &alert_data, &postData, ss) == POST_DEV_NO_DRIVER_EXIST) {
+ devSno--;
+ } else {
+ post_update_POSTresult(&postData);
+ }
+ }
+ }
+ }
+ if((subsystem->ssHookSet)&&(ss->state == SS_STATE_INIT)) {
+ if(subsystem->ssHookSet->postInitFxn){
+ if (!(subsystem->ssHookSet->postInitFxn(subsystem->driver_cfg, &(ss->state)))) {
+ ss->state = SS_STATE_FAULTY;
+ }
+ }
+ }
+ if (ss->state == SS_STATE_INIT && status == RETURN_OK) {
+ ss->state = SS_STATE_CFG;
+ } else {
+ ss->state = SS_STATE_FAULTY;
+ }
+
+ LOGGER("%s:INFO:: Modules and sensors are %s.\n", subsystem->name,
+ ((status == RETURN_OK) ? "initialized." : "not initialized."));
+ return status;
+}
+
+
+/* *****************************************************************************
+ ** FUNCTION NAME : post_update_POSTresult
+ **
+ ** DESCRIPTION : save post result to flash
+ **
+ ** ARGUMENTS : a0, a1 - not used
+ **
+ ** RETURN TYPE : None
+ **
+ ******************************************************************************/
+void post_update_POSTresult(POSTData *postData)
+{
+
+ /* Write a device info to flash but use a dummy function for REV B boards.*/
+ uint8_t iter = 0;
+ /* Dump structure at particular location*/
+ if ( (postData->subsystem == OC_SS_SYS) && (postData->devSno == 1 ) ) {
+ deviceCount = 0;
+ memset(PostResult, '\0', (POST_RECORDS * sizeof(POSTData)));
+ } else {
+ deviceCount++;
+ }
+ //LOGGER_DEBUG("POST:INFO:: Updating POST results for the Subsystem %d , Device Serial offset %d , Total Number of records %d.\n",
+ // postData->subsystem,postData->devSno,deviceCount+1);
+ memcpy(&PostResult[deviceCount],postData,sizeof(POSTData));
+}
+#endif
diff --git a/firmware/ec/src/registry/SSRegistry.c b/firmware/ec/src/registry/SSRegistry.c
index 6311241807..75c94ed486 100644
--- a/firmware/ec/src/registry/SSRegistry.c
+++ b/firmware/ec/src/registry/SSRegistry.c
@@ -6,24 +6,35 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
#include "SSRegistry.h"
-#include "Framework.h"
+#include "common/inc/global/Framework.h"
#include "helpers/array.h"
#include "inc/common/bigbrother.h" /* For sending msg back via BB */
-#include "inc/common/post.h" /* For sending POST response */
+#include "inc/common/post.h"
+#include "inc/common/post_util.h" /* For sending POST response */
#include "inc/common/global_header.h"
#include "inc/utils/ocmp_util.h"
#include "inc/utils/util.h"
+#define OCMP_ACTION_TYPE_GET 1
+#define OCMP_ACTION_TYPE_SET 2
+#define OCMP_ACTION_TYPE_REPLY 3
+#define OCMP_ACTION_TYPE_ACTIVE 4
+
/* TODO: configurable directory (allow us to target different platforms) */
-#include "platform/oc-sdr/schema.h"
+#include "platform/oc-sdr/schema/schema.h"
#include
+#define OC_TASK_STACK_SIZE 2048
+#define OC_TASK_PRIORITY 2
+
+static char OC_task_stack[SUBSYSTEM_COUNT][OC_TASK_STACK_SIZE];
+
extern const Component sys_schema[SUBSYSTEM_COUNT];
-static OCSubsystem *ss_reg[SUBSYSTEM_COUNT] = {};
+
+OCSubsystem *ss_reg[SUBSYSTEM_COUNT] = {};
static const size_t PARAM_SIZE_MAP[] = {
[TYPE_NULL] = 0,
@@ -114,121 +125,23 @@ void OCMP_GenerateAlert(const AlertData *alert_data,
}
}
-/* Execute POST for a given device driver (performs deep copy of alert_data) */
-static ReturnStatus _postDriver(const Component *subsystem,
- const Component *dev,
- const AlertData *alert_data)
-{
- if (!dev->driver) {
- return RETURN_OK;
- }
-
- ePostCode postcode = POST_DEV_FOUND;
- if (dev->driver->cb_probe) {
- dev->driver->cb_probe(dev->driver_cfg);
- }
- LOGGER_DEBUG("%s:INFO:: %s (%s) %s\n", subsystem->name,
- dev->name, dev->driver->name,
- (postcode == POST_DEV_FOUND) ? "found" : "not found");
-
- if (subsystem->ss->state == SS_STATE_INIT) {
- if (postcode == POST_DEV_FOUND) {
- if (dev->driver->cb_init) {
- AlertData *alert_data_cp = malloc(sizeof(AlertData));
- *alert_data_cp = *alert_data;
- postcode = dev->driver->cb_init(dev->driver_cfg,
- dev->factory_config,
- alert_data_cp);
- } else {
- postcode = POST_DEV_CFG_DONE;
- }
- LOGGER_DEBUG("%s:INFO:: Configuration status for %s (%s) is %s\n",
- subsystem->name,
- dev->name,
- dev->driver->name,
- (postcode == POST_DEV_CFG_DONE) ? "OK" : "NOT OK");
- }
- return ((postcode == POST_DEV_CFG_DONE) ?
- RETURN_OK : RETURN_NOTOK);
- } else {
- return ((postcode == POST_DEV_FOUND) ?
- RETURN_OK : RETURN_NOTOK);
- }
-}
-
-static ReturnStatus _execPost(OCMPMessageFrame *pMsg,
- unsigned int subsystem_id)
-{
- const Component *subsystem = &sys_schema[subsystem_id];
-
- /* TODO: this is messy and assumes we have a pointer to the subsystem -
- * we'll want to change this once the framework is more mature */
- if (subsystem->ss->state == SS_STATE_PWRON) {
- subsystem->ss->state = SS_STATE_INIT;
- }
-
- /* Iterate over each component & device within the subsystem, calling
- * its post callback */
- ReturnStatus status = RETURN_OK;
- if(subsystem->ssHookSet) {
- if(subsystem->ssHookSet->preInitFxn) {
- if (!(subsystem->ssHookSet->preInitFxn(&(subsystem->ss->state)))) {
- status = RETURN_NOTOK;
- return status;
- }
- }
- }
- const Component *comp = &subsystem->components[0];
- for (uint8_t comp_id = 0; _compIsValid(comp); ++comp, ++comp_id) { /* Component level (ec, ap, ch1, etc.) */
- /* If we have a driver at the component level, init */
- AlertData alert_data = {
- .subsystem = (OCMPSubsystem)subsystem_id,
- .componentId = comp_id,
- .deviceId = 0,
- };
- _postDriver(subsystem, comp, &alert_data);
-
- const Component *dev = &comp->components[0];
- for (uint8_t dev_id = 0; _compIsValid(dev); ++dev, ++dev_id) { /* Device level (ts, ina, etc) */
- AlertData alert_data = {
- .subsystem = (OCMPSubsystem)subsystem_id,
- .componentId = comp_id,
- .deviceId = dev_id,
- };
- _postDriver(subsystem, dev, &alert_data);
- }
- }
- if(subsystem->ssHookSet) {
- if(subsystem->ssHookSet->postInitFxn){
- if (!(subsystem->ssHookSet->postInitFxn(&(subsystem->ss->state)))) {
- subsystem->ss->state = SS_STATE_FAULTY;
- }
- }
- }
- if (subsystem->ss->state == SS_STATE_INIT && status == RETURN_OK) {
- subsystem->ss->state = SS_STATE_CFG;
- } else {
- subsystem->ss->state = SS_STATE_FAULTY;
- }
-
- LOGGER("%s:INFO:: Modules and sensors are %s.\n", subsystem->name,
- ((status == RETURN_OK) ? "initialized." : "not initialized."));
- return status;
-}
-
static bool _handleMsgTypeCmd(OCMPMessageFrame *pMsg, const Component *comp)
{
- if (pMsg->message.subsystem != OC_SS_DEBUG) {
- const Command *cmd = comp->commands[pMsg->message.action];
- if (cmd && cmd->cb_cmd) {
- cmd->cb_cmd(comp->driver_cfg, pMsg->message.ocmp_data);
- return true;
+ const Command *cmd;
+ Component *dev;
+ if (comp) {
+ if (pMsg->message.parameters > 0) {
+ dev = &comp->components[(pMsg->message.parameters)-1];
+ } else {
+ dev = comp;
+ }
+ if (dev->driver && dev->driver->commands) {
+ cmd = &dev->driver->commands[pMsg->message.action];
+ } else {
+ cmd = &dev->commands[pMsg->message.action];
}
- } else {
- const Component *subComp = &comp->components[pMsg->message.parameters];
- const Command *cmd = subComp->driver->commands[pMsg->message.action];
if (cmd && cmd->cb_cmd) {
- cmd->cb_cmd(subComp->driver_cfg, pMsg->message.ocmp_data);
+ cmd->cb_cmd(dev->driver_cfg, pMsg->message.ocmp_data);
return true;
}
}
@@ -240,12 +153,12 @@ static bool _handle_cmd_get(OCMPMessageFrame *pMsg, const Component *comp,
{
switch (pMsg->message.msgtype) {
case OCMP_MSG_TYPE_CONFIG:
- return (comp->driver->cb_get_config &&
- comp->driver->cb_get_config(comp->driver_cfg, param_id,
+ return (comp->driver->fxnTable->cb_get_config &&
+ comp->driver->fxnTable->cb_get_config(comp->driver_cfg, param_id,
buf_ptr));
case OCMP_MSG_TYPE_STATUS:
- return (comp->driver->cb_get_status &&
- comp->driver->cb_get_status(comp->driver_cfg, param_id,
+ return (comp->driver->fxnTable->cb_get_status &&
+ comp->driver->fxnTable->cb_get_status(comp->driver_cfg, param_id,
buf_ptr));
default:
return false;
@@ -257,8 +170,8 @@ static bool _handle_cmd_set(OCMPMessageFrame *pMsg, const Component *comp,
{
switch (pMsg->message.msgtype) {
case OCMP_MSG_TYPE_CONFIG:
- return (comp->driver->cb_set_config &&
- comp->driver->cb_set_config(comp->driver_cfg, param_id,
+ return (comp->driver->fxnTable->cb_set_config &&
+ comp->driver->fxnTable->cb_set_config(comp->driver_cfg, param_id,
data));
default:
return false;
@@ -293,7 +206,7 @@ static bool _handleDevStatCfg(OCMPMessageFrame *pMsg, const Component *dev,
while (param_list[normalized_id].name) {
if (pMsg->message.parameters & (1 << *param_id)) {
switch (pMsg->message.action) {
- case OCMP_AXN_TYPE_GET:
+ case OCMP_ACTION_TYPE_GET:
if (_handle_cmd_get(pMsg, dev, normalized_id,
*buf_ptr)) {
dev_handled = true;
@@ -301,7 +214,7 @@ static bool _handleDevStatCfg(OCMPMessageFrame *pMsg, const Component *dev,
pMsg->message.parameters &= ~(1 << *param_id);
}
break;
- case OCMP_AXN_TYPE_SET:
+ case OCMP_ACTION_TYPE_SET:
if (_handle_cmd_set(pMsg, dev, normalized_id,
*buf_ptr)) {
dev_handled = true;
@@ -323,6 +236,71 @@ static bool _handleDevStatCfg(OCMPMessageFrame *pMsg, const Component *dev,
return dev_handled;
}
+static bool _handle_post_enable(const Component *comp, OCMPMessageFrame *pMsg)
+{
+ bool ret = false;
+ OCMPMessageFrame *buffer;
+ const Post *postCmd = &comp->driver->post[(pMsg->message.action)-1];
+ if (postCmd && postCmd->cb_postCmd) {
+ ret = postCmd->cb_postCmd(&buffer);
+ if (ret) {
+ Util_enqueueMsg(postRxMsgQueue, semPOSTMsg, (uint8_t*)buffer);
+ }
+ }
+ pMsg->message.ocmp_data[0] = !(ret); //RETURN_OK =0;
+ return ret;
+}
+
+static bool _handle_post_active(OCMPMessageFrame *pMsg,unsigned int subsystem_id)
+{
+ ReturnStatus status = _execPost(pMsg, subsystem_id);
+ return (status == RETURN_OK);
+}
+
+static bool _handle_post_get_results(const Component *comp,OCMPMessageFrame *pMsg)
+{
+ bool ret = false;
+ const Post *postCmd = &comp->driver->post[(pMsg->message.action)-1];
+ if (postCmd && postCmd->cb_postCmd) {
+ postCmd->cb_postCmd(pMsg);
+ ret = true;
+ }
+ return ret;
+}
+
+static bool _handleMsgTypePOST(OCMPMessageFrame *pMsg, const Component *comp, unsigned int subsystem_id)
+{
+ /* Determine driver & parameter */
+ unsigned int param_id = 0;
+ uint8_t *buf_ptr = pMsg->message.ocmp_data;
+ bool dev_handled = false;
+ switch (pMsg->message.action) {
+ case OCMP_ACTION_TYPE_SET:
+ if (_handle_post_enable(comp, pMsg)) {
+ dev_handled = true;
+ }
+ break;
+ case OCMP_ACTION_TYPE_ACTIVE:
+ if (_handle_post_active(pMsg,subsystem_id)) {
+ dev_handled = true;
+ }
+ break;
+ case OCMP_ACTION_TYPE_GET:
+ if (_handle_post_get_results(comp, pMsg)) {
+ dev_handled = true;
+ }
+ break;
+/* case OCMP_ACTION_REPLY:
+ if (_handle_post_reply(pMsg, *buf_ptr)) {
+ dev_handled = true;
+ }
+ break;*/
+ default:
+ break;
+ }
+ return dev_handled;
+}
+
static bool _handleMsgTypeStatCfg(OCMPMessageFrame *pMsg, const Component *comp)
{
/* Determine driver & parameter */
@@ -348,26 +326,12 @@ static bool _handleMsgTypeStatCfg(OCMPMessageFrame *pMsg, const Component *comp)
static bool ocmp_route(OCMPMessageFrame *pMsg, unsigned int subsystem_id)
{
const Component *subsystem = &sys_schema[subsystem_id];
-
- /* The main exception to the flow right now is POST - check for it first */
- if (pMsg->message.msgtype == OCMP_MSG_TYPE_POST) {
- ReturnStatus status = _execPost(pMsg, subsystem_id);
-
- memcpy((pMsg->message.ocmp_data), &status, 1);
- pMsg->message.action = OCMP_AXN_TYPE_REPLY;
- Util_enqueueMsg(postRxMsgQueue, semPOSTMsg, (uint8_t*) pMsg);
-
- return true;
- }
-
/* Validate component ID */
- if (pMsg->message.componentID >= _subcompCount(subsystem)) {
+ if (pMsg->message.componentID > _subcompCount(subsystem)) {
LOGGER_ERROR("Component %d out of bounds\n", pMsg->message.componentID);
return false;
}
-
- const Component *comp = &subsystem->components[pMsg->message.componentID];
-
+ const Component *comp = &subsystem->components[(pMsg->message.componentID)-1];
/* TODO: clean up special handling for commands */
bool dev_handled = false;
switch (pMsg->message.msgtype) {
@@ -378,6 +342,11 @@ static bool ocmp_route(OCMPMessageFrame *pMsg, unsigned int subsystem_id)
case OCMP_MSG_TYPE_STATUS:
dev_handled = _handleMsgTypeStatCfg(pMsg, comp);
break;
+ case OCMP_MSG_TYPE_POST:
+ dev_handled = _handleMsgTypePOST(pMsg, comp, subsystem_id);
+ //pMsg->message.action = OCMP_ACTION_TYPE_REPLY;
+ //Util_enqueueMsg(postRxMsgQueue, semPOSTMsg, (uint8_t*) pMsg);
+ break;
default:
break;
}
@@ -386,10 +355,15 @@ static bool ocmp_route(OCMPMessageFrame *pMsg, unsigned int subsystem_id)
if (!dev_handled) {
pMsg->message.parameters = 0x00;
}
-
- /* Send reply to the middleware */
- pMsg->message.action = OCMP_AXN_TYPE_REPLY;
- Util_enqueueMsg(bigBrotherTxMsgQueue, semBigBrotherMsg, (uint8_t *)pMsg);
+ /* The main exception to the flow right now is POST - check for it first */
+ if ((pMsg->message.msgtype == OCMP_MSG_TYPE_POST) && (pMsg->message.action == OCMP_ACTION_TYPE_ACTIVE)) {
+ pMsg->message.action = OCMP_ACTION_TYPE_REPLY;
+ Util_enqueueMsg(postRxMsgQueue, semPOSTMsg, (uint8_t*) pMsg);
+ } else {
+ /* Send reply to the middleware */
+ pMsg->message.action = OCMP_ACTION_TYPE_REPLY;
+ Util_enqueueMsg(bigBrotherTxMsgQueue, semBigBrotherMsg, (uint8_t *)pMsg);
+ }
return true;
}
@@ -422,13 +396,11 @@ static void _subsystem_event_loop(UArg a0, UArg a1)
}
static void subsystem_init(OCMPSubsystem ss_id) {
- OCSubsystem *ss = sys_schema[ss_id].ss;
+ OCSubsystem *ss = (OCSubsystem*)malloc(sizeof(OCSubsystem));
if (!ss) {
return;
}
-
ss_reg[ss_id] = ss;
-
ss->state = SS_STATE_PWRON;
/* Create Semaphore for RX Message Queue */
@@ -449,9 +421,9 @@ static void subsystem_init(OCMPSubsystem ss_id) {
/* Spin up the task */
Task_Params taskParams;
Task_Params_init(&taskParams);
- taskParams.stack = ss->taskStack;
- taskParams.stackSize = ss->taskStackSize;
- taskParams.priority = ss->taskPriority;
+ taskParams.stack = OC_task_stack[ss_id];// ss->taskStack;
+ taskParams.stackSize = OC_TASK_STACK_SIZE;//ss->taskStackSize;
+ taskParams.priority = OC_TASK_PRIORITY;//ss->taskPriority;
taskParams.arg0 = (UArg)ss;
taskParams.arg1 = ss_id;
diff --git a/firmware/ec/src/registry/SSRegistry.h b/firmware/ec/src/registry/SSRegistry.h
index fedfe899bc..e19d345073 100644
--- a/firmware/ec/src/registry/SSRegistry.h
+++ b/firmware/ec/src/registry/SSRegistry.h
@@ -10,7 +10,7 @@
#ifndef _SSREGISTRY_H_
#define _SSREGISTRY_H_
-#include "inc/common/ocmp_frame.h"
+#include "common/inc/global/ocmp_frame.h"
#include "inc/common/system_states.h"
#include
@@ -28,11 +28,6 @@ typedef struct OCSubsystem {
Queue_Handle msgQueue;
Semaphore_Handle sem;
- /* Task variables */
- xdc_Int taskPriority;
- xdc_Ptr taskStack;
- xdc_SizeT taskStackSize;
-
/* Private variables (reduce dynamic allocation needs) */
Queue_Struct queueStruct;
Semaphore_Struct semStruct;
diff --git a/firmware/ec/src/subsystem/bms/bms.c b/firmware/ec/src/subsystem/bms/bms.c
index 63904ba3c4..2e71f558cc 100644
--- a/firmware/ec/src/subsystem/bms/bms.c
+++ b/firmware/ec/src/subsystem/bms/bms.c
@@ -10,14 +10,3 @@
// HEADER FILES
//*****************************************************************************
#include "inc/subsystem/bms/bms.h"
-
-#include "registry/SSRegistry.h"
-
-/* Global Task Configuration Variables */
-static Char bmsTaskStack[BMS_TASK_STACK_SIZE];
-
-OCSubsystem ssBms = {
- .taskStackSize = BMS_TASK_STACK_SIZE,
- .taskPriority = BMS_TASK_PRIORITY,
- .taskStack = bmsTaskStack,
-};
diff --git a/firmware/ec/src/subsystem/debug/debug.c b/firmware/ec/src/subsystem/debug/debug.c
deleted file mode 100644
index efe289eef7..0000000000
--- a/firmware/ec/src/subsystem/debug/debug.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Copyright (c) 2017-present, Facebook, Inc.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
- */
-
-#include "inc/common/global_header.h"
-#include "registry/SSRegistry.h"
-
-#include
-
-#define DEBUG_TASK_PRIORITY 2
-#define DEBUG_TASK_STACK_SIZE 1024
-
-/* Global Task Configuration Variables */
-static Char debug_task_stack[DEBUG_TASK_STACK_SIZE];
-
-extern void *sys_config[];
-#define DBG ((Dbg_Cfg *)sys_config[OC_SS_DEBUG])
-
-OCSubsystem ssDbg = {
- .taskStackSize = DEBUG_TASK_STACK_SIZE,
- .taskPriority = DEBUG_TASK_PRIORITY,
- .taskStack = debug_task_stack,
-};
diff --git a/firmware/ec/src/subsystem/ethernet/ethernetSS.c b/firmware/ec/src/subsystem/ethernet/ethernetSS.c
index b9f7d598af..b078324d4f 100644
--- a/firmware/ec/src/subsystem/ethernet/ethernetSS.c
+++ b/firmware/ec/src/subsystem/ethernet/ethernetSS.c
@@ -7,52 +7,4 @@
* of patent rights can be found in the PATENTS file in the same directory.
*/
-#include "inc/common/global_header.h"
-#include "inc/devices/eth_sw.h"
-#include "inc/devices/88E6071_registers.h"
#include "inc/subsystem/ethernet/ethernetSS.h"
-#include "registry/SSRegistry.h"
-
-#include
-
-#define ETHSW_TASK_PRIORITY 2
-#define ETHSW_TASK_STACK_SIZE 2048
-
-/* Global Task Configuration Variables */
-static Char eth_sw_task_stack[ETHSW_TASK_STACK_SIZE];
-
-extern void *sys_config[];
-#define ETH ((Eth_Cfg *)sys_config[OC_SS_ETH_SWT])
-
-OCSubsystem ssEth = {
- .taskStackSize = ETHSW_TASK_STACK_SIZE,
- .taskPriority = ETHSW_TASK_PRIORITY,
- .taskStack = eth_sw_task_stack,
-};
-
-void ethernet_switch_setup()
-{
- const Eth_Sw_Cfg *cfg = sys_config[OC_SS_ETH_SWT];
- uint8_t link_up;
- uint16_t read_val = 0;
- uint8_t index = 0;
- for (index = 0; index < 10; index++) {
- read_val = mdiobb_read_data(PHY_PORT_0, REG_PHY_SPEC_STATUS);
- link_up = (RT_LINK & read_val) ? 1 : 0;
- DEBUG("ETHSW: Linkup: %d, index: %d\n", link_up, index);
- if (link_up == 1) {
- break;
- }
- OcGpio_write(&cfg->pin_ec_ethsw_reset, false);
- SysCtlDelay(16000000); //400ms delay
- OcGpio_write(&cfg->pin_ec_ethsw_reset, true);
-
- SysCtlDelay(80000000); //5 seconds delay
- }
-}
-
-bool eth_sw_pre_init(void *unused)
-{
- ethernet_switch_setup();
- return true;
-}
diff --git a/firmware/ec/src/subsystem/gpp/ebmp.c b/firmware/ec/src/subsystem/gpp/ebmp.c
index 9a33079c15..6622239ddd 100644
--- a/firmware/ec/src/subsystem/gpp/ebmp.c
+++ b/firmware/ec/src/subsystem/gpp/ebmp.c
@@ -10,11 +10,11 @@
// HEADER FILES
//*****************************************************************************
#include "inc/subsystem/gpp/ebmp.h"
-#include "inc/subsystem/gpp/gpp.h"
#include "Board.h"
+#include "common/inc/global/ocmp_frame.h"
#include "inc/common/global_header.h"
-#include "inc/common/ocmp_frame.h"
+#include "inc/subsystem/gpp/gpp.h"
#include "inc/utils/util.h"
#include
@@ -30,10 +30,6 @@
static Task_Struct ebmpTask;
static Char ebmpTaskStack[EBMP_TASK_STACK_SIZE];
-/* GPP device config */
-extern void *sys_config[];
-#define GPP ((Gpp_Cfg *)sys_config[OC_SS_GPP])
-
/* Semaphore Handle */
Semaphore_Handle semStateHandle;
@@ -57,6 +53,10 @@ volatile int oldState = STATE_INVALID;
volatile int secondIteration = 0;
volatile uint32_t stateChangeWaitTimeMax = 10000;
volatile uint32_t stateChangeTimeElapsed = 0;
+static OcGpio_Pin *pin_soc_pltrst_n;
+static OcGpio_Pin *pin_soc_corepwr_ok;
+static OcGpio_Pin *pin_ap_boot_alert1;
+static OcGpio_Pin *pin_ap_boot_alert2;
//*****************************************************************************
// EXTERN FUNCTIONS
@@ -138,7 +138,7 @@ void ebmp_check_soc_plt_reset(void)
{
//Resetting Iteration counter for GPIO Toggle to zero.
secondIteration = 0;
- if (OcGpio_read(&GPP->pin_soc_pltrst_n)) {
+ if (OcGpio_read(pin_soc_pltrst_n)) {
/*************************************************************
* Semaphore to be released to the EBMP telling the SoC is
* out of reset
@@ -154,7 +154,7 @@ void ebmp_check_soc_plt_reset(void)
#if 0
apState = oldState = STATE_INVALID;
#else
- if (OcGpio_read(&GPP->pin_soc_corepwr_ok)) {
+ if (OcGpio_read(pin_soc_corepwr_ok)) {
apState = oldState = STATE_T0;
} else {
apState = oldState = STATE_INVALID;
@@ -176,8 +176,8 @@ void ebmp_check_boot_pin_status(void)
int32_t bootstatus_1 = 0;
int32_t bootstatus_2 = 0;
- bootstatus_1 = OcGpio_read(&GPP->pin_ap_boot_alert1);
- bootstatus_2 = OcGpio_read(&GPP->pin_ap_boot_alert2);
+ bootstatus_1 = OcGpio_read(pin_ap_boot_alert1);
+ bootstatus_2 = OcGpio_read(pin_ap_boot_alert2);
if (!secondIteration) {
if (bootstatus_2 == 0) {
if (bootstatus_1) {
@@ -232,33 +232,38 @@ static void ebmp_handle_irq(void *context) {
** ARGUMENTS : None
** RETURN TYPE : None
*****************************************************************************/
-void ebmp_init(void)
+void ebmp_init(Gpp_gpioCfg *driver)
{
- if (GPP->pin_ap_boot_alert1.port) {
+ pin_ap_boot_alert1 = &driver->pin_ap_boot_alert1;
+ pin_ap_boot_alert2 = &driver->pin_ap_boot_alert2;
+ pin_soc_pltrst_n = &driver->pin_soc_pltrst_n;
+ pin_soc_corepwr_ok = &driver->pin_soc_corepwr_ok;
+
+ if (pin_ap_boot_alert1->port) {
const uint32_t pin_evt_cfg = OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_BOTH_EDGES;
- if (OcGpio_configure(&GPP->pin_ap_boot_alert1, pin_evt_cfg) < OCGPIO_SUCCESS) {
+ if (OcGpio_configure(pin_ap_boot_alert1, pin_evt_cfg) < OCGPIO_SUCCESS) {
return RETURN_NOTOK;
}
/* Use a threaded interrupt to handle IRQ */
- ThreadedInt_Init(&GPP->pin_ap_boot_alert1, ebmp_handle_irq, (void *)AP_BOOT_PROGRESS_MONITOR_1);
+ ThreadedInt_Init(pin_ap_boot_alert1, ebmp_handle_irq, (void *)AP_BOOT_PROGRESS_MONITOR_1);
}
- if (GPP->pin_ap_boot_alert2.port) {
+ if (pin_ap_boot_alert2->port) {
const uint32_t pin_evt_cfg = OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_BOTH_EDGES;
- if (OcGpio_configure(&GPP->pin_ap_boot_alert2, pin_evt_cfg) < OCGPIO_SUCCESS) {
+ if (OcGpio_configure(pin_ap_boot_alert2, pin_evt_cfg) < OCGPIO_SUCCESS) {
return RETURN_NOTOK;
}
/* Use a threaded interrupt to handle IRQ */
- ThreadedInt_Init(&GPP->pin_ap_boot_alert2, ebmp_handle_irq, (void *)AP_BOOT_PROGRESS_MONITOR_2);
+ ThreadedInt_Init(pin_ap_boot_alert2, ebmp_handle_irq, (void *)AP_BOOT_PROGRESS_MONITOR_2);
}
- if (GPP->pin_soc_pltrst_n.port) {
+ if (pin_soc_pltrst_n->port) {
const uint32_t pin_evt_cfg = OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_BOTH_EDGES;
- if (OcGpio_configure(&GPP->pin_soc_pltrst_n, pin_evt_cfg) < OCGPIO_SUCCESS) {
+ if (OcGpio_configure(pin_soc_pltrst_n, pin_evt_cfg) < OCGPIO_SUCCESS) {
return RETURN_NOTOK;
}
/* Use a threaded interrupt to handle IRQ */
- ThreadedInt_Init(&GPP->pin_soc_pltrst_n, ebmp_handle_irq, (void *)AP_RESET);
+ ThreadedInt_Init(pin_soc_pltrst_n, ebmp_handle_irq, (void *)AP_RESET);
}
}
@@ -374,9 +379,9 @@ void ebmp_task_fxn(UArg a0, UArg a1)
}
}
DEBUG("EBMP:INFO:: Boot Monitor Pin 1 [PE3] : %d Boot Monitor Pin 2 [PL3] : %d SOC PLTRST : %d.\n",
- OcGpio_read(&GPP->pin_ap_boot_alert1)? 1: 0,
- OcGpio_read(&GPP->pin_ap_boot_alert2)? 1: 0,
- OcGpio_read(&GPP->pin_soc_pltrst_n)? 1: 0);
+ OcGpio_read(pin_ap_boot_alert1)? 1: 0,
+ OcGpio_read(pin_ap_boot_alert2)? 1: 0,
+ OcGpio_read(pin_soc_pltrst_n)? 1: 0);
oldState = apState;
}
}
diff --git a/firmware/ec/src/subsystem/gpp/gpp.c b/firmware/ec/src/subsystem/gpp/gpp.c
index b5709e4f1b..d493856d4c 100644
--- a/firmware/ec/src/subsystem/gpp/gpp.c
+++ b/firmware/ec/src/subsystem/gpp/gpp.c
@@ -10,11 +10,11 @@
// HEADER FILES
//*****************************************************************************
#include "inc/subsystem/gpp/gpp.h"
-#include "inc/subsystem/gpp/ebmp.h"
#include "Board.h"
#include "helpers/math.h"
#include "inc/common/system_states.h"
+#include "inc/subsystem/gpp/ebmp.h"
#include "inc/utils/util.h"
#include "registry/SSRegistry.h"
@@ -29,81 +29,73 @@
//*****************************************************************************
// HANDLES DEFINITION
//*****************************************************************************
-/* Global Task Configuration Variables */
-static Char gppTaskStack[GPP_TASK_STACK_SIZE];
-/* GPP device config */
-extern void *sys_config[];
-#define GPP ((Gpp_Cfg *)sys_config[OC_SS_GPP])
-
-OCSubsystem ssGpp = {
- .taskStackSize = GPP_TASK_STACK_SIZE,
- .taskPriority = GPP_TASK_PRIORITY,
- .taskStack = gppTaskStack,
-};
-
-bool gpp_check_processor_reset(void)
+bool gpp_check_processor_reset(Gpp_gpioCfg *driver)
{
bool ret = false;
- if (OcGpio_read(&GPP->pin_soc_pltrst_n)) {
+ if (OcGpio_read(&driver->pin_soc_pltrst_n)) {
ret = true;
}
return ret;
}
-bool gpp_check_core_power(void)
+bool gpp_check_core_power(Gpp_gpioCfg *driver)
{
bool ret = false;
- if (OcGpio_read(&GPP->pin_soc_corepwr_ok)) {
+ if (OcGpio_read(&driver->pin_soc_corepwr_ok)) {
ret = true;
}
return ret;
}
-bool gpp_pmic_control(uint8_t control)
+bool gpp_pmic_control(Gpp_gpioCfg *driver, uint8_t control)
{
bool ret = false;
if(control == OC_PMIC_ENABLE) {
/*TODO:: Disabling for USB debugging*/
- OcGpio_write(&GPP->pin_ap_12v_onoff, false);
+ OcGpio_write(&driver->pin_ap_12v_onoff, false);
SysCtlDelay(1000);
- /* Regsiter GPIO interrupts */
- ebmp_init();
+ /* Embedded Boot Management Protocol (EBMP)for Application processor(AP)
+ * EBMP tells EC firmware about the boot process stages of the AP to the
+ * Embedded Controller(EC) by toggling two GPIO's.ebmp_init is a function
+ * where we register the required GPIO's for interrupts if AP move from one boot
+ * process state to other.*/
+ ebmp_init(driver);
SysCtlDelay(100);
- OcGpio_write(&GPP->pin_ap_12v_onoff, true);
+ OcGpio_write(&driver->pin_ap_12v_onoff, true);
SysCtlDelay(100);
- if(gpp_check_core_power()) {
+ if(gpp_check_core_power(driver)) {
//OcGpio_write(&cfg->pin_ec_reset_to_proc, true);
//SysCtlDelay(10);
- if(gpp_check_processor_reset()) {
+ if(gpp_check_processor_reset(driver)) {
ret = true;
LOGGER_DEBUG("GPP:INFO:: Processor out of reset.\n");
}
}
} else {
- OcGpio_write(&GPP->pin_ap_12v_onoff, false);
+ OcGpio_write(&driver->pin_ap_12v_onoff, false);
ret = true;
}
return ret;
}
-bool gpp_msata_das(void)
+bool gpp_msata_das(Gpp_gpioCfg *driver)
{
bool ret = false;
- if (!(OcGpio_read(&GPP->pin_msata_ec_das))) {
+ if (!(OcGpio_read(&driver->pin_msata_ec_das))) {
ret = true;
LOGGER_DEBUG("GPP:INFO:: mSATA is active.\n");
}
return ret;
}
-bool gpp_pwrgd_protection(void)
+bool gpp_pwrgd_protection(Gpp_gpioCfg *driver)
{
bool ret = false;
- if (OcGpio_read(&GPP->pin_lt4256_ec_pwrgd)) {
+ if (OcGpio_read(&driver->pin_lt4256_ec_pwrgd)) {
ret = true;
}
return ret;
@@ -112,15 +104,16 @@ bool gpp_pwrgd_protection(void)
/*****************************************************************************
* gpp_pre_init : Intiliazes all GPIO's required for initialization.
*****************************************************************************/
-bool gpp_pre_init(void *returnValue)
+bool gpp_pre_init(void* driver, void *returnValue)
{
- OcGpio_configure(&GPP->pin_soc_pltrst_n, OCGPIO_CFG_INPUT);
- OcGpio_configure(&GPP->pin_soc_corepwr_ok, OCGPIO_CFG_INPUT);
- OcGpio_configure(&GPP->pin_msata_ec_das, OCGPIO_CFG_INPUT);
- OcGpio_configure(&GPP->pin_lt4256_ec_pwrgd, OCGPIO_CFG_INPUT);
- OcGpio_configure(&GPP->pin_ap_12v_onoff, OCGPIO_CFG_OUTPUT |
+ Gpp_gpioCfg *gpioCfg = (Gpp_gpioCfg *)driver;
+ OcGpio_configure(&gpioCfg->pin_soc_pltrst_n, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&gpioCfg->pin_soc_corepwr_ok, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&gpioCfg->pin_msata_ec_das, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&gpioCfg->pin_lt4256_ec_pwrgd, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&gpioCfg->pin_ap_12v_onoff, OCGPIO_CFG_OUTPUT |
OCGPIO_CFG_OUT_LOW);
- OcGpio_configure(&GPP->pin_ec_reset_to_proc, OCGPIO_CFG_OUTPUT |
+ OcGpio_configure(&gpioCfg->pin_ec_reset_to_proc, OCGPIO_CFG_OUTPUT |
OCGPIO_CFG_OUT_HIGH);
return true;
}
@@ -128,21 +121,22 @@ bool gpp_pre_init(void *returnValue)
/*****************************************************************************
* gpp_post_init : power on devices required after GPP init is success.
*****************************************************************************/
-bool gpp_post_init(eSubSystemStates *ssState)
+bool gpp_post_init(void* driver, void *ssState)
{
bool ret = false;
- if (!gpp_pwrgd_protection()) {
+ eSubSystemStates *newState = (eSubSystemStates*)ssState;
+ if (!gpp_pwrgd_protection(driver)) {
LOGGER_DEBUG("GPP:INFO:: LT4256 EC power good is for genration of 12V ok.\n");
} else {
- *ssState = SS_STATE_FAULTY;
+ *newState = SS_STATE_FAULTY;
return ret;
}
//Power on processor.
- if(gpp_pmic_control(OC_PMIC_ENABLE)) {
- *ssState = SS_STATE_CFG;
+ if(gpp_pmic_control(driver, OC_PMIC_ENABLE)) {
+ *newState = SS_STATE_CFG;
ret = true;
} else {
- *ssState = SS_STATE_FAULTY;
+ *newState = SS_STATE_FAULTY;
}
/*mSATA DAS not helping with anything as of now.*/
// if (!gpp_msata_das()) {
@@ -155,9 +149,9 @@ bool gpp_post_init(eSubSystemStates *ssState)
/*****************************************************************************
* gpp_ap_reset : resets application processor.
*****************************************************************************/
-static bool gpp_ap_reset()
+static bool gpp_ap_reset(Gpp_gpioCfg *driver)
{
- const OcGpio_Pin *pin = &GPP->pin_ec_reset_to_proc;
+ const OcGpio_Pin *pin = &(driver->pin_ec_reset_to_proc);
if (OcGpio_write(pin, OC_GBC_PROC_RESET) < OCGPIO_SUCCESS) {
return false;
}
@@ -172,5 +166,5 @@ static bool gpp_ap_reset()
* gpp_ap_reset : Calls application processor reset function.
*****************************************************************************/
bool GPP_ap_Reset(void *driver, void *params){
- return (gpp_ap_reset() == RETURN_OK);
+ return (gpp_ap_reset(driver) == RETURN_OK);
}
diff --git a/firmware/ec/src/subsystem/hci/hci.c b/firmware/ec/src/subsystem/hci/hci.c
index 510e5f936b..56e6ca5f02 100644
--- a/firmware/ec/src/subsystem/hci/hci.c
+++ b/firmware/ec/src/subsystem/hci/hci.c
@@ -17,25 +17,10 @@
* HANDLES DEFINITION
*****************************************************************************/
/* Global Task Configuration Variables */
-static Char hciTaskStack[HCI_TASK_STACK_SIZE];
-OCSubsystem ssHci = {
- .taskStackSize = HCI_TASK_STACK_SIZE,
- .taskPriority = HCI_TASK_PRIORITY,
- .taskStack = hciTaskStack,
-};
-
-extern void *sys_config[];
-#define HCI ((Hci_Cfg *)sys_config[OC_SS_HCI])
-
-bool HCI_Init(void *return_buf)
+bool HCI_Init(void* driver, void *return_buf)
{
- /* Initialize IO pins */
- OcGpio_configure(&HCI->led.pin_ec_gpio, OCGPIO_CFG_OUTPUT |
- OCGPIO_CFG_OUT_HIGH);
-
HciBuzzer_init();
-
return true;
}
diff --git a/firmware/ec/src/subsystem/hci/hci_buzzer.c b/firmware/ec/src/subsystem/hci/hci_buzzer.c
index 672e77f877..0d312b40c4 100644
--- a/firmware/ec/src/subsystem/hci/hci_buzzer.c
+++ b/firmware/ec/src/subsystem/hci/hci_buzzer.c
@@ -10,11 +10,11 @@
#include "inc/subsystem/hci/hci.h"
-extern void *sys_config[];
-#define HCI ((Hci_Cfg *)sys_config[OC_SS_HCI])
+extern HciBuzzer_Cfg gbc_hci_buzzer;
+#define HCI gbc_hci_buzzer
ReturnStatus HciBuzzer_init(void) {
- if (OcGpio_configure(&HCI->buzzer.pin_en, OCGPIO_CFG_OUTPUT) <
+ if (OcGpio_configure(&HCI.pin_en, OCGPIO_CFG_OUTPUT) <
OCGPIO_SUCCESS) {
return RETURN_NOTOK;
}
@@ -34,10 +34,10 @@ ReturnStatus HciBuzzer_init(void) {
ReturnStatus hci_buzzer_beep(uint8_t buzzCount)
{
for (uint8_t count = 0; count < buzzCount; count++) {
- if (OcGpio_write(&HCI->buzzer.pin_en, true) < OCGPIO_SUCCESS) {
+ if (OcGpio_write(&HCI.pin_en, true) < OCGPIO_SUCCESS) {
return RETURN_NOTOK;
}
- if (OcGpio_write(&HCI->buzzer.pin_en, false) < OCGPIO_SUCCESS) {
+ if (OcGpio_write(&HCI.pin_en, false) < OCGPIO_SUCCESS) {
return RETURN_NOTOK;
}
}
diff --git a/firmware/ec/src/subsystem/hci/led/hci_led.c b/firmware/ec/src/subsystem/hci/led/hci_led.c
index a1e9bf2563..f87906e7d5 100644
--- a/firmware/ec/src/subsystem/hci/led/hci_led.c
+++ b/firmware/ec/src/subsystem/hci/led/hci_led.c
@@ -6,28 +6,26 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
-
//*****************************************************************************
// HEADER FILES
//*****************************************************************************
-#include "inc/devices/led.h"
#include "inc/subsystem/hci/hci_led.h"
#include "inc/common/system_states.h"
+#include "inc/devices/led.h"
#include "inc/subsystem/hci/hci.h"
#include
#include
+extern void *led_hci_ioexp;
+#define HCI ((HciLedCfg*)led_hci_ioexp)
+
//*****************************************************************************
// HANDLES DEFINITION
//*****************************************************************************
ledSystemState s_ledState = SYSTEM_BOOT;
-extern void *sys_config[];
-#define HCI ((Hci_Cfg *)sys_config[OC_SS_HCI])
-
-
/* TODO: Change the following approach for booting up and resetting led counter
* for synchronization in future if needed */
#define HCI_LED_TASK_PRIORITY 2
@@ -49,12 +47,12 @@ static void HCI_LedTaskFxn(UArg a0, UArg a1)
{
while (true) {
if (s_ledState == SYSTEM_BOOT) {
- hci_led_system_boot();
+ //hci_led_system_boot();
} else if ((s_ledState == SYSTEM_RUNNING)
|| (s_ledState == SYSTEM_FAILURE)) {
- OcGpio_write(&HCI->led.pin_ec_gpio, false);
+ OcGpio_write(&HCI->pin_ec_gpio, false);
Task_sleep(100);
- OcGpio_write(&HCI->led.pin_ec_gpio, true);
+ OcGpio_write(&HCI->pin_ec_gpio, true);
}
}
}
diff --git a/firmware/ec/src/subsystem/obc/obc.c b/firmware/ec/src/subsystem/obc/obc.c
index 3cf0e98e08..055f9f56e8 100644
--- a/firmware/ec/src/subsystem/obc/obc.c
+++ b/firmware/ec/src/subsystem/obc/obc.c
@@ -11,54 +11,53 @@
//*****************************************************************************
#include "inc/subsystem/obc/obc.h"
-#include "Board.h"
-#include "devices/uart/sbd.h"
+#include "common/inc/global/OC_CONNECT1.h"
#include "inc/common/global_header.h"
#include "inc/subsystem/sdr/sdr.h" /* temporary - Only required for 12v enable */
-#include "helpers/array.h"
-#include "registry/SSRegistry.h"
-#include
-#include
-#include
-
-#include
-#include
-
-//*****************************************************************************
-// MACROS DEFINITION
-//*****************************************************************************
-#define OBC_TASK_PRIORITY 2
-#define OBC_TASK_STACK_SIZE 2048
-
-#define SBD_WRITE_TIMEOUT 500
-
-/* TODO: move to helper? */
-#define STATIC_STRLEN(s) (ARRAY_SIZE(s) - 1)
+#include
//*****************************************************************************
// HANDLES DEFINITION
//*****************************************************************************
-OCSubsystem ssObc = {
- .taskStackSize = OBC_TASK_STACK_SIZE,
- .taskPriority = OBC_TASK_PRIORITY,
-};
-static UART_Handle uartIridium;
-static SBD_Handle s_hSbd = NULL;
+extern const Sdr_gpioCfg sdr_gpioCfg;
-bool obc_pre_init(void *returnValue)
+bool obc_pre_init(void* driver, void *returnValue);
+
+ReturnStatus iridium_sw_reset(const Iridium_Cfg *iridium)
+{
+ DEBUG("Resetting Iridium module wait\n");
+
+ OcGpio_configure(&iridium->pin_enable, OCGPIO_CFG_OUTPUT |
+ OCGPIO_CFG_OUT_LOW);
+ OcGpio_configure(&iridium->pin_nw_avail, OCGPIO_CFG_INPUT);
+
+ /* reset - for proper reset, Iridium should be disabled for ~2s */
+ OcGpio_write(&iridium->pin_enable, false); /* Just to be sure it's low */
+ Task_sleep(2100); // TODO: should be ~2s
+ OcGpio_write(&iridium->pin_enable, true);
+ Task_sleep(200); // TODO: idk...probably doesn't need to be lon
+ return RETURN_OK;
+}
+
+bool IRIDIUM_reset(void *driver, void *params)
+{
+ ReturnStatus status = RETURN_OK;
+ status = iridium_sw_reset(driver);
+ return status;
+}
+
+bool obc_pre_init(void* driver, void *returnValue)
{
/* TODO: temporary */
- extern const void *sys_config[];
- const Obc_Cfg *obc_cfg = sys_config[OC_SS_OBC];
-
/* TODO: this is a problem - need 12V for Iridium (plus 5v reg enabled)
* I'm not sold on OBC directly enabling these lines, but there isn't
* a great alternative at this point */
- sdr_pwr_control(OC_SDR_ENABLE);
- if (obc_cfg->pin_pwr_en) {
- if (OcGpio_configure(obc_cfg->pin_pwr_en,
+ Obc_gpioCfg *gpioCfg = (Obc_gpioCfg*)driver;
+ sdr_pwr_control(&sdr_gpioCfg,OC_SDR_ENABLE);
+ if (gpioCfg->pin_pwr_en) {
+ if (OcGpio_configure(gpioCfg->pin_pwr_en,
OCGPIO_CFG_OUTPUT | OCGPIO_CFG_OUT_HIGH)
< OCGPIO_SUCCESS) {
return false;
@@ -66,252 +65,3 @@ bool obc_pre_init(void *returnValue)
}
return true;
}
-
-static UART_Handle open_comm(const Iridium_Cfg *iridium)
-{
- DEBUG("Resetting Iridium module\n");
-
- OcGpio_configure(&iridium->pin_enable, OCGPIO_CFG_OUTPUT |
- OCGPIO_CFG_OUT_LOW);
- OcGpio_configure(&iridium->pin_nw_avail, OCGPIO_CFG_INPUT);
-
- /* reset - for proper reset, Iridium should be disabled for ~2s */
- OcGpio_write(&iridium->pin_enable, false); /* Just to be sure it's low */
- Task_sleep(2100); // TODO: should be ~2s
- OcGpio_write(&iridium->pin_enable, true);
- Task_sleep(200); // TODO: idk...probably doesn't need to be long
-
- // Open Iridium UART
- UART_Params uartParams;
- UART_Params_init(&uartParams);
- uartParams.writeDataMode = UART_DATA_BINARY;
- uartParams.readDataMode = UART_DATA_BINARY;
- uartParams.readReturnMode = UART_RETURN_FULL;
- uartParams.readEcho = UART_ECHO_OFF;
- uartParams.baudRate = 19200;
- uartParams.dataLength = UART_LEN_8;
- uartParams.parityType = UART_PAR_NONE;
- uartParams.stopBits = UART_STOP_ONE;
- uartParams.writeTimeout = SBD_WRITE_TIMEOUT;
- return UART_open(iridium->uart, &uartParams);
-}
-
-static ReturnStatus sbd_init(const Iridium_Cfg *iridium)
-{
- uartIridium = open_comm(iridium);
- if (!uartIridium) {
- return RETURN_NOTOK;
- }
-
- /* Initialize SBD layers */
-// const SbdCallbackList cbList = {
-// .sbdring = sbdring_cb,
-// .ciev = sbdciev_cb,
-// };
- s_hSbd = SBD_init(uartIridium, NULL, NULL);
- if (!s_hSbd) {
- return RETURN_NOTOK;
- }
-
- /* TODO: module verification? */
- if (!SBD_k(s_hSbd, SBD_FLOW_CONTROL_HW) /* Enable HW flow control */
- || !SBD_sbdmta(s_hSbd, true) /* Ring indication enable */
- || !SBD_sbdareg(s_hSbd, SBD_AREG_MODE_AUTO) /* Auto registration */
- || !SBD_cier(s_hSbd, true, false, true, false, false)) { /* Service change indications */
- /* TODO: handle cleanup */
- s_hSbd = NULL;
- return RETURN_NOTOK;
- }
-
- return RETURN_OK;
-}
-
-static ReturnStatus iridium_get_statusParams(
- eOBC_StatusParam paramID,
- OBC_Iridium_Status_Data *pIridiumStatusData)
-{
- ReturnStatus status = RETURN_OK;
-
- /* See if this is a param that doesn't need to talk to Iridium */
- switch (paramID) {
- case IRIDIUM_NO_OUT_MSG:
- pIridiumStatusData->outQueueLen = 25;
- break;
- case IRIDIUM_LASTERR:
- pIridiumStatusData->lastErr = (OBC_lastError) {
- .src = ERR_RC_INTERNAL,
- .code = 5,
- };
- break;
- default:
- /* We don't care about the rest at this point */
- break;
- }
-
- /* If Iridium isn't initialized, don't try to talk to it */
- if (!s_hSbd) {
- return RETURN_NOTOK;
- }
-
- /* Check the params that DO require Iridium communication */
- switch (paramID) {
- case IRIDIUM_IMEI: {
- SbdcgsnInfo cgsnInfo;
- if (!SBD_cgsn(s_hSbd, &cgsnInfo)) {
- return RETURN_NOTOK;
- }
- pIridiumStatusData->imei = strtoull(cgsnInfo.imei, NULL, 10);
- break;
- }
- case IRIDIUM_MFG: {
- SbdCgmiInfo cgmiInfo;
- if (!SBD_cgmi(s_hSbd, &cgmiInfo)) {
- return RETURN_NOTOK;
- }
- strncpy(pIridiumStatusData->mfg, cgmiInfo.mfg,
- sizeof(pIridiumStatusData->mfg));
- break;
- }
- case IRIDIUM_MODEL: {
- SbdCgmmInfo cgmmInfo;
- if (!SBD_cgmm(s_hSbd, &cgmmInfo)) {
- return RETURN_NOTOK;
- }
- /* Model string is verbose - if it's 9600 fam, replace with shorter
- * model number since we only have 4 characters */
- char *model = cgmmInfo.model;
- const char fam_str[] = "IRIDIUM 9600 Family";
- if (strncmp(model, fam_str, STATIC_STRLEN(fam_str)) == 0) {
- model = "96xx";
- }
- strncpy(pIridiumStatusData->model, model,
- sizeof(pIridiumStatusData->model));
- break;
- }
- case IRIDIUM_SIG_QUALITY: {
- SbdcsqInfo csqInfo;
- if (!SBD_csqf(s_hSbd, &csqInfo)) {
- return RETURN_NOTOK;
- }
- pIridiumStatusData->rssi = csqInfo.rssi;
- break;
- }
- case IRIDIUM_REGSTATUS: {
- if (!SBD_sbdregRead(s_hSbd, &pIridiumStatusData->regStat)) {
- return RETURN_NOTOK;
- }
- break;
- }
- default:
- DEBUG("OBC::ERROR: Unknown param %d\n", paramID);
- break;
- }
- return status;
-}
-
-#include "helpers/memory.h"
-
-static void loopback_test(SBD_Handle hSbd, bool debugLogs)
-{
- static int loopCount = 1;
- static unsigned int ticks = 0;
-
- if (ticks == 0)
- ticks = Clock_getTicks();
-
- if (debugLogs) {
- System_printf("Loop %d\n", loopCount);
- }
-
- // Generate a random string
- static char msg[300];
- const int msgLen = 1 + (rand() % (sizeof(msg)));
-
- for (int i = 0; i < msgLen; ++i) {
- msg[i] = rand() % 256;
- }
-
- if (!SBD_sbdwb(hSbd, msg, msgLen)) {
- System_abort("SBDWB Failed");
- }
-
- if (!SBD_sbdtc(hSbd)) {
- System_abort("SBDTC Failed");
- }
-
- char ret[sizeof(msg)] = { };
- if (SBD_sbdrb(hSbd, ret, msgLen) < msgLen) {
- System_abort("SBDRB Failed");
- }
-
- if (memcmp(msg, ret, msgLen) != 0) {
- printMemory(msg, msgLen);
- System_printf("\n");
- printMemory(ret, msgLen);
- System_abort("Messages don't match");
- }
-
- // Only output every few iterations so printfs don't slow down test
- if (loopCount % 10 == 0) {
- if (debugLogs) {
- System_printf("Time: %d\n", Clock_getTicks() - ticks);
- System_flush();
- }
- ticks = Clock_getTicks();
- }
- loopCount++;
-
- /* FIXME: hack to keep thread alive so we keep looping */
- Semaphore_post(ssObc.sem);
-}
-
-static ePostCode _probe(void *driver)
-{
- /* TODO: this is a problem: we can't probe until we've initialized, but we
- * don't init until after probing */
- return POST_DEV_FOUND;
-}
-
-static ePostCode _init(void *driver, const void *config,
- const void *alert_token)
-{
- if (sbd_init(driver) != RETURN_OK) {
- return POST_DEV_CFG_FAIL;
- }
- return POST_DEV_CFG_DONE;
-}
-
-static bool _get_status(void *driver, unsigned int param_id,
- void *return_buf) {
- return (iridium_get_statusParams((eOBC_StatusParam)param_id, return_buf)
- == RETURN_OK);
-}
-
-const Driver OBC_Iridium = {
- .name = "Iridium 96xx",
- .status = (Parameter[]){
- { .name = "imei", .type = TYPE_UINT64 },
- { .name = "mfg", .type = TYPE_STR, .size = 10 },
- { .name = "model", .type = TYPE_STR, .size = 5 },
- { .name = "signal.quality", .type = TYPE_UINT8 },
- { .name = "registration", .type = TYPE_ENUM,
- .values = (Enum_Map[]){
- { 0, "Detached" },
- { 1, "None" },
- { 2, "Registered" },
- { 3, "Registration Denied" },
- {}
- },
- },
- { .name = "numberofoutgoingmessage", .type = TYPE_UINT8 },
- { .name = "lasterror" }, /* TODO: this is a complex type */
- {}
- },
-
- /* Message handlers */
- .cb_probe = _probe,
- .cb_init = _init,
- .cb_get_status = _get_status,
-
- .payload_fmt_union = true, /* OBC breaks serialization pattern :( */
-};
diff --git a/firmware/ec/src/subsystem/power/power.c b/firmware/ec/src/subsystem/power/power.c
index cbbb5ae112..fb0a8b5b46 100644
--- a/firmware/ec/src/subsystem/power/power.c
+++ b/firmware/ec/src/subsystem/power/power.c
@@ -11,73 +11,3 @@
//*****************************************************************************
/* Board Header files */
#include "inc/subsystem/power/power.h"
-#include "Board.h"
-#include "src/registry/SSRegistry.h"
-#include
-
-/*****************************************************************************
- * MACRO DEFINITIONS
- *****************************************************************************/
-#define POWERCTL_TASK_PRIORITY 2
-#define POWERCTL_TASK_STACK_SIZE 1024
-
-/*****************************************************************************
- * HANDLE DEFINITIONS
- *****************************************************************************/
-/* Global Task Configuration Variables */
-
-static Char POWERCTLTaskStack[POWERCTL_TASK_STACK_SIZE];
-
-OCSubsystem ssPower = {
- .taskStackSize = POWERCTL_TASK_STACK_SIZE,
- .taskPriority = POWERCTL_TASK_PRIORITY,
- .taskStack = POWERCTLTaskStack,
-};
-
-extern void *sys_config[];
-#define PWR ((Power_Cfg *)sys_config[OC_SS_PWR])
-
-/*****************************************************************************
- ** FUNCTION NAME : pwr_pre_init
- **
- ** DESCRIPTION : Initializes the power subsystem gpio's.
- **
- ** ARGUMENTS : None
- **
- ** RETURN TYPE : bool
- **
- *****************************************************************************/
-bool pwr_pre_init()
-{
- /* Initialize IO pins */
- OcGpio_configure(&PWR->pin_int_bat_prsnt, OCGPIO_CFG_INPUT);
- OcGpio_configure(&PWR->pin_ext_bat_prsnt, OCGPIO_CFG_INPUT);
- OcGpio_configure(&PWR->pin_ec_pd_pwrgd_ok, OCGPIO_CFG_INPUT);
- OcGpio_configure(&PWR->pin_solar_aux_prsnt_n, OCGPIO_CFG_INPUT);
- OcGpio_configure(&PWR->pin_poe_prsnt_n, OCGPIO_CFG_INPUT);
- OcGpio_configure(&PWR->pin_lt4275_ec_nt2p, OCGPIO_CFG_INPUT);
- OcGpio_configure(&PWR->pin_necpse_rst, OCGPIO_CFG_OUTPUT |
- OCGPIO_CFG_OUT_HIGH);
- OcGpio_configure(&PWR->pin_lt4015_i2c_sel, OCGPIO_CFG_OUTPUT);
- OcGpio_configure(&PWR->pin_int_bat_prsnt, OCGPIO_CFG_INPUT);
- OcGpio_configure(&PWR->pin_ext_bat_prsnt, OCGPIO_CFG_INPUT);
-
- //Enable PSE device.
- ltc4274_enable(true);
- return true;
-}
-
-/*****************************************************************************
- ** FUNCTION NAME : pwr_post_init
- **
- ** DESCRIPTION : Initializes the power subsystem gpio's.
- **
- ** ARGUMENTS : None
- **
- ** RETURN TYPE : bool
- **
- *****************************************************************************/
-bool pwr_post_init()
-{
- return true;
-}
diff --git a/firmware/ec/src/subsystem/rffe/rffe.c b/firmware/ec/src/subsystem/rffe/rffe.c
index 1333de788c..fccad0f510 100644
--- a/firmware/ec/src/subsystem/rffe/rffe.c
+++ b/firmware/ec/src/subsystem/rffe/rffe.c
@@ -10,13 +10,13 @@
// HEADER FILES
//*****************************************************************************
#include "inc/subsystem/rffe/rffe.h"
+
+#include "Board.h"
+#include "inc/common/system_states.h"
#include "inc/subsystem/rffe/rffe_sensor.h"
#include "inc/subsystem/rffe/rffe_ctrl.h"
#include "inc/subsystem/rffe/rffe_powermonitor.h"
-
-#include "Board.h"
#include "inc/subsystem/sdr/sdr.h"
-#include "inc/common/system_states.h"
#include "inc/utils/util.h"
#include "registry/SSRegistry.h"
@@ -27,17 +27,6 @@
// HANDLES DEFINITION
//*****************************************************************************
/* Global Task Configuration Variables */
-static Char rffeTaskStack[RFFE_TASK_STACK_SIZE];
-
-OCSubsystem ssRf = {
- .taskStackSize = RFFE_TASK_STACK_SIZE,
- .taskPriority = RFFE_TASK_PRIORITY,
- .taskStack = rffeTaskStack,
-};
-
-/* RFFE device config */
-extern void *sys_config[];
-#define RFFE ((Fe_Cfg *)sys_config[OC_SS_RF])
/*****************************************************************************
** FUNCTION NAME : rffe_pwr_control
@@ -49,12 +38,12 @@ extern void *sys_config[];
** RETURN TYPE : ReturnStatus
**
*****************************************************************************/
-void rffe_pwr_control(uint8_t control)
+void rffe_pwr_control(Fe_gpioCfg* feCfg, uint8_t control)
{
if (control == OC_FE_ENABLE) {
- OcGpio_write(&RFFE->pin_fe_12v_ctrl, true);
+ OcGpio_write(&feCfg->pin_fe_12v_ctrl, true);
} else {
- OcGpio_write(&RFFE->pin_fe_12v_ctrl, false);
+ OcGpio_write(&feCfg->pin_fe_12v_ctrl, false);
}
}
@@ -68,23 +57,21 @@ void rffe_pwr_control(uint8_t control)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-bool rffe_pre_init(void *returnValue)
+bool rffe_pre_init(void *driver, void *returnValue)
{
+ Fe_Cfg* feCfg = (Fe_Cfg*)driver;
/* Initialize IO pins */
- OcGpio_configure(&RFFE->pin_rf_pgood_ldo, OCGPIO_CFG_INPUT);
- OcGpio_configure(&RFFE->pin_fe_12v_ctrl, OCGPIO_CFG_OUTPUT |
+ OcGpio_configure(&feCfg->fe_gpio_cfg->pin_rf_pgood_ldo, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&feCfg->fe_gpio_cfg->pin_fe_12v_ctrl, OCGPIO_CFG_OUTPUT |
OCGPIO_CFG_OUT_LOW);
- /* Read EEPROM */
- eeprom_init(RFFE->eeprom_inventory);
-
/* RF power on */
- rffe_pwr_control(OC_FE_ENABLE);
+ rffe_pwr_control(feCfg->fe_gpio_cfg,OC_FE_ENABLE);
NOP_DELAY();
/* Check Powergood status(SDR_REG_LDO_PGOOD) */
- if(OcGpio_read(&RFFE->pin_rf_pgood_ldo)) {
+ if(OcGpio_read(&feCfg->fe_gpio_cfg->pin_rf_pgood_ldo)) {
LOGGER("RFFE:INFO:: PowerGood Status is OK.\n");
}
else {
@@ -93,32 +80,44 @@ bool rffe_pre_init(void *returnValue)
/* Initilize FE IO Expander GPIO Controls (those not already controlled
* by a driver) */
- const Fe_Cfg *fe_cfg = sys_config[OC_SS_RF];
-
- OcGpio_configure(&fe_cfg->fe_ch2_gain_cfg.pin_ch1_2g_lb_band_sel_l,
- OCGPIO_CFG_OUTPUT);
- OcGpio_configure(&fe_cfg->fe_ch2_lna_cfg.pin_ch1_rf_pwr_off,
- OCGPIO_CFG_OUTPUT);
- OcGpio_configure(&fe_cfg->fe_watchdog_cfg.pin_ch2_rf_pwr_off,
+ Fe_Ch2_Gain_Cfg* feCh2GainCfg = (Fe_Ch2_Gain_Cfg*)(feCfg->fe_ch2_gain_cfg);
+ Fe_Ch2_Lna_Cfg* feCh2LnaCfg = (Fe_Ch2_Lna_Cfg*)(feCfg->fe_ch2_lna_cfg);
+ Fe_Watchdog_Cfg* feWatchDogCfg = (Fe_Watchdog_Cfg*)(feCfg->fe_watchdog_cfg);
+ OcGpio_configure(&feCh2GainCfg->pin_ch1_2g_lb_band_sel_l,
OCGPIO_CFG_OUTPUT);
+ OcGpio_configure(&feCh2LnaCfg->pin_ch1_rf_pwr_off,
+ OCGPIO_CFG_OUTPUT | OCGPIO_CFG_OUT_HIGH);
+ OcGpio_configure(&feWatchDogCfg->pin_ch2_rf_pwr_off,
+ OCGPIO_CFG_OUTPUT | OCGPIO_CFG_OUT_HIGH);
/* TODO: might be cleaner to move into watchdog driver (2x init is ok) */
- OcGpio_configure(&fe_cfg->fe_watchdog_cfg.pin_aosel_fpga,
+ OcGpio_configure(&feWatchDogCfg->pin_aosel_fpga,
OCGPIO_CFG_OUTPUT | OCGPIO_CFG_OUT_HIGH);
- OcGpio_configure(&fe_cfg->fe_watchdog_cfg.pin_copol_fpga,
+ OcGpio_configure(&feWatchDogCfg->pin_copol_fpga,
OCGPIO_CFG_OUTPUT | OCGPIO_CFG_OUT_HIGH);
return true;
}
-bool rffe_post_init(eSubSystemStates *ssState)
+bool rffe_post_init(void* driver, void *ssState)
{
ReturnStatus status = RETURN_OK;
+ eSubSystemStates *newState = (eSubSystemStates*)ssState;
- status |= rffe_ctrl_configure_power_amplifier(RFFE_CHANNEL1,
+ Fe_Ch_Pwr_Cfg fe_ch1_pwrcfg = {
+ .channel = RFFE_CHANNEL1,
+ .fe_Rffecfg = (Fe_Cfg*)driver
+ };
+
+ Fe_Ch_Pwr_Cfg fe_ch2_pwrcfg = {
+ .channel = RFFE_CHANNEL2,
+ .fe_Rffecfg = (Fe_Cfg*)driver
+ };
+
+ status |= rffe_ctrl_configure_power_amplifier(&fe_ch1_pwrcfg,
RFFE_ACTIVATE_PA);
- status |= rffe_ctrl_configure_power_amplifier(RFFE_CHANNEL2,
+ status |= rffe_ctrl_configure_power_amplifier(&fe_ch2_pwrcfg,
RFFE_ACTIVATE_PA);
//rffe_powermonitor_createtask();
@@ -128,12 +127,11 @@ bool rffe_post_init(eSubSystemStates *ssState)
((status == RETURN_OK) ? "successful" : "unsuccessful"));
if (status == RETURN_OK) {
- *ssState = SS_STATE_CFG;
+ *newState = SS_STATE_CFG;
} else {
- *ssState = SS_STATE_FAULTY;
+ *newState = SS_STATE_FAULTY;
return false;
}
-
return true;
}
@@ -141,7 +139,7 @@ bool RFFE_reset(void *driver, void *params)
{
/* TODO: this is the same line we use to reset the SDR - is this really
* what we want to be doing here? */
- const Sdr_Cfg *cfg = sys_config[OC_SS_SDR];
+ const Sdr_gpioCfg *cfg = (Sdr_gpioCfg *)driver;
if (OcGpio_write(&cfg->pin_ec_trxfe_reset, false) < OCGPIO_SUCCESS) {
return false;
}
@@ -151,21 +149,3 @@ bool RFFE_reset(void *driver, void *params)
}
return true;
}
-
-bool RFFE_InventoryGetStatus(void *driver, unsigned int param_id,
- void *return_buf) {
- switch (param_id) {
- case 0: /* TODO: gross magic number */
- memset(return_buf, '\0', OC_RFFE_BOARD_INFO_SIZE + 1);
- if (eeprom_read_board_info((OCMPSubsystem)driver, return_buf)
- == RETURN_OK) {
- return true;
- }
- LOGGER_DEBUG("RFFE:INFO:: Board id: %s\n", return_buf);
- break;
- default:
- LOGGER_ERROR("RFFE:ERROR::Unknown param %u\n", param_id);
- break;
- }
- return false;
-}
diff --git a/firmware/ec/src/subsystem/rffe/rffe_ctrl.c b/firmware/ec/src/subsystem/rffe/rffe_ctrl.c
index aa159dee2f..8617e1f7d7 100644
--- a/firmware/ec/src/subsystem/rffe/rffe_ctrl.c
+++ b/firmware/ec/src/subsystem/rffe/rffe_ctrl.c
@@ -11,81 +11,20 @@
//*****************************************************************************
#include "inc/subsystem/rffe/rffe_ctrl.h"
+#include "common/inc/global/Framework.h"
#include "devices/i2c/threaded_int.h"
#include "inc/devices/pca9557.h"
#include "inc/subsystem/rffe/rffe.h"
#include "inc/utils/util.h"
-#include "registry/Framework.h"
#include
#include
-/*****************************************************************************
- * GPIO CONFIGURATION
- *****************************************************************************/
-extern const void *sys_config[];
+static FE_Band_Cfg FE_BandCfg[RFFE_MAX_CHANNEL];
-static void _rffe_watchdog_handler(void *context)
-{
- RfWatchdog_Cfg *cfg = context;
- if (OcGpio_read(cfg->pin_alert_lb) > 0) {
- OCMP_GenerateAlert(context, 0, NULL);
- }
- if (OcGpio_read(cfg->pin_alert_hb) > 0) {
- OCMP_GenerateAlert(context, 1, NULL);
- }
-}
-
-static ePostCode _rffe_watchdog_init(void *driver, const void *config,
- const void *alert_token)
-{
- RfWatchdog_Cfg *cfg = driver;
- if (OcGpio_configure(cfg->pin_alert_lb, OCGPIO_CFG_INPUT)) {
- return POST_DEV_CFG_FAIL;
- }
- if (OcGpio_configure(cfg->pin_alert_hb, OCGPIO_CFG_INPUT)) {
- return POST_DEV_CFG_FAIL;
- }
- if (OcGpio_configure(cfg->pin_interrupt, OCGPIO_CFG_INPUT |
- OCGPIO_CFG_INT_FALLING)) {
- return POST_DEV_CFG_FAIL;
- }
-
- ThreadedInt_Init(cfg->pin_interrupt, _rffe_watchdog_handler, cfg);
- return POST_DEV_CFG_DONE;
-}
-
-Driver RFFEWatchdog = {
- .name = "RFFE Watchdog",
- .alerts = (Parameter[]){
- { .name = "LB_R_PWR" },
- { .name = "HB_R_PWR" },
- {}
- },
- .cb_init = _rffe_watchdog_init,
-};
-
-/*****************************************************************************
- ** FUNCTION NAME : rffe_ctrl_get_band
- **
- ** DESCRIPTION : Gets the RF Band.
- **
- ** ARGUMENTS : Channel and Band to be read
- **
- ** RETURN TYPE : Success or failure
- **
- *****************************************************************************/
-ReturnStatus rffe_ctrl_get_band(rffeChannel channel, rffeBand *band)
-{
- ReturnStatus status = RETURN_OK;
-
- // TODO: Using RFFE_IO_BOARD_CFG_ADDR we should find Band Config.
- *band = RFFE_BAND8_900;
-
- DEBUG("RFFECTRL:INFO:: Channel %s RF Band Configuration is %d .\n",
- ((channel == 0) ? "1" : "2"), *band);
- return status;
-}
+typedef enum FE_ParamCfg {
+ FE_CFG_BAND = 0,
+} FE_ParamCfg;
/*****************************************************************************
** FUNCTION NAME : rffe_ctrl_configure_power_amplifier
@@ -98,19 +37,19 @@ ReturnStatus rffe_ctrl_get_band(rffeChannel channel, rffeBand *band)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-ReturnStatus rffe_ctrl_configure_power_amplifier(rffeChannel channel,
+ReturnStatus rffe_ctrl_configure_power_amplifier(Fe_Ch_Pwr_Cfg *pwrCfg,
rffePaCtrlType rfPACtrl)
{
ReturnStatus status = RETURN_OK;
rffeBand band = RFFE_SHUTDOWN;
- const Fe_Cfg *fe_cfg = sys_config[OC_SS_RF];
- const Fe_Ch2_Gain_Cfg *fe_ch1_rf_band_sel = &fe_cfg->fe_ch2_gain_cfg;
- const Fe_Ch2_Lna_Cfg *fe_ch1_rf_pwr = &fe_cfg->fe_ch2_lna_cfg;
- const Fe_Watchdog_Cfg *fe_ch2_rf_pwr = &fe_cfg->fe_watchdog_cfg;
+ rffeChannel channel = pwrCfg->channel;
+ const Fe_Ch2_Gain_Cfg *fe_ch1_rf_band_sel = pwrCfg->fe_Rffecfg->fe_ch2_gain_cfg;
+ const Fe_Ch2_Lna_Cfg *fe_ch1_rf_pwr = pwrCfg->fe_Rffecfg->fe_ch2_lna_cfg;
+ const Fe_Watchdog_Cfg *fe_ch2_rf_pwr = pwrCfg->fe_Rffecfg->fe_watchdog_cfg;
/* Get the RF Band Configuration for the requested RF Channel */
status = rffe_ctrl_get_band(channel, &band);
- if (status == RETURN_OK) {
+ if (status == true) {
DEBUG("RFFECTRL:INFO:: RF Channel %s Band is 0x%x.\n",
((channel == 0) ? "1" : "2"), band);
} else {
@@ -118,7 +57,7 @@ ReturnStatus rffe_ctrl_configure_power_amplifier(rffeChannel channel,
}
DEBUG("RFFECTRL:INFO:: %s Channel %s for Band %d.\n",
- ((rfPACtrl == 0) ? "Deactiavting" : "Activating"),
+ ((rfPACtrl == 0) ? "Deactivating" : "Activating"),
((channel == 0) ? "1" : "2"), band);
if (channel == RFFE_CHANNEL1) {
@@ -136,17 +75,19 @@ ReturnStatus rffe_ctrl_configure_power_amplifier(rffeChannel channel,
OcGpio_write(&fe_ch2_rf_pwr->pin_ch2_rf_pwr_off, false);
}
}
- return status;
+ return RETURN_OK;
}
bool RFFE_enablePA(void *driver, void *params)
{
- return (rffe_ctrl_configure_power_amplifier((rffeChannel)driver,
+ Fe_Ch_Pwr_Cfg *channel = (Fe_Ch_Pwr_Cfg*)driver;
+ return (rffe_ctrl_configure_power_amplifier(channel,
RFFE_ACTIVATE_PA) == RETURN_OK);
}
bool RFFE_disablePA(void *driver, void *params)
{
- return (rffe_ctrl_configure_power_amplifier((rffeChannel)driver,
+ Fe_Ch_Pwr_Cfg *channel = (Fe_Ch_Pwr_Cfg*)driver;
+ return (rffe_ctrl_configure_power_amplifier(channel,
RFFE_DEACTIVATE_PA) == RETURN_OK);
-}
+}
\ No newline at end of file
diff --git a/firmware/ec/src/subsystem/rffe/rffe_powermonitor.c b/firmware/ec/src/subsystem/rffe/rffe_powermonitor.c
index b19cb19f82..84bb3f2cf2 100644
--- a/firmware/ec/src/subsystem/rffe/rffe_powermonitor.c
+++ b/firmware/ec/src/subsystem/rffe/rffe_powermonitor.c
@@ -19,8 +19,8 @@
#include
/* RFFE device config */
-extern void *sys_config[];
-#define RFFE ((Fe_Cfg *)sys_config[OC_SS_RF])
+extern void* fe_ch1_ads7830;
+extern void* fe_ch2_ads7830;
/*****************************************************************************
* HANDLES DEFINITION
@@ -29,22 +29,6 @@ extern void *sys_config[];
static Task_Struct rffePowerMonitorTask;
static Char rffePowerMonitorTaskStack[RFFEPOWERMONITOR_TASK_STACK_SIZE];
-typedef enum FePowerStatus {
- FE_POWER_STATUS_FORWARD = 0,
- FE_POWER_STATUS_REVERSE,
-} FePowerStatus;
-
-static bool _ocmp_get_status(void *driver, unsigned int param_id,
- void *return_buf);
-Driver RFPowerMonitor = {
- .status = (Parameter[]){
- { .name = "forward", .type = TYPE_UINT16 },
- { .name = "reverse", .type = TYPE_UINT16 },
- {}
- },
- .cb_get_status = _ocmp_get_status,
-};
-
/*****************************************************************************
** FUNCTION NAME : rffe_powermonitor_read_adcpower
**
@@ -100,7 +84,7 @@ static ReturnStatus rffe_powermonitor_read_adcpower(const I2C_Dev *i2c_dev,
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-static ReturnStatus rffe_powermonitor_read_power(const I2C_Dev *i2c_dev,
+ReturnStatus rffe_powermonitor_read_power(const I2C_Dev *i2c_dev,
eRffeStatusParamId rfPowerSelect,
uint16_t *rfpower)
{
@@ -173,33 +157,6 @@ static ReturnStatus rffe_powermonitor_read_power(const I2C_Dev *i2c_dev,
return status;
}
-/* OCMP message handler */
-static bool _ocmp_get_status(void *driver, unsigned int param_id,
- void *return_buf) {
- switch (param_id) {
- case FE_POWER_STATUS_FORWARD: {
- if (rffe_powermonitor_read_power(driver,
- RFFE_STAT_FW_POWER,
- return_buf) == RETURN_OK) {
- return true;
- }
- break;
- }
- case FE_POWER_STATUS_REVERSE: {
- if (rffe_powermonitor_read_power(driver,
- RFFE_STAT_REV_POWER,
- return_buf) == RETURN_OK) {
- return true;
- }
- break;
- }
- default:
- LOGGER_ERROR("RFPOWERMONITOR::Unknown status param %d\n", param_id);
- return false;
- }
- return false;
-}
-
/*****************************************************************************
** FUNCTION NAME : rffe_powermonitor_task_fxn
**
@@ -220,7 +177,7 @@ static void rffe_powermonitor_task_fxn(UArg a0, UArg a1)
ReturnStatus status;
/* Read RF FE Forward Power on channel 1 */
- status = rffe_powermonitor_read_power(&RFFE->ads7830_ch1,
+ status = rffe_powermonitor_read_power(fe_ch1_ads7830,
RFFE_STAT_FW_POWER,
&rfPower);
if (status == RETURN_OK) {
@@ -229,7 +186,7 @@ static void rffe_powermonitor_task_fxn(UArg a0, UArg a1)
}
/* Read RF FE Forward Power on channel 2 */
- status = rffe_powermonitor_read_power(&RFFE->ads7830_ch2,
+ status = rffe_powermonitor_read_power(fe_ch2_ads7830,
RFFE_STAT_FW_POWER,
&rfPower);
if (status == RETURN_OK) {
diff --git a/firmware/ec/src/subsystem/sdr/sdr.c b/firmware/ec/src/subsystem/sdr/sdr.c
index 4c1c99fb87..cb36f4cbee 100644
--- a/firmware/ec/src/subsystem/sdr/sdr.c
+++ b/firmware/ec/src/subsystem/sdr/sdr.c
@@ -23,17 +23,9 @@
// HANDLES DEFINITION
//*****************************************************************************
/* Global Task Configuration Variables */
-static Char sdrTaskStack[SDR_TASK_STACK_SIZE];
-
-OCSubsystem ssSdr = {
- .taskStackSize = SDR_TASK_STACK_SIZE,
- .taskPriority = SDR_TASK_PRIORITY,
- .taskStack = sdrTaskStack,
-};
/* SDR device config */
-extern void *sys_config[];
-#define SDR ((Sdr_Cfg *)sys_config[OC_SS_SDR])
+
/*****************************************************************************
** FUNCTION NAME : sdr_pwr_control
@@ -45,16 +37,16 @@ extern void *sys_config[];
** RETURN TYPE : ReturnStatus
**
*****************************************************************************/
-void sdr_pwr_control(uint8_t control)
+void sdr_pwr_control(Sdr_gpioCfg *sdr_gpioCfg, uint8_t control)
{
/* Using configure instead of 'write' here since this pin is shared with
* OBC and we don't want to configure then write if OBC has already
* configured it (it'll reset Iridium that way) */
if (control == OC_SDR_ENABLE) {
- OcGpio_configure(&SDR->pin_trxfe_12v_onoff, OCGPIO_CFG_OUTPUT |
+ OcGpio_configure(&sdr_gpioCfg->pin_trxfe_12v_onoff, OCGPIO_CFG_OUTPUT |
OCGPIO_CFG_OUT_HIGH);
} else {
- OcGpio_configure(&SDR->pin_trxfe_12v_onoff, OCGPIO_CFG_OUTPUT |
+ OcGpio_configure(&sdr_gpioCfg->pin_trxfe_12v_onoff, OCGPIO_CFG_OUTPUT |
OCGPIO_CFG_OUT_LOW);
}
}
@@ -69,12 +61,12 @@ void sdr_pwr_control(uint8_t control)
** RETURN TYPE : ReturnStatus
**
*****************************************************************************/
-static void sdr_control_ioexpander(uint8_t control)
+static void sdr_control_ioexpander(Sdr_gpioCfg *sdr_gpioCfg, uint8_t control)
{
if (control == OC_SDR_ENABLE) {
- OcGpio_write(&SDR->pin_rf_fe_io_reset, true);
+ OcGpio_write(&sdr_gpioCfg->pin_rf_fe_io_reset, true);
} else {
- OcGpio_write(&SDR->pin_rf_fe_io_reset, false);
+ OcGpio_write(&sdr_gpioCfg->pin_rf_fe_io_reset, false);
}
}
@@ -88,12 +80,12 @@ static void sdr_control_ioexpander(uint8_t control)
** RETURN TYPE : ReturnStatus
**
*****************************************************************************/
-static void sdr_control_device(uint8_t control)
+static void sdr_control_device(Sdr_gpioCfg *sdr_gpioCfg, uint8_t control)
{
if (control == OC_SDR_ENABLE) {
- OcGpio_write(&SDR->pin_sdr_reset_in, true);
+ OcGpio_write(&sdr_gpioCfg->pin_sdr_reset_in, true);
} else {
- OcGpio_write(&SDR->pin_sdr_reset_in, false);
+ OcGpio_write(&sdr_gpioCfg->pin_sdr_reset_in, false);
}
}
@@ -107,12 +99,12 @@ static void sdr_control_device(uint8_t control)
** RETURN TYPE : ReturnStatus
**
*****************************************************************************/
-static void sdr_control_reset(uint8_t control)
+static void sdr_control_reset(Sdr_gpioCfg *sdr_gpioCfg, uint8_t control)
{
if (control == OC_SDR_ENABLE) {
- OcGpio_write(&SDR->pin_ec_trxfe_reset, true);
+ OcGpio_write(&sdr_gpioCfg->pin_ec_trxfe_reset, true);
} else {
- OcGpio_write(&SDR->pin_ec_trxfe_reset, false);
+ OcGpio_write(&sdr_gpioCfg->pin_ec_trxfe_reset, false);
}
}
@@ -127,26 +119,26 @@ static void sdr_control_reset(uint8_t control)
** RETURN TYPE : Success or Failure
**
*****************************************************************************/
-static ReturnStatus sdr_fx3_reset(void)
+static ReturnStatus sdr_fx3_reset(Sdr_gpioCfg* fx3_cfg)
{
/*TODO: We need to figure out a way for configuring PCA pins on Intel reset.*/
- OcGpio_configure(&SDR->pin_fx3_reset, OCGPIO_CFG_OUTPUT);
+ OcGpio_configure(&fx3_cfg->pin_fx3_reset, OCGPIO_CFG_OUTPUT);
- if (OcGpio_write(&SDR->pin_fx3_reset, false) < OCGPIO_SUCCESS) {
+ if (OcGpio_write(&fx3_cfg->pin_fx3_reset, false) < OCGPIO_SUCCESS) {
return RETURN_NOTOK;
}
/* Provide small delay */
SysCtlDelay(5);
- if (OcGpio_write(&SDR->pin_fx3_reset, true) < OCGPIO_SUCCESS) {
+ if (OcGpio_write(&fx3_cfg->pin_fx3_reset, true) < OCGPIO_SUCCESS) {
return RETURN_NOTOK;
}
return RETURN_OK;
}
bool SDR_fx3Reset(void *driver, void *params) {
- return (sdr_fx3_reset() == RETURN_OK);
+ return (sdr_fx3_reset(driver) == RETURN_OK);
}
/*****************************************************************************
@@ -159,41 +151,39 @@ bool SDR_fx3Reset(void *driver, void *params) {
** RETURN TYPE : ePostCode
**
*****************************************************************************/
-bool SDR_Init(void *return_buf)
+bool SDR_Init(void* driver, void *return_buf)
{
+ Sdr_gpioCfg *sdr_gpioCfg = (Sdr_gpioCfg*)driver;
/* Initialize IO pins */
- OcGpio_configure(&SDR->pin_sdr_reg_ldo_pgood, OCGPIO_CFG_INPUT);
- OcGpio_configure(&SDR->pin_rf_fe_io_reset, OCGPIO_CFG_OUTPUT |
+ OcGpio_configure(&sdr_gpioCfg->pin_sdr_reg_ldo_pgood, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&sdr_gpioCfg->pin_rf_fe_io_reset, OCGPIO_CFG_OUTPUT |
OCGPIO_CFG_OUT_LOW);
- OcGpio_configure(&SDR->pin_sdr_reset_in, OCGPIO_CFG_OUTPUT |
+ OcGpio_configure(&sdr_gpioCfg->pin_sdr_reset_in, OCGPIO_CFG_OUTPUT |
OCGPIO_CFG_OUT_LOW);
- OcGpio_configure(&SDR->pin_ec_trxfe_reset, OCGPIO_CFG_OUTPUT |
+ OcGpio_configure(&sdr_gpioCfg->pin_ec_trxfe_reset, OCGPIO_CFG_OUTPUT |
OCGPIO_CFG_OUT_LOW);
/* Power On SDR */
- sdr_pwr_control(OC_SDR_ENABLE);
-
- /* Read EEPROM */
- eeprom_init(SDR->eeprom_inventory);
+ sdr_pwr_control(sdr_gpioCfg, OC_SDR_ENABLE);
NOP_DELAY();
/* Move IO expander out of reset*/
- sdr_control_ioexpander(OC_SDR_ENABLE);
+ sdr_control_ioexpander(sdr_gpioCfg, OC_SDR_ENABLE);
/*Enable SDR devices*/
- sdr_control_device(OC_SDR_ENABLE);
+ sdr_control_device(sdr_gpioCfg, OC_SDR_ENABLE);
/* Added in SDR beacuse of U30 (SN74LV08A) */
/*RF_IO_RESET signal depends on this TRXFE_RESET*/
/*Enable TRX_FE_RESET*/
- sdr_control_reset(OC_SDR_ENABLE);
+ sdr_control_reset(sdr_gpioCfg, OC_SDR_ENABLE);
/*Move*/
NOP_DELAY();
/* Check Powergood status(SDR_REG_LDO_PGOOD) */
- if(OcGpio_read(&SDR->pin_sdr_reg_ldo_pgood)) {
+ if(OcGpio_read(&sdr_gpioCfg->pin_sdr_reg_ldo_pgood)) {
LOGGER("SDR:INFO:: PowerGood Status is OK.\n");
}
else {
@@ -201,7 +191,7 @@ bool SDR_Init(void *return_buf)
}
/* Make FX3 out of reset mode */
- ReturnStatus status = sdr_fx3_reset();
+ ReturnStatus status = sdr_fx3_reset(driver);
NOP_DELAY();
LOGGER("SDR:INFO:: FX3 Reset is %s.\n",
@@ -210,32 +200,13 @@ bool SDR_Init(void *return_buf)
return true;
}
-bool Sdr_InventoryGetStatus(void *driver, unsigned int param_id,
- void *return_buf) {
-
- OCMPSubsystem *ss = (OCMPSubsystem *)driver;
-
- switch (param_id) {
- case 0: /* TODO: gross magic number */
- memset(return_buf, '\0', OC_SDR_BOARD_INFO_SIZE + 1);
- if (eeprom_read_board_info(*ss, return_buf) == RETURN_OK) {
- return true;
- }
- LOGGER_DEBUG("SDR:INFO:: Board id: %s\n", return_buf);
- break;
- default:
- LOGGER_ERROR("SDR:ERROR::Unknown param %u\n", param_id);
- break;
- }
- return false;
-}
-
bool SDR_reset(void *driver, void *params) {
- if (OcGpio_write(&SDR->pin_sdr_reset_in, false) <= OCGPIO_FAILURE) {
+ Sdr_gpioCfg *sdr_gpioCfg = (Sdr_gpioCfg*)driver;
+ if (OcGpio_write(&sdr_gpioCfg->pin_sdr_reset_in, false) <= OCGPIO_FAILURE) {
return false;
}
Task_sleep(100);
- if (OcGpio_write(&SDR->pin_sdr_reset_in, true) <= OCGPIO_FAILURE) {
+ if (OcGpio_write(&sdr_gpioCfg->pin_sdr_reset_in, true) <= OCGPIO_FAILURE) {
return false;
}
return true;
diff --git a/firmware/ec/src/subsystem/sync/sync.c b/firmware/ec/src/subsystem/sync/sync.c
index cf7131282c..678983d2ff 100644
--- a/firmware/ec/src/subsystem/sync/sync.c
+++ b/firmware/ec/src/subsystem/sync/sync.c
@@ -6,6 +6,7 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
+
//*****************************************************************************
// HEADER FILES
//*****************************************************************************
@@ -21,28 +22,17 @@
//*****************************************************************************
// HANDLES DEFINITION
//*****************************************************************************
-/* Global Task Configuration Variables */
-static Char syncTaskStack[SYNC_TASK_STACK_SIZE];
-
-OCSubsystem ssSync = {
- .taskStackSize = SYNC_TASK_STACK_SIZE,
- .taskPriority = SYNC_TASK_PRIORITY,
- .taskStack = syncTaskStack,
-};
-
-/* Sync device config */
-extern void *sys_config[];
-#define SYNC ((Sync_Cfg *)sys_config[OC_SS_SYNC])
+static Sync_gpioCfg s_sync_gpiocfg;
/* TODO: Change current implementaion of Polling based approach to interrupt
* based driven in future */
static Char syncGpsTaskStack[SYNC_GPS_TASK_STACK_SIZE];
Semaphore_Handle gpsSem;
-static ReturnStatus SYNC_GpsCheckLock(gpsStatus *gpsStatus)
+static ReturnStatus SYNC_GpsCheckLock(Sync_gpioCfg *sync_gpiocfg, gpsStatus *gpsStatus)
{
/* Get the "lock OK" status from LTE-LITE GPIO pin */
- int locked = OcGpio_read(&SYNC->pin_r_lock_ok_ioexp);
+ int locked = OcGpio_read(&(sync_gpiocfg->pin_r_lock_ok_ioexp));
if (locked < OCGPIO_SUCCESS) {
return RETURN_NOTOK;
}
@@ -88,7 +78,7 @@ static void SYNC_GpsTaskFxn(UArg a0, UArg a1)
while (true) {
if (Semaphore_pend(gpsSem, BIOS_WAIT_FOREVER)) {
gpsStatus gpsStatus;
- SYNC_GpsCheckLock(&gpsStatus);
+ SYNC_GpsCheckLock(&s_sync_gpiocfg,&gpsStatus);
DEBUG("SYNC:INFO:: GPS is %s.\n",
(gpsStatus == GPS_LOCKED) ? "Locked" : "Not Locked");
}
@@ -149,9 +139,10 @@ static void SYNC_GpsTaskInit(void)
bool SYNC_GpsStatus(void *driver, unsigned int param_id, void *return_buf)
{
+
switch (param_id) {
case 0: /* TODO: gross magic number */
- if (SYNC_GpsCheckLock(return_buf) == RETURN_OK) {
+ if (SYNC_GpsCheckLock(driver, return_buf) == RETURN_OK) {
DEBUG("SYNC:INFO:: GPS is %s.\n",
(*(gpsStatus *)return_buf == GPS_LOCKED) ? "Locked" : "Not Locked");
return true;
@@ -166,34 +157,37 @@ bool SYNC_GpsStatus(void *driver, unsigned int param_id, void *return_buf)
bool SYNC_reset(void *driver, void *params)
{
- if (OcGpio_write(&SYNC->pin_ec_sync_reset, false) <= OCGPIO_FAILURE) {
+ Sync_gpioCfg *sync_gpiocfg = (Sync_gpioCfg*)driver;
+ if (OcGpio_write(&sync_gpiocfg->pin_ec_sync_reset, false) <= OCGPIO_FAILURE) {
return false;
}
Task_sleep(100);
- if (OcGpio_write(&SYNC->pin_ec_sync_reset, true) <= OCGPIO_FAILURE) {
+ if (OcGpio_write(&sync_gpiocfg->pin_ec_sync_reset, true) <= OCGPIO_FAILURE) {
return false;
}
return true;
}
-bool SYNC_Init(void *return_buf)
+bool SYNC_Init(void*driver, void *return_buf)
{
+ Sync_gpioCfg *sync_gpiocfg = (Sync_gpioCfg*)driver;
/* Initialize IO pins */
- OcGpio_configure(&SYNC->pin_ec_sync_reset, OCGPIO_CFG_OUTPUT |
+ OcGpio_configure(&sync_gpiocfg->pin_ec_sync_reset, OCGPIO_CFG_OUTPUT |
OCGPIO_CFG_OUT_HIGH);
- OcGpio_configure(&SYNC->pin_spdt_cntrl_lvl, OCGPIO_CFG_OUTPUT);
- OcGpio_configure(&SYNC->pin_warmup_survey_init_sel, OCGPIO_CFG_OUTPUT);
- OcGpio_configure(&SYNC->pin_r_phase_lock_ioexp, OCGPIO_CFG_INPUT);
- OcGpio_configure(&SYNC->pin_r_lock_ok_ioexp, OCGPIO_CFG_INPUT);
- OcGpio_configure(&SYNC->pin_r_alarm_ioexp, OCGPIO_CFG_INPUT);
- OcGpio_configure(&SYNC->pin_12v_reg_enb, OCGPIO_CFG_OUTPUT |
+ OcGpio_configure(&sync_gpiocfg->pin_spdt_cntrl_lvl, OCGPIO_CFG_OUTPUT);
+ OcGpio_configure(&sync_gpiocfg->pin_warmup_survey_init_sel, OCGPIO_CFG_OUTPUT);
+ OcGpio_configure(&sync_gpiocfg->pin_r_phase_lock_ioexp, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&sync_gpiocfg->pin_r_lock_ok_ioexp, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&sync_gpiocfg->pin_r_alarm_ioexp, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&sync_gpiocfg->pin_12v_reg_enb, OCGPIO_CFG_OUTPUT |
OCGPIO_CFG_OUT_HIGH);
- OcGpio_configure(&SYNC->pin_temp_alert, OCGPIO_CFG_INPUT);
- OcGpio_configure(&SYNC->pin_spdt_cntrl_lte_cpu_gps_lvl, OCGPIO_CFG_OUTPUT);
- OcGpio_configure(&SYNC->pin_init_survey_sel, OCGPIO_CFG_OUTPUT);
-
+ OcGpio_configure(&sync_gpiocfg->pin_temp_alert, OCGPIO_CFG_INPUT);
+ OcGpio_configure(&sync_gpiocfg->pin_spdt_cntrl_lte_cpu_gps_lvl, OCGPIO_CFG_OUTPUT);
+ OcGpio_configure(&sync_gpiocfg->pin_init_survey_sel, OCGPIO_CFG_OUTPUT);
+
+ /*Initiaize the local static driver config for the task*/
+ s_sync_gpiocfg = *(Sync_gpioCfg*)driver;
/* TODO: Launch task for GPS */
- //SYNC_GpsTaskInit();
-
+ SYNC_GpsTaskInit();
return true;
}
diff --git a/firmware/ec/src/subsystem/sys/sys.c b/firmware/ec/src/subsystem/sys/sys.c
index 8f0361cb87..b57f3c1ac9 100644
--- a/firmware/ec/src/subsystem/sys/sys.c
+++ b/firmware/ec/src/subsystem/sys/sys.c
@@ -8,9 +8,10 @@
*/
#include "inc/subsystem/sys/sys.h"
+#include "common/inc/global/Framework.h"
+#include "inc/common/post.h"
#include "inc/devices/eeprom.h"
#include "inc/subsystem/gpp/gpp.h" /* For resetting AP */
-#include "src/registry/Framework.h"
#include
#include
@@ -20,285 +21,19 @@
#define OC_MAC_ADDRESS_SIZE 13
+extern POSTData PostResult[POST_RECORDS];
+
typedef enum {
OC_SYS_CONF_MAC_ADDRESS = 0
} eOCConfigParamId;
-typedef enum {
- OC_STAT_SYS_SERIAL_ID = 0,
- OC_STAT_SYS_GBC_BOARD_ID,
- OC_STAT_SYS_STATE
-} eOCStatusParamId;
-
-OCSubsystem ssSystem = {
- .taskStackSize = 1024,
- .taskPriority = 4,
-};
-
-/* Driver definitions for the various devices within SYS */
-static ePostCode _init_eeprom(void *driver, const void *config,
- const void *alert_token);
-static bool _sid_get_status_parameters_data(void *drvier,
- unsigned int param,
- void *data);
-static bool _mac_get_config_parameters_data(void *driver,
- unsigned int param,
- void *pOCConfigData);
-static bool _mac_set_config_parameters_data(void *driver,
- unsigned int param,
- const void *pOCConfigData);
-
-const Driver Driver_EepromSID = {
- .name = "EEPROM",
- .status = (Parameter[]){
- { .name = "gbcboardinfo", .type = TYPE_STR, .size = 21 },
- { .name = "ocserialinfo", .type = TYPE_STR, .size = 21 },
- },
- .cb_init = _init_eeprom,
- .cb_get_status = _sid_get_status_parameters_data,
-};
-
-const Driver Driver_EepromInv = {
- .name = "EEPROM",
- .cb_init = _init_eeprom
-};
-
-const Driver Driver_MAC = {
- .name = "MAC",
- .config = (Parameter[]){
- { .name = "address", .type = TYPE_STR,
- .size = OC_MAC_ADDRESS_SIZE + 1 }
- },
- .cb_get_config = _mac_get_config_parameters_data,
- .cb_set_config = _mac_set_config_parameters_data,
-};
-
-/* Intitialize an EEPROM device and test writing to the very end of memory */
-static ePostCode _init_eeprom(void *driver, const void *config,
- const void *alert_token)
-{
- Eeprom_Cfg *eeprom = driver;
- uint8_t write = 0x01;
- uint8_t read = 0x00;
-
- eeprom_init(eeprom);
- eeprom_enable_write(eeprom);
- eeprom_write(eeprom, OC_TEST_ADDRESS, &write, 1);
- NOP_DELAY(); /* TODO: the eeprom driver should handle this */
- eeprom_disable_write(eeprom);
- eeprom_read(eeprom, OC_TEST_ADDRESS, &read, 1);
-
- if (write == read) {
- return POST_DEV_CFG_DONE;
- }
- return POST_DEV_CFG_FAIL;
-}
-
-/*****************************************************************************
- ** FUNCTION NAME : bb_get_mac_address
- **
- ** DESCRIPTION : Get EC MAC address.
- **
- ** ARGUMENTS : Pointer to OCMPMessageFrame structure
- **
- ** RETURN TYPE : Success or Failure
- **
- *****************************************************************************/
-static ReturnStatus bb_get_mac_address(uint8_t *macAddress)
-{
- uint32_t ulUser0 = 0, ulUser1 = 0;
-
- /* Get the MAC address */
- if((FlashUserGet(&ulUser0, &ulUser1)) != 0) {
- return RETURN_NOTOK;
- }
- uint8_t i = 0;
- uint8_t temp[6] = {'\0'};
-
- if ((ulUser0 != 0xffffffff) && (ulUser1 != 0xffffffff)) {
- /*
- * Convert the 24/24 split MAC address from NV ram into a 32/16 split
- * MAC address needed to program the hardware registers, then program
- * the MAC address into the Ethernet Controller registers.
- */
- temp[0] = ((ulUser0 >> 0) & 0xff);
- temp[1] = ((ulUser0 >> 8) & 0xff);
- temp[2] = ((ulUser0 >> 16) & 0xff);
- temp[3] = ((ulUser1 >> 0) & 0xff);
- temp[4] = ((ulUser1 >> 8) & 0xff);
- temp[5] = ((ulUser1 >> 16) & 0xff);
-
- for( i = 0; i < 6; i++ )
- {
- sprintf((char *)&macAddress[i*2], "%X", ((temp[i]&0xf0) >> 4));
- sprintf((char *)&macAddress[(i*2)+1], "%X", temp[i]&0xf);
- }
- } else {
- strncpy((char *)macAddress, "FFFFFFFFFFFF", 12);
- }
-
- return RETURN_OK;
-}
-
-static uint32_t str_to_val(const char *str)
-{
- uint32_t value = 0;
- uint8_t temp;
- char *ptr;
- value = strtol(str, &ptr, 16);
- temp = (value & 0XFF0000) >> 16;
- value = (value & 0X00FF00) | ((value & 0X0000FF) << 16);
- value = value | temp;
- return value;
-}
-
-/*****************************************************************************
- ** FUNCTION NAME : bb_set_mac_address
- **
- ** DESCRIPTION : Set EC MAC address.
- **
- ** ARGUMENTS : Pointer to OCMPMessageFrame structure
- **
- ** RETURN TYPE : Success or Failure
- **
- *****************************************************************************/
-ReturnStatus bb_set_mac_address(const uint8_t *macAddress)
-{
- uint32_t ulUser0, ulUser1;
- if(macAddress != NULL) {
- char temp[6];
- strncpy(temp, (const char *)macAddress, 6);
- ulUser0 = str_to_val(temp);
- strncpy(temp, (const char *)(macAddress + 6), 6);
- ulUser1 = str_to_val(temp);
- /* Set the MAC address */
- if((FlashUserSet(ulUser0, ulUser1)) != 0) {
- return RETURN_NOTOK;
- } else {
- if(FlashUserSave() != 0) {
- return RETURN_NOTOK;
- }
- }
- /*SysCtlDelay(2000000);
- SysCtlReset();*/
- }
-
- return RETURN_OK;
-}
-
-/*****************************************************************************
- ** FUNCTION NAME : mac_get_config_parameters_data
- **
- ** DESCRIPTION : Get OC Config Message.
- **
- ** ARGUMENTS : Pointer to OCMPMessageFrame structure
- **
- ** RETURN TYPE : Success or Failure
- **
- *****************************************************************************/
-static bool _mac_get_config_parameters_data(void *driver,
- unsigned int param,
- void *pOCConfigData)
-{
- const eOCConfigParamId paramIndex = (eOCConfigParamId)param;
- ReturnStatus status = RETURN_OK;
- switch (paramIndex) {
- case OC_SYS_CONF_MAC_ADDRESS:
- {
- memset(pOCConfigData, '\0', OC_MAC_ADDRESS_SIZE + 1);
- status = bb_get_mac_address(pOCConfigData);
- LOGGER_DEBUG("SYS:INFO:: OC Connect1 MAC Address: %s.\n",
- pOCConfigData);
- break;
- }
- default:
- {
- status = RETURN_NOTOK;
- }
- }
- return (status == RETURN_OK);
-}
-
-/*****************************************************************************
- ** FUNCTION NAME : mac_set_config_parameters_data
- **
- ** DESCRIPTION : Set OC Config Message.
- **
- ** ARGUMENTS : Pointer to OCMPMessageFrame structure
- **
- ** RETURN TYPE : Success or Failure
- **
- *****************************************************************************/
-static bool _mac_set_config_parameters_data(void *driver,
- unsigned int param,
- const void *pOCConfigData)
-{
- const eOCConfigParamId paramIndex = (eOCConfigParamId)param;
- ReturnStatus status = RETURN_OK;
- switch (paramIndex) {
- case OC_SYS_CONF_MAC_ADDRESS:
- {
- LOGGER_DEBUG("SYS:INFO:: Set OC Connect1 MAC Address to: %s.\n",
- pOCConfigData);
- bb_set_mac_address(pOCConfigData);
- break;
- }
- default:
- {
- status = RETURN_NOTOK;
- }
- }
- return (status == RETURN_OK);
-}
-
-/*****************************************************************************
- ** FUNCTION NAME : bb_process_get_status_parameters_data
- **
- ** DESCRIPTION : Get OC Status Message.
- **
- ** ARGUMENTS : Pointer to OCMPMessageFrame structure
- **
- ** RETURN TYPE : Success or Failure
- **
- *****************************************************************************/
-static bool _sid_get_status_parameters_data(void *drvier,
- unsigned int param,
- void *data)
-{
- const eOCStatusParamId paramIndex = (eOCStatusParamId)param;
- ReturnStatus status = RETURN_OK;
- switch (paramIndex) {
- case OC_STAT_SYS_SERIAL_ID:
- {
- memset(data, '\0', OC_CONNECT1_SERIAL_SIZE + 1);
- status = eeprom_read_oc_info(data);
- LOGGER_DEBUG("SYS:INFO:::: OC Connect1 serial id %s.\n",
- data);
- break;
- }
- case OC_STAT_SYS_GBC_BOARD_ID:
- {
- memset(data, '\0', OC_GBC_BOARD_INFO_SIZE + 1);
- status = eeprom_read_board_info(OC_SS_SYS, data);
- LOGGER_DEBUG("SYS:INFO:::: OC Connect1 GBC board is %s.\n",
- data);
- break;
- }
- default:
- {
- status = RETURN_NOTOK;
- }
- }
- return (status == RETURN_OK);
-}
-
/* Resets the AP and then the EC */
bool SYS_cmdReset(void *driver, void *params)
{
/* TODO: we don't give any indication that the message was received, perhaps
* a timed shutdown would be more appropriate */
- const Gpp_Cfg *cfg = driver;
+ const Gpp_gpioCfg *cfg = (Gpp_gpioCfg *)driver;
/* Reset AP */
OcGpio_write(&cfg->pin_ec_reset_to_proc, false);
@@ -318,3 +53,87 @@ bool SYS_cmdEcho(void *driver, void *params)
{
return true;
}
+
+/*
+/*****************************************************************************
+ ** FUNCTION NAME : SYS_post_enable
+ **
+ ** DESCRIPTION : Start the executing for POST
+ ** ARGUMENTS : None
+ **
+ ** RETURN TYPE : bool
+ **
+ *****************************************************************************/
+bool SYS_post_enable(void **postActivate)
+{
+ ReturnStatus status = RETURN_NOTOK;
+ LOGGER("SYS:INFO:: Starting POST test for OpenCellular.\n");
+ //Permission granted from the System.
+ //Sending the activate POST message to POST subsystem.
+ OCMPMessageFrame *postExeMsg = create_ocmp_msg_frame(OC_SS_SYS,
+ OCMP_MSG_TYPE_POST,
+ OCMP_AXN_TYPE_ACTIVE,
+ 0x00,
+ 0x00,
+ 1);
+ if (postExeMsg != NULL) {
+ status = RETURN_OK;
+ *postActivate = (OCMPMessageFrame *)postExeMsg;
+ }
+ return (status == RETURN_OK) ;
+}
+
+/*****************************************************************************
+ ** FUNCTION NAME : SYS_post_get_results
+ **
+ ** DESCRIPTION : Get POST results from EEPROM.
+ **
+ ** ARGUMENTS : None
+ **
+ ** RETURN TYPE : bool
+ **
+ *****************************************************************************/
+bool SYS_post_get_results(void **getpostResult)
+{
+ ReturnStatus status = RETURN_OK;
+ /* Return the POST results*/
+ uint8_t iter = 0x00;
+ uint8_t index = 0x00;
+ OCMPMessageFrame *getpostResultMsg = (OCMPMessageFrame *)getpostResult;
+ /* Get the subsystem info for which message is required */
+ OCMPMessageFrame *postResultMsg = create_ocmp_msg_frame(
+ getpostResultMsg->message.subsystem, OCMP_MSG_TYPE_POST,
+ OCMP_AXN_TYPE_REPLY,0x00,0x00,40);
+ if (postResultMsg) {
+ /* Getting data assigned*/
+ postResultMsg->header.ocmpSof = getpostResultMsg->header.ocmpSof;
+ postResultMsg->header.ocmpInterface = getpostResultMsg->header
+ .ocmpInterface;
+ postResultMsg->header.ocmpSeqNumber = getpostResultMsg->header
+ .ocmpSeqNumber;
+ for (iter = 0; iter < POST_RECORDS; iter++) {
+ if (PostResult[iter].subsystem
+ == getpostResultMsg->message.ocmp_data[0]) {
+ postResultMsg->message.ocmp_data[(3 * index) + 0] =
+ PostResult[iter].subsystem;
+ postResultMsg->message.ocmp_data[(3 * index) + 1] =
+ PostResult[iter].devSno; //Device serial Number
+ postResultMsg->message.ocmp_data[(3 * index) + 2] =
+ PostResult[iter].status; //Status ok
+ index++;
+ }
+ }
+ LOGGER_DEBUG("BIGBROTHER:INFO::POST message sent for subsystem 0x%x.\n");
+ /*Size of payload*/
+ postResultMsg->header.ocmpFrameLen = index * 3;
+ /*Updating Subsystem*/
+ //postResultMsg->message.subsystem = (OCMPSubsystem)PostResult[iter].subsystem;
+ /* Number of devices found under subsystem*/
+ postResultMsg->message.parameters = index;
+ index = 0;
+ } else {
+ LOGGER("BIGBROTHER:ERROR:: Failed to allocate memory for POST results.\n");
+ }
+ memcpy(((OCMPMessageFrame*)getpostResult), postResultMsg, 64);
+ return status;
+}
diff --git a/firmware/ec/src/subsystem/testModule/testModule.c b/firmware/ec/src/subsystem/testModule/testModule.c
index 137252fbb8..f0a2e34848 100644
--- a/firmware/ec/src/subsystem/testModule/testModule.c
+++ b/firmware/ec/src/subsystem/testModule/testModule.c
@@ -10,550 +10,3 @@
//*****************************************************************************
// HEADER FILES
//*****************************************************************************
-#include "inc/subsystem/testModule/testModule.h"
-
-#include "devices/uart/gsm.h"
-#include "inc/common/global_header.h"
-#include "helpers/array.h"
-#include "helpers/math.h"
-#include "helpers/uart.h"
-#include "registry/SSRegistry.h"
-
-#include
-#include
-#include
-
-#include
-#include
-
-/* TODO: move to helper? */
-#define STATIC_STRLEN(s) (ARRAY_SIZE(s) - 1)
-
-//*****************************************************************************
-// MACROS DEFINITION
-//*****************************************************************************
-#define TESTMOD_TASK_PRIORITY 2
-#define TESTMOD_TASK_STACK_SIZE 2048
-
-#define G510_WRITE_TIMEOUT 500
-#define G510_READ_TIMEOUT 5000
-
-/* G510 enable line is active-low */
-#define GSM_EN_ASSERT (0)
-#define GSM_EN_DEASSERT (1)
-
-#define GSM_PWR_EN_ASSERT (1)
-#define GSM_PWR_EN_DEASSERT (0)
-
-#define GSM_SHUTDOWN_TIME 200
-#define GSM_COOLDOWN_TIME 50
-
-typedef enum {
- TWOG_SIM_CALLSTATE_CHANGE = 0,
- TWOG_SIM_INCOMING_MSG = 1,
- TWOG_SIM_ALERT_PARAMS_MAX /* Limiter */
-} eTEST_MOD_ALERTParam;
-
-typedef enum {
- TWOG_CALL_EVT_RING = 0,
- TWOG_CALL_EVT_CALL_END = 1,
-} eTEST_MODE_CallEvent;
-
-typedef enum {
- TWOG_IMEI = 0,
- TWOG_IMSI = 1,
- TWOG_GETMFG = 2,
- TWOG_GETMODEL = 3,
- TWOG_RSSI = 4,
- TWOG_BER = 5,
- TWOG_REGSTATUS = 6,
- TWOG_NETWORK_OP_INFO = 7,
- TWOG_CELLID = 8,
- TWOG_BSIC = 9,
- TWOG_LASTERR = 10,
- TWOG_PARAM_MAX /* Limiter */
-} eTestModule_StatusParam;
-
-//*****************************************************************************
-// HANDLES DEFINITION
-//*****************************************************************************
-OCSubsystem ssTestmod = {
- .taskStackSize = TESTMOD_TASK_STACK_SIZE,
- .taskPriority = TESTMOD_TASK_PRIORITY,
-};
-
-static Char testmodTaskStack[TESTMOD_TASK_STACK_SIZE];
-
-static UART_Handle uartGsm;
-static GSM_Handle s_hGsm = NULL;
-
-static Semaphore_Handle sem_simReady;
-static Semaphore_Handle sem_sms;
-
-static volatile int sms_idx = -1;
-
-static void simReady_cb(void *context)
-{
- Semaphore_post(sem_simReady);
-}
-
-static void cmti_cb(const GsmCmtiInfo *info, void *context)
-{
- sms_idx = info->index;
- Semaphore_post(sem_sms);
-}
-
-static void call_state_cb(const GsmClccInfo *info, void *context)
-{
- DEBUG("CLCC %u\n", info->call_state);
- switch (info->call_state) {
- case GSM_CALL_STATE_INCOMING: {
- eTEST_MODE_CallEvent callState = TWOG_CALL_EVT_RING;
- OCMP_GenerateAlert(context, TWOG_SIM_CALLSTATE_CHANGE, &callState);
- break;
- }
- case GSM_CALL_STATE_RELEASED: {
- eTEST_MODE_CallEvent callState = TWOG_CALL_EVT_CALL_END;
- OCMP_GenerateAlert(context, TWOG_SIM_CALLSTATE_CHANGE, &callState);
- break;
- }
- }
-}
-
-/* TODO: temporary */
-extern const void *sys_config[];
-
-/* Configures the various IO pins associated with this subsystem */
-static bool configure_io(void) {
- const TestMod_Cfg *testmod_cfg = sys_config[OC_SS_TEST_MODULE];
- const G510_Cfg *cfg = &testmod_cfg->g510_cfg;
-
- OcGpio_configure(&cfg->pin_sim_present, OCGPIO_CFG_INPUT);
- OcGpio_configure(&cfg->pin_enable, OCGPIO_CFG_OUTPUT |
- OCGPIO_CFG_OUT_LOW);
- OcGpio_configure(&cfg->pin_pwr_en, OCGPIO_CFG_OUTPUT |
- OCGPIO_CFG_OUT_LOW);
-
- return true;
-}
-
-static UART_Handle open_comm(void)
-{
- const TestMod_Cfg *testmod_cfg = sys_config[OC_SS_TEST_MODULE];
-
- // Open GSM UART
- UART_Params uartParams;
- UART_Params_init(&uartParams);
- uartParams.writeDataMode = UART_DATA_BINARY;
- uartParams.readDataMode = UART_DATA_BINARY;
- uartParams.readReturnMode = UART_RETURN_FULL;
- uartParams.readEcho = UART_ECHO_OFF;
- uartParams.baudRate = 115200;
- uartParams.dataLength = UART_LEN_8;
- uartParams.parityType = UART_PAR_NONE;
- uartParams.stopBits = UART_STOP_ONE;
- uartParams.writeTimeout = G510_WRITE_TIMEOUT;
- uartParams.readTimeout = G510_READ_TIMEOUT;
- return UART_open(testmod_cfg->g510_cfg.uart, &uartParams);
-}
-
-/* General reset procedure:
- * - send soft shutdown reset to try "nice" shutdown
- * - kill power to unit in case soft shutdown didn't take
- * - reapply power and assert enable line to reboot module
- */
-static bool g510_reset(void)
-{
- const TestMod_Cfg *testmod_cfg = sys_config[OC_SS_TEST_MODULE];
- const G510_Cfg *cfg = &testmod_cfg->g510_cfg;
-
- /* Ensure the enable line is high (deasserted) so the module doesn't
- * restart itself */
- OcGpio_write(&cfg->pin_enable, GSM_EN_DEASSERT);
-
- /* Void any data already in modem, then send reset command */
- static const char CTRL_X = 0x18;
- static const char resetCmd[] = "AT+CFUN=0\r\n";
- UART_write(uartGsm, &CTRL_X, sizeof(CTRL_X));
- UART_write(uartGsm, resetCmd, STATIC_STRLEN(resetCmd));
-
- /* Wait for module to catch up */
- Task_sleep(GSM_SHUTDOWN_TIME);
-
- /* Kill power to be sure */
- OcGpio_write(&cfg->pin_pwr_en, GSM_PWR_EN_DEASSERT);
- UART_flush(uartGsm);
- Task_sleep(GSM_COOLDOWN_TIME);
-
- /* Enable the module. We can keep the line asserted - the module requires an
- * edge before it will look at this line again */
- OcGpio_write(&cfg->pin_enable, GSM_EN_ASSERT);
- OcGpio_write(&cfg->pin_pwr_en, GSM_PWR_EN_ASSERT);
-
- /* Wait for the module to be ready */
- const char bootStr[] = "AT command ready\r\n";
- char buf[STATIC_STRLEN(bootStr)];
-
- if (UART_read(uartGsm, buf, sizeof(buf)) < sizeof(buf)) {
- LOGGER_ERROR("Timeout waiting for G510\n");
- return false;
- }
-
- if (memcmp(buf, bootStr, sizeof(buf)) != 0) {
- LOGGER_ERROR("Unrecognized G510 boot str: %.*s\n", (int)sizeof(buf),
- buf);
- return false;
- }
-
- return true;
-}
-
-static ReturnStatus g510_init(const void *alert_token)
-{
- if (!configure_io()) {
- return RETURN_NOTOK;
- }
-
- uartGsm = open_comm();
- if (!uartGsm) {
- return RETURN_NOTOK;
- }
-
- DEBUG("Resetting GSM module\n");
- if (!g510_reset()) {
- return RETURN_NOTOK;
- }
- Task_sleep(100); // FIXME: this lets things catch up when using the emulator
- DEBUG("GSM module ready\n");
-
- // Configure SBD module
- const GsmCallbackList cbList = {
- .creg = NULL,
- .simReady = simReady_cb,
- .cmti = cmti_cb,
- .ring = NULL, /* We're using clcc, so ignore RING alerts */
- .clcc = call_state_cb,
- };
-
- GsmCgsnInfo cgsnInfo;
- s_hGsm = GSM_init(uartGsm, &cbList, (void *)alert_token);
-
- if (!s_hGsm) {
- return RETURN_NOTOK;
- }
-
- GSM_cgsn(s_hGsm, &cgsnInfo);
- DEBUG("IMEI: %s\n", cgsnInfo.imei);
-
- // TODO: call cfun to ensure radio is active (this setting is sticky)
-
- GSM_creg(s_hGsm, GSM_CREG_STATUS_ENABLE_LOC);
-
- DEBUG("Test module ready\n");
-
- return RETURN_OK;
-}
-
-static bool testModule_get_statusParams(eTestModule_StatusParam paramID,
- TestMod_2G_Status_Data *p2gStatusData)
-{
- switch (paramID) {
- case TWOG_IMEI:
- {
- GsmCgsnInfo cgsnInfo;
- if (!GSM_cgsn(s_hGsm, &cgsnInfo)) {
- return false;
- }
- p2gStatusData->imei = strtoull(cgsnInfo.imei, NULL, 10);
- break;
- }
- case TWOG_IMSI:
- {
- uint64_t imsi;
- if (!GSM_cimi(s_hGsm, &imsi)) {
- return false;
- }
- p2gStatusData->imsi = imsi;
- break;
- }
- case TWOG_GETMFG:
- {
- GsmCgmiInfo cgmiInfo;
- if (!GSM_cgmi(s_hGsm, &cgmiInfo)) {
- return false;
- }
- /* TODO: idea - make safe strncpy that always terminates str */
- strncpy(p2gStatusData->mfg, cgmiInfo.mfgId,
- sizeof(p2gStatusData->mfg));
- break;
- }
- case TWOG_GETMODEL:
- {
- GsmCgmmInfo cgmmInfo;
- if (!GSM_cgmm(s_hGsm, &cgmmInfo)) {
- return false;
- }
- strncpy(p2gStatusData->model, cgmmInfo.model,
- sizeof(p2gStatusData->model));
- break;
- }
- /* TODO: optimize this - no reason to call CSQ twice */
- case TWOG_RSSI:
- {
- GsmCsqInfo csqInfo;
- if (!GSM_csq(s_hGsm, &csqInfo)) {
- return false;
- }
- p2gStatusData->rssi = csqInfo.rssi;
- break;
- }
- case TWOG_BER:
- {
- GsmCsqInfo csqInfo;
- if (!GSM_csq(s_hGsm, &csqInfo)) {
- return false;
- }
- p2gStatusData->ber = csqInfo.ber;
- break;
- }
- case TWOG_REGSTATUS:
- {
- GsmCregInfo cregInfo;
- if (!GSM_cregRead(s_hGsm, &cregInfo)) {
- return false;
- }
- p2gStatusData->regStat = cregInfo.stat;
- break;
- }
- case TWOG_NETWORK_OP_INFO:
- /* TODO: from +COPS=? */
- return false;
- case TWOG_CELLID:
- {
- /* NOTE: requires CREG mode 2 (unsolicited + location info) */
- GsmCregInfo cregInfo;
- if (!GSM_cregRead(s_hGsm, &cregInfo)) {
- return false;
- }
- p2gStatusData->cid = cregInfo.cid;
- break;
- }
- case TWOG_BSIC:
- /* TODO: from +MCELL? */
- return false;
- case TWOG_LASTERR:
- /* TODO: implement last error */
- return false;
- default:
- DEBUG("TESTMOD::ERROR: Unknown param %d\n", paramID);
- return false;
- }
- return true;
-}
-
-/* Command handling */
-bool TestMod_cmdEnable(void *driver, void *params)
-{
- DEBUG("TESTMOD 2G Enable\n");
- return GSM_cfun(s_hGsm, GSM_CFUN_FULL);
-}
-
-bool TestMod_cmdDisable(void *driver, void *params)
-{
- DEBUG("TESTMOD 2G Disable\n");
- return GSM_cfun(s_hGsm, GSM_CFUN_AIRPLANE);
-}
-
-bool TestMod_cmdDisconnect(void *driver, void *params)
-{
- DEBUG("TESTMOD 2G Disconnect\n");
- return GSM_cops(s_hGsm, GSM_COPS_MODE_DEREG, GSM_COPS_FMT_NUMERIC, "");
-}
-
-bool TestMod_cmdConnect(void *driver, void *params)
-{
- DEBUG("TESTMOD 2G Connect\n");
- return GSM_cops(s_hGsm, GSM_COPS_MODE_AUTO, GSM_COPS_FMT_NUMERIC, "");
-}
-
-bool TestMod_cmdSendSms(void *driver, void *params)
-{
- DEBUG("TESTMOD 2G SMS\n");
- /* TODO: we assume number is null terminated, should have check */
- TestModule_sms *sms = params;
- return GSM_cmgs(s_hGsm, sms->number, sms->msg);
-}
-
-bool TestMod_cmdDial(void *driver, void *params)
-{
- /* TODO: we assume number is null terminated, should have check */
- char *number = params;
- /* TODO: watch for call state change to determine if successful */
- DEBUG("TESTMOD 2G Dial\n");
- return GSM_d(s_hGsm, number);
-}
-
-bool TestMod_cmdAnswer(void *driver, void *params)
-{
- DEBUG("TESTMOD 2G answer\n");
- return GSM_a(s_hGsm);
-}
-
-bool TestMod_cmdHangup(void *driver, void *params)
-{
- DEBUG("TESTMOD 2G hangup\n");
- return GSM_h(s_hGsm);
-}
-
-bool TestMod_cmdReset(void *driver, void *params)
-{
- DEBUG("TESTMOD Reset\n");
- return false; /* Not yet implemented */
-}
-
-static void testModule_task(UArg a0, UArg a1)
-{
- const void *alert_token = (const void *)a0;
-
- /* Wait for our SIM card to be ready and then finish init */
- Semaphore_pend(sem_simReady, BIOS_WAIT_FOREVER);
- DEBUG("TESTMOD::SIM Ready\n");
-
- uint64_t imsi;
- GSM_cimi(s_hGsm, &imsi);
- /* TODO: hack because System_printf is crappy and doesn't support %llu */
- char imsiStr[16];
- snprintf(imsiStr, sizeof(imsiStr), "%"PRIu64, imsi);
- DEBUG("IMSI: %s\n", imsiStr);
-
- /* NOTE: if the message storage fills up, the G510 will just
- * reject any SMS from the network, so we need to make sure
- * it's clear
- */
- GSM_cmgd(s_hGsm, 1, GSM_CMGD_DELETE_ALL);
-
- GSM_clccSet(s_hGsm, true); /* Enable clcc (call state) msg */
-
- /* Finish device configuration */
- if (!GSM_cnmi(s_hGsm, 2, 1, 0, 0 , 0) || /* enable sms arrival notif */
- !GSM_cmgf(s_hGsm, GSM_MSG_FMT_TEXT) || /* set to text mode */
- !GSM_csmp(s_hGsm, 17, 167, 0, 0) || /* text mode parameters */
- !GSM_csdh(s_hGsm, true)) { /* display extra info for cgmr */
- s_hGsm = NULL; /* TODO: proper teardown of handle */
- }
-
- while (Semaphore_pend(sem_sms, BIOS_WAIT_FOREVER)) {
- if (sms_idx >= 0) {
- GSM_cnma(s_hGsm);
- static char sms[160];
- if (GSM_cmgr(s_hGsm, sms_idx, sms, NULL)) {
- DEBUG("SMS: %.*s\n", 50, sms); // System_printf has a limited buffer
- OCMP_GenerateAlert(alert_token, TWOG_SIM_INCOMING_MSG, sms);
- } else {
- LOGGER_ERROR("TESTMOD:Failed to read SMS\n");
- }
-
- GSM_cmgd(s_hGsm, sms_idx, GSM_CMGD_DELETE_AT_INDEX);
- sms_idx = -1;
-
- //if (GSM_cmgs(s_hGsm, "29913", "Hello from GSM :)") < 0) {
- // LOGGER_ERROR("TESTMOD:Error sending SMS\n");
- //}
- }
- }
-}
-
-static ePostCode _probe(void *driver)
-{
- /* TODO: this is a problem: we can't probe until we've initialized, but we
- * don't init until after probing */
- return POST_DEV_FOUND;
-}
-
-static ePostCode _init(void *driver, const void *config,
- const void *alert_token)
-{
- /* TODO: there's probably a better way to wait on the sim card */
- sem_simReady = Semaphore_create(0, NULL, NULL);
- sem_sms = Semaphore_create(0, NULL, NULL);
- if (!sem_simReady || !sem_sms) {
- LOGGER_ERROR("TESTMOD:ERROR:: Failed creating semaphores\n");
- Semaphore_delete(&sem_simReady);
- Semaphore_delete(&sem_sms);
- return POST_DEV_CFG_FAIL;
- }
-
- /* TODO: it's less than ideal to have a dedicated task for this */
- /* Create a task */
- Task_Params taskParams;
- Task_Params_init(&taskParams);
- taskParams.stack = testmodTaskStack;
- taskParams.stackSize = TESTMOD_TASK_STACK_SIZE;
- taskParams.priority = TESTMOD_TASK_PRIORITY;
- taskParams.arg0 = (intptr_t)alert_token;
- Task_Handle task = Task_create(testModule_task, &taskParams, NULL);
- if (!task) {
- DEBUG("TESTMOD::FATAL: Unable to start G510 task\n");
- Semaphore_delete(&sem_simReady);
- Semaphore_delete(&sem_sms);
- return POST_DEV_CFG_FAIL;
- }
-
- if (g510_init(alert_token) != RETURN_OK) {
- return POST_DEV_CFG_FAIL;
- }
- return POST_DEV_CFG_DONE;
-}
-
-static bool _get_status(void *driver, unsigned int param_id, void *return_buf)
-{
- return testModule_get_statusParams((eTestModule_StatusParam)param_id,
- return_buf);
-}
-
-const Driver Testmod_G510 = {
- .name = "Fibocom G510",
- .status = (Parameter[]){
- { .name = "imei", .type = TYPE_UINT64 },
- { .name = "imei", .type = TYPE_UINT64 },
- { .name = "mfg", .type = TYPE_STR, .size = 10 },
- { .name = "model", .type = TYPE_STR, .size = 5 },
- { .name = "rssi", .type = TYPE_UINT8 },
- { .name = "ber", .type = TYPE_UINT8 },
- { .name = "registration", .type = TYPE_ENUM,
- .values = (Enum_Map[]){
- { 0, "Not Registered, Not Searching" },
- { 1, "Registered, Home Network" },
- { 2, "Not Registered, Searching" },
- { 3, "Registration Denied" },
- { 4, "Status Unknown" },
- { 5, "Registered, Roaming" },
- {}
- },
- },
- { .name = "network_operatorinfo" }, /* TODO: this is a complex type */
- { .name = "cellid", TYPE_UINT32 },
- { .name = "bsic", TYPE_UINT8 },
- { .name = "lasterror" }, /* TODO: this is a complex type */
- {}
- },
- .alerts = (Parameter[]){
- { .name = "Call State Changed", .type = TYPE_ENUM,
- .values = (Enum_Map[]){
- { 0, "Ringing" },
- { 1, "Call End" },
- {}
- },
- },
- /* TODO: var len str */
- { .name = "Incoming SMS", .type = TYPE_STR, .size = 20 },
- {}
- },
-
- /* Message handlers */
- .cb_probe = _probe,
- .cb_init = _init,
- .cb_get_status = _get_status,
-
- .payload_fmt_union = true, /* Testmodule breaks serialization pattern :( */
-};
diff --git a/firmware/ec/src/subsystem/watchdog/watchdog.c b/firmware/ec/src/subsystem/watchdog/watchdog.c
index d306c7929f..a7191f45c4 100644
--- a/firmware/ec/src/subsystem/watchdog/watchdog.c
+++ b/firmware/ec/src/subsystem/watchdog/watchdog.c
@@ -6,16 +6,17 @@
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
+
//*****************************************************************************
// HEADER FILES
//*****************************************************************************
-#include "inc/subsystem/gpp/gpp.h"
#include "inc/subsystem/watchdog/watchdog.h"
+#include "common/inc/global/ocmp_frame.h"
#include "drivers/OcGpio.h"
#include "inc/common/bigbrother.h"
#include "inc/common/global_header.h"
-#include "inc/common/ocmp_frame.h"
+#include "inc/subsystem/gpp/gpp.h"
#include "inc/utils/util.h"
#include
@@ -72,7 +73,7 @@ extern const void *sys_config[];
void watchdog_reset_ap(void)
{
uint32_t delay = 0;
- const Gpp_Cfg *cfg = sys_config[OC_SS_GPP];
+ const Gpp_gpioCfg *cfg = sys_config[OC_SS_GPP];
OcGpio_write(&cfg->pin_ec_reset_to_proc, false);
delay = 0x1000000;
@@ -105,8 +106,8 @@ void watchdog_send_messages(OCMPMessageFrame * pWatchdogMsg)
void watchdog_send_cmd_message(void)
{
OCMPMessageFrame *pWatchdogMsg = (OCMPMessageFrame *) malloc(32);
- pWatchdogMsg->header.ocmp_interface = OCMP_COMM_IFACE_UART;
- pWatchdogMsg->header.ocmp_sof = OCMP_MSG_SOF;
+ pWatchdogMsg->header.ocmpInterface = OCMP_COMM_IFACE_UART;
+ pWatchdogMsg->header.ocmpSof = OCMP_MSG_SOF;
pWatchdogMsg->message.subsystem = OC_SS_WD;
pWatchdogMsg->message.msgtype = OCMP_MSG_TYPE_STATUS;
pWatchdogMsg->message.action = OCMP_AXN_TYPE_SET;
diff --git a/firmware/ec/src/utils/ocmp_util.c b/firmware/ec/src/utils/ocmp_util.c
index 7587f6113c..af4b19c718 100644
--- a/firmware/ec/src/utils/ocmp_util.c
+++ b/firmware/ec/src/utils/ocmp_util.c
@@ -10,7 +10,6 @@
/*****************************************************************************
* HEADER FILES
*****************************************************************************/
-
#include "inc/utils/ocmp_util.h"
/*****************************************************************************
@@ -30,7 +29,7 @@ OCMPMessageFrame * OCMP_mallocFrame(uint16_t len)
pMsg = (OCMPMessageFrame *)malloc(sizeof(OCMPMessageFrame)+len);
if (pMsg != NULL) {
// Assign Data Length of Frame
- pMsg->header.ocmp_frameLen = len;
+ pMsg->header.ocmpFrameLen = len;
// Assign pData to first byte of payload
// Pointer arithmetic of + 1 is equal to sizeof(OCMPMessageFrame) bytes
// then cast to unsigned char * for pData
@@ -68,9 +67,9 @@ OCMPMessageFrame* create_ocmp_msg_frame(OCMPSubsystem subSystem,
if (ocmp_msg) {
*ocmp_msg = (OCMPMessageFrame){
.header = {
- .ocmp_sof = OCMP_MSG_SOF,
- .ocmp_interface = OCMP_COMM_IFACE_USB,
- .ocmp_frameLen = payloadSize,
+ .ocmpSof = OCMP_MSG_SOF,
+ .ocmpInterface = OCMP_COMM_IFACE_USB,
+ .ocmpFrameLen = payloadSize,
//.ocmp_seqNumber = 0x00;
//.ocmp_timestamp = 0x00; //Get RTC TimeStamp
},
diff --git a/firmware/ec/src/utils/util.c b/firmware/ec/src/utils/util.c
index 1b13e4c31f..e94482af90 100644
--- a/firmware/ec/src/utils/util.c
+++ b/firmware/ec/src/utils/util.c
@@ -39,13 +39,14 @@
/*********************************************************************
* INCLUDES
*/
-#include
+#include "inc/utils/util.h"
+
#include
#include
#include
-#include
-#include
+#include
+#include
/*********************************************************************
* TYPEDEFS
diff --git a/firmware/ec/targetConfigs/Tiva TM4C1294NCPDT.ccxml b/firmware/ec/targetConfigs/Tiva TM4C1294NCPDT.ccxml
deleted file mode 100644
index 72cd1da69c..0000000000
--- a/firmware/ec/targetConfigs/Tiva TM4C1294NCPDT.ccxml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/firmware/ec/targetConfigs/readme.txt b/firmware/ec/targetConfigs/readme.txt
deleted file mode 100644
index af97b62d51..0000000000
--- a/firmware/ec/targetConfigs/readme.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-The 'targetConfigs' folder contains target-configuration (.ccxml) files, automatically generated based
-on the device and connection settings specified in your project on the Properties > General page.
-
-Please note that in automatic target-configuration management, changes to the project's device and/or
-connection settings will either modify an existing or generate a new target-configuration file. Thus,
-if you manually edit these auto-generated files, you may need to re-apply your changes. Alternatively,
-you may create your own target-configuration file for this project and manage it manually. You can
-always switch back to automatic target-configuration management by checking the "Manage the project's
-target-configuration automatically" checkbox on the project's Properties > General page.
\ No newline at end of file
diff --git a/firmware/ec/test/Makefile b/firmware/ec/test/Makefile
index 7aa94e0fd4..3e61968f41 100644
--- a/firmware/ec/test/Makefile
+++ b/firmware/ec/test/Makefile
@@ -4,8 +4,8 @@
# [Released under MIT License. Please refer to license.txt for details]
# ==========================================
-UNITY_ROOT = /Users/kashi/work/tools/Unity
-OCWARE_ROOT = ..
+UNITY_ROOT ?= ../../../../../Unity
+OCWARE_ROOT ?= ..
PATHT = suites/
PATHB = build/
@@ -33,7 +33,7 @@ CFLAGS += -Wno-unknown-pragmas
CFLAGS += -Wstrict-prototypes
CFLAGS += -Wundef
CFLAGS += -Wold-style-definition
-CFLAGS += -DTEST
+CFLAGS += -DTEST -DUT_POST -DUT_FRAMEWORK
CFLAGS += -g
CFLAGS += -Dxdc_target_types__="xdc_target_posix.h"
@@ -65,9 +65,9 @@ ifeq ($(OS),Windows_NT)
MKDIR = mkdir -p
endif
else
- DIR_XDC=/Users/kashi/work/tools/tirtos/xdctools_3_32_00_06_core/packages/
- DIR_SYSBIOS=/Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14//products/bios_6_45_02_31/packages/
- DIR_TIDRIVERS=/Users/kashi/work/tools/tirtos/tirtos_tivac_2_16_01_14/products/tidrivers_tivac_2_16_01_13/packages/
+ DIR_XDC ?= $(HOME)/ti/xdctools_3_32_00_06_core/packages/
+ DIR_SYSBIOS ?= $(HOME)/ti/tirtos_tivac_2_16_01_14/products/bios_6_45_02_31/packages/
+ DIR_TIDRIVERS ?= $(HOME)/ti/tirtos_tivac_2_16_01_14/products/tidrivers_tivac_2_16_01_13/packages/
CLEANUP = rm -f
MKDIR = mkdir -p
@@ -92,7 +92,7 @@ TEST_PCA9557_SRC=$(OCWARE_ROOT)/src/Devices/pca9557.c $(OCWARE_ROOT)/src/Devices
$(PATHB)Test_pca9557$(TARGET_EXTENSION): $(STD_FILES) $(TEST_PCA9557_SRC)
$(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -o $@
-TEST_SE98A_SRC=$(OCWARE_ROOT)/src/Devices/se98a.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c stub/stub_GateMutex.c
+TEST_SE98A_SRC=$(OCWARE_ROOT)/src/Devices/se98a.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c stub/stub_GateMutex.c $(OCWARE_ROOT)/src/post/post_util.c
$(PATHB)Test_se98a$(TARGET_EXTENSION): $(STD_FILES) $(TEST_SE98A_SRC)
$(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -lm -o $@
@@ -100,7 +100,7 @@ TEST_GpioPCA9557_SRC=$(OCWARE_ROOT)/src/Devices/pca9557.c $(OCWARE_ROOT)/src/Dev
$(PATHB)Test_GpioPCA9557$(TARGET_EXTENSION): $(STD_FILES) $(TEST_GpioPCA9557_SRC)
$(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -o $@
-TEST_INA226_SRC=$(OCWARE_ROOT)/src/Devices/ina226.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c
+TEST_INA226_SRC=$(OCWARE_ROOT)/src/Devices/ina226.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c $(OCWARE_ROOT)/src/post/post_util.c
$(PATHB)Test_ina226$(TARGET_EXTENSION): $(STD_FILES) $(TEST_INA226_SRC)
$(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -o $@
@@ -112,9 +112,37 @@ TEST_GpioSX1509_SRC=$(OCWARE_ROOT)/src/Devices/sx1509.c $(OCWARE_ROOT)/src/Devic
$(PATHB)Test_GpioSX1509$(TARGET_EXTENSION): $(STD_FILES) $(TEST_GpioSX1509_SRC)
$(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -o $@
-TEST_LTC4015_SRC=$(OCWARE_ROOT)/src/Devices/ltc4015.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c
+TEST_LTC4015_SRC=$(OCWARE_ROOT)/src/Devices/ltc4015.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c $(OCWARE_ROOT)/src/post/post_util.c
$(PATHB)Test_ltc4015$(TARGET_EXTENSION): $(STD_FILES) $(TEST_LTC4015_SRC)
$(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -lm -o $@
+
+TEST_powerSource_SRC=$(OCWARE_ROOT)/src/Devices/powerSource.c $(OCWARE_ROOT)/src/drivers/GpioSX1509.c $(OCWARE_ROOT)/src/Devices/sx1509.c $(OCWARE_ROOT)/src/helpers/memory.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c stub/stub_GateMutex.c
+$(PATHB)Test_powerSource$(TARGET_EXTENSION): $(STD_FILES) $(TEST_powerSource_SRC)
+ $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -lm -o $@
+
+TEST_EEPROM_SRC=$(OCWARE_ROOT)/src/Devices/eeprom.c $(OCWARE_ROOT)/src/drivers/GpioSX1509.c $(OCWARE_ROOT)/src/Devices/sx1509.c $(OCWARE_ROOT)/src/helpers/memory.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c stub/stub_GateMutex.c
+$(PATHB)Test_eeprom$(TARGET_EXTENSION): $(STD_FILES) $(TEST_EEPROM_SRC)
+ $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -lm -o $@
+
+TEST_LTC4275_SRC=$(OCWARE_ROOT)/src/Devices/ltc4275.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c stub/stub_GateMutex.c
+$(PATHB)Test_ltc4275$(TARGET_EXTENSION): $(STD_FILES) $(TEST_LTC4275_SRC)
+ $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -lm -o $@
+
+TEST_OCMP_ADT7481_SRC=$(OCWARE_ROOT)/src/devices/ocmp_wrappers/ocmp_adt7481.c $(OCWARE_ROOT)/src/Devices/adt7481.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c stub/stub_GateMutex.c $(OCWARE_ROOT)/src/post/post_util.c
+$(PATHB)Test_ocmp_adt7481$(TARGET_EXTENSION): $(STD_FILES) $(TEST_OCMP_ADT7481_SRC)
+ $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -lm -o $@
+
+TEST_OCMP_LTC4274_SRC=$(OCWARE_ROOT)/src/devices/ocmp_wrappers/ocmp_ltc4274.c $(OCWARE_ROOT)/src/Devices/ltc4274.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c stub/stub_GateMutex.c $(OCWARE_ROOT)/src/post/post_util.c
+$(PATHB)Test_ocmp_ltc4274$(TARGET_EXTENSION): $(STD_FILES) $(TEST_OCMP_LTC4274_SRC)
+ $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -lm -o $@
+
+TEST_PINGROUP_SRC=$(OCWARE_ROOT)/src/drivers/PinGroup.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_I2C.c fake/fake_ThreadedISR.c $(OCWARE_ROOT)/src/helpers/memory.c stub/stub_GateMutex.c $(OCWARE_ROOT)/src/drivers/GpioPCA9557.c $(OCWARE_ROOT)/src/Devices/pca9557.c
+$(PATHB)Test_PinGroup_driver$(TARGET_EXTENSION): $(STD_FILES) $(TEST_PINGROUP_SRC)
+ $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -o $@
+
+TEST_OCGPIO_SRC=$(OCWARE_ROOT)/src/drivers/OcGpio.c $(OCWARE_ROOT)/src/Devices/i2cbus.c fake/fake_I2C.c fake/fake_GPIO.c fake/fake_ThreadedISR.c $(OCWARE_ROOT)/src/helpers/memory.c stub/stub_GateMutex.c
+$(PATHB)Test_OcGpio$(TARGET_EXTENSION): $(STD_FILES) $(TEST_OCGPIO_SRC)
+ $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -o $@
# Dummy target to allow us to force rebuild of testresults every time
FORCE:
diff --git a/firmware/ec/test/fake/fake_GPIO.c b/firmware/ec/test/fake/fake_GPIO.c
index 4c2f3303df..7175d1282c 100644
--- a/firmware/ec/test/fake/fake_GPIO.c
+++ b/firmware/ec/test/fake/fake_GPIO.c
@@ -12,6 +12,19 @@
#include
+static bool *FakeGpio_reg;
+static uint32_t *FakeGpio_cfg_reg;
+
+void FakeGpio_registerDevSimple(void *GpioPins, void *GpioConfig) {
+ if (GpioPins) {
+ FakeGpio_reg = GpioPins;
+ }
+ if (GpioConfig) {
+ FakeGpio_cfg_reg = GpioConfig;
+ }
+ return;
+}
+
static int FakeGpio_init(const OcGpio_Port *port) {
FakeGpio_Obj *obj = port->object_data;
*obj = (FakeGpio_Obj){};
@@ -19,19 +32,27 @@ static int FakeGpio_init(const OcGpio_Port *port) {
}
static int FakeGpio_write(const OcGpio_Pin *pin, bool value) {
- UNUSED(pin);
- UNUSED(value);
+ uint16_t final_pin=pin->idx;
+ if (pin->hw_cfg & OCGPIO_CFG_INVERT) {
+ value = !value;
+ }
+ FakeGpio_reg[final_pin] = value;
return OCGPIO_SUCCESS;
}
static int FakeGpio_read(const OcGpio_Pin *pin) {
- UNUSED(pin);
- return 0;
+ bool chk =0;
+ uint16_t final_pin=pin->idx;
+ chk = FakeGpio_reg[final_pin];
+ if (pin->hw_cfg & OCGPIO_CFG_INVERT) {
+ chk = !chk;
+ }
+ return chk;
}
static int FakeGpio_configure(const OcGpio_Pin *pin, uint32_t cfg) {
- UNUSED(pin);
- UNUSED(cfg);
+ uint16_t final_pin=pin->idx;
+ FakeGpio_cfg_reg[final_pin] = cfg;
return OCGPIO_SUCCESS;
}
diff --git a/firmware/ec/test/suites/Doc/TestCaseList.xlsx b/firmware/ec/test/suites/Doc/TestCaseList.xlsx
new file mode 100644
index 0000000000..f15c78f0eb
Binary files /dev/null and b/firmware/ec/test/suites/Doc/TestCaseList.xlsx differ
diff --git a/firmware/ec/test/suites/Test_OcGpio.c b/firmware/ec/test/suites/Test_OcGpio.c
new file mode 100644
index 0000000000..4bc7786b30
--- /dev/null
+++ b/firmware/ec/test/suites/Test_OcGpio.c
@@ -0,0 +1,69 @@
+#include "fake/fake_GPIO.h"
+#include "helpers/array.h"
+#include "helpers/attribute.h"
+#include
+#include "unity.h"
+
+/* ======================== Constants & variables =========================== */
+
+static OcGpio_Port s_fake_io_port = {
+ .fn_table = &FakeGpio_fnTable,
+ .object_data = &(FakeGpio_Obj){},
+};
+
+static bool OcGpio_GpioPins[] = {
+ [0x01] = 0x1, /* Pin = 1 */
+ [0x02] = 0x1, /* Pin = 2 */
+};
+
+static uint32_t OcGpio_GpioConfig[] = {
+ [0x01] = OCGPIO_CFG_INPUT,
+ [0x02] = OCGPIO_CFG_INPUT,
+};
+
+static OcGpio_Pin s_fake_pin = {
+ .port = &s_fake_io_port,
+ .idx = 1,
+};
+/* ============================= Boilerplate ================================ */
+void suite_setUp(void)
+{
+ FakeGpio_registerDevSimple(OcGpio_GpioPins, OcGpio_GpioConfig);
+}
+
+void setUp(void)
+{
+}
+
+void tearDown(void)
+{
+}
+
+void suite_tearDown(void)
+{
+}
+
+void test_ocgpio_init()
+{
+ TEST_ASSERT_EQUAL(OCGPIO_SUCCESS, OcGpio_init(&s_fake_io_port));
+}
+
+void test_ocgpio_read()
+{
+ OcGpio_GpioPins[1] = 1;
+ TEST_ASSERT_EQUAL(1, OcGpio_read(&s_fake_pin));
+}
+
+void test_ocgpio_write()
+{
+ OcGpio_GpioPins[1] = 1;
+ TEST_ASSERT_EQUAL(OCGPIO_SUCCESS, OcGpio_write(&s_fake_pin, 0));
+ TEST_ASSERT_EQUAL(0, OcGpio_GpioPins[1]);
+}
+
+void test_ocgpio_configure()
+{
+ OcGpio_GpioPins[1] = 1;
+ TEST_ASSERT_EQUAL(OCGPIO_SUCCESS, OcGpio_configure(&s_fake_pin, 8));
+ TEST_ASSERT_EQUAL(8, OcGpio_GpioConfig[1]);
+}
\ No newline at end of file
diff --git a/firmware/ec/test/suites/Test_PinGroup_driver.c b/firmware/ec/test/suites/Test_PinGroup_driver.c
new file mode 100644
index 0000000000..74ba62e64a
--- /dev/null
+++ b/firmware/ec/test/suites/Test_PinGroup_driver.c
@@ -0,0 +1,128 @@
+#include "drivers/PinGroup.h"
+#include "drivers/GpioPCA9557.h"
+#include "fake/fake_I2C.h"
+#include "fake/fake_GPIO.h"
+#include "inc/devices/dat-xxr5a-pp.h"
+#include "inc/subsystem/rffe/rffe_ctrl.h"
+#include "helpers/array.h"
+#include "helpers/attribute.h"
+#include "common/inc/global/OC_CONNECT1.h"
+#include
+#include "unity.h"
+
+/* ======================== Constants & variables =========================== */
+#define I2C_BUS 2
+#define I2C_ADDR 0x18
+static uint8_t PCA9557_regs[] = {
+ [0x00] = 0x00, /* Input values */
+ [0x01] = 0x00, /* Output values */
+ [0x02] = 0x00, /* Polarity */
+ [0x03] = 0x00, /* Dir Config */
+};
+static const I2C_Dev pca9557_dev = {
+ .bus = 2,
+ .slave_addr = 0x24,
+};
+OcGpio_Port fe_ch1_gain_io = {
+ .fn_table = &GpioPCA9557_fnTable,
+ .cfg = &(PCA9557_Cfg) {
+ .i2c_dev = { OC_CONNECT1_I2C2, RFFE_CHANNEL1_IO_TX_ATTEN_ADDR },
+ },
+ .object_data = &(PCA9557_Obj){},
+};
+
+Fe_Gain_Cfg fe_ch1_gain = {
+ /* CH1_TX_ATTN_16DB */
+ .pin_tx_attn_16db = { &fe_ch1_gain_io, 1 },
+ /* CH1_TX_ATTN_P5DB */
+ .pin_tx_attn_p5db = { &fe_ch1_gain_io, 2 },
+ /* CH1_TX_ATTN_1DB */
+ .pin_tx_attn_1db = { &fe_ch1_gain_io, 3 },
+ /* CH1_TX_ATTN_2DB */
+ .pin_tx_attn_2db = { &fe_ch1_gain_io, 4 },
+ /* CH1_TX_ATTN_4DB */
+ .pin_tx_attn_4db = { &fe_ch1_gain_io, 5 },
+ /* CH1_TX_ATTN_8DB */
+ .pin_tx_attn_8db = { &fe_ch1_gain_io, 6 },
+ /* CH1_TX_ATTN_ENB */
+ .pin_tx_attn_enb = { &fe_ch1_gain_io, 7 },
+};
+
+const DATR5APP_Cfg *cfg_1 = (DATR5APP_Cfg *)&fe_ch1_gain;
+
+
+/* ============================= Boilerplate ================================ */
+void suite_setUp(void)
+{
+ fake_I2C_init();
+ fake_I2C_registerDevSimple(I2C_BUS, I2C_ADDR, PCA9557_regs,
+ sizeof(PCA9557_regs), sizeof(PCA9557_regs[0]),
+ sizeof(uint8_t), FAKE_I2C_DEV_LITTLE_ENDIAN);
+}
+
+void setUp(void)
+{
+ memset(PCA9557_regs, 0, sizeof(PCA9557_regs));
+}
+
+void tearDown(void)
+{
+}
+
+void suite_tearDown(void)
+{
+ fake_I2C_deinit(); /* This will automatically unregister devices */
+}
+
+
+void test_PinGroup_configure(void)
+{
+ PinGroup pin_group = {
+ .num_pin = 6, /* DATR5APP_PIN_COUNT */
+ .pins = cfg_1->pin_group
+ };
+
+ PCA9557_regs[0] = 0xFF; /* Input values */
+ PCA9557_regs[1] = 0xFF; /* Output values */
+ PCA9557_regs[2] = 0xFF; /* Polarity */
+ PCA9557_regs[3] = 0xFF; /* Dir Config */
+
+ TEST_ASSERT_EQUAL(RETURN_OK, PinGroup_configure(&pin_group,
+ OCGPIO_CFG_OUTPUT | OCGPIO_CFG_OUT_HIGH));
+
+ TEST_ASSERT_EQUAL_HEX8(0x7E, PCA9557_regs[0x01]);
+ TEST_ASSERT_EQUAL_HEX8(0x00, PCA9557_regs[0x02]);
+ TEST_ASSERT_EQUAL_HEX8(0x00, PCA9557_regs[0x03]);
+
+}
+
+void test_PinGroup_read(void)
+{
+ PinGroup pin_group = {
+ .num_pin = 6, /* DATR5APP_PIN_COUNT */
+ .pins = cfg_1->pin_group
+ };
+ uint8_t value = 0x00;
+
+ TEST_ASSERT_EQUAL(RETURN_OK, PinGroup_read(&pin_group, &value));
+ TEST_ASSERT_EQUAL_HEX8(0x3F, value);
+}
+
+void test_PinGroup_write(void)
+{
+ PinGroup pin_group = {
+ .num_pin = 6, /* DATR5APP_PIN_COUNT */
+ .pins = cfg_1->pin_group
+ };
+
+ PCA9557_regs[0] = 0xFF; /* Input values */
+ PCA9557_regs[1] = 0xFF; /* Output values */
+ PCA9557_regs[2] = 0xFF; /* Polarity */
+ PCA9557_regs[3] = 0xFF; /* Dir Config */
+
+ TEST_ASSERT_EQUAL(RETURN_OK, PinGroup_write(&pin_group, 1));
+ TEST_ASSERT_EQUAL_HEX8(0xFF, PCA9557_regs[0x00]);
+ TEST_ASSERT_EQUAL_HEX8(0x04, PCA9557_regs[0x01]);
+ TEST_ASSERT_EQUAL_HEX8(0xFF, PCA9557_regs[0x02]);
+ TEST_ASSERT_EQUAL_HEX8(0xFF, PCA9557_regs[0x03]);
+}
\ No newline at end of file
diff --git a/firmware/ec/test/suites/Test_eeprom.c b/firmware/ec/test/suites/Test_eeprom.c
new file mode 100644
index 0000000000..9ea89d5c72
--- /dev/null
+++ b/firmware/ec/test/suites/Test_eeprom.c
@@ -0,0 +1,471 @@
+#include "unity.h"
+#include "inc/devices/eeprom.h"
+#include "drivers/GpioSX1509.h"
+#include
+#include
+#include "fake/fake_GPIO.h"
+#include "fake/fake_I2C.h"
+#include "fake/fake_ThreadedISR.h"
+#include "helpers/attribute.h"
+#include "helpers/memory.h"
+#include "drivers/OcGpio.h"
+#include "helpers/array.h"
+#include
+
+/* ============================= Fake Functions ============================= */
+
+#include
+unsigned int s_task_sleep_ticks;
+xdc_Void ti_sysbios_knl_Task_sleep__E( xdc_UInt32 nticks )
+{
+ s_task_sleep_ticks += nticks;
+}
+
+/* ======================== Constants & variables =========================== */
+
+static OcGpio_Port s_fake_io_port = {
+ .fn_table = &FakeGpio_fnTable,
+ .object_data = &(FakeGpio_Obj){},
+};
+
+static const I2C_Dev I2C_DEV = {
+ .bus = 6,
+ .slave_addr = 0x50,
+};
+static const I2C_Dev I2C_DEV_1 = {
+ .bus = 6,
+ .slave_addr = 0x51,
+};
+static Eeprom_Cfg s_dev = {
+ .i2c_dev = {
+ .bus = 6,
+ .slave_addr = 0x50,
+ },
+};
+
+static Eeprom_Cfg s_invalid_dev = {
+ .i2c_dev = {
+ .bus = 6,
+ .slave_addr = 0xFF,
+ },
+};
+
+static uint16_t EEPROM_regs[] = {
+ [0x00] = 0x00, /* Init */
+ [0xC601] = 0x00, /* SERIAL INFO */
+ [0xAC01] = 0x00, /* BOARD INFO */
+ [0x0A01] = 0x00, /* DEVICE INFO */
+ [0x0A02] = 0x00, /* DEVICE INFO */
+
+};
+
+static uint8_t SX1509_regs[] = {
+ [0x00] = 0x00, /* Input buffer disable register B */
+ [0x01] = 0x00, /* Input buffer disable register A */
+ [0x02] = 0x00, /* Output buffer long slew register B */
+ [0x03] = 0x00, /* Output buffer long slew register A */
+ [0x04] = 0x00, /* Output buffer low drive register B */
+ [0x05] = 0x00, /* Output buffer low drive register A */
+ [0x06] = 0x00, /* Pull Up register B */
+ [0x07] = 0x00, /* Pull Up register A */
+ [0x08] = 0x00, /* Pull Down register B */
+ [0x09] = 0x00, /* Pull Down register A */
+ [0x0A] = 0x00, /* Open drain register B */
+ [0x0B] = 0x00, /* Open drain register A */
+ [0x0C] = 0x00, /* Polarity register B */
+ [0x0D] = 0x00, /* Polarity register A */
+ [0x0E] = 0x00, /* Direction register B */
+ [0x0F] = 0x00, /* Direction register A */
+ [0x10] = 0x00, /* Data register B */
+ [0x11] = 0x00, /* Data register A */
+ [0x12] = 0x00, /* Interrupt mask register B */
+ [0x13] = 0x00, /* Interrupt mask register A */
+ [0x14] = 0x00, /* Sense High register B */
+ [0x15] = 0x00, /* Sense Low register B */
+ [0x16] = 0x00, /* Sense High register A */
+ [0x17] = 0x00, /* Sense Low register A */
+ [0x18] = 0x00, /* Interrupt source register B */
+ [0x19] = 0x00, /* Interrupt source register A */
+ [0x1A] = 0x00, /* Event status register B */
+ [0x1B] = 0x00, /* Event status register A */
+ [0x1C] = 0x00, /* Level shifter register 1 */
+ [0x1D] = 0x00, /* Level shifter register 2 */
+ [0x1E] = 0x00, /* Clock management register */
+ [0x1F] = 0x00, /* Miscellaneous device settings register */
+ [0x20] = 0x00, /* LED driver enable register B */
+ [0x21] = 0x00, /* LED driver enable register A */
+ [0x22] = 0x00, /* Debounce configuration register */
+ [0x23] = 0x00, /* Debounce enable register B */
+ [0x24] = 0x00, /* Debounce enable register A */
+ [0x25] = 0x00, /* Key scan configuration register 1 */
+ [0x26] = 0x00, /* Key scan configuration register 2 */
+ [0x27] = 0x00, /* Key value (column) 1 */
+ [0x28] = 0x00, /* Key value (row) 2 */
+ [0x29] = 0x00, /* ON time register I/O[0] */
+ [0x2A] = 0x00, /* ON intensity register I/O[0] */
+ [0x2B] = 0x00, /* OFF time/intensity register I/O[0] */
+ [0x2C] = 0x00, /* ON time register I/O[1] */
+ [0x2D] = 0x00, /* ON intensity register I/O[1] */
+ [0x2E] = 0x00, /* OFF time/intensity register I/O[1] */
+ [0x2F] = 0x00, /* ON time register I/O[2] */
+ [0x30] = 0x00, /* ON intensity register I/O[2] */
+ [0x31] = 0x00, /* OFF time/intensity register I/O[2] */
+ [0x32] = 0x00, /* ON time register I/O[3] */
+ [0x33] = 0x00, /* ON intensity register I/O[3] */
+ [0x34] = 0x00, /* OFF time/intensity register I/O[3] */
+ [0x35] = 0x00, /* ON time register I/O[4] */
+ [0x36] = 0x00, /* ON intensity register I/O[4] */
+ [0x37] = 0x00, /* OFF time/intensity register I/O[4] */
+ [0x38] = 0x00, /* Fade in register I/O[4] */
+ [0x39] = 0x00, /* Fade out register I/O[4] */
+ [0x3A] = 0x00, /* ON time register I/O[5] */
+ [0x3B] = 0x00, /* ON intensity register I/O[5] */
+ [0x3C] = 0x00, /* OFF time/intensity register I/O[5] */
+ [0x3D] = 0x00, /* Fade in register I/O[5] */
+ [0x3E] = 0x00, /* Fade out register I/O[5] */
+ [0x3F] = 0x00, /* ON time register I/O[6] */
+ [0x40] = 0x00, /* ON intensity register I/O[6] */
+ [0x41] = 0x00, /* OFF time/intensity register I/O[6] */
+ [0x42] = 0x00, /* Fade in register I/O[6] */
+ [0x43] = 0x00, /* Fade out register I/O[6] */
+ [0x44] = 0x00, /* ON time register I/O[6] */
+ [0x45] = 0x00, /* ON intensity register I/O[7] */
+ [0x46] = 0x00, /* OFF time/intensity register I/O[7] */
+ [0x47] = 0x00, /* Fade in register I/O[7] */
+ [0x48] = 0x00, /* Fade out register I/O[7] */
+ [0x49] = 0x00, /* ON time register I/O[8] */
+ [0x4A] = 0x00, /* ON intensity register I/O[8] */
+ [0x4B] = 0x00, /* OFF time/intensity register I/O[8] */
+ [0x4C] = 0x00, /* ON time register I/O[9] */
+ [0x4D] = 0x00, /* ON intensity register I/O[9] */
+ [0x4E] = 0x00, /* OFF time/intensity register I/O[9] */
+ [0x4F] = 0x00, /* ON time register I/O[10] */
+ [0x50] = 0x00, /* ON intensity register I/O[10] */
+ [0x51] = 0x00, /* OFF time/intensity register I/O[10] */
+ [0x52] = 0x00, /* ON time register I/O[11] */
+ [0x53] = 0x00, /* ON intensity register I/O[11] */
+ [0x54] = 0x00, /* OFF time/intensity register I/O[11] */
+ [0x55] = 0x00, /* ON time register I/O[12] */
+ [0x56] = 0x00, /* ON intensity register I/O[12] */
+ [0x57] = 0x00, /* OFF time/intensity register I/O[12] */
+ [0x58] = 0x00, /* Fade in register I/O[12] */
+ [0x59] = 0x00, /* Fade out register I/O[12] */
+ [0x5A] = 0x00, /* ON time register I/O[13] */
+ [0x5B] = 0x00, /* ON intensity register I/O[13] */
+ [0x5C] = 0x00, /* OFF time/intensity register I/O[13] */
+ [0x5D] = 0x00, /* Fade in register I/O[13] */
+ [0x5E] = 0x00, /* Fade out register I/O[13] */
+ [0x5F] = 0x00, /* ON time register I/O[14] */
+ [0x60] = 0x00, /* ON intensity register I/O[14] */
+ [0x61] = 0x00, /* OFF time/intensity register I/O[14] */
+ [0x62] = 0x00, /* Fade in register I/O[14] */
+ [0x63] = 0x00, /* Fade out register I/O[14] */
+ [0x64] = 0x00, /* ON time register I/O[15] */
+ [0x65] = 0x00, /* ON intensity register I/O[15] */
+ [0x66] = 0x00, /* OFF time/intensity register I/O[15] */
+ [0x67] = 0x00, /* Fade in register I/O[115] */
+ [0x68] = 0x00, /* Fade out register I/O[15] */
+ [0x69] = 0x00, /* */
+ [0x6A] = 0x00, /* */
+ [0x7D] = 0x00, /* */
+ [0x7E] = 0x00, /* */
+ [0x7F] = 0x00, /* */
+};
+
+static bool Eeprom_GpioPins[] = {
+ [0x01] = 0x1, /* Pin = 1 */
+ [0x02] = 0x1, /* Pin = 2 */
+};
+
+static uint32_t Eeprom_GpioConfig[] = {
+ [0x01] = OCGPIO_CFG_INPUT,
+ [0x02] = OCGPIO_CFG_INPUT,
+};
+
+extern const OcGpio_FnTable GpioSX1509_fnTable;
+
+OcGpio_Port s_fake_io_exp = {
+ .fn_table = &GpioSX1509_fnTable,
+ .cfg = &(SX1509_Cfg) {
+ .i2c_dev = { 6, 0x45 },
+ .pin_irq = NULL,
+ },
+ .object_data = &(SX1509_Obj){},
+};
+
+OcGpio_Pin pin_inven_eeprom_wp = { &s_fake_io_exp, 2, 32 };
+
+Eeprom_Cfg eeprom_gbc_sid = {
+ .i2c_dev = { 6, 0x51 },
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 5 },
+ .type = NULL,
+ .ss = 0,
+};
+
+Eeprom_Cfg eeprom_gbc_inv = {
+ .i2c_dev = { 6, 0x50 },
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 5 },
+ .type = NULL,
+ .ss = 0,
+};
+
+Eeprom_Cfg eeprom_sdr_inv = {
+ .i2c_dev = { 3, 0x50 },
+ .pin_wp = NULL,
+ .type = NULL,
+ .ss = 0,
+};
+
+Eeprom_Cfg eeprom_fe_inv = {
+ .i2c_dev = { 4, 0x50 },
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 5 },
+ .type = NULL,
+ .ss = 8,
+};
+
+/* ============================= Boilerplate ================================ */
+void EEPROM_init(Eeprom_Cfg *s_dev)
+{
+ int8_t ret = 0;
+}
+
+void suite_setUp(void)
+{
+ fake_I2C_init();
+
+ FakeGpio_registerDevSimple(Eeprom_GpioPins, Eeprom_GpioConfig);
+
+ fake_I2C_registerDevSimple(I2C_DEV.bus, I2C_DEV.slave_addr, EEPROM_regs,
+ sizeof(EEPROM_regs), sizeof(EEPROM_regs[0]),
+ sizeof(uint16_t), FAKE_I2C_DEV_LITTLE_ENDIAN);
+ fake_I2C_registerDevSimple(I2C_DEV_1.bus, I2C_DEV_1.slave_addr, EEPROM_regs,
+ sizeof(EEPROM_regs), sizeof(EEPROM_regs[0]),
+ sizeof(uint16_t), FAKE_I2C_DEV_LITTLE_ENDIAN);
+ fake_I2C_registerDevSimple(6, 0x45, SX1509_regs,
+ sizeof(SX1509_regs), sizeof(SX1509_regs[0]),
+ sizeof(uint8_t), FAKE_I2C_DEV_LITTLE_ENDIAN);
+}
+
+void setUp(void)
+{
+ memset(EEPROM_regs, 0, sizeof(EEPROM_regs));
+
+ OcGpio_init(&s_fake_io_port);
+
+ OcGpio_init(&s_fake_io_exp);
+
+ EEPROM_init(&s_dev);
+}
+
+void tearDown(void)
+{
+}
+
+void suite_tearDown(void)
+{
+ fake_I2C_deinit(); /* This will automatically unregister devices */
+}
+
+/* ================================ Tests =================================== */
+void test_eeprom_init(void)
+{
+ Eeprom_Cfg e_dev = {
+ .i2c_dev = s_dev.i2c_dev,
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 2 },
+ };
+
+ EEPROM_regs[0x00] = 0x0505;
+ Eeprom_GpioConfig[0x02] = OCGPIO_CFG_OUT_HIGH;
+
+ eeprom_init(&e_dev);
+ TEST_ASSERT_EQUAL(1, eeprom_init(&e_dev));
+ TEST_ASSERT_EQUAL(OCGPIO_CFG_OUTPUT | OCGPIO_CFG_OUT_HIGH, Eeprom_GpioConfig[0x02]);
+
+}
+
+void test_eeprom_read(void)
+{
+ uint16_t buffer;
+ EEPROM_regs[0xC601] = 0x0505;
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_read(&s_dev, 0x01C6, &buffer,sizeof(buffer)));
+ TEST_ASSERT_EQUAL_HEX8(0x0505, buffer);
+}
+
+void test_eeprom_write(void)
+{
+ Eeprom_Cfg p_dev = {
+ .i2c_dev = { 6, 0x50 },
+ .pin_wp = NULL,
+ .type = { .page_size = 64, .mem_size = (256 / 8) },
+ .ss = 0,
+ };
+
+ uint16_t buffer = 0x0505;
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_write(&p_dev, 0x01C6, &buffer,0x0A));
+ TEST_ASSERT_EQUAL_HEX8(0x0505, EEPROM_regs[0xC601]);
+
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_write(&p_dev, 0x01C6, &buffer, 0xCA));
+ TEST_ASSERT_EQUAL_HEX8(0x05, EEPROM_regs[0xC601]);
+}
+
+void test_eeprom_disable_write(void)
+{
+ SX1509_regs[0x10] = 0x01;
+ SX1509_regs[0x11] = 0x01;
+
+ Eeprom_Cfg i_dev = {
+ .i2c_dev = { 6, 0x45 },
+ .pin_wp = &pin_inven_eeprom_wp,
+ .type = NULL,
+ .ss = 0,
+ };
+
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_disable_write(&i_dev));
+ TEST_ASSERT_EQUAL(0xFF, SX1509_regs[0x11]);
+}
+
+void test_eeprom_enable_write(void)
+{
+ SX1509_regs[0x10] = 0x00;
+ SX1509_regs[0x11] = 0x00;
+
+ Eeprom_Cfg i_dev = {
+ .i2c_dev = { 6, 0x45 },
+ .pin_wp = &pin_inven_eeprom_wp,
+ .type = NULL,
+ .ss = 0,
+ };
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_enable_write(&i_dev));
+ TEST_ASSERT_EQUAL(0xFB, SX1509_regs[0x11]);
+}
+
+void test_eeprom_read_board_info(void)
+{
+ uint8_t rominfo=0xff;
+ EEPROM_regs[0xAC01] = 0x05;
+ Eeprom_Cfg b1_dev = {
+ .i2c_dev = { 6, 0x50 },
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 5 },
+ .type = NULL,
+ .ss = 0,
+ };
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_read_board_info(&b1_dev, &rominfo));
+ TEST_ASSERT_EQUAL_HEX8(0x05, rominfo);
+
+ Eeprom_Cfg b2_dev = {
+ .i2c_dev = { 6, 0x50 },
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 5 },
+ .type = NULL,
+ .ss = 7,
+ };
+ EEPROM_regs[0xAC01] = 0x06;
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_read_board_info(&b2_dev, &rominfo));
+ TEST_ASSERT_EQUAL_HEX8(0x06, rominfo);
+
+ Eeprom_Cfg b3_dev = {
+ .i2c_dev = { 6, 0x50 },
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 5 },
+ .type = NULL,
+ .ss = 8,
+ };
+ EEPROM_regs[0xAC01] = 0x07;
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_read_board_info(&b3_dev, &rominfo));
+ TEST_ASSERT_EQUAL_HEX8(0x07, rominfo);
+
+}
+void test_eeprom_read_oc_info(void)
+{
+ uint8_t ocserial=0x00;
+
+ EEPROM_regs[0xC601] = 0x05;
+
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_read_oc_info(&ocserial));
+
+ TEST_ASSERT_EQUAL(0x05, ocserial);
+}
+
+void test_eeprom_read_device_info_record(void)
+{
+ uint8_t recordno= 1;
+ EEPROM_regs[0x0A01] = 0x4153 ;
+ char *deviceinfo = (char *) malloc(10);
+
+ Eeprom_Cfg c1_dev = {
+ .i2c_dev = { 6, 0x50 },
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 5 },
+ .type = NULL,
+ .ss = 0,
+ };
+ memset(deviceinfo,0,10);
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_read_device_info_record(&c1_dev, recordno, deviceinfo));
+ TEST_ASSERT_EQUAL_STRING("SA", deviceinfo);
+
+ uint8_t recordno1= 1;
+ EEPROM_regs[0x0A01] = 0x4153 ;
+ char *deviceinfo1 = (char *) malloc(10);
+
+ Eeprom_Cfg c2_dev = {
+ .i2c_dev = { 6, 0x50 },
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 5 },
+ .type = NULL,
+ .ss = 7,
+ };
+ memset(deviceinfo1,0,10);
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_read_device_info_record(&c2_dev, recordno1, deviceinfo1));
+ TEST_ASSERT_EQUAL_STRING("SA", deviceinfo1);
+
+ uint8_t recordno2= 1;
+ EEPROM_regs[0x0A01] = 0x4153 ;
+ char *deviceinfo2 = (char *) malloc(10);
+
+ Eeprom_Cfg c3_dev = {
+ .i2c_dev = { 6, 0x50 },
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 5 },
+ .type = NULL,
+ .ss = 8,
+ };
+ memset(deviceinfo2,0,10);
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_read_device_info_record(&c3_dev, recordno2, deviceinfo2));
+ TEST_ASSERT_EQUAL_STRING("SA", deviceinfo2);
+}
+
+void test_eeprom_write_device_info_record(void)
+{
+ uint8_t recordno= 1;
+ char *deviceinfo = (char *) malloc(10);
+ memset(deviceinfo,0,10);
+
+ strcpy(deviceinfo,"SA");
+
+ Eeprom_Cfg d1_dev = {
+ .i2c_dev = { 6, 0x51 },
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 5 },
+ .type = NULL,
+ .ss = 0,
+ };
+
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_write_device_info_record(&d1_dev, recordno, deviceinfo));
+ TEST_ASSERT_EQUAL(0x4153, EEPROM_regs[0x0A01]);
+ strcpy(deviceinfo, "SB");
+
+ Eeprom_Cfg d2_dev = {
+ .i2c_dev = { 6, 0x51 },
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 5 },
+ .type = NULL,
+ .ss = 0,
+ };
+
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_write_device_info_record(&d2_dev, recordno, deviceinfo));
+ TEST_ASSERT_EQUAL(0x4253, EEPROM_regs[0x0A01]);
+
+ strcpy(deviceinfo, "SC");
+ Eeprom_Cfg d3_dev = {
+ .i2c_dev = { 6, 0x51 },
+ .pin_wp = &(OcGpio_Pin){ &s_fake_io_port, 5 },
+ .type = NULL,
+ .ss = 0,
+ };
+
+ TEST_ASSERT_EQUAL(RETURN_OK, eeprom_write_device_info_record(&d3_dev, recordno, deviceinfo));
+ TEST_ASSERT_EQUAL(0x4353, EEPROM_regs[0x0A01]);
+}
diff --git a/firmware/ec/test/suites/Test_ina226.c b/firmware/ec/test/suites/Test_ina226.c
index fe47ad2d63..2ece19f01b 100644
--- a/firmware/ec/test/suites/Test_ina226.c
+++ b/firmware/ec/test/suites/Test_ina226.c
@@ -45,9 +45,17 @@ static uint16_t INA226_regs[] = {
[0xFF] = 0x0000, /* Die Id */
};
+static bool INA226_GpioPins[] = {
+ [0x05] = 0x1,
+};
+
+static uint32_t INA226_GpioConfig[] = {
+ [0x05] = OCGPIO_CFG_INPUT,
+};
/* ============================= Boilerplate ================================ */
void suite_setUp(void)
{
+ FakeGpio_registerDevSimple(INA226_GpioPins, INA226_GpioConfig);
fake_I2C_init();
fake_I2C_registerDevSimple(s_dev.cfg.dev.bus, s_dev.cfg.dev.slave_addr,
@@ -100,7 +108,7 @@ void test_ina226_init(void)
TEST_ASSERT_EQUAL(RETURN_OK, ina226_init(&alerted_dev));
}
-static struct AlertData {
+static struct Test_AlertData {
unsigned int triggered;
INA226_Event evt;
uint16_t val;
@@ -110,7 +118,7 @@ static struct AlertData {
static void _ina226_alert_handler(INA226_Event evt, uint16_t value,
void *context)
{
- s_alert_data = (struct AlertData){
+ s_alert_data = (struct Test_AlertData){
.triggered = s_alert_data.triggered + 1,
.evt = evt,
.val = value,
@@ -157,7 +165,7 @@ static void _test_alert(INA226_Dev *dev, INA226_Event evt,
}
void test_ina226_alerts(void)
{
- s_alert_data = (struct AlertData){};
+ s_alert_data = (struct Test_AlertData){};
/* Create a device with an interrupt pin */
INA226_Dev alerted_dev = {
@@ -189,22 +197,23 @@ void test_ina226_alerts(void)
void test_ina226_probe(void)
{
+ POSTData postData;
/* Test with the actual values */
INA226_regs[0xFF] = 0x2260;
INA226_regs[0xFE] = 0x5449;
- TEST_ASSERT_EQUAL(RETURN_OK, ina226_probe(&s_dev));
+ TEST_ASSERT_EQUAL(POST_DEV_FOUND, ina226_probe(&s_dev,&postData));
/* Test with an incorrect device ID */
INA226_regs[0xFF] = 0xC802;
- TEST_ASSERT_EQUAL(POST_DEV_ID_MISMATCH, ina226_probe(&s_dev));
+ TEST_ASSERT_EQUAL(POST_DEV_ID_MISMATCH, ina226_probe(&s_dev,&postData));
/* Test with an incorrect mfg ID */
INA226_regs[0xFF] = 0x2260;
INA226_regs[0xFE] = 0x5DC7;
- TEST_ASSERT_EQUAL(POST_DEV_ID_MISMATCH, ina226_probe(&s_dev));
+ TEST_ASSERT_EQUAL(POST_DEV_ID_MISMATCH, ina226_probe(&s_dev,&postData));
/* Test with a missing device */
- TEST_ASSERT_EQUAL(POST_DEV_MISSING, ina226_probe(&s_invalid_dev));
+ TEST_ASSERT_EQUAL(POST_DEV_MISSING, ina226_probe(&s_invalid_dev,&postData));
}
void test_current_limit(void)
@@ -296,8 +305,9 @@ void test_curr_sens_not_present(void)
{
/* Ensure that we fail properly if the device isn't on the bus */
uint16_t dummy_val;
+ POSTData postData;
TEST_ASSERT_EQUAL(POST_DEV_MISSING,
- ina226_probe(&s_invalid_dev));
+ ina226_probe(&s_invalid_dev,&postData));
TEST_ASSERT_EQUAL(RETURN_NOTOK,
ina226_readCurrentLim(&s_invalid_dev, &dummy_val));
TEST_ASSERT_EQUAL(RETURN_NOTOK,
diff --git a/firmware/ec/test/suites/Test_ltc4015.c b/firmware/ec/test/suites/Test_ltc4015.c
index e1cea0702a..a50901cbeb 100644
--- a/firmware/ec/test/suites/Test_ltc4015.c
+++ b/firmware/ec/test/suites/Test_ltc4015.c
@@ -114,9 +114,17 @@ static uint16_t LTC4015_regs[] = {
[0x4A] = 0x00, /* Measurement valid bit */
};
+static bool LTC4015_GpioPins[] = {
+ [0x05] = 0x1,
+};
+
+static uint32_t LTC4015_GpioConfig[] = {
+ [0x05] = OCGPIO_CFG_INPUT,
+};
/* ============================= Boilerplate ================================ */
void suite_setUp(void)
{
+ FakeGpio_registerDevSimple(LTC4015_GpioPins, LTC4015_GpioConfig);
fake_I2C_init();
fake_I2C_registerDevSimple(I2C_DEV.bus, I2C_DEV.slave_addr, LTC4015_regs,
@@ -158,7 +166,7 @@ void test_ltc4015_init(void)
TEST_ASSERT_EQUAL(RETURN_OK, LTC4015_init(&alerted_dev));
}
-static struct AlertData {
+static struct Test_AlertData {
bool triggered;
LTC4015_Event evt;
int16_t val;
@@ -167,7 +175,7 @@ static struct AlertData {
static void _alert_handler(LTC4015_Event evt, int16_t value, void *context)
{
- s_alert_data = (struct AlertData){
+ s_alert_data = (struct Test_AlertData){
.triggered = true,
.evt = evt,
.val = value,
@@ -205,7 +213,7 @@ static void _test_alert(LTC4015_Dev *dev, LTC4015_Event evt,
void test_LTC4015_alerts(void)
{
- s_alert_data = (struct AlertData){};
+ s_alert_data = (struct Test_AlertData){};
/* Now try to init with a pin associated */
LTC4015_Dev alerted_dev = {
@@ -260,16 +268,17 @@ void test_LTC4015_enableLimitAlerts(void)
void test_LTC4015_probe(void)
{
+ POSTData postData;
/* Test with the actual value */
LTC4015_regs[0x39] = LTC4015_CHARGER_ENABLED;
- TEST_ASSERT_EQUAL(RETURN_OK, LTC4015_probe(&s_dev));
+ TEST_ASSERT_EQUAL(POST_DEV_FOUND, LTC4015_probe(&s_dev,&postData));
/* Test with an incorrect value */
LTC4015_regs[0x39] = ~LTC4015_CHARGER_ENABLED;
- TEST_ASSERT_EQUAL(POST_DEV_MISSING, LTC4015_probe(&s_dev));
+ TEST_ASSERT_EQUAL(POST_DEV_MISSING, LTC4015_probe(&s_dev,&postData));
/* Test with a missing device */
- TEST_ASSERT_EQUAL(POST_DEV_MISSING, LTC4015_probe(&s_invalid_dev));
+ TEST_ASSERT_EQUAL(POST_DEV_MISSING, LTC4015_probe(&s_invalid_dev,&postData));
}
void test_LTC4015_cfg_icharge(void)
diff --git a/firmware/ec/test/suites/Test_ltc4275.c b/firmware/ec/test/suites/Test_ltc4275.c
new file mode 100644
index 0000000000..522a107769
--- /dev/null
+++ b/firmware/ec/test/suites/Test_ltc4275.c
@@ -0,0 +1,156 @@
+#include "unity.h"
+#include "inc/devices/ltc4275.h"
+#include "fake/fake_GPIO.h"
+#include "fake/fake_I2C.h"
+#include "fake/fake_ThreadedISR.h"
+#include
+
+extern tPower_PDStatus_Info PDStatus_Info;
+
+/* ======================== Constants & variables =========================== */
+static uint8_t LTC4275_GpioPins[] = {
+ [0x40] = 0x00, /* OC_EC_PWR_PD_NT2P = 64 */
+ [0x60] = 0x00, /* OC_EC_PD_PWRGD_ALERT = 96*/
+};
+
+static uint32_t LTC4275_GpioConfig[] = {
+ [0x40] = OCGPIO_CFG_INPUT,
+ [0x60] = OCGPIO_CFG_INPUT,
+};
+/* ============================= Fake Functions ============================= */
+#include
+
+unsigned int s_task_sleep_ticks;
+
+xdc_Void ti_sysbios_knl_Task_sleep__E( xdc_UInt32 nticks )
+{
+ s_task_sleep_ticks += nticks;
+}
+
+void test_alert(void)
+{
+}
+
+static void alert_handler(LTC4275_Event evt, void *context)
+{
+
+}
+
+void post_update_POSTData(POSTData *pData, uint8_t I2CBus, uint8_t devAddress, uint16_t manId, uint16_t devId)
+{
+ pData->i2cBus = I2CBus;
+ pData->devAddr = devAddress;
+ pData->manId = manId;
+ pData->devId = devId;
+}
+/* ============================= Boilerplate ================================ */
+static OcGpio_Port s_fake_io_port = {
+ .fn_table = &FakeGpio_fnTable,
+ .object_data = &(FakeGpio_Obj){},
+};
+
+void suite_setUp(void)
+{
+ FakeGpio_registerDevSimple(LTC4275_GpioPins, LTC4275_GpioConfig);
+}
+
+void setUp(void)
+{
+
+}
+
+void tearDown(void)
+{
+}
+
+void suite_tearDown(void)
+{
+}
+
+LTC4275_Dev l_dev = {
+ .cfg = {
+ .pin_evt = &(OcGpio_Pin){ &s_fake_io_port, 0x60 },
+ .pin_detect = &(OcGpio_Pin){ &s_fake_io_port, 0x40 },
+
+ },
+};
+
+
+/* ================================ Tests =================================== */
+void test_ltc4275_init()
+{
+ LTC4275_GpioPins[0x60] = 0;
+ LTC4275_GpioPins[0x40] = 1;
+ LTC4275_GpioConfig[0x60] = OCGPIO_CFG_INPUT;
+
+ TEST_ASSERT_EQUAL(RETURN_OK, ltc4275_init(&l_dev));
+ TEST_ASSERT_EQUAL(0, PDStatus_Info.pdStatus.powerGoodStatus);
+ TEST_ASSERT_EQUAL(OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_BOTH_EDGES, LTC4275_GpioConfig[0x60]);
+}
+
+void test_ltc4275_get_power_good()
+{
+ ePDPowerState val;
+
+ LTC4275_GpioPins[0x60] = 0;
+ TEST_ASSERT_EQUAL(RETURN_OK, ltc4275_get_power_good(&l_dev,&val));
+ TEST_ASSERT_EQUAL(LTC4275_POWERGOOD, val);
+
+ LTC4275_GpioPins[0x60] = 1;
+ TEST_ASSERT_EQUAL(RETURN_OK, ltc4275_get_power_good(&l_dev,&val));
+ TEST_ASSERT_EQUAL(LTC4275_POWERGOOD_NOTOK, val);
+
+}
+
+void test_ltc4275_probe()
+{
+ LTC4275_GpioPins[0x60] = 1;
+ POSTData postData;
+ TEST_ASSERT_EQUAL(1, ltc4275_probe(&l_dev, &postData));
+ TEST_ASSERT_EQUAL(0, PDStatus_Info.pdStatus.classStatus);
+ TEST_ASSERT_EQUAL(1, PDStatus_Info.state);
+ TEST_ASSERT_EQUAL(2, PDStatus_Info.pdalert);
+
+ LTC4275_GpioPins[0x60] = 0;
+ TEST_ASSERT_EQUAL(3, ltc4275_probe(&l_dev, &postData));
+ TEST_ASSERT_EQUAL(0, PDStatus_Info.pdStatus.classStatus);
+ TEST_ASSERT_EQUAL(1, PDStatus_Info.state);
+ TEST_ASSERT_EQUAL(2, PDStatus_Info.pdalert);
+}
+
+void test_ltc4275_get_class()
+{
+ LTC4275_GpioPins[0x40] = 1;
+ ePDClassType val;
+
+ TEST_ASSERT_EQUAL(RETURN_OK, ltc4275_get_class(&l_dev, &val));
+ TEST_ASSERT_EQUAL(LTC4275_CLASSTYPE_2, val);
+
+ LTC4275_GpioPins[0x40] = 0;
+ TEST_ASSERT_EQUAL(RETURN_OK, ltc4275_get_class(&l_dev, &val));
+ TEST_ASSERT_EQUAL(LTC4275_CLASSTYPE_1, val);
+}
+
+void test_ltc4275_set_alert_handler()
+{
+ ltc4275_set_alert_handler(&l_dev, alert_handler, 1);
+ TEST_ASSERT_EQUAL(1, (int *)l_dev.obj.cb_context);
+ TEST_ASSERT_EQUAL(alert_handler, (int *)l_dev.obj.alert_cb);
+}
+
+void test_ltc4275_update_status()
+{
+ LTC4275_GpioPins[0x60] = 1;
+ LTC4275_GpioPins[0x40] = 1;
+ ltc4275_update_status(&l_dev);
+ TEST_ASSERT_EQUAL(0, PDStatus_Info.pdStatus.classStatus);
+ TEST_ASSERT_EQUAL(1, PDStatus_Info.state);
+ TEST_ASSERT_EQUAL(2, PDStatus_Info.pdalert);
+
+ LTC4275_GpioPins[0x60] = 0;
+ LTC4275_GpioPins[0x40] = 0;
+ ltc4275_update_status(&l_dev);
+ TEST_ASSERT_EQUAL(1, PDStatus_Info.pdStatus.classStatus);
+ TEST_ASSERT_EQUAL(0, PDStatus_Info.state);
+ TEST_ASSERT_EQUAL(2, PDStatus_Info.pdalert);
+}
diff --git a/firmware/ec/test/suites/Test_ocmp_adt7481.c b/firmware/ec/test/suites/Test_ocmp_adt7481.c
new file mode 100644
index 0000000000..3994ef68a9
--- /dev/null
+++ b/firmware/ec/test/suites/Test_ocmp_adt7481.c
@@ -0,0 +1,272 @@
+#include "unity.h"
+#include "inc/devices/adt7481.h"
+#include "common/inc/ocmp_wrappers/ocmp_adt7481.h"
+#include "common/inc/global/Framework.h"
+#include "platform/oc-sdr/schema/schema.h"
+#include "fake/fake_GPIO.h"
+#include "fake/fake_I2C.h"
+#include "fake/fake_ThreadedISR.h"
+#include
+
+/* ======================== Constants & variables =========================== */
+
+extern const Component sys_schema[];
+
+static OcGpio_Port s_fake_io_port = {
+ .fn_table = &FakeGpio_fnTable,
+ .object_data = &(FakeGpio_Obj){},
+};
+
+static const I2C_Dev I2C_DEV = {
+ .bus = 7,
+ .slave_addr = 0x2F,
+};
+
+static const I2C_Dev s_invalid_dev = {
+ .bus = 7,
+ .slave_addr = 0x52,
+};
+
+static const I2C_Dev s_invalid_bus = {
+ .bus = 3,
+ .slave_addr = 0x2F,
+};
+
+typedef enum Adt7481Status {
+ ADT7481_STATUS_TEMPERATURE = 0,
+} Adt7481Status;
+
+typedef enum Adt7481SConfig {
+ ADT7481_CONFIG_LIM_LOW = 0,
+ ADT7481_CONFIG_LIM_HIGH,
+ ADT7481_CONFIG_LIM_CRIT,
+} Adt7481SConfig;
+
+typedef enum Adt7481SAlert {
+ ADT7481_ALERT_LOW = 0,
+ ADT7481_ALERT_HIGH,
+ ADT7481_ALERT_CRITICAL
+} Adt7481SAlert;
+
+static uint8_t ADT7481_regs[] = {
+ [0x00] = 0x00, /* Local Temperature Value R */
+ [0x01] = 0x00, /* Remote 1 Temperature Value High Byte R*/
+ [0x02] = 0x00, /* Status Register 1 R */
+ [0x03] = 0x00, /* Configuration Register 1 R*/
+ [0x04] = 0x00, /* Conversion Rate/Channel Selector R*/
+ [0x05] = 0x00, /* Local Temperature High Limit R*/
+ [0x06] = 0x00, /* Local Temperature Low Limit R*/
+ [0x07] = 0x00, /* Remote 1 Temp High Limit High Byte R*/
+ [0x08] = 0x00, /* Remote 1 Temp Low Limit High Byte R*/
+ [0x09] = 0x00, /* Configuration Register W*/
+ [0x0A] = 0x00, /* Conversion Rate/Channel Selector W */
+ [0x0B] = 0x00, /* Local Temperature High Limit W*/
+ [0x0C] = 0x00, /* Local Temperature Low Limit W*/
+ [0x0D] = 0x00, /* Remote 1 Temp High Limit High Byte W*/
+ [0x0E] = 0x00, /* Remote 1 Temp Low Limit High Byte W*/
+ [0x0F] = 0x00, /* One-Shot W*/
+ [0x10] = 0x00, /* Remote 1 Temperature Value Low Byte R*/
+ [0x11] = 0x00, /* Remote 1 Temperature Offset High Byte R*/
+ [0x11] = 0x00, /* Remote 1 Temperature Offset High Byte W*/
+ [0x12] = 0x00, /* Remote 1 Temperature Offset Low Byte R*/
+ [0x12] = 0x00, /* Remote 1 Temperature Offset Low Byte W*/
+ [0x13] = 0x00, /* Remote 1 Temp High Limit Low Byte R*/
+ [0x13] = 0x00, /* Remote 1 Temp High Limit Low Byte W*/
+ [0x14] = 0x00, /* Remote 1 Temp Low Limit Low Byte R*/
+ [0x14] = 0x00, /* Remote 1 Temp Low Limit Low Byte W*/
+ [0x19] = 0x00, /* Remote 1 THERM Limit R */
+ [0x19] = 0x00, /* Remote 1 THERM Limit W */
+ [0x20] = 0x00, /* Local THERM Limit R*/
+ [0x20] = 0x00, /* Local THERM Limit W*/
+ [0x21] = 0x00, /* THERM Hysteresis R*/
+ [0x21] = 0x00, /* THERM Hysteresis W*/
+ [0x22] = 0x00, /* Consecutive ALERT R*/
+ [0x22] = 0x00, /* Consecutive ALERT W*/
+ [0x23] = 0x00, /* Status Register 2 R */
+ [0x24] = 0x00, /* Configuration 2 Register R*/
+ [0x24] = 0x00, /* Configuration 2 Register W*/
+ [0x30] = 0x00, /* Remote 2 Temperature Value High Byte R */
+ [0x31] = 0x00, /* Remote 2 Temp High Limit High Byte R*/
+ [0x31] = 0x00, /* Remote 2 Temp High Limit High Byte W*/
+ [0x32] = 0x00, /* Remote 2 Temp Low Limit High Byte R*/
+ [0x32] = 0x00, /* Remote 2 Temp Low Limit High Byte W*/
+ [0x33] = 0x00, /* Remote 2 Temperature Value Low Byte R*/
+ [0x34] = 0x00, /* Remote 2 Temperature Offset High Byte R*/
+ [0x34] = 0x00, /* Remote 2 Temperature Offset High Byte W*/
+ [0x35] = 0x00, /* Remote 2 Temperature Offset Low Byte R*/
+ [0x35] = 0x00, /* Remote 2 Temperature Offset Low Byte W*/
+ [0x36] = 0x00, /* Remote 2 Temp High Limit Low Byte R */
+ [0x36] = 0x00, /* Remote 2 Temp High Limit Low Byte W */
+ [0x37] = 0x00, /* Remote 2 Temp Low Limit Low Byte R*/
+ [0x37] = 0x00, /* Remote 2 Temp Low Limit Low Byte W*/
+ [0x39] = 0x00, /* Remote 2 THERM Limit R*/
+ [0x39] = 0x00, /* Remote 2 THERM Limit W*/
+ [0x3D] = 0x00, /* Device ID R */
+ [0x3E] = 0x00, /* Manufacturer ID R */
+};
+
+/* ============================= Fake Functions ============================= */
+#include
+unsigned int s_task_sleep_ticks;
+xdc_Void ti_sysbios_knl_Task_sleep__E( xdc_UInt32 nticks )
+{
+ s_task_sleep_ticks += nticks;
+}
+
+void test_alert(void)
+{
+}
+
+/* ============================= Boilerplate ================================ */
+void suite_setUp(void)
+{
+ fake_I2C_init();
+ fake_I2C_registerDevSimple(I2C_DEV.bus, I2C_DEV.slave_addr,
+ ADT7481_regs, sizeof(ADT7481_regs),
+ sizeof(ADT7481_regs[0]), sizeof(uint8_t),
+ FAKE_I2C_DEV_BIG_ENDIAN);
+}
+
+void setUp(void)
+{
+ memset(ADT7481_regs, 0, sizeof(ADT7481_regs));
+}
+
+void tearDown(void)
+{
+}
+
+void suite_tearDown(void)
+{
+ fake_I2C_deinit(); /* This will automatically unregister devices */
+}
+
+
+
+/* ================================ Tests =================================== */
+
+void test_probe()
+{
+ POSTData postData;
+
+ /* Correct Dev id */
+ ADT7481_regs[0x3D] = 0x81; /* Device ID */
+ ADT7481_regs[0x3E] = 0x41; /* MFG ID */
+
+ TEST_ASSERT_EQUAL(POST_DEV_FOUND, ADT7481_fxnTable.cb_probe(&I2C_DEV,
+ &postData));
+
+ /* Invalid device */
+ TEST_ASSERT_EQUAL(POST_DEV_MISSING, ADT7481_fxnTable.cb_probe(&s_invalid_dev,
+ &postData));
+ /* Invalid bus */
+ TEST_ASSERT_EQUAL(POST_DEV_MISSING, ADT7481_fxnTable.cb_probe(&s_invalid_bus,
+ &postData));
+ /* Incorrect Dev id */
+ ADT7481_regs[0x3D] = 0x80; /* Device ID */
+ ADT7481_regs[0x3E] = 0x40; /* MFG ID */
+ TEST_ASSERT_EQUAL(POST_DEV_ID_MISMATCH,
+ ADT7481_fxnTable.cb_probe(&I2C_DEV, &postData));
+}
+
+void test_get_status()
+{
+ uint8_t tempvalue = 0xff;
+ ADT7481_regs[0x30] = 0x73;
+
+ /* ADT7481_STATUS_TEMPERATURE */
+ TEST_ASSERT_EQUAL(true, ADT7481_fxnTable.cb_get_status(&I2C_DEV,
+ ADT7481_STATUS_TEMPERATURE, &tempvalue));
+ TEST_ASSERT_EQUAL_HEX8(0x33, tempvalue);
+
+ /* Invalid device */
+ TEST_ASSERT_EQUAL(false, ADT7481_fxnTable.cb_get_status(&s_invalid_dev,
+ ADT7481_STATUS_TEMPERATURE, &tempvalue));
+ /* Invalid bus */
+ TEST_ASSERT_EQUAL(false, ADT7481_fxnTable.cb_get_status(&s_invalid_bus,
+ ADT7481_STATUS_TEMPERATURE, &tempvalue));
+ /* Invalid parameter */
+ TEST_ASSERT_EQUAL(false, ADT7481_fxnTable.cb_get_status(&I2C_DEV,
+ 40, &tempvalue));
+}
+
+void test_set_config()
+{
+ int8_t limit = 0x62;
+
+ ADT7481_regs[0x32] = 0x00;
+ TEST_ASSERT_EQUAL(true, ADT7481_fxnTable.cb_set_config(&I2C_DEV, ADT7481_CONFIG_LIM_LOW, &limit));
+ TEST_ASSERT_EQUAL_HEX8(0xA2, ADT7481_regs[0x32]);
+
+ ADT7481_regs[0x31] = 0x00;
+ TEST_ASSERT_EQUAL(true, ADT7481_fxnTable.cb_set_config(&I2C_DEV, ADT7481_CONFIG_LIM_HIGH, &limit));
+ TEST_ASSERT_EQUAL_HEX8(0xA2, ADT7481_regs[0x31]);
+
+ ADT7481_regs[0x39] = 0x00;
+ TEST_ASSERT_EQUAL(true, ADT7481_fxnTable.cb_set_config(&I2C_DEV, ADT7481_CONFIG_LIM_CRIT, &limit));
+ TEST_ASSERT_EQUAL_HEX8(0xA2, ADT7481_regs[0x39]);
+
+ /* Invalid Device */
+ TEST_ASSERT_EQUAL(false, ADT7481_fxnTable.cb_set_config(&s_invalid_dev,
+ ADT7481_CONFIG_LIM_LOW, &limit));
+ /* Invalid bus */
+ TEST_ASSERT_EQUAL(false, ADT7481_fxnTable.cb_set_config(&s_invalid_bus,
+ ADT7481_CONFIG_LIM_LOW, &limit));
+ /* Invalid Parameter */
+ TEST_ASSERT_EQUAL(false, ADT7481_fxnTable.cb_set_config(&I2C_DEV,
+ 40, &limit));
+}
+
+void test_get_config()
+{
+ int8_t limit = 0xFF;
+ ADT7481_regs[0x31] = 0xA2;
+ ADT7481_regs[0x32] = 0xA2;
+ ADT7481_regs[0x39] = 0xA2;
+
+ TEST_ASSERT_EQUAL(true, ADT7481_fxnTable.cb_get_config(&I2C_DEV, ADT7481_CONFIG_LIM_LOW, &limit));
+ TEST_ASSERT_EQUAL_HEX8(0x62, limit);
+
+ limit = 0xFF;
+ TEST_ASSERT_EQUAL(true, ADT7481_fxnTable.cb_get_config(&I2C_DEV, ADT7481_CONFIG_LIM_HIGH, &limit));
+ TEST_ASSERT_EQUAL_HEX8(0x62, limit);
+
+ limit = 0xFF;
+ TEST_ASSERT_EQUAL(true, ADT7481_fxnTable.cb_get_config(&I2C_DEV, ADT7481_CONFIG_LIM_CRIT, &limit));
+ TEST_ASSERT_EQUAL_HEX8(0x62, limit);
+
+ /* Invalid Device */
+ TEST_ASSERT_EQUAL(false, ADT7481_fxnTable.cb_get_config(&s_invalid_dev,
+ ADT7481_CONFIG_LIM_LOW, &limit));
+ /* Invalid bus */
+ TEST_ASSERT_EQUAL(false, ADT7481_fxnTable.cb_get_config(&s_invalid_bus,
+ ADT7481_CONFIG_LIM_LOW, &limit));
+ /* Invalid Parameter */
+ TEST_ASSERT_EQUAL(false, ADT7481_fxnTable.cb_get_config(&I2C_DEV,
+ 40, &limit));
+}
+
+void test_init()
+{
+ const ADT7481_Config fact_sdr_fpga_adt7481_cfg = {
+ .lowlimit = -20,
+ .highlimit = 75,
+ .critlimit = 85,
+ };
+ TEST_ASSERT_EQUAL(POST_DEV_CFG_DONE, ADT7481_fxnTable.cb_init(&I2C_DEV, &fact_sdr_fpga_adt7481_cfg, NULL));
+ TEST_ASSERT_EQUAL_HEX8(0x2C, ADT7481_regs[0x32]);
+ TEST_ASSERT_EQUAL_HEX8(0x8B, ADT7481_regs[0x31]);
+ TEST_ASSERT_EQUAL_HEX8(0x95, ADT7481_regs[0x39]);
+
+ TEST_ASSERT_EQUAL_HEX8(ADT7481_CONFIGURATION_REG_VALUE, ADT7481_regs[0x09]);
+ TEST_ASSERT_EQUAL_HEX8(ADT7481_CONVERSION_RATE_REG_VALUE, ADT7481_regs[0x0A]);
+
+ /* Invalid Device */
+ TEST_ASSERT_EQUAL(POST_DEV_CFG_FAIL, ADT7481_fxnTable.cb_init(&s_invalid_dev,
+ ADT7481_CONFIG_LIM_LOW, NULL));
+ TEST_ASSERT_EQUAL(POST_DEV_CFG_FAIL, ADT7481_fxnTable.cb_init(&s_invalid_bus,
+ ADT7481_CONFIG_LIM_LOW, NULL));
+ /* Invalid Parameter */
+ TEST_ASSERT_EQUAL(POST_DEV_CFG_FAIL, ADT7481_fxnTable.cb_init(&I2C_DEV,
+ NULL, NULL));
+}
\ No newline at end of file
diff --git a/firmware/ec/test/suites/Test_ocmp_ltc4274.c b/firmware/ec/test/suites/Test_ocmp_ltc4274.c
new file mode 100644
index 0000000000..9e81eb7cd2
--- /dev/null
+++ b/firmware/ec/test/suites/Test_ocmp_ltc4274.c
@@ -0,0 +1,386 @@
+#include "unity.h"
+#include "inc/devices/ltc4274.h"
+#include "common/inc/ocmp_wrappers/ocmp_ltc4274.h"
+#include "common/inc/global/Framework.h"
+#include "platform/oc-sdr/schema/schema.h"
+#include "fake/fake_GPIO.h"
+#include "fake/fake_I2C.h"
+#include "fake/fake_ThreadedISR.h"
+#include
+
+/* ======================== Constants & variables =========================== */
+
+extern const Component sys_schema[];
+
+static OcGpio_Port s_fake_io_port = {
+ .fn_table = &FakeGpio_fnTable,
+ .object_data = &(FakeGpio_Obj){},
+};
+
+static const I2C_Dev I2C_DEV = {
+ .bus = 7,
+ .slave_addr = 0x2F,
+};
+
+static const I2C_Dev I2C_INVALID_DEV = {
+ .bus = 7,
+ .slave_addr = 0x52,
+};
+
+static const I2C_Dev I2C_INVALID_BUS = {
+ .bus = 3,
+ .slave_addr = 0x2F,
+};
+
+static LTC4274_Dev s_dev = {
+ .cfg = {
+ .i2c_dev = {
+ .bus = 7,
+ .slave_addr = 0x2F,
+ },
+ .pin_evt = &(OcGpio_Pin){ &s_fake_io_port, 27},
+ .reset_pin ={ &s_fake_io_port, 27 },
+ },
+};
+
+static LTC4274_Dev s_invalid_dev = {
+ .cfg = {
+ .i2c_dev = {
+ .bus = 7,
+ .slave_addr = 0x52,
+ },
+ },
+};
+
+static uint8_t LTC4274_regs[] = {
+ [0x00] = 0x00, /* INTERRUPT_STATUS */
+ [0x01] = 0x00, /* INTERRUPT_MASK */
+ [0x02] = 0x00, /* POWER_EVENT */
+ [0x03] = 0x00, /* POWER_EVENT_COR */
+ [0x04] = 0x00, /* DETECT_EVENT */
+ [0x05] = 0x00, /* DETECT_EVENT_COR */
+ [0x06] = 0x00, /* FAULT_EVENT */
+ [0x07] = 0x00, /* FAULT_EVENT_COR */
+ [0x08] = 0x00, /* START_EVENT */
+ [0x09] = 0x00, /* START_EVENT_COR */
+ [0x0A] = 0x00, /* SUPPLY_EVENT */
+ [0x0B] = 0x00, /* SUPPLY_EVENT_COR */
+ [0x0C] = 0x00, /* STATUS */
+ [0x10] = 0x00, /* POWER_STATUS */
+ [0x11] = 0x00, /* PNI_STATUS */
+ [0x12] = 0x00, /* OPERATION_MODE */
+ [0x13] = 0x00, /* ENABLE_DUSCONNECT SENSING */
+ [0x14] = 0x00, /* DETECT_CLASS_ENABLE */
+ [0x15] = 0x00, /* MIDSPAN */
+ [0x17] = 0x00, /* MCONF */
+ [0x18] = 0x00, /* DETPB */
+ [0x19] = 0x00, /* PWRPB */
+ [0x1A] = 0x00, /* RSTPB */
+ [0x1B] = 0x00, /* ID */
+ [0x1E] = 0x00, /* TLIMIT */
+ [0x30] = 0x00, /* IP1LSB */
+ [0x31] = 0x00, /* IP1MSB */
+ [0x32] = 0x00, /* VP1LSB */
+ [0x33] = 0x00, /* VP1MSB */
+ [0x41] = 0x00, /* FIRMWARE */
+ [0x42] = 0x00, /* WDOG */
+ [0x43] = 0x00, /* DEVID */
+ [0x44] = 0x00, /* HP_ENABLE */
+ [0x46] = 0x00, /* HP_MODE */
+ [0x47] = 0x00, /* CUT1 */
+ [0x48] = 0x00, /* LIM1 */
+ [0x49] = 0x00, /* IHP_STATUS */
+};
+
+static bool LTC4274_GpioPins[] = {
+ [27] = 00,
+};
+
+static uint32_t LTC7274_GpioConfig[] = {
+ [27] = 00,
+};
+
+typedef enum LTC7274Status {
+ LTC7274_STATUS_DETECT = 0,
+ LTC7274_STATUS_CLASS ,
+ LTC7274_STATUS_POWERGOOD,
+} LTC7274Status;
+
+typedef enum LTC7274Config {
+ LTC4274_CONFIG_OPERATING_MODE = 0,
+ LTC4274_CONFIG_DETECT_ENABLE,
+ LTC4274_CONFIG_INTERRUPT_MASK,
+ LTC4274_CONFIG_INTERRUPT_ENABLE,
+ LTC4274_CONFIG_HP_ENABLE
+} LTC7274Config;
+
+typedef enum LTC7274Alert {
+ LTC4274_ALERT_NO_ACTIVE = 0,
+ LTC4274_ALERT_POWER_ENABLE,
+ LTC4274_ALERT_POWERGOOD,
+ LTC4274_ALERT_DISCONNECT,
+ LTC4274_ALERT_DETECTION ,
+ LTC4274_ALERT_CLASS,
+ LTC4274_ALERT_TCUT,
+ LTC4274_ALERT_TSTART,
+ LTC4274_ALERT_SUPPLY
+} LTC7274Alert;
+
+/* ============================= Fake Functions ============================= */
+#include
+unsigned int s_task_sleep_ticks;
+xdc_Void ti_sysbios_knl_Task_sleep__E( xdc_UInt32 nticks )
+{
+ s_task_sleep_ticks += nticks;
+}
+
+void test_alert(void)
+{
+}
+
+/* ============================= Boilerplate ================================ */
+void suite_setUp(void)
+{
+ fake_I2C_init();
+ fake_I2C_registerDevSimple(I2C_DEV.bus, I2C_DEV.slave_addr, <C4274_regs,
+ sizeof(LTC4274_regs), sizeof(LTC4274_regs[0]),
+ sizeof(uint8_t), FAKE_I2C_DEV_LITTLE_ENDIAN);
+ FakeGpio_registerDevSimple(LTC4274_GpioPins, LTC7274_GpioConfig);
+}
+
+void setUp(void)
+{
+ memset(LTC4274_regs, 0, sizeof(LTC4274_regs));
+}
+
+void tearDown(void)
+{
+}
+
+void suite_tearDown(void)
+{
+ fake_I2C_deinit(); /* This will automatically unregister devices */
+}
+
+/* ================================ Tests =================================== */
+void OCMP_GenerateAlert(const AlertData *alert_data,
+ unsigned int alert_id,
+ const void *data)
+{
+ return;
+}
+
+void test_probe()
+{
+ POSTData postData;
+
+ /* Correct Dev id */
+ LTC4274_regs[0x1B] = (0x0c << 3);
+ LTC4274_GpioPins[27] = 1;
+ TEST_ASSERT_EQUAL(POST_DEV_FOUND, LTC4274_fxnTable.cb_probe(&s_dev,
+ &postData));
+ TEST_ASSERT_EQUAL(LTC7274_GpioConfig[27], OCGPIO_CFG_OUTPUT |
+ OCGPIO_CFG_OUT_HIGH);
+ TEST_ASSERT_EQUAL(0, LTC4274_GpioPins[27]);
+
+ /* Missing device */
+ TEST_ASSERT_EQUAL(POST_DEV_MISSING, LTC4274_fxnTable.cb_probe(&s_invalid_dev,
+ &postData));
+
+ /* Incorrect Dev id */
+ LTC4274_regs[0x1B] = (0x0D << 3);
+ TEST_ASSERT_EQUAL(POST_DEV_ID_MISMATCH,
+ LTC4274_fxnTable.cb_probe(&s_dev, &postData));
+}
+
+void test_get_status()
+{
+ uint8_t value = 0xFF;
+
+ /* success values */
+ LTC4274_regs[0x04] = 0xFF;
+ LTC4274_regs[0x0C] = 0x01;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_get_status(&I2C_DEV,
+ LTC7274_STATUS_DETECT, &value));
+ TEST_ASSERT_EQUAL_HEX8(0x01, value);
+
+ LTC4274_regs[0x04] = 0xFF;
+ LTC4274_regs[0x0C] = 0x2B;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_get_status(&I2C_DEV,
+ LTC7274_STATUS_CLASS, &value));
+ TEST_ASSERT_EQUAL_HEX8(0x02, value);
+
+ LTC4274_regs[0x04] = 0xFF;
+ LTC4274_regs[0x10] = 0x00;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_get_status(&I2C_DEV,
+ LTC7274_STATUS_POWERGOOD, &value));
+ TEST_ASSERT_EQUAL_HEX8(0x01, value);
+
+ /* invalid paramid */
+ LTC4274_regs[0x04] = 0xFF;
+ LTC4274_regs[0x0C] = 0x01;
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_status(&I2C_DEV,
+ 0XFF, &value));
+
+ /* invalid dev-id */
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_status(&I2C_INVALID_DEV,
+ LTC7274_STATUS_CLASS, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_status(&I2C_INVALID_DEV,
+ LTC7274_STATUS_POWERGOOD, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_status(&I2C_INVALID_DEV,
+ LTC7274_STATUS_POWERGOOD, &value));
+ /* invalid bus */
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_status(&I2C_INVALID_BUS,
+ LTC7274_STATUS_CLASS, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_status(&I2C_INVALID_BUS,
+ LTC7274_STATUS_POWERGOOD, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_status(&I2C_INVALID_BUS,
+ LTC7274_STATUS_POWERGOOD, &value));
+
+}
+
+void test_set_config()
+{
+ uint8_t value = 0x00;
+
+ /* success values */
+ LTC4274_regs[0x12] = 0x00;
+ value = 0x51;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_set_config(&I2C_DEV,
+ LTC4274_CONFIG_OPERATING_MODE, &value));
+ TEST_ASSERT_EQUAL_HEX8(LTC4274_regs[0x12], value);
+
+ LTC4274_regs[0x14] = 0xFF;
+ value = 0x53;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_set_config(&I2C_DEV,
+ LTC4274_CONFIG_DETECT_ENABLE, &value));
+ TEST_ASSERT_EQUAL_HEX8(LTC4274_regs[0x14], value);
+
+ LTC4274_regs[0x01] = 0xFF;
+ value = 0x54;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_set_config(&I2C_DEV,
+ LTC4274_CONFIG_INTERRUPT_MASK, &value));
+ TEST_ASSERT_EQUAL_HEX8(LTC4274_regs[0x01], value);
+
+ LTC4274_regs[0x17] = 0xFF;
+ value = true;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_set_config(&I2C_DEV,
+ LTC4274_CONFIG_INTERRUPT_ENABLE, &value));
+ TEST_ASSERT_EQUAL_HEX8(0x80, LTC4274_regs[0x17]);
+
+ LTC4274_regs[0x44] = 0xFF;
+ value = 0x56;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_set_config(&I2C_DEV,
+ LTC4274_CONFIG_HP_ENABLE, &value));
+ TEST_ASSERT_EQUAL_HEX8(LTC4274_regs[0x44], value);
+
+ /* Invalid paramid */
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_set_config(&I2C_DEV, 0xFF, &value));
+
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_set_config(&I2C_INVALID_DEV,
+ LTC4274_CONFIG_OPERATING_MODE, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_set_config(&I2C_INVALID_DEV,
+ LTC4274_CONFIG_DETECT_ENABLE, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_set_config(&I2C_INVALID_DEV,
+ LTC4274_CONFIG_INTERRUPT_MASK, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_set_config(&I2C_INVALID_DEV,
+ LTC4274_CONFIG_INTERRUPT_ENABLE, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_set_config(&I2C_INVALID_DEV,
+ LTC4274_CONFIG_HP_ENABLE, &value));
+
+ /* invalid bus */
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_set_config(&I2C_INVALID_BUS,
+ LTC4274_CONFIG_OPERATING_MODE, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_set_config(&I2C_INVALID_BUS,
+ LTC4274_CONFIG_DETECT_ENABLE, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_set_config(&I2C_INVALID_BUS,
+ LTC4274_CONFIG_INTERRUPT_MASK, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_set_config(&I2C_INVALID_BUS,
+ LTC4274_CONFIG_INTERRUPT_ENABLE, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_set_config(&I2C_INVALID_BUS,
+ LTC4274_CONFIG_HP_ENABLE, &value));
+}
+
+void test_get_config()
+{
+ uint8_t value = 0x00;
+
+ /* success values */
+ LTC4274_regs[0x12] = 0x51;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_get_config(&I2C_DEV,
+ LTC4274_CONFIG_OPERATING_MODE, &value));
+ TEST_ASSERT_EQUAL_HEX8(LTC4274_regs[0x12], value);
+
+ LTC4274_regs[0x14] = 0x53;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_get_config(&I2C_DEV,
+ LTC4274_CONFIG_DETECT_ENABLE, &value));
+ TEST_ASSERT_EQUAL_HEX8((LTC4274_regs[0x14] & 07), value);
+
+ LTC4274_regs[0x01] = 0x54;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_get_config(&I2C_DEV,
+ LTC4274_CONFIG_INTERRUPT_MASK, &value));
+ TEST_ASSERT_EQUAL_HEX8(LTC4274_regs[0x01], value);
+
+ LTC4274_regs[0x17] = 0x80;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_get_config(&I2C_DEV,
+ LTC4274_CONFIG_INTERRUPT_ENABLE, &value));
+ TEST_ASSERT_EQUAL_HEX8(LTC4274_regs[0x17], value);
+
+ LTC4274_regs[0x44] = 0x56;
+ TEST_ASSERT_EQUAL(true, LTC4274_fxnTable.cb_get_config(&I2C_DEV,
+ LTC4274_CONFIG_HP_ENABLE, &value));
+ TEST_ASSERT_EQUAL_HEX8(LTC4274_regs[0x44], value);
+
+ /* Invalid paramid */
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_config(&I2C_DEV, 0xFF, &value));
+
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_config(&I2C_INVALID_DEV,
+ LTC4274_CONFIG_OPERATING_MODE, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_config(&I2C_INVALID_DEV,
+ LTC4274_CONFIG_DETECT_ENABLE, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_config(&I2C_INVALID_DEV,
+ LTC4274_CONFIG_INTERRUPT_MASK, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_config(&I2C_INVALID_DEV,
+ LTC4274_CONFIG_INTERRUPT_ENABLE, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_config(&I2C_INVALID_DEV,
+ LTC4274_CONFIG_HP_ENABLE, &value));
+ /* Invalid bus */
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_config(&I2C_INVALID_BUS,
+ LTC4274_CONFIG_OPERATING_MODE, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_config(&I2C_INVALID_BUS,
+ LTC4274_CONFIG_DETECT_ENABLE, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_config(&I2C_INVALID_BUS,
+ LTC4274_CONFIG_INTERRUPT_MASK, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_config(&I2C_INVALID_BUS,
+ LTC4274_CONFIG_INTERRUPT_ENABLE, &value));
+ TEST_ASSERT_EQUAL(false, LTC4274_fxnTable.cb_get_config(&I2C_INVALID_BUS,
+ LTC4274_CONFIG_HP_ENABLE, &value));
+}
+
+void test_init()
+{
+
+ const LTC4274_Config fact_ltc4274_cfg = {
+ .operatingMode = LTC4274_AUTO_MODE,
+ .detectEnable = LTC4274_DETECT_ENABLE,
+ .interruptMask = LTC4274_INTERRUPT_MASK,
+ .interruptEnable = true,
+ .pseHpEnable = LTC4274_HP_ENABLE,
+ };
+
+ TEST_ASSERT_EQUAL(POST_DEV_CFG_DONE, LTC4274_fxnTable.cb_init(&s_dev,
+ &fact_ltc4274_cfg, 1));
+
+ TEST_ASSERT_EQUAL_HEX8(LTC4274_regs[0x12], LTC4274_AUTO_MODE);
+ TEST_ASSERT_EQUAL_HEX8(LTC4274_regs[0x14], LTC4274_DETECT_ENABLE);
+ TEST_ASSERT_EQUAL_HEX8(LTC4274_regs[0x01], LTC4274_INTERRUPT_MASK);
+ TEST_ASSERT_EQUAL_HEX8(0x80, LTC4274_regs[0x17]);
+ TEST_ASSERT_EQUAL_HEX8(LTC4274_regs[0x44], LTC4274_HP_ENABLE);
+ TEST_ASSERT_EQUAL(OCGPIO_CFG_INPUT | OCGPIO_CFG_INT_FALLING,
+ LTC7274_GpioConfig[27]);
+
+ TEST_ASSERT_EQUAL(POST_DEV_CFG_FAIL, LTC4274_fxnTable.cb_init(&s_invalid_dev,
+ &fact_ltc4274_cfg, 1));
+ TEST_ASSERT_EQUAL(POST_DEV_CFG_DONE, LTC4274_fxnTable.cb_init(&s_dev,
+ NULL, 1));
+}
diff --git a/firmware/ec/test/suites/Test_pca9557.c b/firmware/ec/test/suites/Test_pca9557.c
index 6a3ec2293a..213c9cf330 100644
--- a/firmware/ec/test/suites/Test_pca9557.c
+++ b/firmware/ec/test/suites/Test_pca9557.c
@@ -22,11 +22,6 @@ static const I2C_Dev pca9557_dev = {
.slave_addr = 0x00,
};
-static const I2C_Dev pca9557_no_dev = {
- .bus = 2,
- .slave_addr = 0x01,
-};
-
/* ============================= Boilerplate ================================ */
void suite_setUp(void)
{
@@ -125,8 +120,9 @@ void test_PCA9557_not_present(void)
{
/* Ensure that we fail properly if the device isn't on the bus */
uint8_t dummy_val;
- I2C_Dev invalid_dev = pca9557_no_dev;
-
+ I2C_Dev invalid_dev = pca9557_dev;
+ invalid_dev.slave_addr = 0x01;
+
TEST_ASSERT_EQUAL(RETURN_NOTOK,
PCA9557_getInput(&invalid_dev, &dummy_val));
TEST_ASSERT_EQUAL(RETURN_NOTOK,
diff --git a/firmware/ec/test/suites/Test_powerSource.c b/firmware/ec/test/suites/Test_powerSource.c
new file mode 100644
index 0000000000..b36db35a31
--- /dev/null
+++ b/firmware/ec/test/suites/Test_powerSource.c
@@ -0,0 +1,328 @@
+#include "unity.h"
+
+#include "inc/devices/powerSource.h"
+
+#include "drivers/GpioSX1509.h"
+#include "drivers/OcGpio.h"
+#include "helpers/array.h"
+#include "helpers/attribute.h"
+#include "helpers/memory.h"
+
+#include "fake/fake_GPIO.h"
+#include "fake/fake_I2C.h"
+#include "fake/fake_ThreadedISR.h"
+
+#include
+
+/* ======================== Constants & variables =========================== */
+#define I2C_BUS 5
+#define I2C_ADDR 0x71
+
+static uint8_t SX1509_regs[] = {
+ [0x00] = 0x00, /* Input buffer disable register B */
+ [0x01] = 0x00, /* Input buffer disable register A */
+ [0x02] = 0x00, /* Output buffer long slew register B */
+ [0x03] = 0x00, /* Output buffer long slew register A */
+ [0x04] = 0x00, /* Output buffer low drive register B */
+ [0x05] = 0x00, /* Output buffer low drive register A */
+ [0x06] = 0x00, /* Pull Up register B */
+ [0x07] = 0x00, /* Pull Up register A */
+ [0x08] = 0x00, /* Pull Down register B */
+ [0x09] = 0x00, /* Pull Down register A */
+ [0x0A] = 0x00, /* Open drain register B */
+ [0x0B] = 0x00, /* Open drain register A */
+ [0x0C] = 0x00, /* Polarity register B */
+ [0x0D] = 0x00, /* Polarity register A */
+ [0x0E] = 0x00, /* Direction register B */
+ [0x0F] = 0x00, /* Direction register A */
+ [0x10] = 0x00, /* Data register B */
+ [0x11] = 0x00, /* Data register A */
+ [0x12] = 0x00, /* Interrupt mask register B */
+ [0x13] = 0x00, /* Interrupt mask register A */
+ [0x14] = 0x00, /* Sense High register B */
+ [0x15] = 0x00, /* Sense Low register B */
+ [0x16] = 0x00, /* Sense High register A */
+ [0x17] = 0x00, /* Sense Low register A */
+ [0x18] = 0x00, /* Interrupt source register B */
+ [0x19] = 0x00, /* Interrupt source register A */
+ [0x1A] = 0x00, /* Event status register B */
+ [0x1B] = 0x00, /* Event status register A */
+ [0x1C] = 0x00, /* Level shifter register 1 */
+ [0x1D] = 0x00, /* Level shifter register 2 */
+ [0x1E] = 0x00, /* Clock management register */
+ [0x1F] = 0x00, /* Miscellaneous device settings register */
+ [0x20] = 0x00, /* LED driver enable register B */
+ [0x21] = 0x00, /* LED driver enable register A */
+
+ [0x22] = 0x00, /* Debounce configuration register */
+ [0x23] = 0x00, /* Debounce enable register B */
+ [0x24] = 0x00, /* Debounce enable register A */
+ [0x25] = 0x00, /* Key scan configuration register 1 */
+ [0x26] = 0x00, /* Key scan configuration register 2 */
+ [0x27] = 0x00, /* Key value (column) 1 */
+ [0x28] = 0x00, /* Key value (row) 2 */
+
+ [0x29] = 0x00, /* ON time register I/O[0] */
+ [0x2A] = 0x00, /* ON intensity register I/O[0] */
+ [0x2B] = 0x00, /* OFF time/intensity register I/O[0] */
+ [0x2C] = 0x00, /* ON time register I/O[1] */
+ [0x2D] = 0x00, /* ON intensity register I/O[1] */
+ [0x2E] = 0x00, /* OFF time/intensity register I/O[1] */
+ [0x2F] = 0x00, /* ON time register I/O[2] */
+ [0x30] = 0x00, /* ON intensity register I/O[2] */
+ [0x31] = 0x00, /* OFF time/intensity register I/O[2] */
+ [0x32] = 0x00, /* ON time register I/O[3] */
+ [0x33] = 0x00, /* ON intensity register I/O[3] */
+ [0x34] = 0x00, /* OFF time/intensity register I/O[3] */
+ [0x35] = 0x00, /* ON time register I/O[4] */
+ [0x36] = 0x00, /* ON intensity register I/O[4] */
+ [0x37] = 0x00, /* OFF time/intensity register I/O[4] */
+ [0x38] = 0x00, /* Fade in register I/O[4] */
+ [0x39] = 0x00, /* Fade out register I/O[4] */
+ [0x3A] = 0x00, /* ON time register I/O[5] */
+ [0x3B] = 0x00, /* ON intensity register I/O[5] */
+ [0x3C] = 0x00, /* OFF time/intensity register I/O[5] */
+ [0x3D] = 0x00, /* Fade in register I/O[5] */
+ [0x3E] = 0x00, /* Fade out register I/O[5] */
+ [0x3F] = 0x00, /* ON time register I/O[6] */
+ [0x40] = 0x00, /* ON intensity register I/O[6] */
+ [0x41] = 0x00, /* OFF time/intensity register I/O[6] */
+ [0x42] = 0x00, /* Fade in register I/O[6] */
+ [0x43] = 0x00, /* Fade out register I/O[6] */
+ [0x44] = 0x00, /* ON time register I/O[6] */
+ [0x45] = 0x00, /* ON intensity register I/O[7] */
+ [0x46] = 0x00, /* OFF time/intensity register I/O[7] */
+ [0x47] = 0x00, /* Fade in register I/O[7] */
+ [0x48] = 0x00, /* Fade out register I/O[7] */
+ [0x49] = 0x00, /* ON time register I/O[8] */
+ [0x4A] = 0x00, /* ON intensity register I/O[8] */
+ [0x4B] = 0x00, /* OFF time/intensity register I/O[8] */
+ [0x4C] = 0x00, /* ON time register I/O[9] */
+ [0x4D] = 0x00, /* ON intensity register I/O[9] */
+ [0x4E] = 0x00, /* OFF time/intensity register I/O[9] */
+ [0x4F] = 0x00, /* ON time register I/O[10] */
+ [0x50] = 0x00, /* ON intensity register I/O[10] */
+ [0x51] = 0x00, /* OFF time/intensity register I/O[10] */
+ [0x52] = 0x00, /* ON time register I/O[11] */
+ [0x53] = 0x00, /* ON intensity register I/O[11] */
+ [0x54] = 0x00, /* OFF time/intensity register I/O[11] */
+ [0x55] = 0x00, /* ON time register I/O[12] */
+ [0x56] = 0x00, /* ON intensity register I/O[12] */
+ [0x57] = 0x00, /* OFF time/intensity register I/O[12] */
+ [0x58] = 0x00, /* Fade in register I/O[12] */
+ [0x59] = 0x00, /* Fade out register I/O[12] */
+ [0x5A] = 0x00, /* ON time register I/O[13] */
+ [0x5B] = 0x00, /* ON intensity register I/O[13] */
+ [0x5C] = 0x00, /* OFF time/intensity register I/O[13] */
+ [0x5D] = 0x00, /* Fade in register I/O[13] */
+ [0x5E] = 0x00, /* Fade out register I/O[13] */
+ [0x5F] = 0x00, /* ON time register I/O[14] */
+ [0x60] = 0x00, /* ON intensity register I/O[14] */
+ [0x61] = 0x00, /* OFF time/intensity register I/O[14] */
+ [0x62] = 0x00, /* Fade in register I/O[14] */
+ [0x63] = 0x00, /* Fade out register I/O[14] */
+ [0x64] = 0x00, /* ON time register I/O[15] */
+ [0x65] = 0x00, /* ON intensity register I/O[15] */
+ [0x66] = 0x00, /* OFF time/intensity register I/O[15] */
+ [0x67] = 0x00, /* Fade in register I/O[115] */
+ [0x68] = 0x00, /* Fade out register I/O[15] */
+
+ [0x69] = 0x00, /* */
+ [0x6A] = 0x00, /* */
+
+ [0x7D] = 0x00, /* */
+ [0x7E] = 0x00, /* */
+ [0x7F] = 0x00, /* */
+};
+
+extern const OcGpio_FnTable GpioSX1509_fnTable;
+
+static bool PWR_GpioPins[] = {
+ [0x1E] = 0x1, /* pin_solar_aux_prsnt_n =30*/
+ [0x55] = 0x1, /* pin_poe_prsnt_n = 85 */
+};
+
+static uint32_t PWR_GpioConfig[] = {
+ [0x1E] = OCGPIO_CFG_INPUT,
+ [0x55] = OCGPIO_CFG_INPUT,
+};
+
+/* ============================= Boilerplate ================================ */
+static OcGpio_Port s_fake_io_port = {
+ .fn_table = &FakeGpio_fnTable,
+ .object_data = &(FakeGpio_Obj){},
+};
+
+static OcGpio_Port s_fake_io_exp = {
+ .fn_table = &GpioSX1509_fnTable,
+ .cfg = &(SX1509_Cfg) {
+ .i2c_dev = { I2C_BUS, I2C_ADDR },
+ },
+ .object_data = &(SX1509_Obj){},
+};
+
+void suite_setUp(void)
+{
+ FakeGpio_registerDevSimple(PWR_GpioPins, PWR_GpioConfig);
+ fake_I2C_init();
+ fake_I2C_registerDevSimple(I2C_BUS, I2C_ADDR, SX1509_regs,
+ sizeof(SX1509_regs), sizeof(SX1509_regs[0]),
+ sizeof(uint8_t), FAKE_I2C_DEV_LITTLE_ENDIAN);
+}
+
+void setUp(void)
+{
+ memset(SX1509_regs, 0, sizeof(SX1509_regs));
+ OcGpio_init(&s_fake_io_exp);
+}
+
+void tearDown(void)
+{
+}
+
+void suite_tearDown(void)
+{
+ fake_I2C_deinit();
+}
+
+static PWRSRC_Dev p_dev = {
+ .cfg = {
+ /* SOLAR_AUX_PRSNT_N */
+ .pin_solar_aux_prsnt_n = { &s_fake_io_port, 0x1E },
+ /* POE_PRSNT_N */
+ .pin_poe_prsnt_n = { &s_fake_io_port, 0x55 },
+ /* INT_BAT_PRSNT */
+ .pin_int_bat_prsnt = { &s_fake_io_exp, 11 },
+ /* EXT_BAT_PRSNT */
+ .pin_ext_bat_prsnt = { &s_fake_io_exp, 12 },
+ },
+};
+/* ================================ Tests =================================== */
+
+void test_pwr_process_get_status_parameters_data_poeavailable()
+{
+ uint8_t powerStatus = 0;
+ uint8_t index = 0x00; //PoE Availability
+ PWR_GpioPins[0x55] = 0x0; //PoE Enable
+ PWR_GpioPins[0x1E] = 0x1; //Aux/solar Disable
+ SX1509_regs[0x10] = 0x18; //Int/Ext Battery Disable
+ SX1509_regs[0x11] = 0x00;
+
+ pwr_source_init();
+ pwr_get_source_info(&p_dev);
+ pwr_process_get_status_parameters_data(index, &powerStatus);
+
+ TEST_ASSERT_EQUAL(1, powerStatus);
+}
+
+void test_pwr_process_get_status_parameters_data_poeaccessible()
+{
+ uint8_t powerStatus = 0;
+ uint8_t index = 0x01; //PoE Accessibility
+ PWR_GpioPins[0x55] = 0x0; //PoE Enable
+ PWR_GpioPins[0x1E] = 0x1; //Aux/solar Disable
+ SX1509_regs[0x10] = 0x18; //Int/Ext Battery Disable
+ SX1509_regs[0x11] = 0x00;
+
+ pwr_source_init();
+ pwr_get_source_info(&p_dev);
+ pwr_process_get_status_parameters_data(index, &powerStatus);
+
+ TEST_ASSERT_EQUAL(1, powerStatus);
+}
+
+void test_pwr_process_get_status_parameters_data_solaravailable()
+{
+ uint8_t powerStatus = 0;
+ uint8_t index = 0x02; //SOLAR Availability
+ PWR_GpioPins[0x55] = 0x1; //PoE Disable
+ PWR_GpioPins[0x1E] = 0x0; //Aux/solar Enable
+ SX1509_regs[0x10] = 0x18; //Int/Ext Battery Disable
+ SX1509_regs[0x11] = 0x00;
+
+ pwr_source_init();
+ pwr_get_source_info(&p_dev);
+ pwr_process_get_status_parameters_data(index, &powerStatus);
+
+ TEST_ASSERT_EQUAL(1, powerStatus);
+}
+
+void test_pwr_process_get_status_parameters_data_solaraccessible()
+{
+ uint8_t powerStatus = 0;
+ uint8_t index = 0x03; //SOLAR Accessibility
+ PWR_GpioPins[0x55] = 0x1; //PoE Disable
+ PWR_GpioPins[0x1E] = 0x0; //Aux/solar Enable
+ SX1509_regs[0x10] = 0x18; //Int/Ext Battery Disable
+ SX1509_regs[0x11] = 0x00;
+
+ pwr_source_init();
+ pwr_get_source_info(&p_dev);
+ pwr_process_get_status_parameters_data(index, &powerStatus);
+
+ TEST_ASSERT_EQUAL(1, powerStatus);
+}
+
+void test_pwr_process_get_status_parameters_data_extavailable()
+{
+ uint8_t powerStatus = 0;
+ uint8_t index = 0x04; //Ext Batt availability
+ PWR_GpioPins[0x55] = 0x1; //PoE Disable
+ PWR_GpioPins[0x1E] = 0x1; //Aux/solar Disable
+ SX1509_regs[0x10] = 0x08; //Int Batt OFF, Ext batt ON
+ SX1509_regs[0x11] = 0x00;
+
+ pwr_source_init();
+ pwr_get_source_info(&p_dev);
+ pwr_process_get_status_parameters_data(index, &powerStatus);
+
+ TEST_ASSERT_EQUAL(1, powerStatus);
+}
+
+void test_pwr_process_get_status_parameters_data_extaccessible()
+{
+ uint8_t powerStatus = 0;
+ uint8_t index = 0x05; //Ext Batt accessibility
+ PWR_GpioPins[0x55] = 0x1; //PoE Disable
+ PWR_GpioPins[0x1E] = 0x1; //Aux/solar Disable
+ SX1509_regs[0x10] = 0x08; //Int Batt OFF, Ext batt ON
+ SX1509_regs[0x11] = 0x00;
+
+ pwr_source_init();
+ pwr_get_source_info(&p_dev);
+ pwr_process_get_status_parameters_data(index, &powerStatus);
+
+ TEST_ASSERT_EQUAL(1, powerStatus);
+}
+
+void test_pwr_process_get_status_parameters_data_intavailable()
+{
+ uint8_t powerStatus = 0;
+ uint8_t index = 0x06; //Int Batt Availability
+ PWR_GpioPins[0x55] = 0x1; //PoE Disable
+ PWR_GpioPins[0x1E] = 0x1; //Aux/solar Disable
+ SX1509_regs[0x10] = 0x10; //Ext Batt OFF, Int batt ON
+ SX1509_regs[0x11] = 0x00;
+
+ pwr_source_init();
+ pwr_get_source_info(&p_dev);
+ pwr_process_get_status_parameters_data(index, &powerStatus);
+
+ TEST_ASSERT_EQUAL(1, powerStatus);
+}
+
+void test_pwr_process_get_status_parameters_data_intaccessible()
+{
+ uint8_t powerStatus = 0;
+ uint8_t index = 0x07; //Int Batt Accessibility
+ PWR_GpioPins[0x55] = 0x1; //PoE Disable
+ PWR_GpioPins[0x1E] = 0x1; //Aux/solar Disable
+ SX1509_regs[0x10] = 0x10; //Ext Batt OFF, Int batt ON
+ SX1509_regs[0x11] = 0x00;
+
+ pwr_source_init();
+ pwr_get_source_info(&p_dev);
+ pwr_process_get_status_parameters_data(index, &powerStatus);
+
+ TEST_ASSERT_EQUAL(1, powerStatus);
+}
\ No newline at end of file
diff --git a/firmware/ec/test/suites/Test_se98a.c b/firmware/ec/test/suites/Test_se98a.c
index 4f1ede2f79..70dd40c535 100644
--- a/firmware/ec/test/suites/Test_se98a.c
+++ b/firmware/ec/test/suites/Test_se98a.c
@@ -42,7 +42,13 @@ static uint16_t SE98A_regs[] = {
[0x06] = 0x00, /* MFG ID */
[0x07] = 0x00, /* Device ID */
};
+static bool SE98A_GpioPins[] = {
+ [0x05] = 0x1,
+};
+static uint32_t SE98A_GpioConfig[] = {
+ [0x05] = OCGPIO_CFG_INPUT,
+};
/* ============================= Fake Functions ============================= */
#include
unsigned int s_task_sleep_ticks;
@@ -54,6 +60,7 @@ xdc_Void ti_sysbios_knl_Task_sleep__E( xdc_UInt32 nticks )
/* ============================= Boilerplate ================================ */
void suite_setUp(void)
{
+ FakeGpio_registerDevSimple(SE98A_GpioPins, SE98A_GpioConfig);
fake_I2C_init();
fake_I2C_registerDevSimple(s_dev.cfg.dev.bus, s_dev.cfg.dev.slave_addr,
SE98A_regs, sizeof(SE98A_regs),
@@ -108,7 +115,7 @@ void test_se98a_init(void)
TEST_ASSERT_EQUAL(RETURN_OK, se98a_init(&alerted_dev));
}
-static struct AlertData {
+static struct Test_AlertData {
bool triggered;
SE98A_Event evt;
int8_t temp;
@@ -117,7 +124,7 @@ static struct AlertData {
static void alert_handler(SE98A_Event evt, int8_t temperature, void *context)
{
- s_alert_data = (struct AlertData){
+ s_alert_data = (struct Test_AlertData){
.triggered = true,
.evt = evt,
.temp = temperature,
@@ -145,7 +152,7 @@ static void _test_alert(SE98A_Dev *dev, uint16_t temp_reg, SE98A_Event exp_evt,
void test_se98a_alerts(void)
{
- s_alert_data = (struct AlertData){};
+ s_alert_data = (struct Test_AlertData){};
/* Now try to init with a pin associated */
SE98A_Dev alerted_dev = {
@@ -200,21 +207,22 @@ void test_se98a_probe(void)
/* Test with the actual values
* (dev id is hi-byte)
* (1131h = NXP Semiconductors PCI-SIG)*/
+ POSTData postData;
SE98A_regs[0x07] = 0xA102;
SE98A_regs[0x06] = 0x1131;
- TEST_ASSERT_EQUAL(RETURN_OK, se98a_probe(&s_dev));
+ TEST_ASSERT_EQUAL(POST_DEV_FOUND, se98a_probe(&s_dev,&postData));
/* Test with an incorrect device ID */
SE98A_regs[0x07] = 0xFACE;
- TEST_ASSERT_EQUAL(POST_DEV_ID_MISMATCH, se98a_probe(&s_dev));
+ TEST_ASSERT_EQUAL(POST_DEV_ID_MISMATCH, se98a_probe(&s_dev,&postData));
/* Test with an incorrect mfg ID */
SE98A_regs[0x07] = 0xA102;
SE98A_regs[0x06] = 0xABCD;
- TEST_ASSERT_EQUAL(POST_DEV_ID_MISMATCH, se98a_probe(&s_dev));
+ TEST_ASSERT_EQUAL(POST_DEV_ID_MISMATCH, se98a_probe(&s_dev,&postData));
/* Test with a missing device */
- TEST_ASSERT_EQUAL(POST_DEV_MISSING, se98a_probe(&s_invalid));
+ TEST_ASSERT_EQUAL(POST_DEV_MISSING, se98a_probe(&s_invalid,&postData));
}
/* Helper to let us run through the various limits we can set */
diff --git a/firmware/ec/test/suites/Test_sx1509.c b/firmware/ec/test/suites/Test_sx1509.c
index bba6ce6516..98604fede3 100644
--- a/firmware/ec/test/suites/Test_sx1509.c
+++ b/firmware/ec/test/suites/Test_sx1509.c
@@ -15,11 +15,6 @@ static const I2C_Dev s_sx1509_dev = {
.slave_addr = I2C_ADDR,
};
-static const I2C_Dev s_sx1509_no_dev = {
- .bus = I2C_BUS,
- .slave_addr = 0x01,
-};
-
static uint8_t SX1509_regs[] = {
[0x00] = 0x00, /* Input buffer disable register B */
[0x01] = 0x00, /* Input buffer disable register A */
@@ -509,7 +504,8 @@ void test_ioexp_led_clear_interrupt_source(void)
void test_ioexp_led_not_present(void)
{
- I2C_Dev invalid_dev = s_sx1509_no_dev;
+ I2C_Dev invalid_dev = s_sx1509_dev;
+ invalid_dev.slave_addr = 0x01;
/* Ensure that we fail properly if the device isn't on the bus */
uint8_t dummy_val;