oehansens i2c and spi extensions
This commit is contained in:
257
i2cspi_BaS_gcc/.cproject
Normal file
257
i2cspi_BaS_gcc/.cproject
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="cdt.managedbuild.toolchain.gnu.cross.base.500844171">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.cross.base.500844171" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="BaS_GNU" buildProperties="" description="" errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.CWDLocator" id="cdt.managedbuild.toolchain.gnu.cross.base.500844171" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="cdt.managedbuild.toolchain.gnu.cross.base.500844171.251316721" name="/" resourcePath="">
|
||||||
|
<toolChain id="cdt.managedbuild.toolchain.gnu.cross.base.237011896" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.base">
|
||||||
|
<option id="cdt.managedbuild.option.gnu.cross.prefix.272340778" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix"/>
|
||||||
|
<option id="cdt.managedbuild.option.gnu.cross.path.572966236" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path"/>
|
||||||
|
<targetPlatform archList="all" binaryParser="" id="cdt.managedbuild.targetPlatform.gnu.cross.1946104397" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
|
||||||
|
<builder id="cdt.managedbuild.builder.gnu.cross.116010461" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.1346392496" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
|
||||||
|
<option id="gnu.c.compiler.option.include.paths.869536174" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value="/usr/m68k-elf/include"/>
|
||||||
|
</option>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.2036594113" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1539098439" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.c.linker.983740799" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.406272886" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.57852077" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.archiver.1399280647" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.assembler.1268440718" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.468245267" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<fileInfo id="cdt.managedbuild.toolchain.gnu.cross.base.500844171.1693274825" name="Makefile" rcbsApplicability="disable" resourcePath="Makefile" toolsToInvoke=""/>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
<cconfiguration id="cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686" moduleId="org.eclipse.cdt.core.settings" name="firebee-cross">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="BaS_GNU" buildProperties="" description="cross development for firebee firmware" errorParsers="org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.GmakeErrorParser" id="cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686" name="firebee-cross" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686." name="/" resourcePath="">
|
||||||
|
<toolChain id="cdt.managedbuild.toolchain.gnu.cross.base.1967179068" name="Cross GCC" resourceTypeBasedDiscovery="true" superClass="cdt.managedbuild.toolchain.gnu.cross.base">
|
||||||
|
<option id="cdt.managedbuild.option.gnu.cross.prefix.129963777" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix"/>
|
||||||
|
<option id="cdt.managedbuild.option.gnu.cross.path.176129148" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path"/>
|
||||||
|
<targetPlatform archList="all" binaryParser="" id="cdt.managedbuild.targetPlatform.gnu.cross.2042576934" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
|
||||||
|
<builder autoBuildTarget="all" buildPath="${workspace_loc:/BaS_GNU}" cleanBuildTarget="clean" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="cdt.managedbuild.builder.gnu.cross.1808605670" incrementalBuildTarget="all" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.builder.gnu.cross">
|
||||||
|
<outputEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name=""/>
|
||||||
|
</outputEntries>
|
||||||
|
</builder>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.283290301" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
|
||||||
|
<option id="gnu.c.compiler.option.include.paths.103275678" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/BaS_gcc/include}""/>
|
||||||
|
<listOptionValue builtIn="false" value="/usr/m68k-elf/include"/>
|
||||||
|
<listOptionValue builtIn="false" value="/opt/cross-mint/m68k-atari-mint/include"/>
|
||||||
|
<listOptionValue builtIn="false" value="/usr/lib/gcc/m68k-atari-mint/4.6.3/include"/>
|
||||||
|
</option>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1445023059" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1303101590" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.c.linker.2089383321" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.305885086" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.413671435" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.archiver.88300823" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.assembler.810274043" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.719845882" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<fileInfo id="cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686.149483996" name="bas_printf.h" rcbsApplicability="disable" resourcePath="include/bas_printf.h" toolsToInvoke=""/>
|
||||||
|
<fileInfo id="cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686.Makefile" name="Makefile" rcbsApplicability="disable" resourcePath="Makefile" toolsToInvoke=""/>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry excluding="include|sources" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="sources"/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="include"/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
<cconfiguration id="cdt.managedbuild.toolchain.gnu.cross.base.1557606920">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.cross.base.1557606920" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.cross.base.1557606920" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="cdt.managedbuild.toolchain.gnu.cross.base.1557606920.894087346" name="/" resourcePath="">
|
||||||
|
<toolChain id="cdt.managedbuild.toolchain.gnu.cross.base.808036944" name="cdt.managedbuild.toolchain.gnu.cross.base" superClass="cdt.managedbuild.toolchain.gnu.cross.base">
|
||||||
|
<option id="cdt.managedbuild.option.gnu.cross.prefix.579880707" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix"/>
|
||||||
|
<option id="cdt.managedbuild.option.gnu.cross.path.2139341053" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path"/>
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.1712307593" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
|
||||||
|
<builder id="cdt.managedbuild.builder.gnu.cross.1872779390" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.1693427002" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
|
||||||
|
<option id="gnu.c.compiler.option.include.paths.559413321" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value="/usr/m68k-elf/include"/>
|
||||||
|
</option>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.589685537" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.66237432" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.651961483" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.c.linker.801196180" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1012333610" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.273251286" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.2032495512" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.archiver.1703324170" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cross.assembler.2129741386" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1949654614" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="BaS_GNU.null.2057987123" name="BaS_GNU"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||||
|
<configuration configurationName="firebee-cross">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/BaS_GNU"/>
|
||||||
|
</configuration>
|
||||||
|
<configuration configurationName="Default">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/BaS_GNU"/>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings">
|
||||||
|
<doc-comment-owner id="org.eclipse.cdt.internal.ui.text.doctools.NullDocCommentOwner">
|
||||||
|
<path value=""/>
|
||||||
|
</doc-comment-owner>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
|
||||||
|
<buildTargets>
|
||||||
|
<target name="all" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||||
|
<buildCommand>make</buildCommand>
|
||||||
|
<buildArguments/>
|
||||||
|
<buildTarget>all</buildTarget>
|
||||||
|
<stopOnError>true</stopOnError>
|
||||||
|
<useDefaultCommand>true</useDefaultCommand>
|
||||||
|
<runAllBuilders>true</runAllBuilders>
|
||||||
|
</target>
|
||||||
|
<target name="clean" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||||
|
<buildCommand>make</buildCommand>
|
||||||
|
<buildTarget>clean</buildTarget>
|
||||||
|
<stopOnError>true</stopOnError>
|
||||||
|
<useDefaultCommand>true</useDefaultCommand>
|
||||||
|
<runAllBuilders>true</runAllBuilders>
|
||||||
|
</target>
|
||||||
|
<target name="ram" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||||
|
<buildCommand>make</buildCommand>
|
||||||
|
<buildArguments/>
|
||||||
|
<buildTarget>ram</buildTarget>
|
||||||
|
<stopOnError>true</stopOnError>
|
||||||
|
<useDefaultCommand>true</useDefaultCommand>
|
||||||
|
<runAllBuilders>true</runAllBuilders>
|
||||||
|
</target>
|
||||||
|
<target name="bfl" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||||
|
<buildCommand>make</buildCommand>
|
||||||
|
<buildArguments/>
|
||||||
|
<buildTarget>bfl</buildTarget>
|
||||||
|
<stopOnError>true</stopOnError>
|
||||||
|
<useDefaultCommand>true</useDefaultCommand>
|
||||||
|
<runAllBuilders>true</runAllBuilders>
|
||||||
|
</target>
|
||||||
|
</buildTargets>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686;cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686.;cdt.managedbuild.tool.gnu.cross.c.compiler.283290301;cdt.managedbuild.tool.gnu.c.compiler.input.1445023059">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.500844171;cdt.managedbuild.toolchain.gnu.cross.base.500844171.251316721;cdt.managedbuild.tool.gnu.cross.c.compiler.1346392496;cdt.managedbuild.tool.gnu.c.compiler.input.2036594113">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.500844171;cdt.managedbuild.toolchain.gnu.cross.base.500844171.251316721;cdt.managedbuild.tool.gnu.cross.c.compiler.915906842;cdt.managedbuild.tool.gnu.c.compiler.input.1420707322">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD "${plugin_state_location}/specs.c"" command="m68k-atari-mint-gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.500844171;cdt.managedbuild.toolchain.gnu.cross.base.500844171.2140460233;cdt.managedbuild.tool.gnu.cross.c.compiler.915906842.729509112;cdt.managedbuild.tool.gnu.c.compiler.input.2002421488">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686;cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686.;cdt.managedbuild.tool.gnu.cross.c.compiler.359669870;cdt.managedbuild.tool.gnu.c.compiler.input.374200372">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686;cdt.managedbuild.toolchain.gnu.cross.base.500844171.756690686.;cdt.managedbuild.tool.gnu.cross.c.compiler.1024005096;cdt.managedbuild.tool.gnu.c.compiler.input.1427165564">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||||
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
|
||||||
|
<buildOutputProvider>
|
||||||
|
<openAction enabled="true" filePath=""/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</buildOutputProvider>
|
||||||
|
<scannerInfoProvider id="specsFile">
|
||||||
|
<runAction arguments="-E -P -v -dD "${plugin_state_location}/specs.c"" command="m68k-atari-mint-gcc" useDefault="true"/>
|
||||||
|
<parser enabled="true"/>
|
||||||
|
</scannerInfoProvider>
|
||||||
|
</profile>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
||||||
10
i2cspi_BaS_gcc/.gdbinit
Normal file
10
i2cspi_BaS_gcc/.gdbinit
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
#set disassemble-next-line on
|
||||||
|
define tr
|
||||||
|
target remote | m68k-bdm-gdbserver pipe /dev/bdmcf3
|
||||||
|
monitor bdm-reset
|
||||||
|
end
|
||||||
|
define tbtr
|
||||||
|
target remote | m68k-bdm-gdbserver pipe /dev/tblcf3
|
||||||
|
end
|
||||||
|
source mcf5474.gdb
|
||||||
|
|
||||||
77
i2cspi_BaS_gcc/.project
Normal file
77
i2cspi_BaS_gcc/.project
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>BaS_gcc</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<triggers>clean,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
|
||||||
|
<value>all</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>make</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||||
|
<value>clean</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.contents</key>
|
||||||
|
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
||||||
|
<value>all</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
68
i2cspi_BaS_gcc/.settings/org.eclipse.cdt.codan.core.prefs
Normal file
68
i2cspi_BaS_gcc/.settings/org.eclipse.cdt.codan.core.prefs
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>true,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,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\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||||
|
useParentScope=false
|
||||||
173
i2cspi_BaS_gcc/.settings/org.eclipse.cdt.core.prefs
Normal file
173
i2cspi_BaS_gcc/.settings/org.eclipse.cdt.core.prefs
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
indexer/filesToParseUpFront=cstdarg, stdarg.h, stddef.h, sys/resource.h, ctime, sys/types.h, signal.h, cstdio
|
||||||
|
indexer/indexAllFiles=true
|
||||||
|
indexer/indexOnOpen=true
|
||||||
|
indexer/indexUnusedHeadersWithDefaultLang=true
|
||||||
|
indexer/indexerId=org.eclipse.cdt.core.fastIndexer
|
||||||
|
indexer/skipFilesLargerThanMB=80
|
||||||
|
indexer/skipImplicitReferences=false
|
||||||
|
indexer/skipMacroReferences=false
|
||||||
|
indexer/skipReferences=false
|
||||||
|
indexer/skipTypeReferences=false
|
||||||
|
indexer/useHeuristicIncludeResolution=true
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_assignment=16
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_binary_expression=16
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_compact_if=0
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=80
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=0
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_expression_list=0
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_member_access=0
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=16
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16
|
||||||
|
org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=next_line
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_block=next_line
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=next_line
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_switch=next_line
|
||||||
|
org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line
|
||||||
|
org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=1
|
||||||
|
org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
|
||||||
|
org.eclipse.cdt.core.formatter.compact_else_if=true
|
||||||
|
org.eclipse.cdt.core.formatter.continuation_indentation=2
|
||||||
|
org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2
|
||||||
|
org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false
|
||||||
|
org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false
|
||||||
|
org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0
|
||||||
|
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true
|
||||||
|
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=false
|
||||||
|
org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true
|
||||||
|
org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false
|
||||||
|
org.eclipse.cdt.core.formatter.indent_empty_lines=false
|
||||||
|
org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true
|
||||||
|
org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true
|
||||||
|
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true
|
||||||
|
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=false
|
||||||
|
org.eclipse.cdt.core.formatter.indentation.size=4
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
|
||||||
|
org.eclipse.cdt.core.formatter.join_wrapped_lines=true
|
||||||
|
org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false
|
||||||
|
org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false
|
||||||
|
org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false
|
||||||
|
org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false
|
||||||
|
org.eclipse.cdt.core.formatter.lineSplit=80
|
||||||
|
org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1
|
||||||
|
org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true
|
||||||
|
org.eclipse.cdt.core.formatter.tabulation.char=tab
|
||||||
|
org.eclipse.cdt.core.formatter.tabulation.size=4
|
||||||
|
org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false
|
||||||
3
i2cspi_BaS_gcc/.settings/org.eclipse.cdt.ui.prefs
Normal file
3
i2cspi_BaS_gcc/.settings/org.eclipse.cdt.ui.prefs
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
formatter_profile=org.eclipse.cdt.ui.default.allman_profile
|
||||||
|
formatter_settings_version=1
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
eclipse.preferences.version=1
|
||||||
|
org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
|
||||||
674
i2cspi_BaS_gcc/COPYING
Normal file
674
i2cspi_BaS_gcc/COPYING
Normal file
@@ -0,0 +1,674 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||||
330
i2cspi_BaS_gcc/COPYING.LESSER
Normal file
330
i2cspi_BaS_gcc/COPYING.LESSER
Normal file
@@ -0,0 +1,330 @@
|
|||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
This version of the GNU Lesser General Public License incorporates
|
||||||
|
the terms and conditions of version 3 of the GNU General Public
|
||||||
|
License, supplemented by the additional permissions listed below.
|
||||||
|
|
||||||
|
0. Additional Definitions.
|
||||||
|
|
||||||
|
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||||
|
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||||
|
General Public License.
|
||||||
|
|
||||||
|
"The Library" refers to a covered work governed by this License,
|
||||||
|
other than an Application or a Combined Work as defined below.
|
||||||
|
|
||||||
|
An "Application" is any work that makes use of an interface provided
|
||||||
|
by the Library, but which is not otherwise based on the Library.
|
||||||
|
Defining a subclass of a class defined by the Library is deemed a mode
|
||||||
|
of using an interface provided by the Library.
|
||||||
|
|
||||||
|
A "Combined Work" is a work produced by combining or linking an
|
||||||
|
Application with the Library. The particular version of the Library
|
||||||
|
with which the Combined Work was made is also called the "Linked
|
||||||
|
Version".
|
||||||
|
|
||||||
|
The "Minimal Corresponding Source" for a Combined Work means the
|
||||||
|
Corresponding Source for the Combined Work, excluding any source code
|
||||||
|
for portions of the Combined Work that, considered in isolation, are
|
||||||
|
based on the Application, and not on the Linked Version.
|
||||||
|
|
||||||
|
The "Corresponding Application Code" for a Combined Work means the
|
||||||
|
object code and/or source code for the Application, including any data
|
||||||
|
and utility programs needed for reproducing the Combined Work from the
|
||||||
|
Application, but excluding the System Libraries of the Combined Work.
|
||||||
|
|
||||||
|
1. Exception to Section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
You may convey a covered work under sections 3 and 4 of this License
|
||||||
|
without being bound by section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
2. Conveying Modified Versions.
|
||||||
|
|
||||||
|
If you modify a copy of the Library, and, in your modifications, a
|
||||||
|
facility refers to a function or data to be supplied by an Application
|
||||||
|
that uses the facility (other than as an argument passed when the
|
||||||
|
facility is invoked), then you may convey a copy of the modified
|
||||||
|
version:
|
||||||
|
|
||||||
|
a) under this License, provided that you make a good faith effort to
|
||||||
|
ensure that, in the event an Application does not supply the
|
||||||
|
function or data, the facility still operates, and performs
|
||||||
|
whatever part of its purpose remains meaningful, or
|
||||||
|
|
||||||
|
b) under the GNU GPL, with none of the additional permissions of
|
||||||
|
this License applicable to that copy.
|
||||||
|
|
||||||
|
3. Object Code Incorporating Material from Library Header Files.
|
||||||
|
|
||||||
|
The object code form of an Application may incorporate material from
|
||||||
|
a header file that is part of the Library. You may convey such object
|
||||||
|
code under terms of your choice, provided that, if the incorporated
|
||||||
|
material is not limited to numerical parameters, data structure
|
||||||
|
layouts and accessors, or small macros, inline functions and templates
|
||||||
|
(ten or fewer lines in length), you do both of the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the object code that the
|
||||||
|
Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
4. Combined Works.
|
||||||
|
|
||||||
|
You may convey a Combined Work under terms of your choice that,
|
||||||
|
taken together, effectively do not restrict modification of the
|
||||||
|
portions of the Library contained in the Combined Work and reverse
|
||||||
|
engineering for debugging such modifications, if you also do each of
|
||||||
|
the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the Combined Work that
|
||||||
|
the Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
c) For a Combined Work that displays copyright notices during
|
||||||
|
execution, include the copyright notice for the Library among
|
||||||
|
these notices, as well as a reference directing the user to the
|
||||||
|
copies of the GNU GPL and this license document.
|
||||||
|
|
||||||
|
d) Do one of the following:
|
||||||
|
|
||||||
|
0) Convey the Minimal Corresponding Source under the terms of this
|
||||||
|
License, and the Corresponding Application Code in a form
|
||||||
|
suitable for, and under terms that permit, the user to
|
||||||
|
recombine or relink the Application with a modified version of
|
||||||
|
the Linked Version to produce a modified Combined Work, in the
|
||||||
|
manner specified by section 6 of the GNU GPL for conveying
|
||||||
|
Corresponding Source.
|
||||||
|
|
||||||
|
1) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (a) uses at run time
|
||||||
|
a copy of the Library already present on the user's computer
|
||||||
|
system, and (b) will operate properly with a modified version
|
||||||
|
of the Library that is interface-compatible with the Linked
|
||||||
|
Version.
|
||||||
|
|
||||||
|
e) Provide Installation Information, but only if you would otherwise
|
||||||
|
be required to provide such information under section 6 of the
|
||||||
|
GNU GPL, and only to the extent that such information is
|
||||||
|
necessary to install and execute a modified version of the
|
||||||
|
Combined Work produced by recombining or relinking the
|
||||||
|
Application with a modified version of the Linked Version. (If
|
||||||
|
you use option 4d0, the Installation Information must accompany
|
||||||
|
the Minimal Corresponding Source and Corresponding Application
|
||||||
|
Code. If you use option 4d1, you must provide the Installation
|
||||||
|
Information in the manner specified by section 6 of the GNU GPL
|
||||||
|
for conveying Corresponding Source.)
|
||||||
|
|
||||||
|
5. Combined Libraries.
|
||||||
|
|
||||||
|
You may place library facilities that are a work based on the
|
||||||
|
Library side by side in a single library together with other library
|
||||||
|
facilities that are not Applications and are not covered by this
|
||||||
|
License, and convey such a combined library under terms of your
|
||||||
|
choice, if you do both of the following:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work based
|
||||||
|
on the Library, uncombined with any other library facilities,
|
||||||
|
conveyed under the terms of this License.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library that part of it
|
||||||
|
is a work based on the Library, and explaining where to find the
|
||||||
|
accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
6. Revised Versions of the GNU Lesser General Public License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU Lesser General Public License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Library as you received it specifies that a certain numbered version
|
||||||
|
of the GNU Lesser General Public License "or any later version"
|
||||||
|
applies to it, you have the option of following the terms and
|
||||||
|
conditions either of that published version or of any later version
|
||||||
|
published by the Free Software Foundation. If the Library as you
|
||||||
|
received it does not specify a version number of the GNU Lesser
|
||||||
|
General Public License, you may choose any version of the GNU Lesser
|
||||||
|
General Public License ever published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Library as you received it specifies that a proxy can decide
|
||||||
|
whether future versions of the GNU Lesser General Public License shall
|
||||||
|
apply, that proxy's public statement of acceptance of any version is
|
||||||
|
permanent authorization for you to choose that version for the
|
||||||
|
Library.
|
||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
This version of the GNU Lesser General Public License incorporates
|
||||||
|
the terms and conditions of version 3 of the GNU General Public
|
||||||
|
License, supplemented by the additional permissions listed below.
|
||||||
|
|
||||||
|
0. Additional Definitions.
|
||||||
|
|
||||||
|
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||||
|
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||||
|
General Public License.
|
||||||
|
|
||||||
|
"The Library" refers to a covered work governed by this License,
|
||||||
|
other than an Application or a Combined Work as defined below.
|
||||||
|
|
||||||
|
An "Application" is any work that makes use of an interface provided
|
||||||
|
by the Library, but which is not otherwise based on the Library.
|
||||||
|
Defining a subclass of a class defined by the Library is deemed a mode
|
||||||
|
of using an interface provided by the Library.
|
||||||
|
|
||||||
|
A "Combined Work" is a work produced by combining or linking an
|
||||||
|
Application with the Library. The particular version of the Library
|
||||||
|
with which the Combined Work was made is also called the "Linked
|
||||||
|
Version".
|
||||||
|
|
||||||
|
The "Minimal Corresponding Source" for a Combined Work means the
|
||||||
|
Corresponding Source for the Combined Work, excluding any source code
|
||||||
|
for portions of the Combined Work that, considered in isolation, are
|
||||||
|
based on the Application, and not on the Linked Version.
|
||||||
|
|
||||||
|
The "Corresponding Application Code" for a Combined Work means the
|
||||||
|
object code and/or source code for the Application, including any data
|
||||||
|
and utility programs needed for reproducing the Combined Work from the
|
||||||
|
Application, but excluding the System Libraries of the Combined Work.
|
||||||
|
|
||||||
|
1. Exception to Section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
You may convey a covered work under sections 3 and 4 of this License
|
||||||
|
without being bound by section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
2. Conveying Modified Versions.
|
||||||
|
|
||||||
|
If you modify a copy of the Library, and, in your modifications, a
|
||||||
|
facility refers to a function or data to be supplied by an Application
|
||||||
|
that uses the facility (other than as an argument passed when the
|
||||||
|
facility is invoked), then you may convey a copy of the modified
|
||||||
|
version:
|
||||||
|
|
||||||
|
a) under this License, provided that you make a good faith effort to
|
||||||
|
ensure that, in the event an Application does not supply the
|
||||||
|
function or data, the facility still operates, and performs
|
||||||
|
whatever part of its purpose remains meaningful, or
|
||||||
|
|
||||||
|
b) under the GNU GPL, with none of the additional permissions of
|
||||||
|
this License applicable to that copy.
|
||||||
|
|
||||||
|
3. Object Code Incorporating Material from Library Header Files.
|
||||||
|
|
||||||
|
The object code form of an Application may incorporate material from
|
||||||
|
a header file that is part of the Library. You may convey such object
|
||||||
|
code under terms of your choice, provided that, if the incorporated
|
||||||
|
material is not limited to numerical parameters, data structure
|
||||||
|
layouts and accessors, or small macros, inline functions and templates
|
||||||
|
(ten or fewer lines in length), you do both of the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the object code that the
|
||||||
|
Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
4. Combined Works.
|
||||||
|
|
||||||
|
You may convey a Combined Work under terms of your choice that,
|
||||||
|
taken together, effectively do not restrict modification of the
|
||||||
|
portions of the Library contained in the Combined Work and reverse
|
||||||
|
engineering for debugging such modifications, if you also do each of
|
||||||
|
the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the Combined Work that
|
||||||
|
the Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
c) For a Combined Work that displays copyright notices during
|
||||||
|
execution, include the copyright notice for the Library among
|
||||||
|
these notices, as well as a reference directing the user to the
|
||||||
|
copies of the GNU GPL and this license document.
|
||||||
|
|
||||||
|
d) Do one of the following:
|
||||||
|
|
||||||
|
0) Convey the Minimal Corresponding Source under the terms of this
|
||||||
|
License, and the Corresponding Application Code in a form
|
||||||
|
suitable for, and under terms that permit, the user to
|
||||||
|
recombine or relink the Application with a modified version of
|
||||||
|
the Linked Version to produce a modified Combined Work, in the
|
||||||
|
manner specified by section 6 of the GNU GPL for conveying
|
||||||
|
Corresponding Source.
|
||||||
|
|
||||||
|
1) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (a) uses at run time
|
||||||
|
a copy of the Library already present on the user's computer
|
||||||
|
system, and (b) will operate properly with a modified version
|
||||||
|
of the Library that is interface-compatible with the Linked
|
||||||
|
Version.
|
||||||
|
|
||||||
|
e) Provide Installation Information, but only if you would otherwise
|
||||||
|
be required to provide such information under section 6 of the
|
||||||
|
GNU GPL, and only to the extent that such information is
|
||||||
|
necessary to install and execute a modified version of the
|
||||||
|
Combined Work produced by recombining or relinking the
|
||||||
|
Application with a modified version of the Linked Version. (If
|
||||||
|
you use option 4d0, the Installation Information must accompany
|
||||||
|
the Minimal Corresponding Source and Corresponding Application
|
||||||
|
Code. If you use option 4d1, you must provide the Installation
|
||||||
|
Information in the manner specified by section 6 of the GNU GPL
|
||||||
|
for conveying Corresponding Source.)
|
||||||
|
|
||||||
|
5. Combined Libraries.
|
||||||
|
|
||||||
|
You may place library facilities that are a work based on the
|
||||||
|
Library side by side in a single library together with other library
|
||||||
|
facilities that are not Applications and are not covered by this
|
||||||
|
License, and convey such a combined library under terms of your
|
||||||
|
choice, if you do both of the following:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work based
|
||||||
|
on the Library, uncombined with any other library facilities,
|
||||||
|
conveyed under the terms of this License.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library that part of it
|
||||||
|
is a work based on the Library, and explaining where to find the
|
||||||
|
accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
6. Revised Versions of the GNU Lesser General Public License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU Lesser General Public License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Library as you received it specifies that a certain numbered version
|
||||||
|
of the GNU Lesser General Public License "or any later version"
|
||||||
|
applies to it, you have the option of following the terms and
|
||||||
|
conditions either of that published version or of any later version
|
||||||
|
published by the Free Software Foundation. If the Library as you
|
||||||
|
received it does not specify a version number of the GNU Lesser
|
||||||
|
General Public License, you may choose any version of the GNU Lesser
|
||||||
|
General Public License ever published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Library as you received it specifies that a proxy can decide
|
||||||
|
whether future versions of the GNU Lesser General Public License shall
|
||||||
|
apply, that proxy's public statement of acceptance of any version is
|
||||||
|
permanent authorization for you to choose that version for the
|
||||||
|
Library.
|
||||||
160
i2cspi_BaS_gcc/Makefile
Normal file
160
i2cspi_BaS_gcc/Makefile
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
#
|
||||||
|
# Makefile for Firebee BaS
|
||||||
|
#
|
||||||
|
# This Makefile is meant for cross compiling the BaS with Vincent Riviere's cross compilers.
|
||||||
|
# If you want to compile native on an Atari (you will need at least GCC 4.6.3), set
|
||||||
|
# TCPREFIX to be empty.
|
||||||
|
# If you want to compile with the m68k-elf- toolchain, set TCPREFIX accordingly. Requires an extra
|
||||||
|
# installation, but allows source level debugging over BDM with a recent gdb (tested with 7.5),
|
||||||
|
# the m68k BDM tools from sourceforge (http://bdm.sourceforge.net) and a BDM pod (TBLCF and P&E tested).
|
||||||
|
|
||||||
|
# can be either "Y" or "N" (without quotes). "Y" for using the m68k-elf-, "N" for using the m68k-atari-mint
|
||||||
|
# toolchain
|
||||||
|
COMPILE_ELF=Y
|
||||||
|
|
||||||
|
ifeq (Y,$(COMPILE_ELF))
|
||||||
|
TCPREFIX=m68k-elf-
|
||||||
|
EXE=elf
|
||||||
|
FORMAT=elf32-m68k
|
||||||
|
else
|
||||||
|
TCPREFIX=m68k-atari-mint-
|
||||||
|
EXE=s19
|
||||||
|
FORMAT=srec
|
||||||
|
endif
|
||||||
|
|
||||||
|
CC=$(TCPREFIX)gcc
|
||||||
|
LD=$(TCPREFIX)ld
|
||||||
|
CPP=$(TCPREFIX)cpp
|
||||||
|
OBJCOPY=$(TCPREFIX)objcopy
|
||||||
|
AR=$(TCPREFIX)ar
|
||||||
|
RANLIB=$(TCPREFIX)ranlib
|
||||||
|
|
||||||
|
INCLUDE=-Iinclude
|
||||||
|
CFLAGS=-mcpu=5474\
|
||||||
|
-Wall\
|
||||||
|
-g\
|
||||||
|
-Wno-multichar\
|
||||||
|
-Winline\
|
||||||
|
-O \
|
||||||
|
-fno-omit-frame-pointer\
|
||||||
|
-fno-strict-aliasing\
|
||||||
|
-ffreestanding\
|
||||||
|
-fleading-underscore\
|
||||||
|
-Wa,--register-prefix-optional
|
||||||
|
|
||||||
|
SRCDIR=sources
|
||||||
|
OBJDIR=objs
|
||||||
|
|
||||||
|
# Linker control file. The final $(LDCFILE) is intermediate only (preprocessed version of $(LDCSRC)
|
||||||
|
LDCFILE=bas.lk
|
||||||
|
LDRFILE=ram.lk
|
||||||
|
LDCSRC=bas.lk.in
|
||||||
|
LDCBSRC=basflash.lk.in
|
||||||
|
LDCBFS=bashflash.lk
|
||||||
|
|
||||||
|
# this Makefile can create the BaS to flash or an arbitrary ram address (for BDM debugging). See
|
||||||
|
# below for the definition of TARGET_ADDRESS
|
||||||
|
FLASH_EXEC=bas.$(EXE)
|
||||||
|
RAM_EXEC=ram.$(EXE)
|
||||||
|
BASFLASH_EXEC=basflash.$(EXE)
|
||||||
|
|
||||||
|
CSRCS= \
|
||||||
|
$(SRCDIR)/sysinit.c \
|
||||||
|
$(SRCDIR)/init_fpga.c \
|
||||||
|
$(SRCDIR)/bas_printf.c \
|
||||||
|
$(SRCDIR)/bas_string.c \
|
||||||
|
$(SRCDIR)/BaS.c \
|
||||||
|
$(SRCDIR)/cache.c \
|
||||||
|
$(SRCDIR)/mmc.c \
|
||||||
|
$(SRCDIR)/unicode.c \
|
||||||
|
$(SRCDIR)/ff.c \
|
||||||
|
$(SRCDIR)/sd_card.c \
|
||||||
|
$(SRCDIR)/wait.c \
|
||||||
|
$(SRCDIR)/s19reader.c \
|
||||||
|
$(SRCDIR)/flash.c
|
||||||
|
|
||||||
|
ASRCS= \
|
||||||
|
$(SRCDIR)/startcf.S \
|
||||||
|
$(SRCDIR)/printf_helper.S \
|
||||||
|
$(SRCDIR)/mmu.S \
|
||||||
|
$(SRCDIR)/exceptions.S \
|
||||||
|
$(SRCDIR)/supervisor.S \
|
||||||
|
$(SRCDIR)/illegal_instruction.S
|
||||||
|
|
||||||
|
COBJS=$(patsubst $(SRCDIR)/%.o,$(OBJDIR)/%.o,$(patsubst %.c,%.o,$(CSRCS)))
|
||||||
|
AOBJS=$(patsubst $(SRCDIR)/%.o,$(OBJDIR)/%.o,$(patsubst %.S,%.o,$(ASRCS)))
|
||||||
|
|
||||||
|
OBJS=$(COBJS) $(AOBJS)
|
||||||
|
LIBBAS=libbas.a
|
||||||
|
|
||||||
|
all: fls ram bfl lib
|
||||||
|
fls: $(FLASH_EXEC)
|
||||||
|
ram: $(RAM_EXEC)
|
||||||
|
bfl: $(BASFLASH_EXEC)
|
||||||
|
lib: $(LIBBAS)
|
||||||
|
|
||||||
|
.PHONY clean:
|
||||||
|
@ rm -f $(FLASH_EXEC) $(FLASH_EXEC).elf $(FLASH_EXEC).s19 \
|
||||||
|
$(RAM_EXEC) $(RAM_EXEC).elf $(RAM_EXEC).s19 \
|
||||||
|
$(BASFLASH_EXEC) $(BASFLASH_EXEC).elf $(BASFLASH_EXEC).s19 $(OBJDIR)/basflash.o $(OBJDIR)/basflash_start.o \
|
||||||
|
$(OBJS) $(LIBBAS) \
|
||||||
|
bas.lk bas.map ram.lk ram.map basflash.lk basflash.map depend
|
||||||
|
|
||||||
|
$(FLASH_EXEC): TARGET_ADDRESS=0xe0000000
|
||||||
|
$(FLASH_EXEC): LDCFILE=bas.lk
|
||||||
|
$(FLASH_EXEC): MAPFILE=bas.map
|
||||||
|
|
||||||
|
$(RAM_EXEC): TARGET_ADDRESS=0x10000000
|
||||||
|
$(RAM_EXEC): LDCFILE=ram.lk
|
||||||
|
$(RAM_EXEC): MAPFILE=ram.map
|
||||||
|
|
||||||
|
$(BASFLASH_EXEC): TARGET_ADDRESS=0x00100000
|
||||||
|
$(BASFLASH_EXEC): LDCFILE=basflash.lk
|
||||||
|
$(BASFLASH_EXEC): MAPFILE=basflash.map
|
||||||
|
|
||||||
|
# the final link stage (BaS in RAM and BaS in flash)
|
||||||
|
$(FLASH_EXEC) $(RAM_EXEC): $(LIBBAS) $(LDCSRC)
|
||||||
|
$(CPP) -P -DTARGET_ADDRESS=$(TARGET_ADDRESS) -DFORMAT=$(FORMAT) $(LDCSRC) -o $(LDCFILE)
|
||||||
|
$(LD) --oformat $(FORMAT) -Map $(MAPFILE) --cref -T $(LDCFILE) -o $@
|
||||||
|
ifeq ($(COMPILE_ELF),Y)
|
||||||
|
$(OBJCOPY) -O srec $@ $@.s19
|
||||||
|
else
|
||||||
|
objcopy -I srec -O elf32-big --alt-machine-code 4 $@ $@.elf
|
||||||
|
endif
|
||||||
|
|
||||||
|
# the basflash (SD-card executable called from BaS) final link stage
|
||||||
|
$(BASFLASH_EXEC): $(OBJDIR)/basflash.o $(OBJDIR)/basflash_start.o $(LIBBAS) $(LDCBFL)
|
||||||
|
$(CPP) -P -DTARGET_ADDRESS=$(TARGET_ADDRESS) -DFORMAT=$(FORMAT) $(LDCBSRC) -o $(LDCFILE)
|
||||||
|
$(LD) --oformat $(FORMAT) -Map $(MAPFILE) --cref -T $(LDCFILE) -L. -lbas -o $@
|
||||||
|
ifeq ($(COMPILE_ELF),Y)
|
||||||
|
$(OBJCOPY) -O srec $@ $@.s19
|
||||||
|
else
|
||||||
|
objcopy -I srec -O elf32-big --alt-machine-code 4 $@ $@.elf
|
||||||
|
endif
|
||||||
|
|
||||||
|
# (re)create library. Currently suboptimal because it rewrites the whole lib even if only a single object changed
|
||||||
|
$(LIBBAS): $(OBJS)
|
||||||
|
$(AR) rv $@ $(OBJS)
|
||||||
|
$(RANLIB) $@
|
||||||
|
|
||||||
|
# compile init_fpga with -mbitfield for testing purposes
|
||||||
|
#$(OBJDIR)/init_fpga.o: CFLAGS += -mbitfield
|
||||||
|
|
||||||
|
# compile printf pc-relative so it can be used as well before and after copy of BaS
|
||||||
|
$(OBJDIR)/bas_printf.o: CFLAGS += -mpcrel
|
||||||
|
# the same for flush_and_invalidate_cache()
|
||||||
|
$(OBJDIR)/cache.o: CFLAGS += -mpcrel
|
||||||
|
|
||||||
|
$(OBJDIR)/%.o:$(SRCDIR)/%.c
|
||||||
|
$(CC) -c $(CFLAGS) $(INCLUDE) $< -o $@
|
||||||
|
|
||||||
|
$(OBJDIR)/%.o:$(SRCDIR)/%.S
|
||||||
|
$(CC) -c $(CFLAGS) -Wa,--bitwise-or $(INCLUDE) $< -o $@
|
||||||
|
|
||||||
|
depend: $(ASRCS) $(CSRCS)
|
||||||
|
$(CC) $(CFLAGS) $(INCLUDE) -M $(ASRCS) $(CSRCS) | sed -e 's/^\(.*\).o:/$(OBJDIR)\/\1.o:/' > depend
|
||||||
|
|
||||||
|
|
||||||
|
ifneq (clean,$(MAKECMDGOALS))
|
||||||
|
-include depend
|
||||||
|
endif
|
||||||
143
i2cspi_BaS_gcc/bas.lk.in
Normal file
143
i2cspi_BaS_gcc/bas.lk.in
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
bas_rom (RX) : ORIGIN = TARGET_ADDRESS, LENGTH = 0x00100000
|
||||||
|
bas_ram (WX) : ORIGIN = 0x1FE00000, LENGTH = 0x00100000 /* target to copy BaS to */
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
/* BaS in ROM */
|
||||||
|
.text :
|
||||||
|
{
|
||||||
|
objs/startcf.o(.text) /* this one is the entry point so it must be the first */
|
||||||
|
objs/sysinit.o(.text)
|
||||||
|
objs/init_fpga.o(.text)
|
||||||
|
objs/wait.o(.text)
|
||||||
|
|
||||||
|
#if (FORMAT == elf32-m68k)
|
||||||
|
*(.rodata)
|
||||||
|
*(.rodata.*)
|
||||||
|
#endif
|
||||||
|
} > bas_rom
|
||||||
|
|
||||||
|
/* BaS in RAM */
|
||||||
|
.bas :
|
||||||
|
/* The BaS is stored in the flash, just after the init part.
|
||||||
|
* Then it will be copied to its final location in the RAM.
|
||||||
|
* This data must be aligned for optimal copy loop speed.
|
||||||
|
*/
|
||||||
|
AT (ALIGN(ADDR(.text) + SIZEOF(.text), 4))
|
||||||
|
{
|
||||||
|
objs/BaS.o(.text)
|
||||||
|
objs/wait.o(.text)
|
||||||
|
/* put other routines into the same segment (RAM) as BaS.o */
|
||||||
|
objs/unicode.o(.text)
|
||||||
|
objs/mmc.o(.text)
|
||||||
|
objs/ff.o(.text)
|
||||||
|
objs/sd_card.o(.text)
|
||||||
|
objs/s19reader.o(.text)
|
||||||
|
objs/bas_printf.o(.text)
|
||||||
|
objs/bas_string.o(.text)
|
||||||
|
objs/printf_helper.o(.text)
|
||||||
|
objs/cache.o(.text)
|
||||||
|
objs/mmu.o(.text)
|
||||||
|
objs/exceptions.o(.text)
|
||||||
|
objs/supervisor.o(.text)
|
||||||
|
objs/illegal_instruction.o(.text)
|
||||||
|
*(.data)
|
||||||
|
*(.bss)
|
||||||
|
|
||||||
|
/* The BaS copy routine assumes that tha BaS size
|
||||||
|
* is a multiple of the following value.
|
||||||
|
*/
|
||||||
|
. = ALIGN(16);
|
||||||
|
} > bas_ram
|
||||||
|
|
||||||
|
/* The following labels are BaS routines in the flash,
|
||||||
|
* before they are copied to their final location in the RAM.
|
||||||
|
* This is to allow using them before and after the actual copy.
|
||||||
|
* Hence they must contain only pc-relative code (compiled with -mpcrel).
|
||||||
|
*/
|
||||||
|
#define BAS_LABEL_LMA(x) ((x) + (__BAS_LMA - __BAS_IN_RAM))
|
||||||
|
_xprintf_before_copy = BAS_LABEL_LMA(_xprintf);
|
||||||
|
_display_progress_before_copy = BAS_LABEL_LMA(_display_progress);
|
||||||
|
_flush_and_invalidate_caches_before_copy = BAS_LABEL_LMA(_flush_and_invalidate_caches);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Global memory map
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* SDRAM Initialization @ 0000_0000 - 1FFF_FFFF 512Mbytes */
|
||||||
|
___SDRAM = 0x00000000;
|
||||||
|
___SDRAM_SIZE = 0x20000000;
|
||||||
|
|
||||||
|
/* ST-RAM */
|
||||||
|
__STRAM = ___SDRAM;
|
||||||
|
__STRAM_END = __TOS;
|
||||||
|
|
||||||
|
/* TOS */
|
||||||
|
__TOS = 0x00e00000;
|
||||||
|
|
||||||
|
/* FastRAM */
|
||||||
|
__FASTRAM = 0x10000000;
|
||||||
|
__FASTRAM_END = __BAS_IN_RAM;
|
||||||
|
|
||||||
|
/* Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes) */
|
||||||
|
___BOOT_FLASH = 0xe0000000;
|
||||||
|
___BOOT_FLASH_SIZE = 0x00800000;
|
||||||
|
|
||||||
|
/* BaS */
|
||||||
|
__BAS_LMA = LOADADDR(.bas);
|
||||||
|
__BAS_IN_RAM = ADDR(.bas);
|
||||||
|
__BAS_SIZE = SIZEOF(.bas);
|
||||||
|
|
||||||
|
/* Other flash components */
|
||||||
|
__FIRETOS = 0xe0400000;
|
||||||
|
__EMUTOS = 0xe0600000;
|
||||||
|
__EMUTOS_SIZE = 0x00100000;
|
||||||
|
|
||||||
|
/* VIDEO RAM BASIS */
|
||||||
|
__VRAM = 0x60000000;
|
||||||
|
|
||||||
|
/* Memory mapped registers */
|
||||||
|
__MBAR = 0xFF000000;
|
||||||
|
|
||||||
|
/* 32KB on-chip System SRAM */
|
||||||
|
__SYS_SRAM = 0xFF010000;
|
||||||
|
__SYS_SRAM_SIZE = 0x00008000;
|
||||||
|
|
||||||
|
/* MMU memory mapped registers */
|
||||||
|
__MMUBAR = 0xFF040000;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 4KB on-chip Core SRAM0: -> exception table and exception stack
|
||||||
|
*/
|
||||||
|
__RAMBAR0 = 0xFF100000;
|
||||||
|
__RAMBAR0_SIZE = 0x00001000;
|
||||||
|
__SUP_SP = __RAMBAR0 + __RAMBAR0_SIZE - 4;
|
||||||
|
|
||||||
|
/* system variables */
|
||||||
|
|
||||||
|
/* RAMBAR0 0 to 0x7FF -> exception vectors */
|
||||||
|
_rt_mod = __RAMBAR0 + 0x800;
|
||||||
|
_rt_ssp = __RAMBAR0 + 0x804;
|
||||||
|
_rt_usp = __RAMBAR0 + 0x808;
|
||||||
|
_rt_vbr = __RAMBAR0 + 0x80C; /* (8)01 */
|
||||||
|
_rt_cacr = __RAMBAR0 + 0x810; /* 002 */
|
||||||
|
_rt_asid = __RAMBAR0 + 0x814; /* 003 */
|
||||||
|
_rt_acr0 = __RAMBAR0 + 0x818; /* 004 */
|
||||||
|
_rt_acr1 = __RAMBAR0 + 0x81c; /* 005 */
|
||||||
|
_rt_acr2 = __RAMBAR0 + 0x820; /* 006 */
|
||||||
|
_rt_acr3 = __RAMBAR0 + 0x824; /* 007 */
|
||||||
|
_rt_mmubar = __RAMBAR0 + 0x828; /* 008 */
|
||||||
|
_rt_sr = __RAMBAR0 + 0x82c;
|
||||||
|
_d0_save = __RAMBAR0 + 0x830;
|
||||||
|
_a7_save = __RAMBAR0 + 0x834;
|
||||||
|
_video_tlb = __RAMBAR0 + 0x838;
|
||||||
|
_video_sbt = __RAMBAR0 + 0x83C;
|
||||||
|
_rt_mbar = __RAMBAR0 + 0x844; /* (c)0f */
|
||||||
|
|
||||||
|
/* 4KB on-chip Core SRAM1: -> modified code */
|
||||||
|
__RAMBAR1 = 0xFF101000;
|
||||||
|
__RAMBAR1_SIZE = 0x00001000;
|
||||||
|
}
|
||||||
105
i2cspi_BaS_gcc/basflash.lk.in
Normal file
105
i2cspi_BaS_gcc/basflash.lk.in
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
flasher (WX) : ORIGIN = TARGET_ADDRESS, LENGTH = 0x00100000 /* target to load basflash */
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
.text :
|
||||||
|
{
|
||||||
|
objs/basflash_start.o(.text)
|
||||||
|
objs/basflash.o(.text)
|
||||||
|
|
||||||
|
*(.data)
|
||||||
|
*(.bss)
|
||||||
|
*(.rodata)
|
||||||
|
*(.rodata.*)
|
||||||
|
} > flasher
|
||||||
|
|
||||||
|
.bas :
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#define BAS_LABEL_LMA(x) ((x))
|
||||||
|
_xprintf_before_copy = BAS_LABEL_LMA(_xprintf);
|
||||||
|
_display_progress_before_copy = BAS_LABEL_LMA(_display_progress);
|
||||||
|
/* _flush_and_invalidate_caches_before_copy = BAS_LABEL_LMA(_flush_and_invalidate_caches); */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Global memory map
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* SDRAM Initialization @ 0000_0000 - 1FFF_FFFF 512Mbytes */
|
||||||
|
___SDRAM = 0x00000000;
|
||||||
|
___SDRAM_SIZE = 0x20000000;
|
||||||
|
|
||||||
|
/* ST-RAM */
|
||||||
|
__STRAM = ___SDRAM;
|
||||||
|
__STRAM_END = __TOS;
|
||||||
|
|
||||||
|
/* TOS */
|
||||||
|
__TOS = 0x00e00000;
|
||||||
|
|
||||||
|
/* FastRAM */
|
||||||
|
__FASTRAM = 0x10000000;
|
||||||
|
__FASTRAM_END = 0x1FFFFFFF;
|
||||||
|
|
||||||
|
/* Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes) */
|
||||||
|
___BOOT_FLASH = 0xe0000000;
|
||||||
|
___BOOT_FLASH_SIZE = 0x00800000;
|
||||||
|
|
||||||
|
/* BaS */
|
||||||
|
__BAS_LMA = LOADADDR(.bas);
|
||||||
|
__BAS_IN_RAM = ADDR(.bas);
|
||||||
|
__BAS_SIZE = SIZEOF(.bas);
|
||||||
|
|
||||||
|
/* Other flash components */
|
||||||
|
__FIRETOS = 0xe0400000;
|
||||||
|
__EMUTOS = 0xe0600000;
|
||||||
|
__EMUTOS_SIZE = 0x00100000;
|
||||||
|
|
||||||
|
/* VIDEO RAM BASIS */
|
||||||
|
__VRAM = 0x60000000;
|
||||||
|
|
||||||
|
/* Memory mapped registers */
|
||||||
|
__MBAR = 0xFF000000;
|
||||||
|
|
||||||
|
/* 32KB on-chip System SRAM */
|
||||||
|
__SYS_SRAM = 0xFF010000;
|
||||||
|
__SYS_SRAM_SIZE = 0x00008000;
|
||||||
|
|
||||||
|
/* MMU memory mapped registers */
|
||||||
|
__MMUBAR = 0xFF040000;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 4KB on-chip Core SRAM0: -> exception table and exception stack
|
||||||
|
*/
|
||||||
|
__RAMBAR0 = 0xFF100000;
|
||||||
|
__RAMBAR0_SIZE = 0x00001000;
|
||||||
|
__SUP_SP = __RAMBAR0 + __RAMBAR0_SIZE - 4;
|
||||||
|
|
||||||
|
/* system variables */
|
||||||
|
|
||||||
|
/* RAMBAR0 0 to 0x7FF -> exception vectors */
|
||||||
|
_rt_mod = __RAMBAR0 + 0x800;
|
||||||
|
_rt_ssp = __RAMBAR0 + 0x804;
|
||||||
|
_rt_usp = __RAMBAR0 + 0x808;
|
||||||
|
_rt_vbr = __RAMBAR0 + 0x80C; /* (8)01 */
|
||||||
|
_rt_cacr = __RAMBAR0 + 0x810; /* 002 */
|
||||||
|
_rt_asid = __RAMBAR0 + 0x814; /* 003 */
|
||||||
|
_rt_acr0 = __RAMBAR0 + 0x818; /* 004 */
|
||||||
|
_rt_acr1 = __RAMBAR0 + 0x81c; /* 005 */
|
||||||
|
_rt_acr2 = __RAMBAR0 + 0x820; /* 006 */
|
||||||
|
_rt_acr3 = __RAMBAR0 + 0x824; /* 007 */
|
||||||
|
_rt_mmubar = __RAMBAR0 + 0x828; /* 008 */
|
||||||
|
_rt_sr = __RAMBAR0 + 0x82c;
|
||||||
|
_d0_save = __RAMBAR0 + 0x830;
|
||||||
|
_a7_save = __RAMBAR0 + 0x834;
|
||||||
|
_video_tlb = __RAMBAR0 + 0x838;
|
||||||
|
_video_sbt = __RAMBAR0 + 0x83C;
|
||||||
|
_rt_mbar = __RAMBAR0 + 0x844; /* (c)0f */
|
||||||
|
|
||||||
|
/* 4KB on-chip Core SRAM1: -> modified code */
|
||||||
|
__RAMBAR1 = 0xFF101000;
|
||||||
|
__RAMBAR1_SIZE = 0x00001000;
|
||||||
|
}
|
||||||
52
i2cspi_BaS_gcc/flash_scripts/flash_bas.bdm
Executable file
52
i2cspi_BaS_gcc/flash_scripts/flash_bas.bdm
Executable file
@@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/local/bin/bdmctrl -D2
|
||||||
|
#
|
||||||
|
# firebee board initialization for bdmctrl
|
||||||
|
#
|
||||||
|
open $1
|
||||||
|
reset
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
wait
|
||||||
|
|
||||||
|
# Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes)
|
||||||
|
write 0xFF000500 0xE0000000 4
|
||||||
|
write 0xFF000508 0x00001180 4
|
||||||
|
write 0xFF000504 0x007F0001 4
|
||||||
|
|
||||||
|
|
||||||
|
# notify flashlib that we have flash at address 0xE0000000, length 0x7FFFFF, plugin is flash29
|
||||||
|
flash 0xE0000000
|
||||||
|
|
||||||
|
# flash-plugin (target-based flashing) does not work yet
|
||||||
|
#flash-plugin 0x10000000 0x4000 flash29.plugin
|
||||||
|
|
||||||
|
# Erase flash from 0xE0000000 to 0xE00FFFFF (reserved space for BaS)
|
||||||
|
#
|
||||||
|
# Caution: sector offset numbers need to be the ones from the x16 address range
|
||||||
|
# column and they vary in size - needs to be exactly as in the data sheet (p. 9)
|
||||||
|
#
|
||||||
|
# contrary to documentation, it seems we need to erase-wait after each sector
|
||||||
|
|
||||||
|
erase 0xE0000000 0x00000
|
||||||
|
erase-wait 0xE0000000
|
||||||
|
erase 0xE0000000 0x01000
|
||||||
|
erase-wait 0xE0000000
|
||||||
|
erase 0xE0000000 0x02000
|
||||||
|
erase-wait 0xE0000000
|
||||||
|
erase 0xE0000000 0x03000
|
||||||
|
erase-wait 0xE0000000
|
||||||
|
erase 0xE0000000 0x04000
|
||||||
|
erase-wait 0xE0000000
|
||||||
|
erase 0xE0000000 0x05000
|
||||||
|
erase-wait 0xE0000000
|
||||||
|
erase 0xE0000000 0x06000
|
||||||
|
erase-wait 0xE0000000
|
||||||
|
erase 0xE0000000 0x07000
|
||||||
|
erase-wait 0xE0000000
|
||||||
|
erase 0xE0000000 0x08000
|
||||||
|
erase-wait 0xE0000000
|
||||||
|
erase 0xE0000000 0x10000
|
||||||
|
erase-wait 0xE0000000
|
||||||
|
blank-chk 0xE0000000 0x00000
|
||||||
|
load -v bas.elf
|
||||||
|
wait
|
||||||
56
i2cspi_BaS_gcc/flash_scripts/flash_etos.bdm
Executable file
56
i2cspi_BaS_gcc/flash_scripts/flash_etos.bdm
Executable file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/usr/local/bin/bdmctrl -D2
|
||||||
|
#
|
||||||
|
# flash EmuTOS using bdmctrl
|
||||||
|
#
|
||||||
|
open $1
|
||||||
|
reset
|
||||||
|
|
||||||
|
# Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes)
|
||||||
|
write 0xFF000500 0xE0000000 4
|
||||||
|
write 0xFF000508 0x00001180 4
|
||||||
|
write 0xFF000504 0x007F0001 4
|
||||||
|
|
||||||
|
# notify flashlib that we have flash at address 0xE0000000, length 0x7FFFFF, plugin is flash29
|
||||||
|
flash 0xe0000000
|
||||||
|
|
||||||
|
# Erase flash from 0xE0600000 to 0xE06FFFFF (reserved space for EmuTOS)
|
||||||
|
#
|
||||||
|
# Caution: sector offset numbers need to be the ones from the x16 address range
|
||||||
|
# column and they vary in size - needs to be exactly as in the data sheet (p. 9)
|
||||||
|
#
|
||||||
|
# contrary to documentation, it seems we need to erase-wait after each sector
|
||||||
|
|
||||||
|
erase 0xe0000000 0x300000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x308000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x310000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x318000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x320000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x328000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x330000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x338000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x340000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x348000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x350000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x358000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x360000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x368000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x370000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x378000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
|
||||||
|
load -v emutosfb.elf
|
||||||
59
i2cspi_BaS_gcc/flash_scripts/flash_firetos.bdm
Executable file
59
i2cspi_BaS_gcc/flash_scripts/flash_firetos.bdm
Executable file
@@ -0,0 +1,59 @@
|
|||||||
|
#!/usr/local/bin/bdmctrl -D2
|
||||||
|
#
|
||||||
|
# firebee board initialization for bdmctrl
|
||||||
|
#
|
||||||
|
open $1
|
||||||
|
reset
|
||||||
|
|
||||||
|
# Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes)
|
||||||
|
write 0xFF000500 0xE0000000 4
|
||||||
|
write 0xFF000508 0x00001180 4
|
||||||
|
write 0xFF000504 0x007F0001 4
|
||||||
|
|
||||||
|
# notify flashlib that we have flash at address 0xE0000000, length 0x7FFFFF, plugin is flash29
|
||||||
|
flash 0xe0000000
|
||||||
|
|
||||||
|
# flash-plugin (target-based flashing) does not work yet
|
||||||
|
# flash-plugin 0x10000000 0x4000 flash29.plugin
|
||||||
|
|
||||||
|
# Erase flash from 0xE0400000 to 0xE04FFFFF (reserved space for FireTOS)
|
||||||
|
#
|
||||||
|
# Caution: sector offset numbers need to be the ones from the x16 address range
|
||||||
|
# column and they vary in size - needs to be exactly as in the data sheet (p. 9)
|
||||||
|
#
|
||||||
|
# contrary to documentation, it seems we need to erase-wait after each sector
|
||||||
|
|
||||||
|
erase 0xe0000000 0x200000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x208000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x210000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x218000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x220000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x228000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x230000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x238000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x240000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x248000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x250000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x258000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x260000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x268000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x270000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x278000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
|
||||||
|
load -v firetos.elf
|
||||||
77
i2cspi_BaS_gcc/flash_scripts/flash_fpga.bdm
Executable file
77
i2cspi_BaS_gcc/flash_scripts/flash_fpga.bdm
Executable file
@@ -0,0 +1,77 @@
|
|||||||
|
#!/usr/local/bin/bdmctrl -D2
|
||||||
|
#
|
||||||
|
# firebee board initialization for bdmctrl
|
||||||
|
#
|
||||||
|
open $1
|
||||||
|
#reset
|
||||||
|
|
||||||
|
# Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes)
|
||||||
|
write 0xFF000500 0xE0000000 4
|
||||||
|
write 0xFF000508 0x00001180 4
|
||||||
|
write 0xFF000504 0x007F0001 4
|
||||||
|
|
||||||
|
# notify flashlib that we have flash at address 0xE0000000, length 0x7FFFFF, plugin is flash29
|
||||||
|
flash 0xe0000000
|
||||||
|
|
||||||
|
# flash-plugin (target-based flashing) does not work yet
|
||||||
|
#flash-plugin 0x10000000 0x4000 flash29.plugin
|
||||||
|
|
||||||
|
# Erase flash from 0xE0700000 to 0xE07FFFFF (reserved space for FPGA)
|
||||||
|
#
|
||||||
|
# Caution: sector offset numbers need to be the ones from the x16 address range
|
||||||
|
# column and they vary in size - needs to be exactly as in the data sheet (p. 9)
|
||||||
|
#
|
||||||
|
# contrary to documentation, it seems we need to erase-wait after each sector
|
||||||
|
|
||||||
|
erase 0xe0000000 0x380000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x388000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x390000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x398000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3A0000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3A0000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3A8000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3B0000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3B8000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3C0000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3C8000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3D0000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3D8000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3E0000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3E8000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3F0000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3F8000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3F9000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3FA000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3FB000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3FC000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3FD000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3FE000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
erase 0xe0000000 0x3FF000
|
||||||
|
erase-wait 0xe0000000
|
||||||
|
|
||||||
|
wait
|
||||||
|
|
||||||
|
load -v FPGA.elf
|
||||||
65
i2cspi_BaS_gcc/include/MCF5475.h
Normal file
65
i2cspi_BaS_gcc/include/MCF5475.h
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_H__
|
||||||
|
#define __MCF5475_H__
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
/***
|
||||||
|
* MCF5475 Derivative Memory map definitions from linker command files:
|
||||||
|
* __MBAR, __MMUBAR, __RAMBAR0, __RAMBAR0_SIZE, __RAMBAR1, __RAMBAR1_SIZE
|
||||||
|
* linker symbols must be defined in the linker command file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern uint8_t _MBAR[];
|
||||||
|
extern uint8_t _MMUBAR[];
|
||||||
|
extern uint8_t _RAMBAR0[];
|
||||||
|
extern uint8_t _RAMBAR0_SIZE[];
|
||||||
|
extern uint8_t _RAMBAR1[];
|
||||||
|
extern uint8_t _RAMBAR1_SIZE[];
|
||||||
|
|
||||||
|
#define MBAR_ADDRESS (uint32_t)_MBAR
|
||||||
|
#define MMUBAR_ADDRESS (uint32_t)_MMUBAR
|
||||||
|
#define RAMBAR0_ADDRESS (uint32_t)_RAMBAR0
|
||||||
|
#define RAMBAR0_SIZE (uint32_t)_RAMBAR0_SIZE
|
||||||
|
#define RAMBAR1_ADDRESS (uint32_t)_RAMBAR1
|
||||||
|
#define RAMBAR1_SIZE (uint32_t)_RAMBAR1_SIZE
|
||||||
|
|
||||||
|
|
||||||
|
#include "MCF5475_SIU.h"
|
||||||
|
#include "MCF5475_MMU.h"
|
||||||
|
#include "MCF5475_SDRAMC.h"
|
||||||
|
#include "MCF5475_XLB.h"
|
||||||
|
#include "MCF5475_CLOCK.h"
|
||||||
|
#include "MCF5475_FBCS.h"
|
||||||
|
#include "MCF5475_INTC.h"
|
||||||
|
#include "MCF5475_GPT.h"
|
||||||
|
#include "MCF5475_SLT.h"
|
||||||
|
#include "MCF5475_GPIO.h"
|
||||||
|
#include "MCF5475_PAD.h"
|
||||||
|
#include "MCF5475_PCI.h"
|
||||||
|
#include "MCF5475_PCIARB.h"
|
||||||
|
#include "MCF5475_EPORT.h"
|
||||||
|
#include "MCF5475_CTM.h"
|
||||||
|
#include "MCF5475_DMA.h"
|
||||||
|
#include "MCF5475_PSC.h"
|
||||||
|
#include "MCF5475_DSPI.h"
|
||||||
|
#include "MCF5475_I2C.h"
|
||||||
|
#include "MCF5475_FEC.h"
|
||||||
|
#include "MCF5475_USB.h"
|
||||||
|
#include "MCF5475_SRAM.h"
|
||||||
|
#include "MCF5475_SEC.h"
|
||||||
|
|
||||||
|
#endif /* __MCF5475_H__ */
|
||||||
47
i2cspi_BaS_gcc/include/MCF5475_CLOCK.h
Normal file
47
i2cspi_BaS_gcc/include/MCF5475_CLOCK.h
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_CLOCK_H__
|
||||||
|
#define __MCF5475_CLOCK_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Clock Module (CLOCK)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_CLOCK_SPCR (*(volatile uint32_t*)(&_MBAR[0x300]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_CLOCK_SPCR */
|
||||||
|
#define MCF_CLOCK_SPCR_MEMEN (0x1)
|
||||||
|
#define MCF_CLOCK_SPCR_PCIEN (0x2)
|
||||||
|
#define MCF_CLOCK_SPCR_FBEN (0x4)
|
||||||
|
#define MCF_CLOCK_SPCR_CAN0EN (0x8)
|
||||||
|
#define MCF_CLOCK_SPCR_DMAEN (0x10)
|
||||||
|
#define MCF_CLOCK_SPCR_FEC0EN (0x20)
|
||||||
|
#define MCF_CLOCK_SPCR_FEC1EN (0x40)
|
||||||
|
#define MCF_CLOCK_SPCR_USBEN (0x80)
|
||||||
|
#define MCF_CLOCK_SPCR_PSCEN (0x200)
|
||||||
|
#define MCF_CLOCK_SPCR_CAN1EN (0x800)
|
||||||
|
#define MCF_CLOCK_SPCR_CRYENA (0x1000)
|
||||||
|
#define MCF_CLOCK_SPCR_CRYENB (0x2000)
|
||||||
|
#define MCF_CLOCK_SPCR_COREN (0x4000)
|
||||||
|
#define MCF_CLOCK_SPCR_PLLK (0x80000000)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_CLOCK_H__ */
|
||||||
76
i2cspi_BaS_gcc/include/MCF5475_CTM.h
Normal file
76
i2cspi_BaS_gcc/include/MCF5475_CTM.h
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_CTM_H__
|
||||||
|
#define __MCF5475_CTM_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Comm Timer Module (CTM)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_CTM_CTCR0 (*(volatile uint32_t*)(&_MBAR[0x7F00]))
|
||||||
|
#define MCF_CTM_CTCR1 (*(volatile uint32_t*)(&_MBAR[0x7F04]))
|
||||||
|
#define MCF_CTM_CTCR2 (*(volatile uint32_t*)(&_MBAR[0x7F08]))
|
||||||
|
#define MCF_CTM_CTCR3 (*(volatile uint32_t*)(&_MBAR[0x7F0C]))
|
||||||
|
#define MCF_CTM_CTCR4 (*(volatile uint32_t*)(&_MBAR[0x7F10]))
|
||||||
|
#define MCF_CTM_CTCR5 (*(volatile uint32_t*)(&_MBAR[0x7F14]))
|
||||||
|
#define MCF_CTM_CTCR6 (*(volatile uint32_t*)(&_MBAR[0x7F18]))
|
||||||
|
#define MCF_CTM_CTCR7 (*(volatile uint32_t*)(&_MBAR[0x7F1C]))
|
||||||
|
#define MCF_CTM_CTCRF(x) (*(volatile uint32_t*)(&_MBAR[0x7F00 + ((x)*0x4)]))
|
||||||
|
#define MCF_CTM_CTCRV(x) (*(volatile uint32_t*)(&_MBAR[0x7F10 + ((x-4)*0x4)]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_CTM_CTCRF */
|
||||||
|
#define MCF_CTM_CTCRF_CRV(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_CTM_CTCRF_S(x) (((x)&0xF)<<0x10)
|
||||||
|
#define MCF_CTM_CTCRF_S_CLK_1 (0)
|
||||||
|
#define MCF_CTM_CTCRF_S_CLK_2 (0x10000)
|
||||||
|
#define MCF_CTM_CTCRF_S_CLK_4 (0x20000)
|
||||||
|
#define MCF_CTM_CTCRF_S_CLK_8 (0x30000)
|
||||||
|
#define MCF_CTM_CTCRF_S_CLK_16 (0x40000)
|
||||||
|
#define MCF_CTM_CTCRF_S_CLK_32 (0x50000)
|
||||||
|
#define MCF_CTM_CTCRF_S_CLK_64 (0x60000)
|
||||||
|
#define MCF_CTM_CTCRF_S_CLK_128 (0x70000)
|
||||||
|
#define MCF_CTM_CTCRF_S_CLK_256 (0x80000)
|
||||||
|
#define MCF_CTM_CTCRF_S_CLK_EXT (0x90000)
|
||||||
|
#define MCF_CTM_CTCRF_PCT(x) (((x)&0x7)<<0x14)
|
||||||
|
#define MCF_CTM_CTCRF_PCT_100 (0)
|
||||||
|
#define MCF_CTM_CTCRF_PCT_50 (0x100000)
|
||||||
|
#define MCF_CTM_CTCRF_PCT_25 (0x200000)
|
||||||
|
#define MCF_CTM_CTCRF_PCT_12p5 (0x300000)
|
||||||
|
#define MCF_CTM_CTCRF_PCT_6p25 (0x400000)
|
||||||
|
#define MCF_CTM_CTCRF_PCT_OFF (0x500000)
|
||||||
|
#define MCF_CTM_CTCRF_M (0x800000)
|
||||||
|
#define MCF_CTM_CTCRF_IM (0x1000000)
|
||||||
|
#define MCF_CTM_CTCRF_I (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_CTM_CTCRV */
|
||||||
|
#define MCF_CTM_CTCRV_CRV(x) (((x)&0xFFFFFF)<<0)
|
||||||
|
#define MCF_CTM_CTCRV_PCT(x) (((x)&0x7)<<0x18)
|
||||||
|
#define MCF_CTM_CTCRV_PCT_100 (0)
|
||||||
|
#define MCF_CTM_CTCRV_PCT_50 (0x1000000)
|
||||||
|
#define MCF_CTM_CTCRV_PCT_25 (0x2000000)
|
||||||
|
#define MCF_CTM_CTCRV_PCT_12p5 (0x3000000)
|
||||||
|
#define MCF_CTM_CTCRV_PCT_6p25 (0x4000000)
|
||||||
|
#define MCF_CTM_CTCRV_PCT_OFF (0x5000000)
|
||||||
|
#define MCF_CTM_CTCRV_M (0x8000000)
|
||||||
|
#define MCF_CTM_CTCRV_S (0x10000000)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_CTM_H__ */
|
||||||
202
i2cspi_BaS_gcc/include/MCF5475_DMA.h
Normal file
202
i2cspi_BaS_gcc/include/MCF5475_DMA.h
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_DMA_H__
|
||||||
|
#define __MCF5475_DMA_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Multichannel DMA (DMA)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_DMA_TASKBAR (*(volatile uint32_t*)(&_MBAR[0x8000]))
|
||||||
|
#define MCF_DMA_CP (*(volatile uint32_t*)(&_MBAR[0x8004]))
|
||||||
|
#define MCF_DMA_EP (*(volatile uint32_t*)(&_MBAR[0x8008]))
|
||||||
|
#define MCF_DMA_VP (*(volatile uint32_t*)(&_MBAR[0x800C]))
|
||||||
|
#define MCF_DMA_PTD (*(volatile uint32_t*)(&_MBAR[0x8010]))
|
||||||
|
#define MCF_DMA_DIPR (*(volatile uint32_t*)(&_MBAR[0x8014]))
|
||||||
|
#define MCF_DMA_DIMR (*(volatile uint32_t*)(&_MBAR[0x8018]))
|
||||||
|
#define MCF_DMA_TCR0 (*(volatile uint16_t*)(&_MBAR[0x801C]))
|
||||||
|
#define MCF_DMA_TCR1 (*(volatile uint16_t*)(&_MBAR[0x801E]))
|
||||||
|
#define MCF_DMA_TCR2 (*(volatile uint16_t*)(&_MBAR[0x8020]))
|
||||||
|
#define MCF_DMA_TCR3 (*(volatile uint16_t*)(&_MBAR[0x8022]))
|
||||||
|
#define MCF_DMA_TCR4 (*(volatile uint16_t*)(&_MBAR[0x8024]))
|
||||||
|
#define MCF_DMA_TCR5 (*(volatile uint16_t*)(&_MBAR[0x8026]))
|
||||||
|
#define MCF_DMA_TCR6 (*(volatile uint16_t*)(&_MBAR[0x8028]))
|
||||||
|
#define MCF_DMA_TCR7 (*(volatile uint16_t*)(&_MBAR[0x802A]))
|
||||||
|
#define MCF_DMA_TCR8 (*(volatile uint16_t*)(&_MBAR[0x802C]))
|
||||||
|
#define MCF_DMA_TCR9 (*(volatile uint16_t*)(&_MBAR[0x802E]))
|
||||||
|
#define MCF_DMA_TCR10 (*(volatile uint16_t*)(&_MBAR[0x8030]))
|
||||||
|
#define MCF_DMA_TCR11 (*(volatile uint16_t*)(&_MBAR[0x8032]))
|
||||||
|
#define MCF_DMA_TCR12 (*(volatile uint16_t*)(&_MBAR[0x8034]))
|
||||||
|
#define MCF_DMA_TCR13 (*(volatile uint16_t*)(&_MBAR[0x8036]))
|
||||||
|
#define MCF_DMA_TCR14 (*(volatile uint16_t*)(&_MBAR[0x8038]))
|
||||||
|
#define MCF_DMA_TCR15 (*(volatile uint16_t*)(&_MBAR[0x803A]))
|
||||||
|
#define MCF_DMA_PRIOR0 (*(volatile uint8_t *)(&_MBAR[0x803C]))
|
||||||
|
#define MCF_DMA_PRIOR1 (*(volatile uint8_t *)(&_MBAR[0x803D]))
|
||||||
|
#define MCF_DMA_PRIOR2 (*(volatile uint8_t *)(&_MBAR[0x803E]))
|
||||||
|
#define MCF_DMA_PRIOR3 (*(volatile uint8_t *)(&_MBAR[0x803F]))
|
||||||
|
#define MCF_DMA_PRIOR4 (*(volatile uint8_t *)(&_MBAR[0x8040]))
|
||||||
|
#define MCF_DMA_PRIOR5 (*(volatile uint8_t *)(&_MBAR[0x8041]))
|
||||||
|
#define MCF_DMA_PRIOR6 (*(volatile uint8_t *)(&_MBAR[0x8042]))
|
||||||
|
#define MCF_DMA_PRIOR7 (*(volatile uint8_t *)(&_MBAR[0x8043]))
|
||||||
|
#define MCF_DMA_PRIOR8 (*(volatile uint8_t *)(&_MBAR[0x8044]))
|
||||||
|
#define MCF_DMA_PRIOR9 (*(volatile uint8_t *)(&_MBAR[0x8045]))
|
||||||
|
#define MCF_DMA_PRIOR10 (*(volatile uint8_t *)(&_MBAR[0x8046]))
|
||||||
|
#define MCF_DMA_PRIOR11 (*(volatile uint8_t *)(&_MBAR[0x8047]))
|
||||||
|
#define MCF_DMA_PRIOR12 (*(volatile uint8_t *)(&_MBAR[0x8048]))
|
||||||
|
#define MCF_DMA_PRIOR13 (*(volatile uint8_t *)(&_MBAR[0x8049]))
|
||||||
|
#define MCF_DMA_PRIOR14 (*(volatile uint8_t *)(&_MBAR[0x804A]))
|
||||||
|
#define MCF_DMA_PRIOR15 (*(volatile uint8_t *)(&_MBAR[0x804B]))
|
||||||
|
#define MCF_DMA_PRIOR16 (*(volatile uint8_t *)(&_MBAR[0x804C]))
|
||||||
|
#define MCF_DMA_PRIOR17 (*(volatile uint8_t *)(&_MBAR[0x804D]))
|
||||||
|
#define MCF_DMA_PRIOR18 (*(volatile uint8_t *)(&_MBAR[0x804E]))
|
||||||
|
#define MCF_DMA_PRIOR19 (*(volatile uint8_t *)(&_MBAR[0x804F]))
|
||||||
|
#define MCF_DMA_PRIOR20 (*(volatile uint8_t *)(&_MBAR[0x8050]))
|
||||||
|
#define MCF_DMA_PRIOR21 (*(volatile uint8_t *)(&_MBAR[0x8051]))
|
||||||
|
#define MCF_DMA_PRIOR22 (*(volatile uint8_t *)(&_MBAR[0x8052]))
|
||||||
|
#define MCF_DMA_PRIOR23 (*(volatile uint8_t *)(&_MBAR[0x8053]))
|
||||||
|
#define MCF_DMA_PRIOR24 (*(volatile uint8_t *)(&_MBAR[0x8054]))
|
||||||
|
#define MCF_DMA_PRIOR25 (*(volatile uint8_t *)(&_MBAR[0x8055]))
|
||||||
|
#define MCF_DMA_PRIOR26 (*(volatile uint8_t *)(&_MBAR[0x8056]))
|
||||||
|
#define MCF_DMA_PRIOR27 (*(volatile uint8_t *)(&_MBAR[0x8057]))
|
||||||
|
#define MCF_DMA_PRIOR28 (*(volatile uint8_t *)(&_MBAR[0x8058]))
|
||||||
|
#define MCF_DMA_PRIOR29 (*(volatile uint8_t *)(&_MBAR[0x8059]))
|
||||||
|
#define MCF_DMA_PRIOR30 (*(volatile uint8_t *)(&_MBAR[0x805A]))
|
||||||
|
#define MCF_DMA_PRIOR31 (*(volatile uint8_t *)(&_MBAR[0x805B]))
|
||||||
|
#define MCF_DMA_IMCR (*(volatile uint32_t*)(&_MBAR[0x805C]))
|
||||||
|
#define MCF_DMA_TSKSZ0 (*(volatile uint32_t*)(&_MBAR[0x8060]))
|
||||||
|
#define MCF_DMA_TSKSZ1 (*(volatile uint32_t*)(&_MBAR[0x8064]))
|
||||||
|
#define MCF_DMA_DBGCOMP0 (*(volatile uint32_t*)(&_MBAR[0x8070]))
|
||||||
|
#define MCF_DMA_DBGCOMP2 (*(volatile uint32_t*)(&_MBAR[0x8074]))
|
||||||
|
#define MCF_DMA_DBGCTL (*(volatile uint32_t*)(&_MBAR[0x8078]))
|
||||||
|
#define MCF_DMA_TCR(x) (*(volatile uint16_t*)(&_MBAR[0x801C + ((x)*0x2)]))
|
||||||
|
#define MCF_DMA_PRIOR(x) (*(volatile uint8_t *)(&_MBAR[0x803C + ((x)*0x1)]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_TASKBAR */
|
||||||
|
#define MCF_DMA_TASKBAR_TASK_BASE_ADDRESS(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_CP */
|
||||||
|
#define MCF_DMA_CP_DESCRIPTOR_POINTER(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_EP */
|
||||||
|
#define MCF_DMA_EP_DESCRIPTOR_POINTER(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_VP */
|
||||||
|
#define MCF_DMA_VP_VARIABLE_POINTER(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_PTD */
|
||||||
|
#define MCF_DMA_PTD_PCTL0 (0x1)
|
||||||
|
#define MCF_DMA_PTD_PCTL1 (0x2)
|
||||||
|
#define MCF_DMA_PTD_PCTL13 (0x2000)
|
||||||
|
#define MCF_DMA_PTD_PCTL14 (0x4000)
|
||||||
|
#define MCF_DMA_PTD_PCTL15 (0x8000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_DIPR */
|
||||||
|
#define MCF_DMA_DIPR_TASK(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_DIMR */
|
||||||
|
#define MCF_DMA_DIMR_TASK(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_TCR */
|
||||||
|
#define MCF_DMA_TCR_ASTSKNUM(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_DMA_TCR_HLDINITNUM (0x20)
|
||||||
|
#define MCF_DMA_TCR_HIPRITSKEN (0x40)
|
||||||
|
#define MCF_DMA_TCR_ASTRT (0x80)
|
||||||
|
#define MCF_DMA_TCR_INITNUM(x) (((x)&0x1F)<<0x8)
|
||||||
|
#define MCF_DMA_TCR_ALWINIT (0x2000)
|
||||||
|
#define MCF_DMA_TCR_V (0x4000)
|
||||||
|
#define MCF_DMA_TCR_EN (0x8000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_PRIOR */
|
||||||
|
#define MCF_DMA_PRIOR_PRI(x) (((x)&0x7)<<0)
|
||||||
|
#define MCF_DMA_PRIOR_HLD (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_IMCR */
|
||||||
|
#define MCF_DMA_IMCR_IMC0(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_DMA_IMCR_IMC1(x) (((x)&0x3)<<0x2)
|
||||||
|
#define MCF_DMA_IMCR_IMC2(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_DMA_IMCR_IMC3(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_DMA_IMCR_IMC4(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_DMA_IMCR_IMC5(x) (((x)&0x3)<<0xA)
|
||||||
|
#define MCF_DMA_IMCR_IMC6(x) (((x)&0x3)<<0xC)
|
||||||
|
#define MCF_DMA_IMCR_IMC7(x) (((x)&0x3)<<0xE)
|
||||||
|
#define MCF_DMA_IMCR_IMC8(x) (((x)&0x3)<<0x10)
|
||||||
|
#define MCF_DMA_IMCR_IMC9(x) (((x)&0x3)<<0x12)
|
||||||
|
#define MCF_DMA_IMCR_IMC10(x) (((x)&0x3)<<0x14)
|
||||||
|
#define MCF_DMA_IMCR_IMC11(x) (((x)&0x3)<<0x16)
|
||||||
|
#define MCF_DMA_IMCR_IMC12(x) (((x)&0x3)<<0x18)
|
||||||
|
#define MCF_DMA_IMCR_IMC13(x) (((x)&0x3)<<0x1A)
|
||||||
|
#define MCF_DMA_IMCR_IMC14(x) (((x)&0x3)<<0x1C)
|
||||||
|
#define MCF_DMA_IMCR_IMC15(x) (((x)&0x3)<<0x1E)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_TSKSZ0 */
|
||||||
|
#define MCF_DMA_TSKSZ0_DSTSZ7(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_DMA_TSKSZ0_SRCSZ7(x) (((x)&0x3)<<0x2)
|
||||||
|
#define MCF_DMA_TSKSZ0_DSTSZ6(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_DMA_TSKSZ0_SRCSZ6(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_DMA_TSKSZ0_DSTSZ5(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_DMA_TSKSZ0_SRCSZ5(x) (((x)&0x3)<<0xA)
|
||||||
|
#define MCF_DMA_TSKSZ0_DSTSZ4(x) (((x)&0x3)<<0xC)
|
||||||
|
#define MCF_DMA_TSKSZ0_SRCSZ4(x) (((x)&0x3)<<0xE)
|
||||||
|
#define MCF_DMA_TSKSZ0_DSTSZ3(x) (((x)&0x3)<<0x10)
|
||||||
|
#define MCF_DMA_TSKSZ0_SRCSZ3(x) (((x)&0x3)<<0x12)
|
||||||
|
#define MCF_DMA_TSKSZ0_DSTSZ2(x) (((x)&0x3)<<0x14)
|
||||||
|
#define MCF_DMA_TSKSZ0_SRCSZ2(x) (((x)&0x3)<<0x16)
|
||||||
|
#define MCF_DMA_TSKSZ0_DSTSZ1(x) (((x)&0x3)<<0x18)
|
||||||
|
#define MCF_DMA_TSKSZ0_SRCSZ1(x) (((x)&0x3)<<0x1A)
|
||||||
|
#define MCF_DMA_TSKSZ0_DSTSZ0(x) (((x)&0x3)<<0x1C)
|
||||||
|
#define MCF_DMA_TSKSZ0_SRCSZ0(x) (((x)&0x3)<<0x1E)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_TSKSZ1 */
|
||||||
|
#define MCF_DMA_TSKSZ1_DSTSZ15(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_DMA_TSKSZ1_SRCSZ15(x) (((x)&0x3)<<0x2)
|
||||||
|
#define MCF_DMA_TSKSZ1_DSTSZ14(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_DMA_TSKSZ1_SRCSZ14(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_DMA_TSKSZ1_DSTSZ13(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_DMA_TSKSZ1_SRCSZ13(x) (((x)&0x3)<<0xA)
|
||||||
|
#define MCF_DMA_TSKSZ1_DSTSZ12(x) (((x)&0x3)<<0xC)
|
||||||
|
#define MCF_DMA_TSKSZ1_SRCSZ12(x) (((x)&0x3)<<0xE)
|
||||||
|
#define MCF_DMA_TSKSZ1_DSTSZ11(x) (((x)&0x3)<<0x10)
|
||||||
|
#define MCF_DMA_TSKSZ1_SRCSZ11(x) (((x)&0x3)<<0x12)
|
||||||
|
#define MCF_DMA_TSKSZ1_DSTSZ10(x) (((x)&0x3)<<0x14)
|
||||||
|
#define MCF_DMA_TSKSZ1_SRCSZ10(x) (((x)&0x3)<<0x16)
|
||||||
|
#define MCF_DMA_TSKSZ1_DSTSZ9(x) (((x)&0x3)<<0x18)
|
||||||
|
#define MCF_DMA_TSKSZ1_SRCSZ9(x) (((x)&0x3)<<0x1A)
|
||||||
|
#define MCF_DMA_TSKSZ1_DSTSZ8(x) (((x)&0x3)<<0x1C)
|
||||||
|
#define MCF_DMA_TSKSZ1_SRCSZ8(x) (((x)&0x3)<<0x1E)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_DBGCOMP0 */
|
||||||
|
#define MCF_DMA_DBGCOMP0_COMPARATOR_VALUE(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_DBGCOMP2 */
|
||||||
|
#define MCF_DMA_DBGCOMP2_COMPARATOR_VALUE(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DMA_DBGCTL */
|
||||||
|
#define MCF_DMA_DBGCTL_I (0x2)
|
||||||
|
#define MCF_DMA_DBGCTL_E (0x4)
|
||||||
|
#define MCF_DMA_DBGCTL_AND_OR (0x80)
|
||||||
|
#define MCF_DMA_DBGCTL_COMPARATOR_TYPE_2(x) (((x)&0x7)<<0x8)
|
||||||
|
#define MCF_DMA_DBGCTL_COMPARATOR_TYPE_1(x) (((x)&0x7)<<0xB)
|
||||||
|
#define MCF_DMA_DBGCTL_B (0x4000)
|
||||||
|
#define MCF_DMA_DBGCTL_AA (0x8000)
|
||||||
|
#define MCF_DMA_DBGCTL_BLOCK_TASKS(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_DMA_H__ */
|
||||||
150
i2cspi_BaS_gcc/include/MCF5475_DSPI.h
Normal file
150
i2cspi_BaS_gcc/include/MCF5475_DSPI.h
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_DSPI_H__
|
||||||
|
#define __MCF5475_DSPI_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* DMA Serial Peripheral Interface (DSPI)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_DSPI_DMCR (*(volatile uint32_t*)(&_MBAR[0x8A00]))
|
||||||
|
#define MCF_DSPI_DTCR (*(volatile uint32_t*)(&_MBAR[0x8A08]))
|
||||||
|
#define MCF_DSPI_DCTAR0 (*(volatile uint32_t*)(&_MBAR[0x8A0C]))
|
||||||
|
#define MCF_DSPI_DCTAR1 (*(volatile uint32_t*)(&_MBAR[0x8A10]))
|
||||||
|
#define MCF_DSPI_DCTAR2 (*(volatile uint32_t*)(&_MBAR[0x8A14]))
|
||||||
|
#define MCF_DSPI_DCTAR3 (*(volatile uint32_t*)(&_MBAR[0x8A18]))
|
||||||
|
#define MCF_DSPI_DCTAR4 (*(volatile uint32_t*)(&_MBAR[0x8A1C]))
|
||||||
|
#define MCF_DSPI_DCTAR5 (*(volatile uint32_t*)(&_MBAR[0x8A20]))
|
||||||
|
#define MCF_DSPI_DCTAR6 (*(volatile uint32_t*)(&_MBAR[0x8A24]))
|
||||||
|
#define MCF_DSPI_DCTAR7 (*(volatile uint32_t*)(&_MBAR[0x8A28]))
|
||||||
|
#define MCF_DSPI_DSR (*(volatile uint32_t*)(&_MBAR[0x8A2C]))
|
||||||
|
#define MCF_DSPI_DIRSR (*(volatile uint32_t*)(&_MBAR[0x8A30]))
|
||||||
|
#define MCF_DSPI_DTFR (*(volatile uint32_t*)(&_MBAR[0x8A34]))
|
||||||
|
#define MCF_DSPI_DRFR (*(volatile uint32_t*)(&_MBAR[0x8A38]))
|
||||||
|
#define MCF_DSPI_DTFDR0 (*(volatile uint32_t*)(&_MBAR[0x8A3C]))
|
||||||
|
#define MCF_DSPI_DTFDR1 (*(volatile uint32_t*)(&_MBAR[0x8A40]))
|
||||||
|
#define MCF_DSPI_DTFDR2 (*(volatile uint32_t*)(&_MBAR[0x8A44]))
|
||||||
|
#define MCF_DSPI_DTFDR3 (*(volatile uint32_t*)(&_MBAR[0x8A48]))
|
||||||
|
#define MCF_DSPI_DRFDR0 (*(volatile uint32_t*)(&_MBAR[0x8A7C]))
|
||||||
|
#define MCF_DSPI_DRFDR1 (*(volatile uint32_t*)(&_MBAR[0x8A80]))
|
||||||
|
#define MCF_DSPI_DRFDR2 (*(volatile uint32_t*)(&_MBAR[0x8A84]))
|
||||||
|
#define MCF_DSPI_DRFDR3 (*(volatile uint32_t*)(&_MBAR[0x8A88]))
|
||||||
|
#define MCF_DSPI_DCTAR(x) (*(volatile uint32_t*)(&_MBAR[0x8A0C + ((x)*0x4)]))
|
||||||
|
#define MCF_DSPI_DTFDR(x) (*(volatile uint32_t*)(&_MBAR[0x8A3C + ((x)*0x4)]))
|
||||||
|
#define MCF_DSPI_DRFDR(x) (*(volatile uint32_t*)(&_MBAR[0x8A7C + ((x)*0x4)]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DSPI_DMCR */
|
||||||
|
#define MCF_DSPI_DMCR_HALT (0x1)
|
||||||
|
#define MCF_DSPI_DMCR_SMPL_PT(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_DSPI_DMCR_SMPL_PT_0CLK (0)
|
||||||
|
#define MCF_DSPI_DMCR_SMPL_PT_1CLK (0x100)
|
||||||
|
#define MCF_DSPI_DMCR_SMPL_PT_2CLK (0x200)
|
||||||
|
#define MCF_DSPI_DMCR_CRXF (0x400)
|
||||||
|
#define MCF_DSPI_DMCR_CTXF (0x800)
|
||||||
|
#define MCF_DSPI_DMCR_DRXF (0x1000)
|
||||||
|
#define MCF_DSPI_DMCR_DTXF (0x2000)
|
||||||
|
#define MCF_DSPI_DMCR_CSIS0 (0x10000)
|
||||||
|
#define MCF_DSPI_DMCR_CSIS2 (0x40000)
|
||||||
|
#define MCF_DSPI_DMCR_CSIS3 (0x80000)
|
||||||
|
#define MCF_DSPI_DMCR_CSIS5 (0x200000)
|
||||||
|
#define MCF_DSPI_DMCR_ROOE (0x1000000)
|
||||||
|
#define MCF_DSPI_DMCR_PCSSE (0x2000000)
|
||||||
|
#define MCF_DSPI_DMCR_MTFE (0x4000000)
|
||||||
|
#define MCF_DSPI_DMCR_FRZ (0x8000000)
|
||||||
|
#define MCF_DSPI_DMCR_DCONF(x) (((x)&0x3)<<0x1C)
|
||||||
|
#define MCF_DSPI_DMCR_CSCK (0x40000000)
|
||||||
|
#define MCF_DSPI_DMCR_MSTR (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DSPI_DTCR */
|
||||||
|
#define MCF_DSPI_DTCR_SPI_TCNT(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DSPI_DCTAR */
|
||||||
|
#define MCF_DSPI_DCTAR_BR(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_DSPI_DCTAR_DT(x) (((x)&0xF)<<0x4)
|
||||||
|
#define MCF_DSPI_DCTAR_ASC(x) (((x)&0xF)<<0x8)
|
||||||
|
#define MCF_DSPI_DCTAR_CSSCK(x) (((x)&0xF)<<0xC)
|
||||||
|
#define MCF_DSPI_DCTAR_PBR(x) (((x)&0x3)<<0x10)
|
||||||
|
#define MCF_DSPI_DCTAR_PBR_1CLK (0)
|
||||||
|
#define MCF_DSPI_DCTAR_PBR_3CLK (0x10000)
|
||||||
|
#define MCF_DSPI_DCTAR_PBR_5CLK (0x20000)
|
||||||
|
#define MCF_DSPI_DCTAR_PBR_7CLK (0x30000)
|
||||||
|
#define MCF_DSPI_DCTAR_PDT(x) (((x)&0x3)<<0x12)
|
||||||
|
#define MCF_DSPI_DCTAR_PDT_1CLK (0)
|
||||||
|
#define MCF_DSPI_DCTAR_PDT_3CLK (0x40000)
|
||||||
|
#define MCF_DSPI_DCTAR_PDT_5CLK (0x80000)
|
||||||
|
#define MCF_DSPI_DCTAR_PDT_7CLK (0xC0000)
|
||||||
|
#define MCF_DSPI_DCTAR_PASC(x) (((x)&0x3)<<0x14)
|
||||||
|
#define MCF_DSPI_DCTAR_PASC_1CLK (0)
|
||||||
|
#define MCF_DSPI_DCTAR_PASC_3CLK (0x100000)
|
||||||
|
#define MCF_DSPI_DCTAR_PASC_5CLK (0x200000)
|
||||||
|
#define MCF_DSPI_DCTAR_PASC_7CLK (0x300000)
|
||||||
|
#define MCF_DSPI_DCTAR_PCSSCK(x) (((x)&0x3)<<0x16)
|
||||||
|
#define MCF_DSPI_DCTAR_LSBFE (0x1000000)
|
||||||
|
#define MCF_DSPI_DCTAR_CPHA (0x2000000)
|
||||||
|
#define MCF_DSPI_DCTAR_CPOL (0x4000000)
|
||||||
|
#define MCF_DSPI_DCTAR_TRSZ(x) (((x)&0xF)<<0x1B)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DSPI_DSR */
|
||||||
|
#define MCF_DSPI_DSR_RXPTR(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_DSPI_DSR_RXCTR(x) (((x)&0xF)<<0x4)
|
||||||
|
#define MCF_DSPI_DSR_TXPTR(x) (((x)&0xF)<<0x8)
|
||||||
|
#define MCF_DSPI_DSR_TXCTR(x) (((x)&0xF)<<0xC)
|
||||||
|
#define MCF_DSPI_DSR_RFDF (0x20000)
|
||||||
|
#define MCF_DSPI_DSR_RFOF (0x80000)
|
||||||
|
#define MCF_DSPI_DSR_TFFF (0x2000000)
|
||||||
|
#define MCF_DSPI_DSR_TFUF (0x8000000)
|
||||||
|
#define MCF_DSPI_DSR_EOQF (0x10000000)
|
||||||
|
#define MCF_DSPI_DSR_TXRXS (0x40000000)
|
||||||
|
#define MCF_DSPI_DSR_TCF (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DSPI_DIRSR */
|
||||||
|
#define MCF_DSPI_DIRSR_RFDFS (0x10000)
|
||||||
|
#define MCF_DSPI_DIRSR_RFDFE (0x20000)
|
||||||
|
#define MCF_DSPI_DIRSR_RFOFE (0x80000)
|
||||||
|
#define MCF_DSPI_DIRSR_TFFFS (0x1000000)
|
||||||
|
#define MCF_DSPI_DIRSR_TFFFE (0x2000000)
|
||||||
|
#define MCF_DSPI_DIRSR_TFUFE (0x8000000)
|
||||||
|
#define MCF_DSPI_DIRSR_EOQFE (0x10000000)
|
||||||
|
#define MCF_DSPI_DIRSR_TCFE (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DSPI_DTFR */
|
||||||
|
#define MCF_DSPI_DTFR_TXDATA(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_DSPI_DTFR_CS0 (0x10000)
|
||||||
|
#define MCF_DSPI_DTFR_CS2 (0x40000)
|
||||||
|
#define MCF_DSPI_DTFR_CS3 (0x80000)
|
||||||
|
#define MCF_DSPI_DTFR_CS5 (0x200000)
|
||||||
|
#define MCF_DSPI_DTFR_CTCNT (0x4000000)
|
||||||
|
#define MCF_DSPI_DTFR_EOQ (0x8000000)
|
||||||
|
#define MCF_DSPI_DTFR_CTAS(x) (((x)&0x7)<<0x1C)
|
||||||
|
#define MCF_DSPI_DTFR_CONT (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DSPI_DRFR */
|
||||||
|
#define MCF_DSPI_DRFR_RXDATA(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DSPI_DTFDR */
|
||||||
|
#define MCF_DSPI_DTFDR_TXDATA(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_DSPI_DTFDR_TXCMD(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_DSPI_DRFDR */
|
||||||
|
#define MCF_DSPI_DRFDR_RXDATA(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_DSPI_H__ */
|
||||||
123
i2cspi_BaS_gcc/include/MCF5475_EPORT.h
Normal file
123
i2cspi_BaS_gcc/include/MCF5475_EPORT.h
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_EPORT_H__
|
||||||
|
#define __MCF5475_EPORT_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Edge Port Module (EPORT)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_EPORT_EPPAR (*(volatile uint16_t*)(&_MBAR[0xF00]))
|
||||||
|
#define MCF_EPORT_EPDDR (*(volatile uint8_t *)(&_MBAR[0xF04]))
|
||||||
|
#define MCF_EPORT_EPIER (*(volatile uint8_t *)(&_MBAR[0xF05]))
|
||||||
|
#define MCF_EPORT_EPDR (*(volatile uint8_t *)(&_MBAR[0xF08]))
|
||||||
|
#define MCF_EPORT_EPPDR (*(volatile uint8_t *)(&_MBAR[0xF09]))
|
||||||
|
#define MCF_EPORT_EPFR (*(volatile uint8_t *)(&_MBAR[0xF0C]))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_EPORT_EPPAR */
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA1(x) (((x)&0x3)<<0x2)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA1_LEVEL (0)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA1_RISING (0x4)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA1_FALLING (0x8)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA1_BOTH (0xC)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA2(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA2_LEVEL (0)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA2_RISING (0x10)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA2_FALLING (0x20)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA2_BOTH (0x30)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA3(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA3_LEVEL (0)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA3_RISING (0x40)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA3_FALLING (0x80)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA3_BOTH (0xC0)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA4(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA4_LEVEL (0)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA4_RISING (0x100)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA4_FALLING (0x200)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA4_BOTH (0x300)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA5(x) (((x)&0x3)<<0xA)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA5_LEVEL (0)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA5_RISING (0x400)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA5_FALLING (0x800)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA5_BOTH (0xC00)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA6(x) (((x)&0x3)<<0xC)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA6_LEVEL (0)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA6_RISING (0x1000)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA6_FALLING (0x2000)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA6_BOTH (0x3000)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA7(x) (((x)&0x3)<<0xE)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA7_LEVEL (0)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA7_RISING (0x4000)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA7_FALLING (0x8000)
|
||||||
|
#define MCF_EPORT_EPPAR_EPPA7_BOTH (0xC000)
|
||||||
|
#define MCF_EPORT_EPPAR_LEVEL (0)
|
||||||
|
#define MCF_EPORT_EPPAR_RISING (0x1)
|
||||||
|
#define MCF_EPORT_EPPAR_FALLING (0x2)
|
||||||
|
#define MCF_EPORT_EPPAR_BOTH (0x3)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_EPORT_EPDDR */
|
||||||
|
#define MCF_EPORT_EPDDR_EPDD1 (0x2)
|
||||||
|
#define MCF_EPORT_EPDDR_EPDD2 (0x4)
|
||||||
|
#define MCF_EPORT_EPDDR_EPDD3 (0x8)
|
||||||
|
#define MCF_EPORT_EPDDR_EPDD4 (0x10)
|
||||||
|
#define MCF_EPORT_EPDDR_EPDD5 (0x20)
|
||||||
|
#define MCF_EPORT_EPDDR_EPDD6 (0x40)
|
||||||
|
#define MCF_EPORT_EPDDR_EPDD7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_EPORT_EPIER */
|
||||||
|
#define MCF_EPORT_EPIER_EPIE1 (0x2)
|
||||||
|
#define MCF_EPORT_EPIER_EPIE2 (0x4)
|
||||||
|
#define MCF_EPORT_EPIER_EPIE3 (0x8)
|
||||||
|
#define MCF_EPORT_EPIER_EPIE4 (0x10)
|
||||||
|
#define MCF_EPORT_EPIER_EPIE5 (0x20)
|
||||||
|
#define MCF_EPORT_EPIER_EPIE6 (0x40)
|
||||||
|
#define MCF_EPORT_EPIER_EPIE7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_EPORT_EPDR */
|
||||||
|
#define MCF_EPORT_EPDR_EPD1 (0x2)
|
||||||
|
#define MCF_EPORT_EPDR_EPD2 (0x4)
|
||||||
|
#define MCF_EPORT_EPDR_EPD3 (0x8)
|
||||||
|
#define MCF_EPORT_EPDR_EPD4 (0x10)
|
||||||
|
#define MCF_EPORT_EPDR_EPD5 (0x20)
|
||||||
|
#define MCF_EPORT_EPDR_EPD6 (0x40)
|
||||||
|
#define MCF_EPORT_EPDR_EPD7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_EPORT_EPPDR */
|
||||||
|
#define MCF_EPORT_EPPDR_EPPD1 (0x2)
|
||||||
|
#define MCF_EPORT_EPPDR_EPPD2 (0x4)
|
||||||
|
#define MCF_EPORT_EPPDR_EPPD3 (0x8)
|
||||||
|
#define MCF_EPORT_EPPDR_EPPD4 (0x10)
|
||||||
|
#define MCF_EPORT_EPPDR_EPPD5 (0x20)
|
||||||
|
#define MCF_EPORT_EPPDR_EPPD6 (0x40)
|
||||||
|
#define MCF_EPORT_EPPDR_EPPD7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_EPORT_EPFR */
|
||||||
|
#define MCF_EPORT_EPFR_EPF1 (0x2)
|
||||||
|
#define MCF_EPORT_EPFR_EPF2 (0x4)
|
||||||
|
#define MCF_EPORT_EPFR_EPF3 (0x8)
|
||||||
|
#define MCF_EPORT_EPFR_EPF4 (0x10)
|
||||||
|
#define MCF_EPORT_EPFR_EPF5 (0x20)
|
||||||
|
#define MCF_EPORT_EPFR_EPF6 (0x40)
|
||||||
|
#define MCF_EPORT_EPFR_EPF7 (0x80)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_EPORT_H__ */
|
||||||
100
i2cspi_BaS_gcc/include/MCF5475_FBCS.h
Normal file
100
i2cspi_BaS_gcc/include/MCF5475_FBCS.h
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_FBCS_H__
|
||||||
|
#define __MCF5475_FBCS_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* FlexBus Chip Select Module (FBCS)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_FBCS0_CSAR (*(volatile uint32_t*)(&_MBAR[0x500]))
|
||||||
|
#define MCF_FBCS0_CSMR (*(volatile uint32_t*)(&_MBAR[0x504]))
|
||||||
|
#define MCF_FBCS0_CSCR (*(volatile uint32_t*)(&_MBAR[0x508]))
|
||||||
|
|
||||||
|
#define MCF_FBCS1_CSAR (*(volatile uint32_t*)(&_MBAR[0x50C]))
|
||||||
|
#define MCF_FBCS1_CSMR (*(volatile uint32_t*)(&_MBAR[0x510]))
|
||||||
|
#define MCF_FBCS1_CSCR (*(volatile uint32_t*)(&_MBAR[0x514]))
|
||||||
|
|
||||||
|
#define MCF_FBCS2_CSAR (*(volatile uint32_t*)(&_MBAR[0x518]))
|
||||||
|
#define MCF_FBCS2_CSMR (*(volatile uint32_t*)(&_MBAR[0x51C]))
|
||||||
|
#define MCF_FBCS2_CSCR (*(volatile uint32_t*)(&_MBAR[0x520]))
|
||||||
|
|
||||||
|
#define MCF_FBCS3_CSAR (*(volatile uint32_t*)(&_MBAR[0x524]))
|
||||||
|
#define MCF_FBCS3_CSMR (*(volatile uint32_t*)(&_MBAR[0x528]))
|
||||||
|
#define MCF_FBCS3_CSCR (*(volatile uint32_t*)(&_MBAR[0x52C]))
|
||||||
|
|
||||||
|
#define MCF_FBCS4_CSAR (*(volatile uint32_t*)(&_MBAR[0x530]))
|
||||||
|
#define MCF_FBCS4_CSMR (*(volatile uint32_t*)(&_MBAR[0x534]))
|
||||||
|
#define MCF_FBCS4_CSCR (*(volatile uint32_t*)(&_MBAR[0x538]))
|
||||||
|
|
||||||
|
#define MCF_FBCS5_CSAR (*(volatile uint32_t*)(&_MBAR[0x53C]))
|
||||||
|
#define MCF_FBCS5_CSMR (*(volatile uint32_t*)(&_MBAR[0x540]))
|
||||||
|
#define MCF_FBCS5_CSCR (*(volatile uint32_t*)(&_MBAR[0x544]))
|
||||||
|
|
||||||
|
#define MCF_FBCS_CSAR(x) (*(volatile uint32_t*)(&_MBAR[0x500 + ((x)*0xC)]))
|
||||||
|
#define MCF_FBCS_CSMR(x) (*(volatile uint32_t*)(&_MBAR[0x504 + ((x)*0xC)]))
|
||||||
|
#define MCF_FBCS_CSCR(x) (*(volatile uint32_t*)(&_MBAR[0x508 + ((x)*0xC)]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FBCS_CSAR */
|
||||||
|
#define MCF_FBCS_CSAR_BA(x) ((x)&0xFFFF0000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FBCS_CSMR */
|
||||||
|
#define MCF_FBCS_CSMR_V (0x1)
|
||||||
|
#define MCF_FBCS_CSMR_WP (0x100)
|
||||||
|
#define MCF_FBCS_CSMR_BAM(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_4G (0xFFFF0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_2G (0x7FFF0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_1G (0x3FFF0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_1024M (0x3FFF0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_512M (0x1FFF0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_256M (0xFFF0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_128M (0x7FF0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_64M (0x3FF0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_32M (0x1FF0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_16M (0xFF0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_8M (0x7F0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_4M (0x3F0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_2M (0x1F0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_1M (0xF0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_1024K (0xF0000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_512K (0x70000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_256K (0x30000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_128K (0x10000)
|
||||||
|
#define MCF_FBCS_CSMR_BAM_64K (0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FBCS_CSCR */
|
||||||
|
#define MCF_FBCS_CSCR_BSTW (0x8)
|
||||||
|
#define MCF_FBCS_CSCR_BSTR (0x10)
|
||||||
|
#define MCF_FBCS_CSCR_BEM (0x20)
|
||||||
|
#define MCF_FBCS_CSCR_PS(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_FBCS_CSCR_PS_32 (0)
|
||||||
|
#define MCF_FBCS_CSCR_PS_8 (0x40)
|
||||||
|
#define MCF_FBCS_CSCR_PS_16 (0x80)
|
||||||
|
#define MCF_FBCS_CSCR_AA (0x100)
|
||||||
|
#define MCF_FBCS_CSCR_WS(x) (((x)&0x3F)<<0xA)
|
||||||
|
#define MCF_FBCS_CSCR_WRAH(x) (((x)&0x3)<<0x10)
|
||||||
|
#define MCF_FBCS_CSCR_RDAH(x) (((x)&0x3)<<0x12)
|
||||||
|
#define MCF_FBCS_CSCR_ASET(x) (((x)&0x3)<<0x14)
|
||||||
|
#define MCF_FBCS_CSCR_SWSEN (0x800000)
|
||||||
|
#define MCF_FBCS_CSCR_SWS(x) (((x)&0x3F)<<0x1A)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_FBCS_H__ */
|
||||||
680
i2cspi_BaS_gcc/include/MCF5475_FEC.h
Normal file
680
i2cspi_BaS_gcc/include/MCF5475_FEC.h
Normal file
@@ -0,0 +1,680 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_FEC_H__
|
||||||
|
#define __MCF5475_FEC_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Fast Ethernet Controller(FEC)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_FEC0_EIR (*(volatile uint32_t*)(&_MBAR[0x9004]))
|
||||||
|
#define MCF_FEC0_EIMR (*(volatile uint32_t*)(&_MBAR[0x9008]))
|
||||||
|
#define MCF_FEC0_ECR (*(volatile uint32_t*)(&_MBAR[0x9024]))
|
||||||
|
#define MCF_FEC0_MMFR (*(volatile uint32_t*)(&_MBAR[0x9040]))
|
||||||
|
#define MCF_FEC0_MSCR (*(volatile uint32_t*)(&_MBAR[0x9044]))
|
||||||
|
#define MCF_FEC0_MIBC (*(volatile uint32_t*)(&_MBAR[0x9064]))
|
||||||
|
#define MCF_FEC0_RCR (*(volatile uint32_t*)(&_MBAR[0x9084]))
|
||||||
|
#define MCF_FEC0_RHR (*(volatile uint32_t*)(&_MBAR[0x9088]))
|
||||||
|
#define MCF_FEC0_TCR (*(volatile uint32_t*)(&_MBAR[0x90C4]))
|
||||||
|
#define MCF_FEC0_PALR (*(volatile uint32_t*)(&_MBAR[0x90E4]))
|
||||||
|
#define MCF_FEC0_PAHR (*(volatile uint32_t*)(&_MBAR[0x90E8]))
|
||||||
|
#define MCF_FEC0_OPD (*(volatile uint32_t*)(&_MBAR[0x90EC]))
|
||||||
|
#define MCF_FEC0_IAUR (*(volatile uint32_t*)(&_MBAR[0x9118]))
|
||||||
|
#define MCF_FEC0_IALR (*(volatile uint32_t*)(&_MBAR[0x911C]))
|
||||||
|
#define MCF_FEC0_GAUR (*(volatile uint32_t*)(&_MBAR[0x9120]))
|
||||||
|
#define MCF_FEC0_GALR (*(volatile uint32_t*)(&_MBAR[0x9124]))
|
||||||
|
#define MCF_FEC0_FECTFWR (*(volatile uint32_t*)(&_MBAR[0x9144]))
|
||||||
|
#define MCF_FEC0_FECRFDR (*(volatile uint32_t*)(&_MBAR[0x9184]))
|
||||||
|
#define MCF_FEC0_FECRFSR (*(volatile uint32_t*)(&_MBAR[0x9188]))
|
||||||
|
#define MCF_FEC0_FECRFCR (*(volatile uint32_t*)(&_MBAR[0x918C]))
|
||||||
|
#define MCF_FEC0_FECRLRFP (*(volatile uint32_t*)(&_MBAR[0x9190]))
|
||||||
|
#define MCF_FEC0_FECRLWFP (*(volatile uint32_t*)(&_MBAR[0x9194]))
|
||||||
|
#define MCF_FEC0_FECRFAR (*(volatile uint32_t*)(&_MBAR[0x9198]))
|
||||||
|
#define MCF_FEC0_FECRFRP (*(volatile uint32_t*)(&_MBAR[0x919C]))
|
||||||
|
#define MCF_FEC0_FECRFWP (*(volatile uint32_t*)(&_MBAR[0x91A0]))
|
||||||
|
#define MCF_FEC0_FECTFDR (*(volatile uint32_t*)(&_MBAR[0x91A4]))
|
||||||
|
#define MCF_FEC0_FECTFSR (*(volatile uint32_t*)(&_MBAR[0x91A8]))
|
||||||
|
#define MCF_FEC0_FECTFCR (*(volatile uint32_t*)(&_MBAR[0x91AC]))
|
||||||
|
#define MCF_FEC0_FECTLRFP (*(volatile uint32_t*)(&_MBAR[0x91B0]))
|
||||||
|
#define MCF_FEC0_FECTLWFP (*(volatile uint32_t*)(&_MBAR[0x91B4]))
|
||||||
|
#define MCF_FEC0_FECTFAR (*(volatile uint32_t*)(&_MBAR[0x91B8]))
|
||||||
|
#define MCF_FEC0_FECTFRP (*(volatile uint32_t*)(&_MBAR[0x91BC]))
|
||||||
|
#define MCF_FEC0_FECTFWP (*(volatile uint32_t*)(&_MBAR[0x91C0]))
|
||||||
|
#define MCF_FEC0_FECFRST (*(volatile uint32_t*)(&_MBAR[0x91C4]))
|
||||||
|
#define MCF_FEC0_FECCTCWR (*(volatile uint32_t*)(&_MBAR[0x91C8]))
|
||||||
|
#define MCF_FEC0_RMON_T_DROP (*(volatile uint32_t*)(&_MBAR[0x9200]))
|
||||||
|
#define MCF_FEC0_RMON_T_PACKETS (*(volatile uint32_t*)(&_MBAR[0x9204]))
|
||||||
|
#define MCF_FEC0_RMON_T_BC_PKT (*(volatile uint32_t*)(&_MBAR[0x9208]))
|
||||||
|
#define MCF_FEC0_RMON_T_MC_PKT (*(volatile uint32_t*)(&_MBAR[0x920C]))
|
||||||
|
#define MCF_FEC0_RMON_T_CRC_ALIGN (*(volatile uint32_t*)(&_MBAR[0x9210]))
|
||||||
|
#define MCF_FEC0_RMON_T_UNDERSIZE (*(volatile uint32_t*)(&_MBAR[0x9214]))
|
||||||
|
#define MCF_FEC0_RMON_T_OVERSIZE (*(volatile uint32_t*)(&_MBAR[0x9218]))
|
||||||
|
#define MCF_FEC0_RMON_T_FRAG (*(volatile uint32_t*)(&_MBAR[0x921C]))
|
||||||
|
#define MCF_FEC0_RMON_T_JAB (*(volatile uint32_t*)(&_MBAR[0x9220]))
|
||||||
|
#define MCF_FEC0_RMON_T_COL (*(volatile uint32_t*)(&_MBAR[0x9224]))
|
||||||
|
#define MCF_FEC0_RMON_T_P64 (*(volatile uint32_t*)(&_MBAR[0x9228]))
|
||||||
|
#define MCF_FEC0_RMON_T_P65TO127 (*(volatile uint32_t*)(&_MBAR[0x922C]))
|
||||||
|
#define MCF_FEC0_RMON_T_P128TO255 (*(volatile uint32_t*)(&_MBAR[0x9230]))
|
||||||
|
#define MCF_FEC0_RMON_T_P256TO511 (*(volatile uint32_t*)(&_MBAR[0x9234]))
|
||||||
|
#define MCF_FEC0_RMON_T_P512TO1023 (*(volatile uint32_t*)(&_MBAR[0x9238]))
|
||||||
|
#define MCF_FEC0_RMON_T_P1024TO2047 (*(volatile uint32_t*)(&_MBAR[0x923C]))
|
||||||
|
#define MCF_FEC0_RMON_T_P_GTE2048 (*(volatile uint32_t*)(&_MBAR[0x9240]))
|
||||||
|
#define MCF_FEC0_RMON_T_OCTETS (*(volatile uint32_t*)(&_MBAR[0x9244]))
|
||||||
|
#define MCF_FEC0_IEEE_T_DROP (*(volatile uint32_t*)(&_MBAR[0x9248]))
|
||||||
|
#define MCF_FEC0_IEEE_T_FRAME_OK (*(volatile uint32_t*)(&_MBAR[0x924C]))
|
||||||
|
#define MCF_FEC0_IEEE_T_1COL (*(volatile uint32_t*)(&_MBAR[0x9250]))
|
||||||
|
#define MCF_FEC0_IEEE_T_MCOL (*(volatile uint32_t*)(&_MBAR[0x9254]))
|
||||||
|
#define MCF_FEC0_IEEE_T_DEF (*(volatile uint32_t*)(&_MBAR[0x9258]))
|
||||||
|
#define MCF_FEC0_IEEE_T_LCOL (*(volatile uint32_t*)(&_MBAR[0x925C]))
|
||||||
|
#define MCF_FEC0_IEEE_T_EXCOL (*(volatile uint32_t*)(&_MBAR[0x9260]))
|
||||||
|
#define MCF_FEC0_IEEE_T_MACERR (*(volatile uint32_t*)(&_MBAR[0x9264]))
|
||||||
|
#define MCF_FEC0_IEEE_T_CSERR (*(volatile uint32_t*)(&_MBAR[0x9268]))
|
||||||
|
#define MCF_FEC0_IEEE_T_SQE (*(volatile uint32_t*)(&_MBAR[0x926C]))
|
||||||
|
#define MCF_FEC0_IEEE_T_FDXFC (*(volatile uint32_t*)(&_MBAR[0x9270]))
|
||||||
|
#define MCF_FEC0_IEEE_T_OCTETS_OK (*(volatile uint32_t*)(&_MBAR[0x9274]))
|
||||||
|
#define MCF_FEC0_RMON_R_DROP (*(volatile uint32_t*)(&_MBAR[0x9280]))
|
||||||
|
#define MCF_FEC0_RMON_R_PACKETS (*(volatile uint32_t*)(&_MBAR[0x9284]))
|
||||||
|
#define MCF_FEC0_RMON_R_BC_PKT (*(volatile uint32_t*)(&_MBAR[0x9288]))
|
||||||
|
#define MCF_FEC0_RMON_R_MC_PKT (*(volatile uint32_t*)(&_MBAR[0x928C]))
|
||||||
|
#define MCF_FEC0_RMON_R_CRC_ALIGN (*(volatile uint32_t*)(&_MBAR[0x9290]))
|
||||||
|
#define MCF_FEC0_RMON_R_UNDERSIZE (*(volatile uint32_t*)(&_MBAR[0x9294]))
|
||||||
|
#define MCF_FEC0_RMON_R_OVERSIZE (*(volatile uint32_t*)(&_MBAR[0x9298]))
|
||||||
|
#define MCF_FEC0_RMON_R_FRAG (*(volatile uint32_t*)(&_MBAR[0x929C]))
|
||||||
|
#define MCF_FEC0_RMON_R_JAB (*(volatile uint32_t*)(&_MBAR[0x92A0]))
|
||||||
|
#define MCF_FEC0_RMON_R_RESVD_0 (*(volatile uint32_t*)(&_MBAR[0x92A4]))
|
||||||
|
#define MCF_FEC0_RMON_R_P64 (*(volatile uint32_t*)(&_MBAR[0x92A8]))
|
||||||
|
#define MCF_FEC0_RMON_R_P65TO127 (*(volatile uint32_t*)(&_MBAR[0x92AC]))
|
||||||
|
#define MCF_FEC0_RMON_R_P128TO255 (*(volatile uint32_t*)(&_MBAR[0x92B0]))
|
||||||
|
#define MCF_FEC0_RMON_R_P256TO511 (*(volatile uint32_t*)(&_MBAR[0x92B4]))
|
||||||
|
#define MCF_FEC0_RMON_R_P512TO1023 (*(volatile uint32_t*)(&_MBAR[0x92B8]))
|
||||||
|
#define MCF_FEC0_RMON_R_P1024TO2047 (*(volatile uint32_t*)(&_MBAR[0x92BC]))
|
||||||
|
#define MCF_FEC0_RMON_R_P_GTE2048 (*(volatile uint32_t*)(&_MBAR[0x92C0]))
|
||||||
|
#define MCF_FEC0_RMON_R_OCTETS (*(volatile uint32_t*)(&_MBAR[0x92C4]))
|
||||||
|
#define MCF_FEC0_IEEE_R_DROP (*(volatile uint32_t*)(&_MBAR[0x92C8]))
|
||||||
|
#define MCF_FEC0_IEEE_R_FRAME_OK (*(volatile uint32_t*)(&_MBAR[0x92CC]))
|
||||||
|
#define MCF_FEC0_IEEE_R_CRC (*(volatile uint32_t*)(&_MBAR[0x92D0]))
|
||||||
|
#define MCF_FEC0_IEEE_R_ALIGN (*(volatile uint32_t*)(&_MBAR[0x92D4]))
|
||||||
|
#define MCF_FEC0_IEEE_R_MACERR (*(volatile uint32_t*)(&_MBAR[0x92D8]))
|
||||||
|
#define MCF_FEC0_IEEE_R_FDXFC (*(volatile uint32_t*)(&_MBAR[0x92DC]))
|
||||||
|
#define MCF_FEC0_IEEE_R_OCTETS_OK (*(volatile uint32_t*)(&_MBAR[0x92E0]))
|
||||||
|
|
||||||
|
#define MCF_FEC1_EIR (*(volatile uint32_t*)(&_MBAR[0x9804]))
|
||||||
|
#define MCF_FEC1_EIMR (*(volatile uint32_t*)(&_MBAR[0x9808]))
|
||||||
|
#define MCF_FEC1_ECR (*(volatile uint32_t*)(&_MBAR[0x9824]))
|
||||||
|
#define MCF_FEC1_MMFR (*(volatile uint32_t*)(&_MBAR[0x9840]))
|
||||||
|
#define MCF_FEC1_MSCR (*(volatile uint32_t*)(&_MBAR[0x9844]))
|
||||||
|
#define MCF_FEC1_MIBC (*(volatile uint32_t*)(&_MBAR[0x9864]))
|
||||||
|
#define MCF_FEC1_RCR (*(volatile uint32_t*)(&_MBAR[0x9884]))
|
||||||
|
#define MCF_FEC1_RHR (*(volatile uint32_t*)(&_MBAR[0x9888]))
|
||||||
|
#define MCF_FEC1_TCR (*(volatile uint32_t*)(&_MBAR[0x98C4]))
|
||||||
|
#define MCF_FEC1_PALR (*(volatile uint32_t*)(&_MBAR[0x98E4]))
|
||||||
|
#define MCF_FEC1_PAHR (*(volatile uint32_t*)(&_MBAR[0x98E8]))
|
||||||
|
#define MCF_FEC1_OPD (*(volatile uint32_t*)(&_MBAR[0x98EC]))
|
||||||
|
#define MCF_FEC1_IAUR (*(volatile uint32_t*)(&_MBAR[0x9918]))
|
||||||
|
#define MCF_FEC1_IALR (*(volatile uint32_t*)(&_MBAR[0x991C]))
|
||||||
|
#define MCF_FEC1_GAUR (*(volatile uint32_t*)(&_MBAR[0x9920]))
|
||||||
|
#define MCF_FEC1_GALR (*(volatile uint32_t*)(&_MBAR[0x9924]))
|
||||||
|
#define MCF_FEC1_FECTFWR (*(volatile uint32_t*)(&_MBAR[0x9944]))
|
||||||
|
#define MCF_FEC1_FECRFDR (*(volatile uint32_t*)(&_MBAR[0x9984]))
|
||||||
|
#define MCF_FEC1_FECRFSR (*(volatile uint32_t*)(&_MBAR[0x9988]))
|
||||||
|
#define MCF_FEC1_FECRFCR (*(volatile uint32_t*)(&_MBAR[0x998C]))
|
||||||
|
#define MCF_FEC1_FECRLRFP (*(volatile uint32_t*)(&_MBAR[0x9990]))
|
||||||
|
#define MCF_FEC1_FECRLWFP (*(volatile uint32_t*)(&_MBAR[0x9994]))
|
||||||
|
#define MCF_FEC1_FECRFAR (*(volatile uint32_t*)(&_MBAR[0x9998]))
|
||||||
|
#define MCF_FEC1_FECRFRP (*(volatile uint32_t*)(&_MBAR[0x999C]))
|
||||||
|
#define MCF_FEC1_FECRFWP (*(volatile uint32_t*)(&_MBAR[0x99A0]))
|
||||||
|
#define MCF_FEC1_FECTFDR (*(volatile uint32_t*)(&_MBAR[0x99A4]))
|
||||||
|
#define MCF_FEC1_FECTFSR (*(volatile uint32_t*)(&_MBAR[0x99A8]))
|
||||||
|
#define MCF_FEC1_FECTFCR (*(volatile uint32_t*)(&_MBAR[0x99AC]))
|
||||||
|
#define MCF_FEC1_FECTLRFP (*(volatile uint32_t*)(&_MBAR[0x99B0]))
|
||||||
|
#define MCF_FEC1_FECTLWFP (*(volatile uint32_t*)(&_MBAR[0x99B4]))
|
||||||
|
#define MCF_FEC1_FECTFAR (*(volatile uint32_t*)(&_MBAR[0x99B8]))
|
||||||
|
#define MCF_FEC1_FECTFRP (*(volatile uint32_t*)(&_MBAR[0x99BC]))
|
||||||
|
#define MCF_FEC1_FECTFWP (*(volatile uint32_t*)(&_MBAR[0x99C0]))
|
||||||
|
#define MCF_FEC1_FECFRST (*(volatile uint32_t*)(&_MBAR[0x99C4]))
|
||||||
|
#define MCF_FEC1_FECCTCWR (*(volatile uint32_t*)(&_MBAR[0x99C8]))
|
||||||
|
#define MCF_FEC1_RMON_T_DROP (*(volatile uint32_t*)(&_MBAR[0x9A00]))
|
||||||
|
#define MCF_FEC1_RMON_T_PACKETS (*(volatile uint32_t*)(&_MBAR[0x9A04]))
|
||||||
|
#define MCF_FEC1_RMON_T_BC_PKT (*(volatile uint32_t*)(&_MBAR[0x9A08]))
|
||||||
|
#define MCF_FEC1_RMON_T_MC_PKT (*(volatile uint32_t*)(&_MBAR[0x9A0C]))
|
||||||
|
#define MCF_FEC1_RMON_T_CRC_ALIGN (*(volatile uint32_t*)(&_MBAR[0x9A10]))
|
||||||
|
#define MCF_FEC1_RMON_T_UNDERSIZE (*(volatile uint32_t*)(&_MBAR[0x9A14]))
|
||||||
|
#define MCF_FEC1_RMON_T_OVERSIZE (*(volatile uint32_t*)(&_MBAR[0x9A18]))
|
||||||
|
#define MCF_FEC1_RMON_T_FRAG (*(volatile uint32_t*)(&_MBAR[0x9A1C]))
|
||||||
|
#define MCF_FEC1_RMON_T_JAB (*(volatile uint32_t*)(&_MBAR[0x9A20]))
|
||||||
|
#define MCF_FEC1_RMON_T_COL (*(volatile uint32_t*)(&_MBAR[0x9A24]))
|
||||||
|
#define MCF_FEC1_RMON_T_P64 (*(volatile uint32_t*)(&_MBAR[0x9A28]))
|
||||||
|
#define MCF_FEC1_RMON_T_P65TO127 (*(volatile uint32_t*)(&_MBAR[0x9A2C]))
|
||||||
|
#define MCF_FEC1_RMON_T_P128TO255 (*(volatile uint32_t*)(&_MBAR[0x9A30]))
|
||||||
|
#define MCF_FEC1_RMON_T_P256TO511 (*(volatile uint32_t*)(&_MBAR[0x9A34]))
|
||||||
|
#define MCF_FEC1_RMON_T_P512TO1023 (*(volatile uint32_t*)(&_MBAR[0x9A38]))
|
||||||
|
#define MCF_FEC1_RMON_T_P1024TO2047 (*(volatile uint32_t*)(&_MBAR[0x9A3C]))
|
||||||
|
#define MCF_FEC1_RMON_T_P_GTE2048 (*(volatile uint32_t*)(&_MBAR[0x9A40]))
|
||||||
|
#define MCF_FEC1_RMON_T_OCTETS (*(volatile uint32_t*)(&_MBAR[0x9A44]))
|
||||||
|
#define MCF_FEC1_IEEE_T_DROP (*(volatile uint32_t*)(&_MBAR[0x9A48]))
|
||||||
|
#define MCF_FEC1_IEEE_T_FRAME_OK (*(volatile uint32_t*)(&_MBAR[0x9A4C]))
|
||||||
|
#define MCF_FEC1_IEEE_T_1COL (*(volatile uint32_t*)(&_MBAR[0x9A50]))
|
||||||
|
#define MCF_FEC1_IEEE_T_MCOL (*(volatile uint32_t*)(&_MBAR[0x9A54]))
|
||||||
|
#define MCF_FEC1_IEEE_T_DEF (*(volatile uint32_t*)(&_MBAR[0x9A58]))
|
||||||
|
#define MCF_FEC1_IEEE_T_LCOL (*(volatile uint32_t*)(&_MBAR[0x9A5C]))
|
||||||
|
#define MCF_FEC1_IEEE_T_EXCOL (*(volatile uint32_t*)(&_MBAR[0x9A60]))
|
||||||
|
#define MCF_FEC1_IEEE_T_MACERR (*(volatile uint32_t*)(&_MBAR[0x9A64]))
|
||||||
|
#define MCF_FEC1_IEEE_T_CSERR (*(volatile uint32_t*)(&_MBAR[0x9A68]))
|
||||||
|
#define MCF_FEC1_IEEE_T_SQE (*(volatile uint32_t*)(&_MBAR[0x9A6C]))
|
||||||
|
#define MCF_FEC1_IEEE_T_FDXFC (*(volatile uint32_t*)(&_MBAR[0x9A70]))
|
||||||
|
#define MCF_FEC1_IEEE_T_OCTETS_OK (*(volatile uint32_t*)(&_MBAR[0x9A74]))
|
||||||
|
#define MCF_FEC1_RMON_R_DROP (*(volatile uint32_t*)(&_MBAR[0x9A80]))
|
||||||
|
#define MCF_FEC1_RMON_R_PACKETS (*(volatile uint32_t*)(&_MBAR[0x9A84]))
|
||||||
|
#define MCF_FEC1_RMON_R_BC_PKT (*(volatile uint32_t*)(&_MBAR[0x9A88]))
|
||||||
|
#define MCF_FEC1_RMON_R_MC_PKT (*(volatile uint32_t*)(&_MBAR[0x9A8C]))
|
||||||
|
#define MCF_FEC1_RMON_R_CRC_ALIGN (*(volatile uint32_t*)(&_MBAR[0x9A90]))
|
||||||
|
#define MCF_FEC1_RMON_R_UNDERSIZE (*(volatile uint32_t*)(&_MBAR[0x9A94]))
|
||||||
|
#define MCF_FEC1_RMON_R_OVERSIZE (*(volatile uint32_t*)(&_MBAR[0x9A98]))
|
||||||
|
#define MCF_FEC1_RMON_R_FRAG (*(volatile uint32_t*)(&_MBAR[0x9A9C]))
|
||||||
|
#define MCF_FEC1_RMON_R_JAB (*(volatile uint32_t*)(&_MBAR[0x9AA0]))
|
||||||
|
#define MCF_FEC1_RMON_R_RESVD_0 (*(volatile uint32_t*)(&_MBAR[0x9AA4]))
|
||||||
|
#define MCF_FEC1_RMON_R_P64 (*(volatile uint32_t*)(&_MBAR[0x9AA8]))
|
||||||
|
#define MCF_FEC1_RMON_R_P65TO127 (*(volatile uint32_t*)(&_MBAR[0x9AAC]))
|
||||||
|
#define MCF_FEC1_RMON_R_P128TO255 (*(volatile uint32_t*)(&_MBAR[0x9AB0]))
|
||||||
|
#define MCF_FEC1_RMON_R_P256TO511 (*(volatile uint32_t*)(&_MBAR[0x9AB4]))
|
||||||
|
#define MCF_FEC1_RMON_R_P512TO1023 (*(volatile uint32_t*)(&_MBAR[0x9AB8]))
|
||||||
|
#define MCF_FEC1_RMON_R_P1024TO2047 (*(volatile uint32_t*)(&_MBAR[0x9ABC]))
|
||||||
|
#define MCF_FEC1_RMON_R_P_GTE2048 (*(volatile uint32_t*)(&_MBAR[0x9AC0]))
|
||||||
|
#define MCF_FEC1_RMON_R_OCTETS (*(volatile uint32_t*)(&_MBAR[0x9AC4]))
|
||||||
|
#define MCF_FEC1_IEEE_R_DROP (*(volatile uint32_t*)(&_MBAR[0x9AC8]))
|
||||||
|
#define MCF_FEC1_IEEE_R_FRAME_OK (*(volatile uint32_t*)(&_MBAR[0x9ACC]))
|
||||||
|
#define MCF_FEC1_IEEE_R_CRC (*(volatile uint32_t*)(&_MBAR[0x9AD0]))
|
||||||
|
#define MCF_FEC1_IEEE_R_ALIGN (*(volatile uint32_t*)(&_MBAR[0x9AD4]))
|
||||||
|
#define MCF_FEC1_IEEE_R_MACERR (*(volatile uint32_t*)(&_MBAR[0x9AD8]))
|
||||||
|
#define MCF_FEC1_IEEE_R_FDXFC (*(volatile uint32_t*)(&_MBAR[0x9ADC]))
|
||||||
|
#define MCF_FEC1_IEEE_R_OCTETS_OK (*(volatile uint32_t*)(&_MBAR[0x9AE0]))
|
||||||
|
|
||||||
|
#define MCF_FEC_EIR(x) (*(volatile uint32_t*)(&_MBAR[0x9004 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_EIMR(x) (*(volatile uint32_t*)(&_MBAR[0x9008 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_ECR(x) (*(volatile uint32_t*)(&_MBAR[0x9024 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_MMFR(x) (*(volatile uint32_t*)(&_MBAR[0x9040 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_MSCR(x) (*(volatile uint32_t*)(&_MBAR[0x9044 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_MIBC(x) (*(volatile uint32_t*)(&_MBAR[0x9064 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RCR(x) (*(volatile uint32_t*)(&_MBAR[0x9084 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RHR(x) (*(volatile uint32_t*)(&_MBAR[0x9088 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_TCR(x) (*(volatile uint32_t*)(&_MBAR[0x90C4 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_PALR(x) (*(volatile uint32_t*)(&_MBAR[0x90E4 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_PAHR(x) (*(volatile uint32_t*)(&_MBAR[0x90E8 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_OPD(x) (*(volatile uint32_t*)(&_MBAR[0x90EC + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IAUR(x) (*(volatile uint32_t*)(&_MBAR[0x9118 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IALR(x) (*(volatile uint32_t*)(&_MBAR[0x911C + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_GAUR(x) (*(volatile uint32_t*)(&_MBAR[0x9120 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_GALR(x) (*(volatile uint32_t*)(&_MBAR[0x9124 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECTFWR(x) (*(volatile uint32_t*)(&_MBAR[0x9144 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECRFDR(x) (*(volatile uint32_t*)(&_MBAR[0x9184 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECRFSR(x) (*(volatile uint32_t*)(&_MBAR[0x9188 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECRFCR(x) (*(volatile uint32_t*)(&_MBAR[0x918C + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECRLRFP(x) (*(volatile uint32_t*)(&_MBAR[0x9190 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECRLWFP(x) (*(volatile uint32_t*)(&_MBAR[0x9194 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECRFAR(x) (*(volatile uint32_t*)(&_MBAR[0x9198 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECRFRP(x) (*(volatile uint32_t*)(&_MBAR[0x919C + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECRFWP(x) (*(volatile uint32_t*)(&_MBAR[0x91A0 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECTFDR(x) (*(volatile uint32_t*)(&_MBAR[0x91A4 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECTFSR(x) (*(volatile uint32_t*)(&_MBAR[0x91A8 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECTFCR(x) (*(volatile uint32_t*)(&_MBAR[0x91AC + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECTLRFP(x) (*(volatile uint32_t*)(&_MBAR[0x91B0 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECTLWFP(x) (*(volatile uint32_t*)(&_MBAR[0x91B4 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECTFAR(x) (*(volatile uint32_t*)(&_MBAR[0x91B8 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECTFRP(x) (*(volatile uint32_t*)(&_MBAR[0x91BC + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECTFWP(x) (*(volatile uint32_t*)(&_MBAR[0x91C0 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECFRST(x) (*(volatile uint32_t*)(&_MBAR[0x91C4 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_FECCTCWR(x) (*(volatile uint32_t*)(&_MBAR[0x91C8 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_DROP(x) (*(volatile uint32_t*)(&_MBAR[0x9200 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_PACKETS(x) (*(volatile uint32_t*)(&_MBAR[0x9204 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_BC_PKT(x) (*(volatile uint32_t*)(&_MBAR[0x9208 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_MC_PKT(x) (*(volatile uint32_t*)(&_MBAR[0x920C + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_CRC_ALIGN(x) (*(volatile uint32_t*)(&_MBAR[0x9210 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_UNDERSIZE(x) (*(volatile uint32_t*)(&_MBAR[0x9214 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_OVERSIZE(x) (*(volatile uint32_t*)(&_MBAR[0x9218 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_FRAG(x) (*(volatile uint32_t*)(&_MBAR[0x921C + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_JAB(x) (*(volatile uint32_t*)(&_MBAR[0x9220 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_COL(x) (*(volatile uint32_t*)(&_MBAR[0x9224 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_P64(x) (*(volatile uint32_t*)(&_MBAR[0x9228 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_P65TO127(x) (*(volatile uint32_t*)(&_MBAR[0x922C + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_P128TO255(x) (*(volatile uint32_t*)(&_MBAR[0x9230 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_P256TO511(x) (*(volatile uint32_t*)(&_MBAR[0x9234 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_P512TO1023(x) (*(volatile uint32_t*)(&_MBAR[0x9238 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_P1024TO2047(x) (*(volatile uint32_t*)(&_MBAR[0x923C + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_P_GTE2048(x) (*(volatile uint32_t*)(&_MBAR[0x9240 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_T_OCTETS(x) (*(volatile uint32_t*)(&_MBAR[0x9244 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_T_DROP(x) (*(volatile uint32_t*)(&_MBAR[0x9248 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_T_FRAME_OK(x) (*(volatile uint32_t*)(&_MBAR[0x924C + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_T_1COL(x) (*(volatile uint32_t*)(&_MBAR[0x9250 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_T_MCOL(x) (*(volatile uint32_t*)(&_MBAR[0x9254 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_T_DEF(x) (*(volatile uint32_t*)(&_MBAR[0x9258 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_T_LCOL(x) (*(volatile uint32_t*)(&_MBAR[0x925C + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_T_EXCOL(x) (*(volatile uint32_t*)(&_MBAR[0x9260 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_T_MACERR(x) (*(volatile uint32_t*)(&_MBAR[0x9264 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_T_CSERR(x) (*(volatile uint32_t*)(&_MBAR[0x9268 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_T_SQE(x) (*(volatile uint32_t*)(&_MBAR[0x926C + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_T_FDXFC(x) (*(volatile uint32_t*)(&_MBAR[0x9270 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_T_OCTETS_OK(x) (*(volatile uint32_t*)(&_MBAR[0x9274 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_DROP(x) (*(volatile uint32_t*)(&_MBAR[0x9280 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_PACKETS(x) (*(volatile uint32_t*)(&_MBAR[0x9284 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_BC_PKT(x) (*(volatile uint32_t*)(&_MBAR[0x9288 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_MC_PKT(x) (*(volatile uint32_t*)(&_MBAR[0x928C + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_CRC_ALIGN(x) (*(volatile uint32_t*)(&_MBAR[0x9290 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_UNDERSIZE(x) (*(volatile uint32_t*)(&_MBAR[0x9294 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_OVERSIZE(x) (*(volatile uint32_t*)(&_MBAR[0x9298 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_FRAG(x) (*(volatile uint32_t*)(&_MBAR[0x929C + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_JAB(x) (*(volatile uint32_t*)(&_MBAR[0x92A0 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_RESVD_0(x) (*(volatile uint32_t*)(&_MBAR[0x92A4 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_P64(x) (*(volatile uint32_t*)(&_MBAR[0x92A8 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_P65TO127(x) (*(volatile uint32_t*)(&_MBAR[0x92AC + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_P128TO255(x) (*(volatile uint32_t*)(&_MBAR[0x92B0 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_P256TO511(x) (*(volatile uint32_t*)(&_MBAR[0x92B4 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_P512TO1023(x) (*(volatile uint32_t*)(&_MBAR[0x92B8 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_P1024TO2047(x) (*(volatile uint32_t*)(&_MBAR[0x92BC + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_P_GTE2048(x) (*(volatile uint32_t*)(&_MBAR[0x92C0 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_RMON_R_OCTETS(x) (*(volatile uint32_t*)(&_MBAR[0x92C4 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_R_DROP(x) (*(volatile uint32_t*)(&_MBAR[0x92C8 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_R_FRAME_OK(x) (*(volatile uint32_t*)(&_MBAR[0x92CC + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_R_CRC(x) (*(volatile uint32_t*)(&_MBAR[0x92D0 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_R_ALIGN(x) (*(volatile uint32_t*)(&_MBAR[0x92D4 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_R_MACERR(x) (*(volatile uint32_t*)(&_MBAR[0x92D8 + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_R_FDXFC(x) (*(volatile uint32_t*)(&_MBAR[0x92DC + ((x)*0x800)]))
|
||||||
|
#define MCF_FEC_IEEE_R_OCTETS_OK(x) (*(volatile uint32_t*)(&_MBAR[0x92E0 + ((x)*0x800)]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_EIR */
|
||||||
|
#define MCF_FEC_EIR_RFERR (0x20000)
|
||||||
|
#define MCF_FEC_EIR_XFERR (0x40000)
|
||||||
|
#define MCF_FEC_EIR_XFUN (0x80000)
|
||||||
|
#define MCF_FEC_EIR_RL (0x100000)
|
||||||
|
#define MCF_FEC_EIR_LC (0x200000)
|
||||||
|
#define MCF_FEC_EIR_MII (0x800000)
|
||||||
|
#define MCF_FEC_EIR_TXF (0x8000000)
|
||||||
|
#define MCF_FEC_EIR_GRA (0x10000000)
|
||||||
|
#define MCF_FEC_EIR_BABT (0x20000000)
|
||||||
|
#define MCF_FEC_EIR_BABR (0x40000000)
|
||||||
|
#define MCF_FEC_EIR_HBERR (0x80000000)
|
||||||
|
#define MCF_FEC_EIR_CLEAR_ALL (0xFFFFFFFF)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_EIMR */
|
||||||
|
#define MCF_FEC_EIMR_RFERR (0x20000)
|
||||||
|
#define MCF_FEC_EIMR_XFERR (0x40000)
|
||||||
|
#define MCF_FEC_EIMR_XFUN (0x80000)
|
||||||
|
#define MCF_FEC_EIMR_RL (0x100000)
|
||||||
|
#define MCF_FEC_EIMR_LC (0x200000)
|
||||||
|
#define MCF_FEC_EIMR_MII (0x800000)
|
||||||
|
#define MCF_FEC_EIMR_TXF (0x8000000)
|
||||||
|
#define MCF_FEC_EIMR_GRA (0x10000000)
|
||||||
|
#define MCF_FEC_EIMR_BABT (0x20000000)
|
||||||
|
#define MCF_FEC_EIMR_BABR (0x40000000)
|
||||||
|
#define MCF_FEC_EIMR_HBERR (0x80000000)
|
||||||
|
#define MCF_FEC_EIMR_MASK_ALL (0)
|
||||||
|
#define MCF_FEC_EIMR_UNMASK_ALL (0xFFFFFFFF)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_ECR */
|
||||||
|
#define MCF_FEC_ECR_RESET (0x1)
|
||||||
|
#define MCF_FEC_ECR_ETHER_EN (0x2)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_MMFR */
|
||||||
|
#define MCF_FEC_MMFR_DATA(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_FEC_MMFR_TA(x) (((x)&0x3)<<0x10)
|
||||||
|
#define MCF_FEC_MMFR_TA_10 (0x20000)
|
||||||
|
#define MCF_FEC_MMFR_RA(x) (((x)&0x1F)<<0x12)
|
||||||
|
#define MCF_FEC_MMFR_PA(x) (((x)&0x1F)<<0x17)
|
||||||
|
#define MCF_FEC_MMFR_OP(x) (((x)&0x3)<<0x1C)
|
||||||
|
#define MCF_FEC_MMFR_OP_READ (0x20000000)
|
||||||
|
#define MCF_FEC_MMFR_OP_WRITE (0x10000000)
|
||||||
|
#define MCF_FEC_MMFR_ST(x) (((x)&0x3)<<0x1E)
|
||||||
|
#define MCF_FEC_MMFR_ST_01 (0x40000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_MSCR */
|
||||||
|
#define MCF_FEC_MSCR_MII_SPEED(x) (((x)&0x3F)<<0x1)
|
||||||
|
#define MCF_FEC_MSCR_DIS_PREAMBLE (0x80)
|
||||||
|
#define MCF_FEC_MSCR_MII_SPEED_133 (0x1B<<0x1)
|
||||||
|
#define MCF_FEC_MSCR_MII_SPEED_120 (0x18<<0x1)
|
||||||
|
#define MCF_FEC_MSCR_MII_SPEED_66 (0xE<<0x1)
|
||||||
|
#define MCF_FEC_MSCR_MII_SPEED_60 (0xC<<0x1)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_MIBC */
|
||||||
|
#define MCF_FEC_MIBC_MIB_IDLE (0x40000000)
|
||||||
|
#define MCF_FEC_MIBC_MIB_DISABLE (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RCR */
|
||||||
|
#define MCF_FEC_RCR_LOOP (0x1)
|
||||||
|
#define MCF_FEC_RCR_DRT (0x2)
|
||||||
|
#define MCF_FEC_RCR_MII_MODE (0x4)
|
||||||
|
#define MCF_FEC_RCR_PROM (0x8)
|
||||||
|
#define MCF_FEC_RCR_BC_REJ (0x10)
|
||||||
|
#define MCF_FEC_RCR_FCE (0x20)
|
||||||
|
#define MCF_FEC_RCR_MAX_FL(x) (((x)&0x7FF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RHR */
|
||||||
|
#define MCF_FEC_RHR_HASH(x) (((x)&0x3F)<<0x18)
|
||||||
|
#define MCF_FEC_RHR_MULTCAST (0x40000000)
|
||||||
|
#define MCF_FEC_RHR_FCE (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_TCR */
|
||||||
|
#define MCF_FEC_TCR_GTS (0x1)
|
||||||
|
#define MCF_FEC_TCR_HBC (0x2)
|
||||||
|
#define MCF_FEC_TCR_FDEN (0x4)
|
||||||
|
#define MCF_FEC_TCR_TFC_PAUSE (0x8)
|
||||||
|
#define MCF_FEC_TCR_RFC_PAUSE (0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_PALR */
|
||||||
|
#define MCF_FEC_PALR_PADDR1(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_PAHR */
|
||||||
|
#define MCF_FEC_PAHR_TYPE(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_FEC_PAHR_PADDR2(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_OPD */
|
||||||
|
#define MCF_FEC_OPD_PAUSE_DUR(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_FEC_OPD_OPCODE(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IAUR */
|
||||||
|
#define MCF_FEC_IAUR_IADDR1(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IALR */
|
||||||
|
#define MCF_FEC_IALR_IADDR2(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_GAUR */
|
||||||
|
#define MCF_FEC_GAUR_GADDR1(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_GALR */
|
||||||
|
#define MCF_FEC_GALR_GADDR2(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECTFWR */
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_64 (0)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_128 (0x1)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_192 (0x2)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_256 (0x3)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_320 (0x4)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_384 (0x5)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_448 (0x6)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_512 (0x7)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_576 (0x8)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_640 (0x9)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_704 (0xA)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_768 (0xB)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_832 (0xC)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_896 (0xD)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_960 (0xE)
|
||||||
|
#define MCF_FEC_FECTFWR_X_WMRK_1024 (0xF)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECRFDR */
|
||||||
|
#define MCF_FEC_FECRFDR_FIFO_DATA(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECRFSR */
|
||||||
|
#define MCF_FEC_FECRFSR_EMT (0x10000)
|
||||||
|
#define MCF_FEC_FECRFSR_ALARM (0x20000)
|
||||||
|
#define MCF_FEC_FECRFSR_FU (0x40000)
|
||||||
|
#define MCF_FEC_FECRFSR_FRMRDY (0x80000)
|
||||||
|
#define MCF_FEC_FECRFSR_OF (0x100000)
|
||||||
|
#define MCF_FEC_FECRFSR_UF (0x200000)
|
||||||
|
#define MCF_FEC_FECRFSR_RXW (0x400000)
|
||||||
|
#define MCF_FEC_FECRFSR_FAE (0x800000)
|
||||||
|
#define MCF_FEC_FECRFSR_FRM(x) (((x)&0xF)<<0x18)
|
||||||
|
#define MCF_FEC_FECRFSR_IP (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECRFCR */
|
||||||
|
#define MCF_FEC_FECRFCR_COUNTER(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_FEC_FECRFCR_OF_MSK (0x80000)
|
||||||
|
#define MCF_FEC_FECRFCR_UF_MSK (0x100000)
|
||||||
|
#define MCF_FEC_FECRFCR_RXW_MSK (0x200000)
|
||||||
|
#define MCF_FEC_FECRFCR_FAE_MSK (0x400000)
|
||||||
|
#define MCF_FEC_FECRFCR_IP_MSK (0x800000)
|
||||||
|
#define MCF_FEC_FECRFCR_GR(x) (((x)&0x7)<<0x18)
|
||||||
|
#define MCF_FEC_FECRFCR_FRMEN (0x8000000)
|
||||||
|
#define MCF_FEC_FECRFCR_TIMER (0x10000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECRLRFP */
|
||||||
|
#define MCF_FEC_FECRLRFP_LRFP(x) (((x)&0x3FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECRLWFP */
|
||||||
|
#define MCF_FEC_FECRLWFP_LWFP(x) (((x)&0x3FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECRFAR */
|
||||||
|
#define MCF_FEC_FECRFAR_ALARM(x) (((x)&0x3FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECRFRP */
|
||||||
|
#define MCF_FEC_FECRFRP_READ(x) (((x)&0x3FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECRFWP */
|
||||||
|
#define MCF_FEC_FECRFWP_WRITE(x) (((x)&0x3FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECTFDR */
|
||||||
|
#define MCF_FEC_FECTFDR_FIFO_DATA(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECTFSR */
|
||||||
|
#define MCF_FEC_FECTFSR_EMT (0x10000)
|
||||||
|
#define MCF_FEC_FECTFSR_ALARM (0x20000)
|
||||||
|
#define MCF_FEC_FECTFSR_FU (0x40000)
|
||||||
|
#define MCF_FEC_FECTFSR_FRMRDY (0x80000)
|
||||||
|
#define MCF_FEC_FECTFSR_OF (0x100000)
|
||||||
|
#define MCF_FEC_FECTFSR_UF (0x200000)
|
||||||
|
#define MCF_FEC_FECTFSR_FAE (0x800000)
|
||||||
|
#define MCF_FEC_FECTFSR_FRM(x) (((x)&0xF)<<0x18)
|
||||||
|
#define MCF_FEC_FECTFSR_TXW (0x40000000)
|
||||||
|
#define MCF_FEC_FECTFSR_IP (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECTFCR */
|
||||||
|
#define MCF_FEC_FECTFCR_RESERVED (0x200000)
|
||||||
|
#define MCF_FEC_FECTFCR_COUNTER(x) (((x)&0xFFFF)<<0|0x200000)
|
||||||
|
#define MCF_FEC_FECTFCR_TXW_MASK (0x240000)
|
||||||
|
#define MCF_FEC_FECTFCR_OF_MSK (0x280000)
|
||||||
|
#define MCF_FEC_FECTFCR_UF_MSK (0x300000)
|
||||||
|
#define MCF_FEC_FECTFCR_FAE_MSK (0x600000)
|
||||||
|
#define MCF_FEC_FECTFCR_IP_MSK (0xA00000)
|
||||||
|
#define MCF_FEC_FECTFCR_GR(x) (((x)&0x7)<<0x18|0x200000)
|
||||||
|
#define MCF_FEC_FECTFCR_FRMEN (0x8200000)
|
||||||
|
#define MCF_FEC_FECTFCR_TIMER (0x10200000)
|
||||||
|
#define MCF_FEC_FECTFCR_WFR (0x20200000)
|
||||||
|
#define MCF_FEC_FECTFCR_WCTL (0x40200000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECTLRFP */
|
||||||
|
#define MCF_FEC_FECTLRFP_LRFP(x) (((x)&0x3FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECTLWFP */
|
||||||
|
#define MCF_FEC_FECTLWFP_LWFP(x) (((x)&0x3FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECTFAR */
|
||||||
|
#define MCF_FEC_FECTFAR_ALARM(x) (((x)&0x3FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECTFRP */
|
||||||
|
#define MCF_FEC_FECTFRP_READ(x) (((x)&0x3FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECTFWP */
|
||||||
|
#define MCF_FEC_FECTFWP_WRITE(x) (((x)&0x3FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECFRST */
|
||||||
|
#define MCF_FEC_FECFRST_RST_CTL (0x1000000)
|
||||||
|
#define MCF_FEC_FECFRST_SW_RST (0x2000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_FECCTCWR */
|
||||||
|
#define MCF_FEC_FECCTCWR_TFCW (0x1000000)
|
||||||
|
#define MCF_FEC_FECCTCWR_CRC (0x2000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_DROP */
|
||||||
|
#define MCF_FEC_RMON_T_DROP_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_PACKETS */
|
||||||
|
#define MCF_FEC_RMON_T_PACKETS_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_BC_PKT */
|
||||||
|
#define MCF_FEC_RMON_T_BC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_MC_PKT */
|
||||||
|
#define MCF_FEC_RMON_T_MC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_CRC_ALIGN */
|
||||||
|
#define MCF_FEC_RMON_T_CRC_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_UNDERSIZE */
|
||||||
|
#define MCF_FEC_RMON_T_UNDERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_OVERSIZE */
|
||||||
|
#define MCF_FEC_RMON_T_OVERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_FRAG */
|
||||||
|
#define MCF_FEC_RMON_T_FRAG_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_JAB */
|
||||||
|
#define MCF_FEC_RMON_T_JAB_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_COL */
|
||||||
|
#define MCF_FEC_RMON_T_COL_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_P64 */
|
||||||
|
#define MCF_FEC_RMON_T_P64_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_P65TO127 */
|
||||||
|
#define MCF_FEC_RMON_T_P65TO127_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_P128TO255 */
|
||||||
|
#define MCF_FEC_RMON_T_P128TO255_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_P256TO511 */
|
||||||
|
#define MCF_FEC_RMON_T_P256TO511_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_P512TO1023 */
|
||||||
|
#define MCF_FEC_RMON_T_P512TO1023_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_P1024TO2047 */
|
||||||
|
#define MCF_FEC_RMON_T_P1024TO2047_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_P_GTE2048 */
|
||||||
|
#define MCF_FEC_RMON_T_P_GTE2048_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_T_OCTETS */
|
||||||
|
#define MCF_FEC_RMON_T_OCTETS_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_T_DROP */
|
||||||
|
#define MCF_FEC_IEEE_T_DROP_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_T_FRAME_OK */
|
||||||
|
#define MCF_FEC_IEEE_T_FRAME_OK_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_T_1COL */
|
||||||
|
#define MCF_FEC_IEEE_T_1COL_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_T_MCOL */
|
||||||
|
#define MCF_FEC_IEEE_T_MCOL_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_T_DEF */
|
||||||
|
#define MCF_FEC_IEEE_T_DEF_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_T_LCOL */
|
||||||
|
#define MCF_FEC_IEEE_T_LCOL_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_T_EXCOL */
|
||||||
|
#define MCF_FEC_IEEE_T_EXCOL_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_T_MACERR */
|
||||||
|
#define MCF_FEC_IEEE_T_MACERR_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_T_CSERR */
|
||||||
|
#define MCF_FEC_IEEE_T_CSERR_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_T_SQE */
|
||||||
|
#define MCF_FEC_IEEE_T_SQE_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_T_FDXFC */
|
||||||
|
#define MCF_FEC_IEEE_T_FDXFC_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_T_OCTETS_OK */
|
||||||
|
#define MCF_FEC_IEEE_T_OCTETS_OK_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_DROP */
|
||||||
|
#define MCF_FEC_RMON_R_DROP_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_PACKETS */
|
||||||
|
#define MCF_FEC_RMON_R_PACKETS_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_BC_PKT */
|
||||||
|
#define MCF_FEC_RMON_R_BC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_MC_PKT */
|
||||||
|
#define MCF_FEC_RMON_R_MC_PKT_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_CRC_ALIGN */
|
||||||
|
#define MCF_FEC_RMON_R_CRC_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_UNDERSIZE */
|
||||||
|
#define MCF_FEC_RMON_R_UNDERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_OVERSIZE */
|
||||||
|
#define MCF_FEC_RMON_R_OVERSIZE_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_FRAG */
|
||||||
|
#define MCF_FEC_RMON_R_FRAG_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_JAB */
|
||||||
|
#define MCF_FEC_RMON_R_JAB_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_RESVD_0 */
|
||||||
|
#define MCF_FEC_RMON_R_RESVD_0_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_P64 */
|
||||||
|
#define MCF_FEC_RMON_R_P64_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_P65TO127 */
|
||||||
|
#define MCF_FEC_RMON_R_P65TO127_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_P128TO255 */
|
||||||
|
#define MCF_FEC_RMON_R_P128TO255_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_P256TO511 */
|
||||||
|
#define MCF_FEC_RMON_R_P256TO511_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_P512TO1023 */
|
||||||
|
#define MCF_FEC_RMON_R_P512TO1023_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_P1024TO2047 */
|
||||||
|
#define MCF_FEC_RMON_R_P1024TO2047_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_P_GTE2048 */
|
||||||
|
#define MCF_FEC_RMON_R_P_GTE2048_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_RMON_R_OCTETS */
|
||||||
|
#define MCF_FEC_RMON_R_OCTETS_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_R_DROP */
|
||||||
|
#define MCF_FEC_IEEE_R_DROP_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_R_FRAME_OK */
|
||||||
|
#define MCF_FEC_IEEE_R_FRAME_OK_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_R_CRC */
|
||||||
|
#define MCF_FEC_IEEE_R_CRC_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_R_ALIGN */
|
||||||
|
#define MCF_FEC_IEEE_R_ALIGN_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_R_MACERR */
|
||||||
|
#define MCF_FEC_IEEE_R_MACERR_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_R_FDXFC */
|
||||||
|
#define MCF_FEC_IEEE_R_FDXFC_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_FEC_IEEE_R_OCTETS_OK */
|
||||||
|
#define MCF_FEC_IEEE_R_OCTETS_OK_Value(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_FEC_H__ */
|
||||||
543
i2cspi_BaS_gcc/include/MCF5475_GPIO.h
Normal file
543
i2cspi_BaS_gcc/include/MCF5475_GPIO.h
Normal file
@@ -0,0 +1,543 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_GPIO_H__
|
||||||
|
#define __MCF5475_GPIO_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* General Purpose I/O (GPIO)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_GPIO_PODR_FBCTL (*(volatile uint8_t *)(&_MBAR[0xA00]))
|
||||||
|
#define MCF_GPIO_PDDR_FBCTL (*(volatile uint8_t *)(&_MBAR[0xA10]))
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCTL (*(volatile uint8_t *)(&_MBAR[0xA20]))
|
||||||
|
#define MCF_GPIO_PCLRR_FBCTL (*(volatile uint8_t *)(&_MBAR[0xA30]))
|
||||||
|
|
||||||
|
#define MCF_GPIO_PODR_FBCS (*(volatile uint8_t *)(&_MBAR[0xA01]))
|
||||||
|
#define MCF_GPIO_PDDR_FBCS (*(volatile uint8_t *)(&_MBAR[0xA11]))
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCS (*(volatile uint8_t *)(&_MBAR[0xA21]))
|
||||||
|
#define MCF_GPIO_PCLRR_FBCS (*(volatile uint8_t *)(&_MBAR[0xA31]))
|
||||||
|
|
||||||
|
#define MCF_GPIO_PODR_DMA (*(volatile uint8_t *)(&_MBAR[0xA02]))
|
||||||
|
#define MCF_GPIO_PDDR_DMA (*(volatile uint8_t *)(&_MBAR[0xA12]))
|
||||||
|
#define MCF_GPIO_PPDSDR_DMA (*(volatile uint8_t *)(&_MBAR[0xA22]))
|
||||||
|
#define MCF_GPIO_PCLRR_DMA (*(volatile uint8_t *)(&_MBAR[0xA32]))
|
||||||
|
|
||||||
|
#define MCF_GPIO_PODR_FEC0H (*(volatile uint8_t *)(&_MBAR[0xA04]))
|
||||||
|
#define MCF_GPIO_PDDR_FEC0H (*(volatile uint8_t *)(&_MBAR[0xA14]))
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0H (*(volatile uint8_t *)(&_MBAR[0xA24]))
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0H (*(volatile uint8_t *)(&_MBAR[0xA34]))
|
||||||
|
|
||||||
|
#define MCF_GPIO_PODR_FEC0L (*(volatile uint8_t *)(&_MBAR[0xA05]))
|
||||||
|
#define MCF_GPIO_PDDR_FEC0L (*(volatile uint8_t *)(&_MBAR[0xA15]))
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0L (*(volatile uint8_t *)(&_MBAR[0xA25]))
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0L (*(volatile uint8_t *)(&_MBAR[0xA35]))
|
||||||
|
|
||||||
|
#define MCF_GPIO_PODR_FEC1H (*(volatile uint8_t *)(&_MBAR[0xA06]))
|
||||||
|
#define MCF_GPIO_PDDR_FEC1H (*(volatile uint8_t *)(&_MBAR[0xA16]))
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1H (*(volatile uint8_t *)(&_MBAR[0xA26]))
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1H (*(volatile uint8_t *)(&_MBAR[0xA36]))
|
||||||
|
|
||||||
|
#define MCF_GPIO_PODR_FEC1L (*(volatile uint8_t *)(&_MBAR[0xA07]))
|
||||||
|
#define MCF_GPIO_PDDR_FEC1L (*(volatile uint8_t *)(&_MBAR[0xA17]))
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1L (*(volatile uint8_t *)(&_MBAR[0xA27]))
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1L (*(volatile uint8_t *)(&_MBAR[0xA37]))
|
||||||
|
|
||||||
|
#define MCF_GPIO_PODR_FECI2C (*(volatile uint8_t *)(&_MBAR[0xA08]))
|
||||||
|
#define MCF_GPIO_PDDR_FECI2C (*(volatile uint8_t *)(&_MBAR[0xA18]))
|
||||||
|
#define MCF_GPIO_PPDSDR_FECI2C (*(volatile uint8_t *)(&_MBAR[0xA28]))
|
||||||
|
#define MCF_GPIO_PCLRR_FECI2C (*(volatile uint8_t *)(&_MBAR[0xA38]))
|
||||||
|
|
||||||
|
#define MCF_GPIO_PODR_PCIBG (*(volatile uint8_t *)(&_MBAR[0xA09]))
|
||||||
|
#define MCF_GPIO_PDDR_PCIBG (*(volatile uint8_t *)(&_MBAR[0xA19]))
|
||||||
|
#define MCF_GPIO_PPDSDR_PCIBG (*(volatile uint8_t *)(&_MBAR[0xA29]))
|
||||||
|
#define MCF_GPIO_PCLRR_PCIBG (*(volatile uint8_t *)(&_MBAR[0xA39]))
|
||||||
|
|
||||||
|
#define MCF_GPIO_PODR_PCIBR (*(volatile uint8_t *)(&_MBAR[0xA0A]))
|
||||||
|
#define MCF_GPIO_PDDR_PCIBR (*(volatile uint8_t *)(&_MBAR[0xA1A]))
|
||||||
|
#define MCF_GPIO_PPDSDR_PCIBR (*(volatile uint8_t *)(&_MBAR[0xA2A]))
|
||||||
|
#define MCF_GPIO_PCLRR_PCIBR (*(volatile uint8_t *)(&_MBAR[0xA3A]))
|
||||||
|
|
||||||
|
#define MCF_GPIO2_PODR_PSC3PSC (*(volatile uint8_t *)(&_MBAR[0xA0C]))
|
||||||
|
#define MCF_GPIO2_PDDR_PSC3PSC (*(volatile uint8_t *)(&_MBAR[0xA1C]))
|
||||||
|
#define MCF_GPIO2_PPDSDR_PSC3PSC (*(volatile uint8_t *)(&_MBAR[0xA2C]))
|
||||||
|
#define MCF_GPIO2_PCLRR_PSC3PSC (*(volatile uint8_t *)(&_MBAR[0xA3C]))
|
||||||
|
|
||||||
|
#define MCF_GPIO0_PODR_PSC1PSC (*(volatile uint8_t *)(&_MBAR[0xA0D]))
|
||||||
|
#define MCF_GPIO0_PDDR_PSC1PSC (*(volatile uint8_t *)(&_MBAR[0xA1D]))
|
||||||
|
#define MCF_GPIO0_PPDSDR_PSC1PSC (*(volatile uint8_t *)(&_MBAR[0xA2D]))
|
||||||
|
#define MCF_GPIO0_PCLRR_PSC1PSC (*(volatile uint8_t *)(&_MBAR[0xA3D]))
|
||||||
|
|
||||||
|
#define MCF_GPIO_PODR_DSPI (*(volatile uint8_t *)(&_MBAR[0xA0E]))
|
||||||
|
#define MCF_GPIO_PDDR_DSPI (*(volatile uint8_t *)(&_MBAR[0xA1E]))
|
||||||
|
#define MCF_GPIO_PPDSDR_DSPI (*(volatile uint8_t *)(&_MBAR[0xA2E]))
|
||||||
|
#define MCF_GPIO_PCLRR_DSPI (*(volatile uint8_t *)(&_MBAR[0xA3E]))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_FBCTL */
|
||||||
|
#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL0 (0x1)
|
||||||
|
#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL1 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL2 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL3 (0x8)
|
||||||
|
#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL4 (0x10)
|
||||||
|
#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL5 (0x20)
|
||||||
|
#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL6 (0x40)
|
||||||
|
#define MCF_GPIO_PODR_FBCTL_PODR_FBCTL7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_FBCTL */
|
||||||
|
#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL0 (0x1)
|
||||||
|
#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL1 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL2 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL3 (0x8)
|
||||||
|
#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL4 (0x10)
|
||||||
|
#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL5 (0x20)
|
||||||
|
#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL6 (0x40)
|
||||||
|
#define MCF_GPIO_PDDR_FBCTL_PDDR_FBCTL7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_FBCTL */
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL0 (0x1)
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL1 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL2 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL3 (0x8)
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL4 (0x10)
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL5 (0x20)
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL6 (0x40)
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCTL_PPDSDR_FBCTL7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_FBCTL */
|
||||||
|
#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL0 (0x1)
|
||||||
|
#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL1 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL2 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL3 (0x8)
|
||||||
|
#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL4 (0x10)
|
||||||
|
#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL5 (0x20)
|
||||||
|
#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL6 (0x40)
|
||||||
|
#define MCF_GPIO_PCLRR_FBCTL_PCLRR_FBCTL7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_FBCS */
|
||||||
|
#define MCF_GPIO_PODR_FBCS_PODR_FBCS1 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_FBCS_PODR_FBCS2 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_FBCS_PODR_FBCS3 (0x8)
|
||||||
|
#define MCF_GPIO_PODR_FBCS_PODR_FBCS4 (0x10)
|
||||||
|
#define MCF_GPIO_PODR_FBCS_PODR_FBCS5 (0x20)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_FBCS */
|
||||||
|
#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS1 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS2 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS3 (0x8)
|
||||||
|
#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS4 (0x10)
|
||||||
|
#define MCF_GPIO_PDDR_FBCS_PDDR_FBCS5 (0x20)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_FBCS */
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS1 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS2 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS3 (0x8)
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS4 (0x10)
|
||||||
|
#define MCF_GPIO_PPDSDR_FBCS_PPDSDR_FBCS5 (0x20)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_FBCS */
|
||||||
|
#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS1 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS2 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS3 (0x8)
|
||||||
|
#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS4 (0x10)
|
||||||
|
#define MCF_GPIO_PCLRR_FBCS_PCLRR_FBCS5 (0x20)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_DMA */
|
||||||
|
#define MCF_GPIO_PODR_DMA_PODR_DMA0 (0x1)
|
||||||
|
#define MCF_GPIO_PODR_DMA_PODR_DMA1 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_DMA_PODR_DMA2 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_DMA_PODR_DMA3 (0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_DMA */
|
||||||
|
#define MCF_GPIO_PDDR_DMA_PDDR_DMA0 (0x1)
|
||||||
|
#define MCF_GPIO_PDDR_DMA_PDDR_DMA1 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_DMA_PDDR_DMA2 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_DMA_PDDR_DMA3 (0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_DMA */
|
||||||
|
#define MCF_GPIO_PPDSDR_DMA_PPDSDR_DMA0 (0x1)
|
||||||
|
#define MCF_GPIO_PPDSDR_DMA_PPDSDR_DMA1 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_DMA_PPDSDR_DMA2 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_DMA_PPDSDR_DMA3 (0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_DMA */
|
||||||
|
#define MCF_GPIO_PCLRR_DMA_PCLRR_DMA0 (0x1)
|
||||||
|
#define MCF_GPIO_PCLRR_DMA_PCLRR_DMA1 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_DMA_PCLRR_DMA2 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_DMA_PCLRR_DMA3 (0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_FEC0H */
|
||||||
|
#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H0 (0x1)
|
||||||
|
#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H1 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H2 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H3 (0x8)
|
||||||
|
#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H4 (0x10)
|
||||||
|
#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H5 (0x20)
|
||||||
|
#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H6 (0x40)
|
||||||
|
#define MCF_GPIO_PODR_FEC0H_PODR_FEC0H7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_FEC0H */
|
||||||
|
#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H0 (0x1)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H1 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H2 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H3 (0x8)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H4 (0x10)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H5 (0x20)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H6 (0x40)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0H_PDDR_FEC0H7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_FEC0H */
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H0 (0x1)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H1 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H2 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H3 (0x8)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H4 (0x10)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H5 (0x20)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H6 (0x40)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0H_PPDSDR_FEC0H7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_FEC0H */
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H0 (0x1)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H1 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H2 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H3 (0x8)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H4 (0x10)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H5 (0x20)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H6 (0x40)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0H_PCLRR_FEC0H7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_FEC0L */
|
||||||
|
#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L0 (0x1)
|
||||||
|
#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L1 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L2 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L3 (0x8)
|
||||||
|
#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L4 (0x10)
|
||||||
|
#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L5 (0x20)
|
||||||
|
#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L6 (0x40)
|
||||||
|
#define MCF_GPIO_PODR_FEC0L_PODR_FEC0L7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_FEC0L */
|
||||||
|
#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L0 (0x1)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L1 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L2 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L3 (0x8)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L4 (0x10)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L5 (0x20)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L6 (0x40)
|
||||||
|
#define MCF_GPIO_PDDR_FEC0L_PDDR_FEC0L7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_FEC0L */
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L0 (0x1)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L1 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L2 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L3 (0x8)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L4 (0x10)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L5 (0x20)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L6 (0x40)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC0L_PPDSDR_FEC0L7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_FEC0L */
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L0 (0x1)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L1 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L2 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L3 (0x8)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L4 (0x10)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L5 (0x20)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L6 (0x40)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC0L_PCLRR_FEC0L7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_FEC1H */
|
||||||
|
#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H0 (0x1)
|
||||||
|
#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H1 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H2 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H3 (0x8)
|
||||||
|
#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H4 (0x10)
|
||||||
|
#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H5 (0x20)
|
||||||
|
#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H6 (0x40)
|
||||||
|
#define MCF_GPIO_PODR_FEC1H_PODR_FEC1H7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_FEC1H */
|
||||||
|
#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H0 (0x1)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H1 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H2 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H3 (0x8)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H4 (0x10)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H5 (0x20)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H6 (0x40)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1H_PDDR_FEC1H7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_FEC1H */
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H0 (0x1)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H1 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H2 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H3 (0x8)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H4 (0x10)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H5 (0x20)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H6 (0x40)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1H_PPDSDR_FEC1H7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_FEC1H */
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H0 (0x1)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H1 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H2 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H3 (0x8)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H4 (0x10)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H5 (0x20)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H6 (0x40)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1H_PCLRR_FEC1H7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_FEC1L */
|
||||||
|
#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L0 (0x1)
|
||||||
|
#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L1 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L2 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L3 (0x8)
|
||||||
|
#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L4 (0x10)
|
||||||
|
#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L5 (0x20)
|
||||||
|
#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L6 (0x40)
|
||||||
|
#define MCF_GPIO_PODR_FEC1L_PODR_FEC1L7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_FEC1L */
|
||||||
|
#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L0 (0x1)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L1 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L2 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L3 (0x8)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L4 (0x10)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L5 (0x20)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L6 (0x40)
|
||||||
|
#define MCF_GPIO_PDDR_FEC1L_PDDR_FEC1L7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_FEC1L */
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L0 (0x1)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L1 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L2 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L3 (0x8)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L4 (0x10)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L5 (0x20)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L6 (0x40)
|
||||||
|
#define MCF_GPIO_PPDSDR_FEC1L_PPDSDR_FEC1L7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_FEC1L */
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L0 (0x1)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L1 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L2 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L3 (0x8)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L4 (0x10)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L5 (0x20)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L6 (0x40)
|
||||||
|
#define MCF_GPIO_PCLRR_FEC1L_PCLRR_FEC1L7 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_FECI2C */
|
||||||
|
#define MCF_GPIO_PODR_FECI2C_PODR_FECI2C0 (0x1)
|
||||||
|
#define MCF_GPIO_PODR_FECI2C_PODR_FECI2C1 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_FECI2C_PODR_FECI2C2 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_FECI2C_PODR_FECI2C3 (0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_FECI2C */
|
||||||
|
#define MCF_GPIO_PDDR_FECI2C_PDDR_FECI2C0 (0x1)
|
||||||
|
#define MCF_GPIO_PDDR_FECI2C_PDDR_FECI2C1 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_FECI2C_PDDR_FECI2C2 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_FECI2C_PDDR_FECI2C3 (0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_FECI2C */
|
||||||
|
#define MCF_GPIO_PPDSDR_FECI2C_PPDSDR_FECI2C0 (0x1)
|
||||||
|
#define MCF_GPIO_PPDSDR_FECI2C_PPDSDR_FECI2C1 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_FECI2C_PPDSDR_FECI2C2 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_FECI2C_PPDSDR_FECI2C3 (0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_FECI2C */
|
||||||
|
#define MCF_GPIO_PCLRR_FECI2C_PCLRR_FECI2C0 (0x1)
|
||||||
|
#define MCF_GPIO_PCLRR_FECI2C_PCLRR_FECI2C1 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_FECI2C_PCLRR_FECI2C2 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_FECI2C_PCLRR_FECI2C3 (0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_PCIBG */
|
||||||
|
#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG0 (0x1)
|
||||||
|
#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG1 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG2 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG3 (0x8)
|
||||||
|
#define MCF_GPIO_PODR_PCIBG_PODR_PCIBG4 (0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_PCIBG */
|
||||||
|
#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG0 (0x1)
|
||||||
|
#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG1 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG2 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG3 (0x8)
|
||||||
|
#define MCF_GPIO_PDDR_PCIBG_PDDR_PCIBG4 (0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_PCIBG */
|
||||||
|
#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG0 (0x1)
|
||||||
|
#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG1 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG2 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG3 (0x8)
|
||||||
|
#define MCF_GPIO_PPDSDR_PCIBG_PPDSDR_PCIBG4 (0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_PCIBG */
|
||||||
|
#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG0 (0x1)
|
||||||
|
#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG1 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG2 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG3 (0x8)
|
||||||
|
#define MCF_GPIO_PCLRR_PCIBG_PCLRR_PCIBG4 (0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_PCIBR */
|
||||||
|
#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR0 (0x1)
|
||||||
|
#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR1 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR2 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR3 (0x8)
|
||||||
|
#define MCF_GPIO_PODR_PCIBR_PODR_PCIBR4 (0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_PCIBR */
|
||||||
|
#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR0 (0x1)
|
||||||
|
#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR1 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR2 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR3 (0x8)
|
||||||
|
#define MCF_GPIO_PDDR_PCIBR_PDDR_PCIBR4 (0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_PCIBR */
|
||||||
|
#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR0 (0x1)
|
||||||
|
#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR1 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR2 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR3 (0x8)
|
||||||
|
#define MCF_GPIO_PPDSDR_PCIBR_PPDSDR_PCIBR4 (0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_PCIBR */
|
||||||
|
#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR0 (0x1)
|
||||||
|
#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR1 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR2 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR3 (0x8)
|
||||||
|
#define MCF_GPIO_PCLRR_PCIBR_PCLRR_PCIBR4 (0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_PSC3PSC */
|
||||||
|
#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC20 (0x1)
|
||||||
|
#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC21 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC22 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC23 (0x8)
|
||||||
|
#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC24 (0x10)
|
||||||
|
#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC25 (0x20)
|
||||||
|
#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC26 (0x40)
|
||||||
|
#define MCF_GPIO_PODR_PSC3PSC_PODR_PSC3PSC27 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_PSC3PSC */
|
||||||
|
#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC20 (0x1)
|
||||||
|
#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC21 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC22 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC23 (0x8)
|
||||||
|
#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC24 (0x10)
|
||||||
|
#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC25 (0x20)
|
||||||
|
#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC26 (0x40)
|
||||||
|
#define MCF_GPIO_PDDR_PSC3PSC_PDDR_PSC3PSC27 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_PSC3PSC */
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC20 (0x1)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC21 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC22 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC23 (0x8)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC24 (0x10)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC25 (0x20)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC26 (0x40)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC3PSC_PPDSDR_PSC3PSC27 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_PSC3PSC */
|
||||||
|
#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC20 (0x1)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC21 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC22 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC23 (0x8)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC24 (0x10)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC25 (0x20)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC26 (0x40)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC3PSC_PCLRR_PSC3PSC27 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_PSC1PSC */
|
||||||
|
#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC00 (0x1)
|
||||||
|
#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC01 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC02 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC03 (0x8)
|
||||||
|
#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC04 (0x10)
|
||||||
|
#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC05 (0x20)
|
||||||
|
#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC06 (0x40)
|
||||||
|
#define MCF_GPIO_PODR_PSC1PSC_PODR_PSC1PSC07 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_PSC1PSC */
|
||||||
|
#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC00 (0x1)
|
||||||
|
#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC01 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC02 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC03 (0x8)
|
||||||
|
#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC04 (0x10)
|
||||||
|
#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC05 (0x20)
|
||||||
|
#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC06 (0x40)
|
||||||
|
#define MCF_GPIO_PDDR_PSC1PSC_PDDR_PSC1PSC07 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_PSC1PSC */
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC00 (0x1)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC01 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC02 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC03 (0x8)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC04 (0x10)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC05 (0x20)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC06 (0x40)
|
||||||
|
#define MCF_GPIO_PPDSDR_PSC1PSC_PPDSDR_PSC1PSC07 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_PSC1PSC */
|
||||||
|
#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC00 (0x1)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC01 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC02 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC03 (0x8)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC04 (0x10)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC05 (0x20)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC06 (0x40)
|
||||||
|
#define MCF_GPIO_PCLRR_PSC1PSC_PCLRR_PSC1PSC07 (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PODR_DSPI */
|
||||||
|
#define MCF_GPIO_PODR_DSPI_PODR_DSPI0 (0x1)
|
||||||
|
#define MCF_GPIO_PODR_DSPI_PODR_DSPI1 (0x2)
|
||||||
|
#define MCF_GPIO_PODR_DSPI_PODR_DSPI2 (0x4)
|
||||||
|
#define MCF_GPIO_PODR_DSPI_PODR_DSPI3 (0x8)
|
||||||
|
#define MCF_GPIO_PODR_DSPI_PODR_DSPI4 (0x10)
|
||||||
|
#define MCF_GPIO_PODR_DSPI_PODR_DSPI5 (0x20)
|
||||||
|
#define MCF_GPIO_PODR_DSPI_PODR_DSPI6 (0x40)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PDDR_DSPI */
|
||||||
|
#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI0 (0x1)
|
||||||
|
#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI1 (0x2)
|
||||||
|
#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI2 (0x4)
|
||||||
|
#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI3 (0x8)
|
||||||
|
#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI4 (0x10)
|
||||||
|
#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI5 (0x20)
|
||||||
|
#define MCF_GPIO_PDDR_DSPI_PDDR_DSPI6 (0x40)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PPDSDR_DSPI */
|
||||||
|
#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI0 (0x1)
|
||||||
|
#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI1 (0x2)
|
||||||
|
#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI2 (0x4)
|
||||||
|
#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI3 (0x8)
|
||||||
|
#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI4 (0x10)
|
||||||
|
#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI5 (0x20)
|
||||||
|
#define MCF_GPIO_PPDSDR_DSPI_PPDSDR_DSPI6 (0x40)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPIO_PCLRR_DSPI */
|
||||||
|
#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI0 (0x1)
|
||||||
|
#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI1 (0x2)
|
||||||
|
#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI2 (0x4)
|
||||||
|
#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI3 (0x8)
|
||||||
|
#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI4 (0x10)
|
||||||
|
#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI5 (0x20)
|
||||||
|
#define MCF_GPIO_PCLRR_DSPI_PCLRR_DSPI6 (0x40)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_GPIO_H__ */
|
||||||
100
i2cspi_BaS_gcc/include/MCF5475_GPT.h
Normal file
100
i2cspi_BaS_gcc/include/MCF5475_GPT.h
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_GPT_H__
|
||||||
|
#define __MCF5475_GPT_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* General Purpose Timers (GPT)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_GPT0_GMS (*(volatile uint32_t*)(&_MBAR[0x800]))
|
||||||
|
#define MCF_GPT0_GCIR (*(volatile uint32_t*)(&_MBAR[0x804]))
|
||||||
|
#define MCF_GPT0_GPWM (*(volatile uint32_t*)(&_MBAR[0x808]))
|
||||||
|
#define MCF_GPT0_GSR (*(volatile uint32_t*)(&_MBAR[0x80C]))
|
||||||
|
|
||||||
|
#define MCF_GPT1_GMS (*(volatile uint32_t*)(&_MBAR[0x810]))
|
||||||
|
#define MCF_GPT1_GCIR (*(volatile uint32_t*)(&_MBAR[0x814]))
|
||||||
|
#define MCF_GPT1_GPWM (*(volatile uint32_t*)(&_MBAR[0x818]))
|
||||||
|
#define MCF_GPT1_GSR (*(volatile uint32_t*)(&_MBAR[0x81C]))
|
||||||
|
|
||||||
|
#define MCF_GPT2_GMS (*(volatile uint32_t*)(&_MBAR[0x820]))
|
||||||
|
#define MCF_GPT2_GCIR (*(volatile uint32_t*)(&_MBAR[0x824]))
|
||||||
|
#define MCF_GPT2_GPWM (*(volatile uint32_t*)(&_MBAR[0x828]))
|
||||||
|
#define MCF_GPT2_GSR (*(volatile uint32_t*)(&_MBAR[0x82C]))
|
||||||
|
|
||||||
|
#define MCF_GPT3_GMS (*(volatile uint32_t*)(&_MBAR[0x830]))
|
||||||
|
#define MCF_GPT3_GCIR (*(volatile uint32_t*)(&_MBAR[0x834]))
|
||||||
|
#define MCF_GPT3_GPWM (*(volatile uint32_t*)(&_MBAR[0x838]))
|
||||||
|
#define MCF_GPT3_GSR (*(volatile uint32_t*)(&_MBAR[0x83C]))
|
||||||
|
|
||||||
|
#define MCF_GPT_GMS(x) (*(volatile uint32_t*)(&_MBAR[0x800 + ((x)*0x10)]))
|
||||||
|
#define MCF_GPT_GCIR(x) (*(volatile uint32_t*)(&_MBAR[0x804 + ((x)*0x10)]))
|
||||||
|
#define MCF_GPT_GPWM(x) (*(volatile uint32_t*)(&_MBAR[0x808 + ((x)*0x10)]))
|
||||||
|
#define MCF_GPT_GSR(x) (*(volatile uint32_t*)(&_MBAR[0x80C + ((x)*0x10)]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPT_GMS */
|
||||||
|
#define MCF_GPT_GMS_TMS(x) (((x)&0x7)<<0)
|
||||||
|
#define MCF_GPT_GMS_TMS_DISABLE (0)
|
||||||
|
#define MCF_GPT_GMS_TMS_INCAPT (0x1)
|
||||||
|
#define MCF_GPT_GMS_TMS_OUTCAPT (0x2)
|
||||||
|
#define MCF_GPT_GMS_TMS_PWM (0x3)
|
||||||
|
#define MCF_GPT_GMS_TMS_GPIO (0x4)
|
||||||
|
#define MCF_GPT_GMS_GPIO(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_GPT_GMS_GPIO_INPUT (0)
|
||||||
|
#define MCF_GPT_GMS_GPIO_OUTLO (0x20)
|
||||||
|
#define MCF_GPT_GMS_GPIO_OUTHI (0x30)
|
||||||
|
#define MCF_GPT_GMS_IEN (0x100)
|
||||||
|
#define MCF_GPT_GMS_OD (0x200)
|
||||||
|
#define MCF_GPT_GMS_SC (0x400)
|
||||||
|
#define MCF_GPT_GMS_CE (0x1000)
|
||||||
|
#define MCF_GPT_GMS_WDEN (0x8000)
|
||||||
|
#define MCF_GPT_GMS_ICT(x) (((x)&0x3)<<0x10)
|
||||||
|
#define MCF_GPT_GMS_ICT_ANY (0)
|
||||||
|
#define MCF_GPT_GMS_ICT_RISE (0x10000)
|
||||||
|
#define MCF_GPT_GMS_ICT_FALL (0x20000)
|
||||||
|
#define MCF_GPT_GMS_ICT_PULSE (0x30000)
|
||||||
|
#define MCF_GPT_GMS_OCT(x) (((x)&0x3)<<0x14)
|
||||||
|
#define MCF_GPT_GMS_OCT_FRCLOW (0)
|
||||||
|
#define MCF_GPT_GMS_OCT_PULSEHI (0x100000)
|
||||||
|
#define MCF_GPT_GMS_OCT_PULSELO (0x200000)
|
||||||
|
#define MCF_GPT_GMS_OCT_TOGGLE (0x300000)
|
||||||
|
#define MCF_GPT_GMS_OCPW(x) (((x)&0xFF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPT_GCIR */
|
||||||
|
#define MCF_GPT_GCIR_CNT(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_GPT_GCIR_PRE(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPT_GPWM */
|
||||||
|
#define MCF_GPT_GPWM_LOAD (0x1)
|
||||||
|
#define MCF_GPT_GPWM_PWMOP (0x100)
|
||||||
|
#define MCF_GPT_GPWM_WIDTH(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_GPT_GSR */
|
||||||
|
#define MCF_GPT_GSR_CAPT (0x1)
|
||||||
|
#define MCF_GPT_GSR_COMP (0x2)
|
||||||
|
#define MCF_GPT_GSR_PWMP (0x4)
|
||||||
|
#define MCF_GPT_GSR_TEXP (0x8)
|
||||||
|
#define MCF_GPT_GSR_PIN (0x100)
|
||||||
|
#define MCF_GPT_GSR_OVF(x) (((x)&0x7)<<0xC)
|
||||||
|
#define MCF_GPT_GSR_CAPTURE(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_GPT_H__ */
|
||||||
69
i2cspi_BaS_gcc/include/MCF5475_I2C.h
Normal file
69
i2cspi_BaS_gcc/include/MCF5475_I2C.h
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_I2C_H__
|
||||||
|
#define __MCF5475_I2C_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* I2C Module (I2C)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_I2C_I2ADR (*(volatile uint8_t *)(&_MBAR[0x8F00]))
|
||||||
|
#define MCF_I2C_I2FDR (*(volatile uint8_t *)(&_MBAR[0x8F04]))
|
||||||
|
#define MCF_I2C_I2CR (*(volatile uint8_t *)(&_MBAR[0x8F08]))
|
||||||
|
#define MCF_I2C_I2SR (*(volatile uint8_t *)(&_MBAR[0x8F0C]))
|
||||||
|
#define MCF_I2C_I2DR (*(volatile uint8_t *)(&_MBAR[0x8F10]))
|
||||||
|
#define MCF_I2C_I2ICR (*(volatile uint8_t *)(&_MBAR[0x8F20]))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_I2C_I2ADR */
|
||||||
|
#define MCF_I2C_I2ADR_ADR(x) (((x)&0x7F)<<0x1)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_I2C_I2FDR */
|
||||||
|
#define MCF_I2C_I2FDR_IC(x) (((x)&0x3F)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_I2C_I2CR */
|
||||||
|
#define MCF_I2C_I2CR_RSTA (0x4)
|
||||||
|
#define MCF_I2C_I2CR_TXAK (0x8)
|
||||||
|
#define MCF_I2C_I2CR_MTX (0x10)
|
||||||
|
#define MCF_I2C_I2CR_MSTA (0x20)
|
||||||
|
#define MCF_I2C_I2CR_IIEN (0x40)
|
||||||
|
#define MCF_I2C_I2CR_IEN (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_I2C_I2SR */
|
||||||
|
#define MCF_I2C_I2SR_RXAK (0x1)
|
||||||
|
#define MCF_I2C_I2SR_IIF (0x2)
|
||||||
|
#define MCF_I2C_I2SR_SRW (0x4)
|
||||||
|
#define MCF_I2C_I2SR_IAL (0x10)
|
||||||
|
#define MCF_I2C_I2SR_IBB (0x20)
|
||||||
|
#define MCF_I2C_I2SR_IAAS (0x40)
|
||||||
|
#define MCF_I2C_I2SR_ICF (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_I2C_I2DR */
|
||||||
|
#define MCF_I2C_I2DR_DATA(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_I2C_I2ICR */
|
||||||
|
#define MCF_I2C_I2ICR_IE (0x1)
|
||||||
|
#define MCF_I2C_I2ICR_RE (0x2)
|
||||||
|
#define MCF_I2C_I2ICR_TE (0x4)
|
||||||
|
#define MCF_I2C_I2ICR_BNBE (0x8)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_I2C_H__ */
|
||||||
331
i2cspi_BaS_gcc/include/MCF5475_INTC.h
Normal file
331
i2cspi_BaS_gcc/include/MCF5475_INTC.h
Normal file
@@ -0,0 +1,331 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_INTC_H__
|
||||||
|
#define __MCF5475_INTC_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Interrupt Controller (INTC)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_INTC_IPRH (*(volatile uint32_t*)(&_MBAR[0x700]))
|
||||||
|
#define MCF_INTC_IPRL (*(volatile uint32_t*)(&_MBAR[0x704]))
|
||||||
|
#define MCF_INTC_IMRH (*(volatile uint32_t*)(&_MBAR[0x708]))
|
||||||
|
#define MCF_INTC_IMRL (*(volatile uint32_t*)(&_MBAR[0x70C]))
|
||||||
|
#define MCF_INTC_INTFRCH (*(volatile uint32_t*)(&_MBAR[0x710]))
|
||||||
|
#define MCF_INTC_INTFRCL (*(volatile uint32_t*)(&_MBAR[0x714]))
|
||||||
|
#define MCF_INTC_IRLR (*(volatile uint8_t *)(&_MBAR[0x718]))
|
||||||
|
#define MCF_INTC_IACKLPR (*(volatile uint8_t *)(&_MBAR[0x719]))
|
||||||
|
#define MCF_INTC_ICR01 (*(volatile uint8_t *)(&_MBAR[0x741]))
|
||||||
|
#define MCF_INTC_ICR02 (*(volatile uint8_t *)(&_MBAR[0x742]))
|
||||||
|
#define MCF_INTC_ICR03 (*(volatile uint8_t *)(&_MBAR[0x743]))
|
||||||
|
#define MCF_INTC_ICR04 (*(volatile uint8_t *)(&_MBAR[0x744]))
|
||||||
|
#define MCF_INTC_ICR05 (*(volatile uint8_t *)(&_MBAR[0x745]))
|
||||||
|
#define MCF_INTC_ICR06 (*(volatile uint8_t *)(&_MBAR[0x746]))
|
||||||
|
#define MCF_INTC_ICR07 (*(volatile uint8_t *)(&_MBAR[0x747]))
|
||||||
|
#define MCF_INTC_ICR08 (*(volatile uint8_t *)(&_MBAR[0x748]))
|
||||||
|
#define MCF_INTC_ICR09 (*(volatile uint8_t *)(&_MBAR[0x749]))
|
||||||
|
#define MCF_INTC_ICR10 (*(volatile uint8_t *)(&_MBAR[0x74A]))
|
||||||
|
#define MCF_INTC_ICR11 (*(volatile uint8_t *)(&_MBAR[0x74B]))
|
||||||
|
#define MCF_INTC_ICR12 (*(volatile uint8_t *)(&_MBAR[0x74C]))
|
||||||
|
#define MCF_INTC_ICR13 (*(volatile uint8_t *)(&_MBAR[0x74D]))
|
||||||
|
#define MCF_INTC_ICR14 (*(volatile uint8_t *)(&_MBAR[0x74E]))
|
||||||
|
#define MCF_INTC_ICR15 (*(volatile uint8_t *)(&_MBAR[0x74F]))
|
||||||
|
#define MCF_INTC_ICR16 (*(volatile uint8_t *)(&_MBAR[0x750]))
|
||||||
|
#define MCF_INTC_ICR17 (*(volatile uint8_t *)(&_MBAR[0x751]))
|
||||||
|
#define MCF_INTC_ICR18 (*(volatile uint8_t *)(&_MBAR[0x752]))
|
||||||
|
#define MCF_INTC_ICR19 (*(volatile uint8_t *)(&_MBAR[0x753]))
|
||||||
|
#define MCF_INTC_ICR20 (*(volatile uint8_t *)(&_MBAR[0x754]))
|
||||||
|
#define MCF_INTC_ICR21 (*(volatile uint8_t *)(&_MBAR[0x755]))
|
||||||
|
#define MCF_INTC_ICR22 (*(volatile uint8_t *)(&_MBAR[0x756]))
|
||||||
|
#define MCF_INTC_ICR23 (*(volatile uint8_t *)(&_MBAR[0x757]))
|
||||||
|
#define MCF_INTC_ICR24 (*(volatile uint8_t *)(&_MBAR[0x758]))
|
||||||
|
#define MCF_INTC_ICR25 (*(volatile uint8_t *)(&_MBAR[0x759]))
|
||||||
|
#define MCF_INTC_ICR26 (*(volatile uint8_t *)(&_MBAR[0x75A]))
|
||||||
|
#define MCF_INTC_ICR27 (*(volatile uint8_t *)(&_MBAR[0x75B]))
|
||||||
|
#define MCF_INTC_ICR28 (*(volatile uint8_t *)(&_MBAR[0x75C]))
|
||||||
|
#define MCF_INTC_ICR29 (*(volatile uint8_t *)(&_MBAR[0x75D]))
|
||||||
|
#define MCF_INTC_ICR30 (*(volatile uint8_t *)(&_MBAR[0x75E]))
|
||||||
|
#define MCF_INTC_ICR31 (*(volatile uint8_t *)(&_MBAR[0x75F]))
|
||||||
|
#define MCF_INTC_ICR32 (*(volatile uint8_t *)(&_MBAR[0x760]))
|
||||||
|
#define MCF_INTC_ICR33 (*(volatile uint8_t *)(&_MBAR[0x761]))
|
||||||
|
#define MCF_INTC_ICR34 (*(volatile uint8_t *)(&_MBAR[0x762]))
|
||||||
|
#define MCF_INTC_ICR35 (*(volatile uint8_t *)(&_MBAR[0x763]))
|
||||||
|
#define MCF_INTC_ICR36 (*(volatile uint8_t *)(&_MBAR[0x764]))
|
||||||
|
#define MCF_INTC_ICR37 (*(volatile uint8_t *)(&_MBAR[0x765]))
|
||||||
|
#define MCF_INTC_ICR38 (*(volatile uint8_t *)(&_MBAR[0x766]))
|
||||||
|
#define MCF_INTC_ICR39 (*(volatile uint8_t *)(&_MBAR[0x767]))
|
||||||
|
#define MCF_INTC_ICR40 (*(volatile uint8_t *)(&_MBAR[0x768]))
|
||||||
|
#define MCF_INTC_ICR41 (*(volatile uint8_t *)(&_MBAR[0x769]))
|
||||||
|
#define MCF_INTC_ICR42 (*(volatile uint8_t *)(&_MBAR[0x76A]))
|
||||||
|
#define MCF_INTC_ICR43 (*(volatile uint8_t *)(&_MBAR[0x76B]))
|
||||||
|
#define MCF_INTC_ICR44 (*(volatile uint8_t *)(&_MBAR[0x76C]))
|
||||||
|
#define MCF_INTC_ICR45 (*(volatile uint8_t *)(&_MBAR[0x76D]))
|
||||||
|
#define MCF_INTC_ICR46 (*(volatile uint8_t *)(&_MBAR[0x76E]))
|
||||||
|
#define MCF_INTC_ICR47 (*(volatile uint8_t *)(&_MBAR[0x76F]))
|
||||||
|
#define MCF_INTC_ICR48 (*(volatile uint8_t *)(&_MBAR[0x770]))
|
||||||
|
#define MCF_INTC_ICR49 (*(volatile uint8_t *)(&_MBAR[0x771]))
|
||||||
|
#define MCF_INTC_ICR50 (*(volatile uint8_t *)(&_MBAR[0x772]))
|
||||||
|
#define MCF_INTC_ICR51 (*(volatile uint8_t *)(&_MBAR[0x773]))
|
||||||
|
#define MCF_INTC_ICR52 (*(volatile uint8_t *)(&_MBAR[0x774]))
|
||||||
|
#define MCF_INTC_ICR53 (*(volatile uint8_t *)(&_MBAR[0x775]))
|
||||||
|
#define MCF_INTC_ICR54 (*(volatile uint8_t *)(&_MBAR[0x776]))
|
||||||
|
#define MCF_INTC_ICR55 (*(volatile uint8_t *)(&_MBAR[0x777]))
|
||||||
|
#define MCF_INTC_ICR56 (*(volatile uint8_t *)(&_MBAR[0x778]))
|
||||||
|
#define MCF_INTC_ICR57 (*(volatile uint8_t *)(&_MBAR[0x779]))
|
||||||
|
#define MCF_INTC_ICR58 (*(volatile uint8_t *)(&_MBAR[0x77A]))
|
||||||
|
#define MCF_INTC_ICR59 (*(volatile uint8_t *)(&_MBAR[0x77B]))
|
||||||
|
#define MCF_INTC_ICR60 (*(volatile uint8_t *)(&_MBAR[0x77C]))
|
||||||
|
#define MCF_INTC_ICR61 (*(volatile uint8_t *)(&_MBAR[0x77D]))
|
||||||
|
#define MCF_INTC_ICR62 (*(volatile uint8_t *)(&_MBAR[0x77E]))
|
||||||
|
#define MCF_INTC_ICR63 (*(volatile uint8_t *)(&_MBAR[0x77F]))
|
||||||
|
#define MCF_INTC_SWIACK (*(volatile uint8_t *)(&_MBAR[0x7E0]))
|
||||||
|
#define MCF_INTC_L1IACK (*(volatile uint8_t *)(&_MBAR[0x7E4]))
|
||||||
|
#define MCF_INTC_L2IACK (*(volatile uint8_t *)(&_MBAR[0x7E8]))
|
||||||
|
#define MCF_INTC_L3IACK (*(volatile uint8_t *)(&_MBAR[0x7EC]))
|
||||||
|
#define MCF_INTC_L4IACK (*(volatile uint8_t *)(&_MBAR[0x7F0]))
|
||||||
|
#define MCF_INTC_L5IACK (*(volatile uint8_t *)(&_MBAR[0x7F4]))
|
||||||
|
#define MCF_INTC_L6IACK (*(volatile uint8_t *)(&_MBAR[0x7F8]))
|
||||||
|
#define MCF_INTC_L7IACK (*(volatile uint8_t *)(&_MBAR[0x7FC]))
|
||||||
|
#define MCF_INTC_ICR(x) (*(volatile uint8_t *)(&_MBAR[0x741 + ((x-1)*0x1)]))
|
||||||
|
#define MCF_INTC_LIACK(x) (*(volatile uint8_t *)(&_MBAR[0x7E4 + ((x-1)*0x4)]))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_INTC_IPRH */
|
||||||
|
#define MCF_INTC_IPRH_INT32 (0x1)
|
||||||
|
#define MCF_INTC_IPRH_INT33 (0x2)
|
||||||
|
#define MCF_INTC_IPRH_INT34 (0x4)
|
||||||
|
#define MCF_INTC_IPRH_INT35 (0x8)
|
||||||
|
#define MCF_INTC_IPRH_INT36 (0x10)
|
||||||
|
#define MCF_INTC_IPRH_INT37 (0x20)
|
||||||
|
#define MCF_INTC_IPRH_INT38 (0x40)
|
||||||
|
#define MCF_INTC_IPRH_INT39 (0x80)
|
||||||
|
#define MCF_INTC_IPRH_INT40 (0x100)
|
||||||
|
#define MCF_INTC_IPRH_INT41 (0x200)
|
||||||
|
#define MCF_INTC_IPRH_INT42 (0x400)
|
||||||
|
#define MCF_INTC_IPRH_INT43 (0x800)
|
||||||
|
#define MCF_INTC_IPRH_INT44 (0x1000)
|
||||||
|
#define MCF_INTC_IPRH_INT45 (0x2000)
|
||||||
|
#define MCF_INTC_IPRH_INT46 (0x4000)
|
||||||
|
#define MCF_INTC_IPRH_INT47 (0x8000)
|
||||||
|
#define MCF_INTC_IPRH_INT48 (0x10000)
|
||||||
|
#define MCF_INTC_IPRH_INT49 (0x20000)
|
||||||
|
#define MCF_INTC_IPRH_INT50 (0x40000)
|
||||||
|
#define MCF_INTC_IPRH_INT51 (0x80000)
|
||||||
|
#define MCF_INTC_IPRH_INT52 (0x100000)
|
||||||
|
#define MCF_INTC_IPRH_INT53 (0x200000)
|
||||||
|
#define MCF_INTC_IPRH_INT54 (0x400000)
|
||||||
|
#define MCF_INTC_IPRH_INT55 (0x800000)
|
||||||
|
#define MCF_INTC_IPRH_INT56 (0x1000000)
|
||||||
|
#define MCF_INTC_IPRH_INT57 (0x2000000)
|
||||||
|
#define MCF_INTC_IPRH_INT58 (0x4000000)
|
||||||
|
#define MCF_INTC_IPRH_INT59 (0x8000000)
|
||||||
|
#define MCF_INTC_IPRH_INT60 (0x10000000)
|
||||||
|
#define MCF_INTC_IPRH_INT61 (0x20000000)
|
||||||
|
#define MCF_INTC_IPRH_INT62 (0x40000000)
|
||||||
|
#define MCF_INTC_IPRH_INT63 (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_INTC_IPRL */
|
||||||
|
#define MCF_INTC_IPRL_INT1 (0x2)
|
||||||
|
#define MCF_INTC_IPRL_INT2 (0x4)
|
||||||
|
#define MCF_INTC_IPRL_INT3 (0x8)
|
||||||
|
#define MCF_INTC_IPRL_INT4 (0x10)
|
||||||
|
#define MCF_INTC_IPRL_INT5 (0x20)
|
||||||
|
#define MCF_INTC_IPRL_INT6 (0x40)
|
||||||
|
#define MCF_INTC_IPRL_INT7 (0x80)
|
||||||
|
#define MCF_INTC_IPRL_INT8 (0x100)
|
||||||
|
#define MCF_INTC_IPRL_INT9 (0x200)
|
||||||
|
#define MCF_INTC_IPRL_INT10 (0x400)
|
||||||
|
#define MCF_INTC_IPRL_INT11 (0x800)
|
||||||
|
#define MCF_INTC_IPRL_INT12 (0x1000)
|
||||||
|
#define MCF_INTC_IPRL_INT13 (0x2000)
|
||||||
|
#define MCF_INTC_IPRL_INT14 (0x4000)
|
||||||
|
#define MCF_INTC_IPRL_INT15 (0x8000)
|
||||||
|
#define MCF_INTC_IPRL_INT16 (0x10000)
|
||||||
|
#define MCF_INTC_IPRL_INT17 (0x20000)
|
||||||
|
#define MCF_INTC_IPRL_INT18 (0x40000)
|
||||||
|
#define MCF_INTC_IPRL_INT19 (0x80000)
|
||||||
|
#define MCF_INTC_IPRL_INT20 (0x100000)
|
||||||
|
#define MCF_INTC_IPRL_INT21 (0x200000)
|
||||||
|
#define MCF_INTC_IPRL_INT22 (0x400000)
|
||||||
|
#define MCF_INTC_IPRL_INT23 (0x800000)
|
||||||
|
#define MCF_INTC_IPRL_INT24 (0x1000000)
|
||||||
|
#define MCF_INTC_IPRL_INT25 (0x2000000)
|
||||||
|
#define MCF_INTC_IPRL_INT26 (0x4000000)
|
||||||
|
#define MCF_INTC_IPRL_INT27 (0x8000000)
|
||||||
|
#define MCF_INTC_IPRL_INT28 (0x10000000)
|
||||||
|
#define MCF_INTC_IPRL_INT29 (0x20000000)
|
||||||
|
#define MCF_INTC_IPRL_INT30 (0x40000000)
|
||||||
|
#define MCF_INTC_IPRL_INT31 (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_INTC_IMRH */
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK32 (0x1)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK33 (0x2)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK34 (0x4)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK35 (0x8)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK36 (0x10)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK37 (0x20)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK38 (0x40)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK39 (0x80)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK40 (0x100)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK41 (0x200)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK42 (0x400)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK43 (0x800)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK44 (0x1000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK45 (0x2000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK46 (0x4000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK47 (0x8000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK48 (0x10000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK49 (0x20000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK50 (0x40000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK51 (0x80000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK52 (0x100000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK53 (0x200000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK54 (0x400000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK55 (0x800000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK56 (0x1000000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK57 (0x2000000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK58 (0x4000000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK59 (0x8000000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK60 (0x10000000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK61 (0x20000000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK62 (0x40000000)
|
||||||
|
#define MCF_INTC_IMRH_INT_MASK63 (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_INTC_IMRL */
|
||||||
|
#define MCF_INTC_IMRL_MASKALL (0x1)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK1 (0x2)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK2 (0x4)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK3 (0x8)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK4 (0x10)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK5 (0x20)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK6 (0x40)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK7 (0x80)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK8 (0x100)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK9 (0x200)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK10 (0x400)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK11 (0x800)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK12 (0x1000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK13 (0x2000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK14 (0x4000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK15 (0x8000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK16 (0x10000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK17 (0x20000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK18 (0x40000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK19 (0x80000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK20 (0x100000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK21 (0x200000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK22 (0x400000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK23 (0x800000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK24 (0x1000000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK25 (0x2000000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK26 (0x4000000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK27 (0x8000000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK28 (0x10000000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK29 (0x20000000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK30 (0x40000000)
|
||||||
|
#define MCF_INTC_IMRL_INT_MASK31 (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_INTC_INTFRCH */
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC32 (0x1)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC33 (0x2)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC34 (0x4)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC35 (0x8)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC36 (0x10)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC37 (0x20)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC38 (0x40)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC39 (0x80)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC40 (0x100)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC41 (0x200)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC42 (0x400)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC43 (0x800)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC44 (0x1000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC45 (0x2000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC46 (0x4000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC47 (0x8000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC48 (0x10000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC49 (0x20000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC50 (0x40000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC51 (0x80000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC52 (0x100000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC53 (0x200000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC54 (0x400000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC55 (0x800000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC56 (0x1000000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC57 (0x2000000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC58 (0x4000000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC59 (0x8000000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC60 (0x10000000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC61 (0x20000000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC62 (0x40000000)
|
||||||
|
#define MCF_INTC_INTFRCH_INTFRC63 (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_INTC_INTFRCL */
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC1 (0x2)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC2 (0x4)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC3 (0x8)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC4 (0x10)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC5 (0x20)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC6 (0x40)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC7 (0x80)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC8 (0x100)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC9 (0x200)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC10 (0x400)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC11 (0x800)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC12 (0x1000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC13 (0x2000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC14 (0x4000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC15 (0x8000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC16 (0x10000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC17 (0x20000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC18 (0x40000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC19 (0x80000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC20 (0x100000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC21 (0x200000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC22 (0x400000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC23 (0x800000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC24 (0x1000000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC25 (0x2000000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC26 (0x4000000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC27 (0x8000000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC28 (0x10000000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC29 (0x20000000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC30 (0x40000000)
|
||||||
|
#define MCF_INTC_INTFRCL_INTFRC31 (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_INTC_IRLR */
|
||||||
|
#define MCF_INTC_IRLR_IRQ(x) (((x)&0x7F)<<0x1)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_INTC_IACKLPR */
|
||||||
|
#define MCF_INTC_IACKLPR_PRI(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_INTC_IACKLPR_LEVEL(x) (((x)&0x7)<<0x4)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_INTC_ICR */
|
||||||
|
#define MCF_INTC_ICR_IP(x) (((x)&0x7)<<0)
|
||||||
|
#define MCF_INTC_ICR_IL(x) (((x)&0x7)<<0x3)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_INTC_SWIACK */
|
||||||
|
#define MCF_INTC_SWIACK_VECTOR(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_INTC_LIACK */
|
||||||
|
#define MCF_INTC_LIACK_VECTOR(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_INTC_H__ */
|
||||||
77
i2cspi_BaS_gcc/include/MCF5475_MMU.h
Normal file
77
i2cspi_BaS_gcc/include/MCF5475_MMU.h
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_MMU_H__
|
||||||
|
#define __MCF5475_MMU_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Memory Management Unit (MMU)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_MMU_MMUCR (*(volatile uint32_t*)(&_MMUBAR[0]))
|
||||||
|
#define MCF_MMU_MMUOR (*(volatile uint32_t*)(&_MMUBAR[0x4]))
|
||||||
|
#define MCF_MMU_MMUSR (*(volatile uint32_t*)(&_MMUBAR[0x8]))
|
||||||
|
#define MCF_MMU_MMUAR (*(volatile uint32_t*)(&_MMUBAR[0x10]))
|
||||||
|
#define MCF_MMU_MMUTR (*(volatile uint32_t*)(&_MMUBAR[0x14]))
|
||||||
|
#define MCF_MMU_MMUDR (*(volatile uint32_t*)(&_MMUBAR[0x18]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUCR */
|
||||||
|
#define MCF_MMU_MMUCR_EN (0x1)
|
||||||
|
#define MCF_MMU_MMUCR_ASM (0x2)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUOR */
|
||||||
|
#define MCF_MMU_MMUOR_UAA (0x1)
|
||||||
|
#define MCF_MMU_MMUOR_ACC (0x2)
|
||||||
|
#define MCF_MMU_MMUOR_RW (0x4)
|
||||||
|
#define MCF_MMU_MMUOR_ADR (0x8)
|
||||||
|
#define MCF_MMU_MMUOR_ITLB (0x10)
|
||||||
|
#define MCF_MMU_MMUOR_CAS (0x20)
|
||||||
|
#define MCF_MMU_MMUOR_CNL (0x40)
|
||||||
|
#define MCF_MMU_MMUOR_CA (0x80)
|
||||||
|
#define MCF_MMU_MMUOR_STLB (0x100)
|
||||||
|
#define MCF_MMU_MMUOR_AA(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUSR */
|
||||||
|
#define MCF_MMU_MMUSR_HIT (0x2)
|
||||||
|
#define MCF_MMU_MMUSR_WF (0x8)
|
||||||
|
#define MCF_MMU_MMUSR_RF (0x10)
|
||||||
|
#define MCF_MMU_MMUSR_SPF (0x20)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUAR */
|
||||||
|
#define MCF_MMU_MMUAR_FA(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUTR */
|
||||||
|
#define MCF_MMU_MMUTR_V (0x1)
|
||||||
|
#define MCF_MMU_MMUTR_SG (0x2)
|
||||||
|
#define MCF_MMU_MMUTR_ID(x) (((x)&0xFF)<<0x2)
|
||||||
|
#define MCF_MMU_MMUTR_VA(x) (((x)&0x3FFFFF)<<0xA)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUDR */
|
||||||
|
#define MCF_MMU_MMUDR_LK (0x2)
|
||||||
|
#define MCF_MMU_MMUDR_X (0x4)
|
||||||
|
#define MCF_MMU_MMUDR_W (0x8)
|
||||||
|
#define MCF_MMU_MMUDR_R (0x10)
|
||||||
|
#define MCF_MMU_MMUDR_SP (0x20)
|
||||||
|
#define MCF_MMU_MMUDR_CM(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_MMU_MMUDR_SZ(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_MMU_MMUDR_PA(x) (((x)&0x3FFFFF)<<0xA)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_MMU_H__ */
|
||||||
233
i2cspi_BaS_gcc/include/MCF5475_PAD.h
Normal file
233
i2cspi_BaS_gcc/include/MCF5475_PAD.h
Normal file
@@ -0,0 +1,233 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_PAD_H__
|
||||||
|
#define __MCF5475_PAD_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Common GPIO
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_PAD_PAR_FBCTL (*(volatile uint16_t*)(&_MBAR[0xA40]))
|
||||||
|
#define MCF_PAD_PAR_FBCS (*(volatile uint8_t *)(&_MBAR[0xA42]))
|
||||||
|
#define MCF_PAD_PAR_DMA (*(volatile uint8_t *)(&_MBAR[0xA43]))
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ (*(volatile uint16_t*)(&_MBAR[0xA44]))
|
||||||
|
#define MCF_PAD_PAR_PCIBG (*(volatile uint16_t*)(&_MBAR[0xA48]))
|
||||||
|
#define MCF_PAD_PAR_PCIBR (*(volatile uint16_t*)(&_MBAR[0xA4A]))
|
||||||
|
#define MCF_PAD_PAR_PSC3 (*(volatile uint8_t *)(&_MBAR[0xA4C]))
|
||||||
|
#define MCF_PAD_PAR_PSC2 (*(volatile uint8_t *)(&_MBAR[0xA4D]))
|
||||||
|
#define MCF_PAD_PAR_PSC1 (*(volatile uint8_t *)(&_MBAR[0xA4E]))
|
||||||
|
#define MCF_PAD_PAR_PSC0 (*(volatile uint8_t *)(&_MBAR[0xA4F]))
|
||||||
|
#define MCF_PAD_PAR_DSPI (*(volatile uint16_t*)(&_MBAR[0xA50]))
|
||||||
|
#define MCF_PAD_PAR_TIMER (*(volatile uint8_t *)(&_MBAR[0xA52]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PAD_PAR_FBCTL */
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_ALE(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_ALE_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_ALE_TBST (0x2)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_ALE_ALE (0x3)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_TA (0x4)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_RWB(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_RWB_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_RWB_TBST (0x20)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_RWB_RW (0x30)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_OE (0x40)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_BWE0 (0x100)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_BWE1 (0x400)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_BWE2 (0x1000)
|
||||||
|
#define MCF_PAD_PAR_FBCTL_PAR_BWE3 (0x4000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PAD_PAR_FBCS */
|
||||||
|
#define MCF_PAD_PAR_FBCS_PAR_CS1 (0x2)
|
||||||
|
#define MCF_PAD_PAR_FBCS_PAR_CS2 (0x4)
|
||||||
|
#define MCF_PAD_PAR_FBCS_PAR_CS3 (0x8)
|
||||||
|
#define MCF_PAD_PAR_FBCS_PAR_CS4 (0x10)
|
||||||
|
#define MCF_PAD_PAR_FBCS_PAR_CS5 (0x20)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PAD_PAR_DMA */
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DREQ0(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DREQ0_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DREQ0_TIN0 (0x2)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DREQ0_DREQ0 (0x3)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DREQ1(x) (((x)&0x3)<<0x2)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DREQ1_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DREQ1_IRQ1 (0x4)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DREQ1_TIN1 (0x8)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DREQ1_DREQ1 (0xC)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DACK0(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DACK0_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DACK0_TOUT0 (0x20)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DACK0_DACK0 (0x30)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DACK1(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DACK1_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DACK1_TOUT1 (0x80)
|
||||||
|
#define MCF_PAD_PAR_DMA_PAR_DACK1_DACK1 (0xC0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PAD_PAR_FECI2CIRQ */
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_IRQ5 (0x1)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_IRQ6 (0x2)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_SCL (0x4)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_SDA (0x8)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDC(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDC_SCL (0x80)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDC_E1MDC (0xC0)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDIO(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDIO_SDA (0x200)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDIO_E1MDIO (0x300)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_E1MII (0x400)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_E17 (0x800)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_E0MDC (0x1000)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_E0MDIO (0x2000)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_E0MII (0x4000)
|
||||||
|
#define MCF_PAD_PAR_FECI2CIRQ_PAR_E07 (0x8000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PAD_PAR_PCIBG */
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG0(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG0_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG0_TOUT0 (0x2)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG0_PCIBG0 (0x3)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG1(x) (((x)&0x3)<<0x2)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG1_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG1_TOUT1 (0x8)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG1_PCIBG1 (0xC)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG2(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG2_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG2_TOUT2 (0x20)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG2_PCIBG2 (0x30)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG3(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG3_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG3_TOUT3 (0x80)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG3_PCIBG3 (0xC0)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG4(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG4_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG4_TBST (0x200)
|
||||||
|
#define MCF_PAD_PAR_PCIBG_PAR_PCIBG4_PCIBG4 (0x300)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PAD_PAR_PCIBR */
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR0(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR0_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR0_TIN0 (0x2)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR0_PCIBR0 (0x3)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR1(x) (((x)&0x3)<<0x2)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR1_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR1_TIN1 (0x8)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR1_PCIBR1 (0xC)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR2(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR2_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR2_TIN2 (0x20)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR2_PCIBR2 (0x30)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR3(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR3_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR3_TIN3 (0x80)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR3_PCIBR3 (0xC0)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR4(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR4_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR4_IRQ4 (0x200)
|
||||||
|
#define MCF_PAD_PAR_PCIBR_PAR_PCIBR4_PCIBR4 (0x300)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PAD_PAR_PSC3 */
|
||||||
|
#define MCF_PAD_PAR_PSC3_PAR_TXD3 (0x4)
|
||||||
|
#define MCF_PAD_PAR_PSC3_PAR_RXD3 (0x8)
|
||||||
|
#define MCF_PAD_PAR_PSC3_PAR_RTS3(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_PAD_PAR_PSC3_PAR_RTS3_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PSC3_PAR_RTS3_FSYNC (0x20)
|
||||||
|
#define MCF_PAD_PAR_PSC3_PAR_RTS3_RTS (0x30)
|
||||||
|
#define MCF_PAD_PAR_PSC3_PAR_CTS3(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_PAD_PAR_PSC3_PAR_CTS3_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PSC3_PAR_CTS3_BCLK (0x80)
|
||||||
|
#define MCF_PAD_PAR_PSC3_PAR_CTS3_CTS (0xC0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PAD_PAR_PSC2 */
|
||||||
|
#define MCF_PAD_PAR_PSC2_PAR_TXD2 (0x4)
|
||||||
|
#define MCF_PAD_PAR_PSC2_PAR_RXD2 (0x8)
|
||||||
|
#define MCF_PAD_PAR_PSC2_PAR_RTS2(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_PAD_PAR_PSC2_PAR_RTS2_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PSC2_PAR_RTS2_FSYNC (0x20)
|
||||||
|
#define MCF_PAD_PAR_PSC2_PAR_RTS2_RTS (0x30)
|
||||||
|
#define MCF_PAD_PAR_PSC2_PAR_CTS2(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_PAD_PAR_PSC2_PAR_CTS2_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PSC2_PAR_CTS2_BCLK (0x80)
|
||||||
|
#define MCF_PAD_PAR_PSC2_PAR_CTS2_CTS (0xC0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PAD_PAR_PSC1 */
|
||||||
|
#define MCF_PAD_PAR_PSC1_PAR_TXD1 (0x4)
|
||||||
|
#define MCF_PAD_PAR_PSC1_PAR_RXD1 (0x8)
|
||||||
|
#define MCF_PAD_PAR_PSC1_PAR_RTS1(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_PAD_PAR_PSC1_PAR_RTS1_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PSC1_PAR_RTS1_FSYNC (0x20)
|
||||||
|
#define MCF_PAD_PAR_PSC1_PAR_RTS1_RTS (0x30)
|
||||||
|
#define MCF_PAD_PAR_PSC1_PAR_CTS1(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_PAD_PAR_PSC1_PAR_CTS1_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PSC1_PAR_CTS1_BCLK (0x80)
|
||||||
|
#define MCF_PAD_PAR_PSC1_PAR_CTS1_CTS (0xC0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PAD_PAR_PSC0 */
|
||||||
|
#define MCF_PAD_PAR_PSC0_PAR_TXD0 (0x4)
|
||||||
|
#define MCF_PAD_PAR_PSC0_PAR_RXD0 (0x8)
|
||||||
|
#define MCF_PAD_PAR_PSC0_PAR_RTS0(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_PAD_PAR_PSC0_PAR_RTS0_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PSC0_PAR_RTS0_FSYNC (0x20)
|
||||||
|
#define MCF_PAD_PAR_PSC0_PAR_RTS0_RTS (0x30)
|
||||||
|
#define MCF_PAD_PAR_PSC0_PAR_CTS0(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_PAD_PAR_PSC0_PAR_CTS0_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_PSC0_PAR_CTS0_BCLK (0x80)
|
||||||
|
#define MCF_PAD_PAR_PSC0_PAR_CTS0_CTS (0xC0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PAD_PAR_DSPI */
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SOUT(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SOUT_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SOUT_TXD (0x2)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SOUT_SOUT (0x3)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SIN(x) (((x)&0x3)<<0x2)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SIN_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SIN_RXD (0x8)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SIN_SIN (0xC)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SCK(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SCK_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SCK_BCLK (0x10)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SCK_CTS (0x20)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_SCK_SCK (0x30)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS0(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS0_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS0_FSYNC (0x40)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS0_RTS (0x80)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS0_DSPICS0 (0xC0)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS2(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS2_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS2_TOUT2 (0x200)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS2_DSPICS2 (0x300)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS3(x) (((x)&0x3)<<0xA)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS3_GPIO (0)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS3_TOUT3 (0x800)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS3_DSPICS3 (0xC00)
|
||||||
|
#define MCF_PAD_PAR_DSPI_PAR_CS5 (0x1000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PAD_PAR_TIMER */
|
||||||
|
#define MCF_PAD_PAR_TIMER_PAR_TOUT2 (0x1)
|
||||||
|
#define MCF_PAD_PAR_TIMER_PAR_TIN2(x) (((x)&0x3)<<0x1)
|
||||||
|
#define MCF_PAD_PAR_TIMER_PAR_TIN2_IRQ2 (0x4)
|
||||||
|
#define MCF_PAD_PAR_TIMER_PAR_TIN2_TIN2 (0x6)
|
||||||
|
#define MCF_PAD_PAR_TIMER_PAR_TOUT3 (0x8)
|
||||||
|
#define MCF_PAD_PAR_TIMER_PAR_TIN3(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_PAD_PAR_TIMER_PAR_TIN3_IRQ3 (0x20)
|
||||||
|
#define MCF_PAD_PAR_TIMER_PAR_TIN3_TIN3 (0x30)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_PAD_H__ */
|
||||||
376
i2cspi_BaS_gcc/include/MCF5475_PCI.h
Normal file
376
i2cspi_BaS_gcc/include/MCF5475_PCI.h
Normal file
@@ -0,0 +1,376 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_PCI_H__
|
||||||
|
#define __MCF5475_PCI_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* PCI Bus Controller (PCI)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_PCI_PCIIDR (*(volatile uint32_t*)(&_MBAR[0xB00]))
|
||||||
|
#define MCF_PCI_PCISCR (*(volatile uint32_t*)(&_MBAR[0xB04]))
|
||||||
|
#define MCF_PCI_PCICCRIR (*(volatile uint32_t*)(&_MBAR[0xB08]))
|
||||||
|
#define MCF_PCI_PCICR1 (*(volatile uint32_t*)(&_MBAR[0xB0C]))
|
||||||
|
#define MCF_PCI_PCIBAR0 (*(volatile uint32_t*)(&_MBAR[0xB10]))
|
||||||
|
#define MCF_PCI_PCIBAR1 (*(volatile uint32_t*)(&_MBAR[0xB14]))
|
||||||
|
#define MCF_PCI_PCICCPR (*(volatile uint32_t*)(&_MBAR[0xB28]))
|
||||||
|
#define MCF_PCI_PCISID (*(volatile uint32_t*)(&_MBAR[0xB2C]))
|
||||||
|
#define MCF_PCI_PCICR2 (*(volatile uint32_t*)(&_MBAR[0xB3C]))
|
||||||
|
#define MCF_PCI_PCIGSCR (*(volatile uint32_t*)(&_MBAR[0xB60]))
|
||||||
|
#define MCF_PCI_PCITBATR0 (*(volatile uint32_t*)(&_MBAR[0xB64]))
|
||||||
|
#define MCF_PCI_PCITBATR1 (*(volatile uint32_t*)(&_MBAR[0xB68]))
|
||||||
|
#define MCF_PCI_PCITCR (*(volatile uint32_t*)(&_MBAR[0xB6C]))
|
||||||
|
#define MCF_PCI_PCIIW0BTAR (*(volatile uint32_t*)(&_MBAR[0xB70]))
|
||||||
|
#define MCF_PCI_PCIIW1BTAR (*(volatile uint32_t*)(&_MBAR[0xB74]))
|
||||||
|
#define MCF_PCI_PCIIW2BTAR (*(volatile uint32_t*)(&_MBAR[0xB78]))
|
||||||
|
#define MCF_PCI_PCIIWCR (*(volatile uint32_t*)(&_MBAR[0xB80]))
|
||||||
|
#define MCF_PCI_PCIICR (*(volatile uint32_t*)(&_MBAR[0xB84]))
|
||||||
|
#define MCF_PCI_PCIISR (*(volatile uint32_t*)(&_MBAR[0xB88]))
|
||||||
|
#define MCF_PCI_PCICAR (*(volatile uint32_t*)(&_MBAR[0xBF8]))
|
||||||
|
#define MCF_PCI_PCITPSR (*(volatile uint32_t*)(&_MBAR[0x8400]))
|
||||||
|
#define MCF_PCI_PCITSAR (*(volatile uint32_t*)(&_MBAR[0x8404]))
|
||||||
|
#define MCF_PCI_PCITTCR (*(volatile uint32_t*)(&_MBAR[0x8408]))
|
||||||
|
#define MCF_PCI_PCITER (*(volatile uint32_t*)(&_MBAR[0x840C]))
|
||||||
|
#define MCF_PCI_PCITNAR (*(volatile uint32_t*)(&_MBAR[0x8410]))
|
||||||
|
#define MCF_PCI_PCITLWR (*(volatile uint32_t*)(&_MBAR[0x8414]))
|
||||||
|
#define MCF_PCI_PCITDCR (*(volatile uint32_t*)(&_MBAR[0x8418]))
|
||||||
|
#define MCF_PCI_PCITSR (*(volatile uint32_t*)(&_MBAR[0x841C]))
|
||||||
|
#define MCF_PCI_PCITFDR (*(volatile uint32_t*)(&_MBAR[0x8440]))
|
||||||
|
#define MCF_PCI_PCITFSR (*(volatile uint32_t*)(&_MBAR[0x8444]))
|
||||||
|
#define MCF_PCI_PCITFCR (*(volatile uint32_t*)(&_MBAR[0x8448]))
|
||||||
|
#define MCF_PCI_PCITFAR (*(volatile uint32_t*)(&_MBAR[0x844C]))
|
||||||
|
#define MCF_PCI_PCITFRPR (*(volatile uint32_t*)(&_MBAR[0x8450]))
|
||||||
|
#define MCF_PCI_PCITFWPR (*(volatile uint32_t*)(&_MBAR[0x8454]))
|
||||||
|
#define MCF_PCI_PCIRPSR (*(volatile uint32_t*)(&_MBAR[0x8480]))
|
||||||
|
#define MCF_PCI_PCIRSAR (*(volatile uint32_t*)(&_MBAR[0x8484]))
|
||||||
|
#define MCF_PCI_PCIRTCR (*(volatile uint32_t*)(&_MBAR[0x8488]))
|
||||||
|
#define MCF_PCI_PCIRER (*(volatile uint32_t*)(&_MBAR[0x848C]))
|
||||||
|
#define MCF_PCI_PCIRNAR (*(volatile uint32_t*)(&_MBAR[0x8490]))
|
||||||
|
#define MCF_PCI_PCIRDCR (*(volatile uint32_t*)(&_MBAR[0x8498]))
|
||||||
|
#define MCF_PCI_PCIRSR (*(volatile uint32_t*)(&_MBAR[0x849C]))
|
||||||
|
#define MCF_PCI_PCIRFDR (*(volatile uint32_t*)(&_MBAR[0x84C0]))
|
||||||
|
#define MCF_PCI_PCIRFSR (*(volatile uint32_t*)(&_MBAR[0x84C4]))
|
||||||
|
#define MCF_PCI_PCIRFCR (*(volatile uint32_t*)(&_MBAR[0x84C8]))
|
||||||
|
#define MCF_PCI_PCIRFAR (*(volatile uint32_t*)(&_MBAR[0x84CC]))
|
||||||
|
#define MCF_PCI_PCIRFRPR (*(volatile uint32_t*)(&_MBAR[0x84D0]))
|
||||||
|
#define MCF_PCI_PCIRFWPR (*(volatile uint32_t*)(&_MBAR[0x84D4]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIIDR */
|
||||||
|
#define MCF_PCI_PCIIDR_VENDORID(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_PCI_PCIIDR_DEVICEID(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCISCR */
|
||||||
|
#define MCF_PCI_PCISCR_IO (0x1)
|
||||||
|
#define MCF_PCI_PCISCR_M (0x2)
|
||||||
|
#define MCF_PCI_PCISCR_B (0x4)
|
||||||
|
#define MCF_PCI_PCISCR_SP (0x8)
|
||||||
|
#define MCF_PCI_PCISCR_MW (0x10)
|
||||||
|
#define MCF_PCI_PCISCR_V (0x20)
|
||||||
|
#define MCF_PCI_PCISCR_PER (0x40)
|
||||||
|
#define MCF_PCI_PCISCR_ST (0x80)
|
||||||
|
#define MCF_PCI_PCISCR_S (0x100)
|
||||||
|
#define MCF_PCI_PCISCR_F (0x200)
|
||||||
|
#define MCF_PCI_PCISCR_C (0x100000)
|
||||||
|
#define MCF_PCI_PCISCR_66M (0x200000)
|
||||||
|
#define MCF_PCI_PCISCR_R (0x400000)
|
||||||
|
#define MCF_PCI_PCISCR_FC (0x800000)
|
||||||
|
#define MCF_PCI_PCISCR_DP (0x1000000)
|
||||||
|
#define MCF_PCI_PCISCR_DT(x) (((x)&0x3)<<0x19)
|
||||||
|
#define MCF_PCI_PCISCR_TS (0x8000000)
|
||||||
|
#define MCF_PCI_PCISCR_TR (0x10000000)
|
||||||
|
#define MCF_PCI_PCISCR_MA (0x20000000)
|
||||||
|
#define MCF_PCI_PCISCR_SE (0x40000000)
|
||||||
|
#define MCF_PCI_PCISCR_PE (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCICCRIR */
|
||||||
|
#define MCF_PCI_PCICCRIR_REVISIONID(x) (((x)&0xFF)<<0)
|
||||||
|
#define MCF_PCI_PCICCRIR_CLASSCODE(x) (((x)&0xFFFFFF)<<0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCICR1 */
|
||||||
|
#define MCF_PCI_PCICR1_CACHELINESIZE(x) (((x)&0xFF)<<0)
|
||||||
|
#define MCF_PCI_PCICR1_LATTIMER(x) (((x)&0xFF)<<0x8)
|
||||||
|
#define MCF_PCI_PCICR1_HEADERTYPE(x) (((x)&0xFF)<<0x10)
|
||||||
|
#define MCF_PCI_PCICR1_BIST(x) (((x)&0xFF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIBAR0 */
|
||||||
|
#define MCF_PCI_PCIBAR0_IOM (0x1)
|
||||||
|
#define MCF_PCI_PCIBAR0_RANGE(x) (((x)&0x3)<<0x1)
|
||||||
|
#define MCF_PCI_PCIBAR0_PREF (0x8)
|
||||||
|
#define MCF_PCI_PCIBAR0_BAR0(x) (((x)&0x3FFF)<<0x12)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIBAR1 */
|
||||||
|
#define MCF_PCI_PCIBAR1_IOM (0x1)
|
||||||
|
#define MCF_PCI_PCIBAR1_RANGE(x) (((x)&0x3)<<0x1)
|
||||||
|
#define MCF_PCI_PCIBAR1_PREF (0x8)
|
||||||
|
#define MCF_PCI_PCIBAR1_BAR1(x) (((x)&0x3)<<0x1E)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCICCPR */
|
||||||
|
#define MCF_PCI_PCICCPR_PCICCP(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCISID */
|
||||||
|
#define MCF_PCI_PCISID_VENDORID(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCICR2 */
|
||||||
|
#define MCF_PCI_PCICR2_INTLINE(x) (((x)&0xFF)<<0)
|
||||||
|
#define MCF_PCI_PCICR2_INTPIN(x) (((x)&0xFF)<<0x8)
|
||||||
|
#define MCF_PCI_PCICR2_MINGNT(x) (((x)&0xFF)<<0x10)
|
||||||
|
#define MCF_PCI_PCICR2_MAXLAT(x) (((x)&0xFF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIGSCR */
|
||||||
|
#define MCF_PCI_PCIGSCR_PR (0x1)
|
||||||
|
#define MCF_PCI_PCIGSCR_SEE (0x1000)
|
||||||
|
#define MCF_PCI_PCIGSCR_PEE (0x2000)
|
||||||
|
#define MCF_PCI_PCIGSCR_CLKINRESERVED(x) (((x)&0x7)<<0x10)
|
||||||
|
#define MCF_PCI_PCIGSCR_XLB2CLKIN(x) (((x)&0x7)<<0x18)
|
||||||
|
#define MCF_PCI_PCIGSCR_SE (0x10000000)
|
||||||
|
#define MCF_PCI_PCIGSCR_PE (0x20000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITBATR0 */
|
||||||
|
#define MCF_PCI_PCITBATR0_EN (0x1)
|
||||||
|
#define MCF_PCI_PCITBATR0_BAT0(x) (((x)&0x3FFF)<<0x12)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITBATR1 */
|
||||||
|
#define MCF_PCI_PCITBATR1_EN (0x1)
|
||||||
|
#define MCF_PCI_PCITBATR1_BAT1(x) (((x)&0x3)<<0x1E)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITCR */
|
||||||
|
#define MCF_PCI_PCITCR_P (0x10000)
|
||||||
|
#define MCF_PCI_PCITCR_LD (0x1000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIIW0BTAR */
|
||||||
|
#define MCF_PCI_PCIIW0BTAR_WTA0(x) (((x)&0xFF)<<0x8)
|
||||||
|
#define MCF_PCI_PCIIW0BTAR_WAM0(x) (((x)&0xFF)<<0x10)
|
||||||
|
#define MCF_PCI_PCIIW0BTAR_WBA0(x) (((x)&0xFF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIIW1BTAR */
|
||||||
|
#define MCF_PCI_PCIIW1BTAR_WTA1(x) (((x)&0xFF)<<0x8)
|
||||||
|
#define MCF_PCI_PCIIW1BTAR_WAM1(x) (((x)&0xFF)<<0x10)
|
||||||
|
#define MCF_PCI_PCIIW1BTAR_WBA1(x) (((x)&0xFF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIIW2BTAR */
|
||||||
|
#define MCF_PCI_PCIIW2BTAR_WTA2(x) (((x)&0xFF)<<0x8)
|
||||||
|
#define MCF_PCI_PCIIW2BTAR_WAM2(x) (((x)&0xFF)<<0x10)
|
||||||
|
#define MCF_PCI_PCIIW2BTAR_WBA2(x) (((x)&0xFF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIIWCR */
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL2_E (0x100)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL2_PRC(x) (((x)&0x3)<<0x9)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL2_IOM (0x800)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL1_E (0x10000)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL1_PRC(x) (((x)&0x3)<<0x11)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL1_IOM (0x80000)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL0_E (0x1000000)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL0_PRC(x) (((x)&0x3)<<0x19)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL0_IOM (0x8000000)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL2_MEMREAD (0x100)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL2_MEMRDLINE (0x300)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL2_MEMRDMUL (0x500)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL2_IO (0x900)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL1_MEMREAD (0x10000)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL1_MEMRDLINE (0x30000)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL1_MEMRDMUL (0x50000)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL1_IO (0x90000)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL0_MEMREAD (0x1000000)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL0_MEMRDLINE (0x3000000)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL0_MEMRDMUL (0x5000000)
|
||||||
|
#define MCF_PCI_PCIIWCR_WINCTRL0_IO (0x9000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIICR */
|
||||||
|
#define MCF_PCI_PCIICR_MAXRETRY(x) (((x)&0xFF)<<0)
|
||||||
|
#define MCF_PCI_PCIICR_TAE (0x1000000)
|
||||||
|
#define MCF_PCI_PCIICR_IAE (0x2000000)
|
||||||
|
#define MCF_PCI_PCIICR_REE (0x4000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIISR */
|
||||||
|
#define MCF_PCI_PCIISR_TA (0x1000000)
|
||||||
|
#define MCF_PCI_PCIISR_IA (0x2000000)
|
||||||
|
#define MCF_PCI_PCIISR_RE (0x4000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCICAR */
|
||||||
|
#define MCF_PCI_PCICAR_DWORD(x) (((x)&0x3F)<<0x2)
|
||||||
|
#define MCF_PCI_PCICAR_FUNCNUM(x) (((x)&0x7)<<0x8)
|
||||||
|
#define MCF_PCI_PCICAR_DEVNUM(x) (((x)&0x1F)<<0xB)
|
||||||
|
#define MCF_PCI_PCICAR_BUSNUM(x) (((x)&0xFF)<<0x10)
|
||||||
|
#define MCF_PCI_PCICAR_E (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITPSR */
|
||||||
|
#define MCF_PCI_PCITPSR_PKTSIZE(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITSAR */
|
||||||
|
#define MCF_PCI_PCITSAR_STARTADD(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITTCR */
|
||||||
|
#define MCF_PCI_PCITTCR_DI (0x1)
|
||||||
|
#define MCF_PCI_PCITTCR_W (0x10)
|
||||||
|
#define MCF_PCI_PCITTCR_MAXBEATS(x) (((x)&0x7)<<0x8)
|
||||||
|
#define MCF_PCI_PCITTCR_MAXRETRY(x) (((x)&0xFF)<<0x10)
|
||||||
|
#define MCF_PCI_PCITTCR_PCICMD(x) (((x)&0xF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITER */
|
||||||
|
#define MCF_PCI_PCITER_NE (0x10000)
|
||||||
|
#define MCF_PCI_PCITER_IAE (0x20000)
|
||||||
|
#define MCF_PCI_PCITER_TAE (0x40000)
|
||||||
|
#define MCF_PCI_PCITER_RE (0x80000)
|
||||||
|
#define MCF_PCI_PCITER_SE (0x100000)
|
||||||
|
#define MCF_PCI_PCITER_FEE (0x200000)
|
||||||
|
#define MCF_PCI_PCITER_ME (0x1000000)
|
||||||
|
#define MCF_PCI_PCITER_BE (0x8000000)
|
||||||
|
#define MCF_PCI_PCITER_CM (0x10000000)
|
||||||
|
#define MCF_PCI_PCITER_RF (0x40000000)
|
||||||
|
#define MCF_PCI_PCITER_RC (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITNAR */
|
||||||
|
#define MCF_PCI_PCITNAR_NEXTADDRESS(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITLWR */
|
||||||
|
#define MCF_PCI_PCITLWR_LASTWORD(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITDCR */
|
||||||
|
#define MCF_PCI_PCITDCR_PKTSDONE(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_PCI_PCITDCR_BYTESDONE(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITSR */
|
||||||
|
#define MCF_PCI_PCITSR_IA (0x10000)
|
||||||
|
#define MCF_PCI_PCITSR_TA (0x20000)
|
||||||
|
#define MCF_PCI_PCITSR_RE (0x40000)
|
||||||
|
#define MCF_PCI_PCITSR_SE (0x80000)
|
||||||
|
#define MCF_PCI_PCITSR_FE (0x100000)
|
||||||
|
#define MCF_PCI_PCITSR_BE1 (0x200000)
|
||||||
|
#define MCF_PCI_PCITSR_BE2 (0x400000)
|
||||||
|
#define MCF_PCI_PCITSR_BE3 (0x800000)
|
||||||
|
#define MCF_PCI_PCITSR_NT (0x1000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITFDR */
|
||||||
|
#define MCF_PCI_PCITFDR_FIFODATAWORD(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITFSR */
|
||||||
|
#define MCF_PCI_PCITFSR_EMPTY (0x10000)
|
||||||
|
#define MCF_PCI_PCITFSR_ALARM (0x20000)
|
||||||
|
#define MCF_PCI_PCITFSR_FULL (0x40000)
|
||||||
|
#define MCF_PCI_PCITFSR_FR (0x80000)
|
||||||
|
#define MCF_PCI_PCITFSR_OF (0x100000)
|
||||||
|
#define MCF_PCI_PCITFSR_UF (0x200000)
|
||||||
|
#define MCF_PCI_PCITFSR_RXW (0x400000)
|
||||||
|
#define MCF_PCI_PCITFSR_FAE (0x800000)
|
||||||
|
#define MCF_PCI_PCITFSR_TXW (0x40000000)
|
||||||
|
#define MCF_PCI_PCITFSR_IP (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITFCR */
|
||||||
|
#define MCF_PCI_PCITFCR_TXW_MASK (0x40000)
|
||||||
|
#define MCF_PCI_PCITFCR_OF_MASK (0x80000)
|
||||||
|
#define MCF_PCI_PCITFCR_UF_MASK (0x100000)
|
||||||
|
#define MCF_PCI_PCITFCR_RXW_MASK (0x200000)
|
||||||
|
#define MCF_PCI_PCITFCR_FAE_MASK (0x400000)
|
||||||
|
#define MCF_PCI_PCITFCR_IP_MASK (0x800000)
|
||||||
|
#define MCF_PCI_PCITFCR_GR(x) (((x)&0x7)<<0x18)
|
||||||
|
#define MCF_PCI_PCITFCR_WFR (0x20000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITFAR */
|
||||||
|
#define MCF_PCI_PCITFAR_ALARM(x) (((x)&0xFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITFRPR */
|
||||||
|
#define MCF_PCI_PCITFRPR_READPTR(x) (((x)&0x7F)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCITFWPR */
|
||||||
|
#define MCF_PCI_PCITFWPR_WRITEPTR(x) (((x)&0x7F)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRPSR */
|
||||||
|
#define MCF_PCI_PCIRPSR_PKTSIZE(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRSAR */
|
||||||
|
#define MCF_PCI_PCIRSAR_STARTADD(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRTCR */
|
||||||
|
#define MCF_PCI_PCIRTCR_DI (0x1)
|
||||||
|
#define MCF_PCI_PCIRTCR_W (0x10)
|
||||||
|
#define MCF_PCI_PCIRTCR_MAXBEATS(x) (((x)&0x7)<<0x8)
|
||||||
|
#define MCF_PCI_PCIRTCR_FB (0x1000)
|
||||||
|
#define MCF_PCI_PCIRTCR_MAXRETRY(x) (((x)&0xFF)<<0x10)
|
||||||
|
#define MCF_PCI_PCIRTCR_PCICMD(x) (((x)&0xF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRER */
|
||||||
|
#define MCF_PCI_PCIRER_NE (0x10000)
|
||||||
|
#define MCF_PCI_PCIRER_IAE (0x20000)
|
||||||
|
#define MCF_PCI_PCIRER_TAE (0x40000)
|
||||||
|
#define MCF_PCI_PCIRER_RE (0x80000)
|
||||||
|
#define MCF_PCI_PCIRER_SE (0x100000)
|
||||||
|
#define MCF_PCI_PCIRER_FEE (0x200000)
|
||||||
|
#define MCF_PCI_PCIRER_ME (0x1000000)
|
||||||
|
#define MCF_PCI_PCIRER_BE (0x8000000)
|
||||||
|
#define MCF_PCI_PCIRER_CM (0x10000000)
|
||||||
|
#define MCF_PCI_PCIRER_FE (0x20000000)
|
||||||
|
#define MCF_PCI_PCIRER_RF (0x40000000)
|
||||||
|
#define MCF_PCI_PCIRER_RC (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRNAR */
|
||||||
|
#define MCF_PCI_PCIRNAR_NEXTADDRESS(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRDCR */
|
||||||
|
#define MCF_PCI_PCIRDCR_PKTSDONE(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_PCI_PCIRDCR_BYTESDONE(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRSR */
|
||||||
|
#define MCF_PCI_PCIRSR_IA (0x10000)
|
||||||
|
#define MCF_PCI_PCIRSR_TA (0x20000)
|
||||||
|
#define MCF_PCI_PCIRSR_RE (0x40000)
|
||||||
|
#define MCF_PCI_PCIRSR_SE (0x80000)
|
||||||
|
#define MCF_PCI_PCIRSR_FE (0x100000)
|
||||||
|
#define MCF_PCI_PCIRSR_BE1 (0x200000)
|
||||||
|
#define MCF_PCI_PCIRSR_BE2 (0x400000)
|
||||||
|
#define MCF_PCI_PCIRSR_BE3 (0x800000)
|
||||||
|
#define MCF_PCI_PCIRSR_NT (0x1000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRFDR */
|
||||||
|
#define MCF_PCI_PCIRFDR_FIFODATAWORD(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRFSR */
|
||||||
|
#define MCF_PCI_PCIRFSR_EMPTY (0x10000)
|
||||||
|
#define MCF_PCI_PCIRFSR_ALARM (0x20000)
|
||||||
|
#define MCF_PCI_PCIRFSR_FULL (0x40000)
|
||||||
|
#define MCF_PCI_PCIRFSR_FR (0x80000)
|
||||||
|
#define MCF_PCI_PCIRFSR_OF (0x100000)
|
||||||
|
#define MCF_PCI_PCIRFSR_UF (0x200000)
|
||||||
|
#define MCF_PCI_PCIRFSR_RXW (0x400000)
|
||||||
|
#define MCF_PCI_PCIRFSR_FAE (0x800000)
|
||||||
|
#define MCF_PCI_PCIRFSR_TXW (0x40000000)
|
||||||
|
#define MCF_PCI_PCIRFSR_IP (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRFCR */
|
||||||
|
#define MCF_PCI_PCIRFCR_TXW_MASK (0x40000)
|
||||||
|
#define MCF_PCI_PCIRFCR_OF_MASK (0x80000)
|
||||||
|
#define MCF_PCI_PCIRFCR_UF_MASK (0x100000)
|
||||||
|
#define MCF_PCI_PCIRFCR_RXW_MASK (0x200000)
|
||||||
|
#define MCF_PCI_PCIRFCR_FAE_MASK (0x400000)
|
||||||
|
#define MCF_PCI_PCIRFCR_IP_MASK (0x800000)
|
||||||
|
#define MCF_PCI_PCIRFCR_GR(x) (((x)&0x7)<<0x18)
|
||||||
|
#define MCF_PCI_PCIRFCR_WFR (0x20000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRFAR */
|
||||||
|
#define MCF_PCI_PCIRFAR_ALARM(x) (((x)&0x7F)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRFRPR */
|
||||||
|
#define MCF_PCI_PCIRFRPR_READPTR(x) (((x)&0x7F)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCI_PCIRFWPR */
|
||||||
|
#define MCF_PCI_PCIRFWPR_WRITEPTR(x) (((x)&0x7F)<<0)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_PCI_H__ */
|
||||||
43
i2cspi_BaS_gcc/include/MCF5475_PCIARB.h
Normal file
43
i2cspi_BaS_gcc/include/MCF5475_PCIARB.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_PCIARB_H__
|
||||||
|
#define __MCF5475_PCIARB_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* PCI Bus Arbiter Module (PCIARB)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_PCIARB_PACR (*(volatile uint32_t*)(&_MBAR[0xC00]))
|
||||||
|
#define MCF_PCIARB_PASR (*(volatile uint32_t*)(&_MBAR[0xC04]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCIARB_PACR */
|
||||||
|
#define MCF_PCIARB_PACR_INTMPRI (0x1)
|
||||||
|
#define MCF_PCIARB_PACR_EXTMPRI(x) (((x)&0x1F)<<0x1)
|
||||||
|
#define MCF_PCIARB_PACR_INTMINTEN (0x10000)
|
||||||
|
#define MCF_PCIARB_PACR_EXTMINTEN(x) (((x)&0x1F)<<0x11)
|
||||||
|
#define MCF_PCIARB_PACR_DS (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PCIARB_PASR */
|
||||||
|
#define MCF_PCIARB_PASR_ITLMBK (0x10000)
|
||||||
|
#define MCF_PCIARB_PASR_EXTMBK(x) (((x)&0x1F)<<0x11)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_PCIARB_H__ */
|
||||||
527
i2cspi_BaS_gcc/include/MCF5475_PSC.h
Normal file
527
i2cspi_BaS_gcc/include/MCF5475_PSC.h
Normal file
@@ -0,0 +1,527 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_PSC_H__
|
||||||
|
#define __MCF5475_PSC_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Programmable Serial Controller (PSC)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_PSC0_PSCMR2 (*(volatile uint8_t *)(&_MBAR[0x8600]))
|
||||||
|
#define MCF_PSC0_PSCMR1 (*(volatile uint8_t *)(&_MBAR[0x8600]))
|
||||||
|
#define MCF_PSC0_PSCCSR (*(volatile uint8_t *)(&_MBAR[0x8604]))
|
||||||
|
#define MCF_PSC0_PSCSR (*(volatile uint16_t*)(&_MBAR[0x8604]))
|
||||||
|
#define MCF_PSC0_PSCCR (*(volatile uint8_t *)(&_MBAR[0x8608]))
|
||||||
|
#define MCF_PSC0_PSCRB_8BIT (*(volatile uint32_t*)(&_MBAR[0x860C]))
|
||||||
|
#define MCF_PSC0_PSCTB_8BIT (*(volatile uint32_t*)(&_MBAR[0x860C]))
|
||||||
|
#define MCF_PSC0_PSCRB_16BIT (*(volatile uint32_t*)(&_MBAR[0x860C]))
|
||||||
|
#define MCF_PSC0_PSCTB_16BIT (*(volatile uint32_t*)(&_MBAR[0x860C]))
|
||||||
|
#define MCF_PSC0_PSCRB_AC97 (*(volatile uint32_t*)(&_MBAR[0x860C]))
|
||||||
|
#define MCF_PSC0_PSCTB_AC97 (*(volatile uint32_t*)(&_MBAR[0x860C]))
|
||||||
|
#define MCF_PSC0_PSCIPCR (*(volatile uint8_t *)(&_MBAR[0x8610]))
|
||||||
|
#define MCF_PSC0_PSCACR (*(volatile uint8_t *)(&_MBAR[0x8610]))
|
||||||
|
#define MCF_PSC0_PSCIMR (*(volatile uint16_t*)(&_MBAR[0x8614]))
|
||||||
|
#define MCF_PSC0_PSCISR (*(volatile uint16_t*)(&_MBAR[0x8614]))
|
||||||
|
#define MCF_PSC0_PSCCTUR (*(volatile uint8_t *)(&_MBAR[0x8618]))
|
||||||
|
#define MCF_PSC0_PSCCTLR (*(volatile uint8_t *)(&_MBAR[0x861C]))
|
||||||
|
#define MCF_PSC0_PSCIP (*(volatile uint8_t *)(&_MBAR[0x8634]))
|
||||||
|
#define MCF_PSC0_PSCOPSET (*(volatile uint8_t *)(&_MBAR[0x8638]))
|
||||||
|
#define MCF_PSC0_PSCOPRESET (*(volatile uint8_t *)(&_MBAR[0x863C]))
|
||||||
|
#define MCF_PSC0_PSCSICR (*(volatile uint8_t *)(&_MBAR[0x8640]))
|
||||||
|
#define MCF_PSC0_PSCIRCR1 (*(volatile uint8_t *)(&_MBAR[0x8644]))
|
||||||
|
#define MCF_PSC0_PSCIRCR2 (*(volatile uint8_t *)(&_MBAR[0x8648]))
|
||||||
|
#define MCF_PSC0_PSCIRSDR (*(volatile uint8_t *)(&_MBAR[0x864C]))
|
||||||
|
#define MCF_PSC0_PSCIRMDR (*(volatile uint8_t *)(&_MBAR[0x8650]))
|
||||||
|
#define MCF_PSC0_PSCIRFDR (*(volatile uint8_t *)(&_MBAR[0x8654]))
|
||||||
|
#define MCF_PSC0_PSCRFCNT (*(volatile uint16_t*)(&_MBAR[0x8658]))
|
||||||
|
#define MCF_PSC0_PSCTFCNT (*(volatile uint16_t*)(&_MBAR[0x865C]))
|
||||||
|
#define MCF_PSC0_PSCRFDR (*(volatile uint32_t*)(&_MBAR[0x8660]))
|
||||||
|
#define MCF_PSC0_PSCRFSR (*(volatile uint16_t*)(&_MBAR[0x8664]))
|
||||||
|
#define MCF_PSC0_PSCRFCR (*(volatile uint32_t*)(&_MBAR[0x8668]))
|
||||||
|
#define MCF_PSC0_PSCRFAR (*(volatile uint16_t*)(&_MBAR[0x866E]))
|
||||||
|
#define MCF_PSC0_PSCRFRP (*(volatile uint16_t*)(&_MBAR[0x8672]))
|
||||||
|
#define MCF_PSC0_PSCRFWP (*(volatile uint16_t*)(&_MBAR[0x8676]))
|
||||||
|
#define MCF_PSC0_PSCRLRFP (*(volatile uint16_t*)(&_MBAR[0x867A]))
|
||||||
|
#define MCF_PSC0_PSCRLWFP (*(volatile uint16_t*)(&_MBAR[0x867E]))
|
||||||
|
#define MCF_PSC0_PSCTFDR (*(volatile uint32_t*)(&_MBAR[0x8680]))
|
||||||
|
#define MCF_PSC0_PSCTFSR (*(volatile uint16_t*)(&_MBAR[0x8684]))
|
||||||
|
#define MCF_PSC0_PSCTFCR (*(volatile uint32_t*)(&_MBAR[0x8688]))
|
||||||
|
#define MCF_PSC0_PSCTFAR (*(volatile uint16_t*)(&_MBAR[0x868E]))
|
||||||
|
#define MCF_PSC0_PSCTFRP (*(volatile uint16_t*)(&_MBAR[0x8692]))
|
||||||
|
#define MCF_PSC0_PSCTFWP (*(volatile uint16_t*)(&_MBAR[0x8696]))
|
||||||
|
#define MCF_PSC0_PSCTLRFP (*(volatile uint16_t*)(&_MBAR[0x869A]))
|
||||||
|
#define MCF_PSC0_PSCTLWFP (*(volatile uint16_t*)(&_MBAR[0x869E]))
|
||||||
|
|
||||||
|
#define MCF_PSC1_PSCMR2 (*(volatile uint8_t *)(&_MBAR[0x8700]))
|
||||||
|
#define MCF_PSC1_PSCMR1 (*(volatile uint8_t *)(&_MBAR[0x8700]))
|
||||||
|
#define MCF_PSC1_PSCCSR (*(volatile uint8_t *)(&_MBAR[0x8704]))
|
||||||
|
#define MCF_PSC1_PSCSR (*(volatile uint16_t*)(&_MBAR[0x8704]))
|
||||||
|
#define MCF_PSC1_PSCCR (*(volatile uint8_t *)(&_MBAR[0x8708]))
|
||||||
|
#define MCF_PSC1_PSCRB_8BIT (*(volatile uint32_t*)(&_MBAR[0x870C]))
|
||||||
|
#define MCF_PSC1_PSCTB_8BIT (*(volatile uint32_t*)(&_MBAR[0x870C]))
|
||||||
|
#define MCF_PSC1_PSCRB_16BIT (*(volatile uint32_t*)(&_MBAR[0x870C]))
|
||||||
|
#define MCF_PSC1_PSCTB_16BIT (*(volatile uint32_t*)(&_MBAR[0x870C]))
|
||||||
|
#define MCF_PSC1_PSCRB_AC97 (*(volatile uint32_t*)(&_MBAR[0x870C]))
|
||||||
|
#define MCF_PSC1_PSCTB_AC97 (*(volatile uint32_t*)(&_MBAR[0x870C]))
|
||||||
|
#define MCF_PSC1_PSCIPCR (*(volatile uint8_t *)(&_MBAR[0x8710]))
|
||||||
|
#define MCF_PSC1_PSCACR (*(volatile uint8_t *)(&_MBAR[0x8710]))
|
||||||
|
#define MCF_PSC1_PSCIMR (*(volatile uint16_t*)(&_MBAR[0x8714]))
|
||||||
|
#define MCF_PSC1_PSCISR (*(volatile uint16_t*)(&_MBAR[0x8714]))
|
||||||
|
#define MCF_PSC1_PSCCTUR (*(volatile uint8_t *)(&_MBAR[0x8718]))
|
||||||
|
#define MCF_PSC1_PSCCTLR (*(volatile uint8_t *)(&_MBAR[0x871C]))
|
||||||
|
#define MCF_PSC1_PSCIP (*(volatile uint8_t *)(&_MBAR[0x8734]))
|
||||||
|
#define MCF_PSC1_PSCOPSET (*(volatile uint8_t *)(&_MBAR[0x8738]))
|
||||||
|
#define MCF_PSC1_PSCOPRESET (*(volatile uint8_t *)(&_MBAR[0x873C]))
|
||||||
|
#define MCF_PSC1_PSCSICR (*(volatile uint8_t *)(&_MBAR[0x8740]))
|
||||||
|
#define MCF_PSC1_PSCIRCR1 (*(volatile uint8_t *)(&_MBAR[0x8744]))
|
||||||
|
#define MCF_PSC1_PSCIRCR2 (*(volatile uint8_t *)(&_MBAR[0x8748]))
|
||||||
|
#define MCF_PSC1_PSCIRSDR (*(volatile uint8_t *)(&_MBAR[0x874C]))
|
||||||
|
#define MCF_PSC1_PSCIRMDR (*(volatile uint8_t *)(&_MBAR[0x8750]))
|
||||||
|
#define MCF_PSC1_PSCIRFDR (*(volatile uint8_t *)(&_MBAR[0x8754]))
|
||||||
|
#define MCF_PSC1_PSCRFCNT (*(volatile uint16_t*)(&_MBAR[0x8758]))
|
||||||
|
#define MCF_PSC1_PSCTFCNT (*(volatile uint16_t*)(&_MBAR[0x875C]))
|
||||||
|
#define MCF_PSC1_PSCRFDR (*(volatile uint32_t*)(&_MBAR[0x8760]))
|
||||||
|
#define MCF_PSC1_PSCRFSR (*(volatile uint16_t*)(&_MBAR[0x8764]))
|
||||||
|
#define MCF_PSC1_PSCRFCR (*(volatile uint32_t*)(&_MBAR[0x8768]))
|
||||||
|
#define MCF_PSC1_PSCRFAR (*(volatile uint16_t*)(&_MBAR[0x876E]))
|
||||||
|
#define MCF_PSC1_PSCRFRP (*(volatile uint16_t*)(&_MBAR[0x8772]))
|
||||||
|
#define MCF_PSC1_PSCRFWP (*(volatile uint16_t*)(&_MBAR[0x8776]))
|
||||||
|
#define MCF_PSC1_PSCRLRFP (*(volatile uint16_t*)(&_MBAR[0x877A]))
|
||||||
|
#define MCF_PSC1_PSCRLWFP (*(volatile uint16_t*)(&_MBAR[0x877E]))
|
||||||
|
#define MCF_PSC1_PSCTFDR (*(volatile uint32_t*)(&_MBAR[0x8780]))
|
||||||
|
#define MCF_PSC1_PSCTFSR (*(volatile uint16_t*)(&_MBAR[0x8784]))
|
||||||
|
#define MCF_PSC1_PSCTFCR (*(volatile uint32_t*)(&_MBAR[0x8788]))
|
||||||
|
#define MCF_PSC1_PSCTFAR (*(volatile uint16_t*)(&_MBAR[0x878E]))
|
||||||
|
#define MCF_PSC1_PSCTFRP (*(volatile uint16_t*)(&_MBAR[0x8792]))
|
||||||
|
#define MCF_PSC1_PSCTFWP (*(volatile uint16_t*)(&_MBAR[0x8796]))
|
||||||
|
#define MCF_PSC1_PSCTLRFP (*(volatile uint16_t*)(&_MBAR[0x879A]))
|
||||||
|
#define MCF_PSC1_PSCTLWFP (*(volatile uint16_t*)(&_MBAR[0x879E]))
|
||||||
|
|
||||||
|
#define MCF_PSC2_PSCMR2 (*(volatile uint8_t *)(&_MBAR[0x8800]))
|
||||||
|
#define MCF_PSC2_PSCMR1 (*(volatile uint8_t *)(&_MBAR[0x8800]))
|
||||||
|
#define MCF_PSC2_PSCCSR (*(volatile uint8_t *)(&_MBAR[0x8804]))
|
||||||
|
#define MCF_PSC2_PSCSR (*(volatile uint16_t*)(&_MBAR[0x8804]))
|
||||||
|
#define MCF_PSC2_PSCCR (*(volatile uint8_t *)(&_MBAR[0x8808]))
|
||||||
|
#define MCF_PSC2_PSCRB_8BIT (*(volatile uint32_t*)(&_MBAR[0x880C]))
|
||||||
|
#define MCF_PSC2_PSCTB_8BIT (*(volatile uint32_t*)(&_MBAR[0x880C]))
|
||||||
|
#define MCF_PSC2_PSCRB_16BIT (*(volatile uint32_t*)(&_MBAR[0x880C]))
|
||||||
|
#define MCF_PSC2_PSCTB_16BIT (*(volatile uint32_t*)(&_MBAR[0x880C]))
|
||||||
|
#define MCF_PSC2_PSCRB_AC97 (*(volatile uint32_t*)(&_MBAR[0x880C]))
|
||||||
|
#define MCF_PSC2_PSCTB_AC97 (*(volatile uint32_t*)(&_MBAR[0x880C]))
|
||||||
|
#define MCF_PSC2_PSCIPCR (*(volatile uint8_t *)(&_MBAR[0x8810]))
|
||||||
|
#define MCF_PSC2_PSCACR (*(volatile uint8_t *)(&_MBAR[0x8810]))
|
||||||
|
#define MCF_PSC2_PSCIMR (*(volatile uint16_t*)(&_MBAR[0x8814]))
|
||||||
|
#define MCF_PSC2_PSCISR (*(volatile uint16_t*)(&_MBAR[0x8814]))
|
||||||
|
#define MCF_PSC2_PSCCTUR (*(volatile uint8_t *)(&_MBAR[0x8818]))
|
||||||
|
#define MCF_PSC2_PSCCTLR (*(volatile uint8_t *)(&_MBAR[0x881C]))
|
||||||
|
#define MCF_PSC2_PSCIP (*(volatile uint8_t *)(&_MBAR[0x8834]))
|
||||||
|
#define MCF_PSC2_PSCOPSET (*(volatile uint8_t *)(&_MBAR[0x8838]))
|
||||||
|
#define MCF_PSC2_PSCOPRESET (*(volatile uint8_t *)(&_MBAR[0x883C]))
|
||||||
|
#define MCF_PSC2_PSCSICR (*(volatile uint8_t *)(&_MBAR[0x8840]))
|
||||||
|
#define MCF_PSC2_PSCIRCR1 (*(volatile uint8_t *)(&_MBAR[0x8844]))
|
||||||
|
#define MCF_PSC2_PSCIRCR2 (*(volatile uint8_t *)(&_MBAR[0x8848]))
|
||||||
|
#define MCF_PSC2_PSCIRSDR (*(volatile uint8_t *)(&_MBAR[0x884C]))
|
||||||
|
#define MCF_PSC2_PSCIRMDR (*(volatile uint8_t *)(&_MBAR[0x8850]))
|
||||||
|
#define MCF_PSC2_PSCIRFDR (*(volatile uint8_t *)(&_MBAR[0x8854]))
|
||||||
|
#define MCF_PSC2_PSCRFCNT (*(volatile uint16_t*)(&_MBAR[0x8858]))
|
||||||
|
#define MCF_PSC2_PSCTFCNT (*(volatile uint16_t*)(&_MBAR[0x885C]))
|
||||||
|
#define MCF_PSC2_PSCRFDR (*(volatile uint32_t*)(&_MBAR[0x8860]))
|
||||||
|
#define MCF_PSC2_PSCRFSR (*(volatile uint16_t*)(&_MBAR[0x8864]))
|
||||||
|
#define MCF_PSC2_PSCRFCR (*(volatile uint32_t*)(&_MBAR[0x8868]))
|
||||||
|
#define MCF_PSC2_PSCRFAR (*(volatile uint16_t*)(&_MBAR[0x886E]))
|
||||||
|
#define MCF_PSC2_PSCRFRP (*(volatile uint16_t*)(&_MBAR[0x8872]))
|
||||||
|
#define MCF_PSC2_PSCRFWP (*(volatile uint16_t*)(&_MBAR[0x8876]))
|
||||||
|
#define MCF_PSC2_PSCRLRFP (*(volatile uint16_t*)(&_MBAR[0x887A]))
|
||||||
|
#define MCF_PSC2_PSCRLWFP (*(volatile uint16_t*)(&_MBAR[0x887E]))
|
||||||
|
#define MCF_PSC2_PSCTFDR (*(volatile uint32_t*)(&_MBAR[0x8880]))
|
||||||
|
#define MCF_PSC2_PSCTFSR (*(volatile uint16_t*)(&_MBAR[0x8884]))
|
||||||
|
#define MCF_PSC2_PSCTFCR (*(volatile uint32_t*)(&_MBAR[0x8888]))
|
||||||
|
#define MCF_PSC2_PSCTFAR (*(volatile uint16_t*)(&_MBAR[0x888E]))
|
||||||
|
#define MCF_PSC2_PSCTFRP (*(volatile uint16_t*)(&_MBAR[0x8892]))
|
||||||
|
#define MCF_PSC2_PSCTFWP (*(volatile uint16_t*)(&_MBAR[0x8896]))
|
||||||
|
#define MCF_PSC2_PSCTLRFP (*(volatile uint16_t*)(&_MBAR[0x889A]))
|
||||||
|
#define MCF_PSC2_PSCTLWFP (*(volatile uint16_t*)(&_MBAR[0x889E]))
|
||||||
|
|
||||||
|
#define MCF_PSC3_PSCMR2 (*(volatile uint8_t *)(&_MBAR[0x8900]))
|
||||||
|
#define MCF_PSC3_PSCMR1 (*(volatile uint8_t *)(&_MBAR[0x8900]))
|
||||||
|
#define MCF_PSC3_PSCCSR (*(volatile uint8_t *)(&_MBAR[0x8904]))
|
||||||
|
#define MCF_PSC3_PSCSR (*(volatile uint16_t*)(&_MBAR[0x8904]))
|
||||||
|
#define MCF_PSC3_PSCCR (*(volatile uint8_t *)(&_MBAR[0x8908]))
|
||||||
|
#define MCF_PSC3_PSCRB_8BIT (*(volatile uint32_t*)(&_MBAR[0x890C]))
|
||||||
|
#define MCF_PSC3_PSCTB_8BIT (*(volatile uint32_t*)(&_MBAR[0x890C]))
|
||||||
|
#define MCF_PSC3_PSCRB_16BIT (*(volatile uint32_t*)(&_MBAR[0x890C]))
|
||||||
|
#define MCF_PSC3_PSCTB_16BIT (*(volatile uint32_t*)(&_MBAR[0x890C]))
|
||||||
|
#define MCF_PSC3_PSCRB_AC97 (*(volatile uint32_t*)(&_MBAR[0x890C]))
|
||||||
|
#define MCF_PSC3_PSCTB_AC97 (*(volatile uint32_t*)(&_MBAR[0x890C]))
|
||||||
|
#define MCF_PSC3_PSCIPCR (*(volatile uint8_t *)(&_MBAR[0x8910]))
|
||||||
|
#define MCF_PSC3_PSCACR (*(volatile uint8_t *)(&_MBAR[0x8910]))
|
||||||
|
#define MCF_PSC3_PSCIMR (*(volatile uint16_t*)(&_MBAR[0x8914]))
|
||||||
|
#define MCF_PSC3_PSCISR (*(volatile uint16_t*)(&_MBAR[0x8914]))
|
||||||
|
#define MCF_PSC3_PSCCTUR (*(volatile uint8_t *)(&_MBAR[0x8918]))
|
||||||
|
#define MCF_PSC3_PSCCTLR (*(volatile uint8_t *)(&_MBAR[0x891C]))
|
||||||
|
#define MCF_PSC3_PSCIP (*(volatile uint8_t *)(&_MBAR[0x8934]))
|
||||||
|
#define MCF_PSC3_PSCOPSET (*(volatile uint8_t *)(&_MBAR[0x8938]))
|
||||||
|
#define MCF_PSC3_PSCOPRESET (*(volatile uint8_t *)(&_MBAR[0x893C]))
|
||||||
|
#define MCF_PSC3_PSCSICR (*(volatile uint8_t *)(&_MBAR[0x8940]))
|
||||||
|
#define MCF_PSC3_PSCIRCR1 (*(volatile uint8_t *)(&_MBAR[0x8944]))
|
||||||
|
#define MCF_PSC3_PSCIRCR2 (*(volatile uint8_t *)(&_MBAR[0x8948]))
|
||||||
|
#define MCF_PSC3_PSCIRSDR (*(volatile uint8_t *)(&_MBAR[0x894C]))
|
||||||
|
#define MCF_PSC3_PSCIRMDR (*(volatile uint8_t *)(&_MBAR[0x8950]))
|
||||||
|
#define MCF_PSC3_PSCIRFDR (*(volatile uint8_t *)(&_MBAR[0x8954]))
|
||||||
|
#define MCF_PSC3_PSCRFCNT (*(volatile uint16_t*)(&_MBAR[0x8958]))
|
||||||
|
#define MCF_PSC3_PSCTFCNT (*(volatile uint16_t*)(&_MBAR[0x895C]))
|
||||||
|
#define MCF_PSC3_PSCRFDR (*(volatile uint32_t*)(&_MBAR[0x8960]))
|
||||||
|
#define MCF_PSC3_PSCRFSR (*(volatile uint16_t*)(&_MBAR[0x8964]))
|
||||||
|
#define MCF_PSC3_PSCRFCR (*(volatile uint32_t*)(&_MBAR[0x8968]))
|
||||||
|
#define MCF_PSC3_PSCRFAR (*(volatile uint16_t*)(&_MBAR[0x896E]))
|
||||||
|
#define MCF_PSC3_PSCRFRP (*(volatile uint16_t*)(&_MBAR[0x8972]))
|
||||||
|
#define MCF_PSC3_PSCRFWP (*(volatile uint16_t*)(&_MBAR[0x8976]))
|
||||||
|
#define MCF_PSC3_PSCRLRFP (*(volatile uint16_t*)(&_MBAR[0x897A]))
|
||||||
|
#define MCF_PSC3_PSCRLWFP (*(volatile uint16_t*)(&_MBAR[0x897E]))
|
||||||
|
#define MCF_PSC3_PSCTFDR (*(volatile uint32_t*)(&_MBAR[0x8980]))
|
||||||
|
#define MCF_PSC3_PSCTFSR (*(volatile uint16_t*)(&_MBAR[0x8984]))
|
||||||
|
#define MCF_PSC3_PSCTFCR (*(volatile uint32_t*)(&_MBAR[0x8988]))
|
||||||
|
#define MCF_PSC3_PSCTFAR (*(volatile uint16_t*)(&_MBAR[0x898E]))
|
||||||
|
#define MCF_PSC3_PSCTFRP (*(volatile uint16_t*)(&_MBAR[0x8992]))
|
||||||
|
#define MCF_PSC3_PSCTFWP (*(volatile uint16_t*)(&_MBAR[0x8996]))
|
||||||
|
#define MCF_PSC3_PSCTLRFP (*(volatile uint16_t*)(&_MBAR[0x899A]))
|
||||||
|
#define MCF_PSC3_PSCTLWFP (*(volatile uint16_t*)(&_MBAR[0x899E]))
|
||||||
|
|
||||||
|
#define MCF_PSC_PSCMR(x) (*(volatile uint8_t *)(&_MBAR[0x8600 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCCSR(x) (*(volatile uint8_t *)(&_MBAR[0x8604 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCSR(x) (*(volatile uint16_t*)(&_MBAR[0x8604 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCCR(x) (*(volatile uint8_t *)(&_MBAR[0x8608 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCRB_8BIT(x) (*(volatile uint32_t*)(&_MBAR[0x860C + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCTB_8BIT(x) (*(volatile uint32_t*)(&_MBAR[0x860C + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCRB_16BIT(x) (*(volatile uint32_t*)(&_MBAR[0x860C + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCTB_16BIT(x) (*(volatile uint32_t*)(&_MBAR[0x860C + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCRB_AC97(x) (*(volatile uint32_t*)(&_MBAR[0x860C + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCTB_AC97(x) (*(volatile uint32_t*)(&_MBAR[0x860C + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCIPCR(x) (*(volatile uint8_t *)(&_MBAR[0x8610 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCACR(x) (*(volatile uint8_t *)(&_MBAR[0x8610 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCIMR(x) (*(volatile uint16_t*)(&_MBAR[0x8614 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCISR(x) (*(volatile uint16_t*)(&_MBAR[0x8614 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCCTUR(x) (*(volatile uint8_t *)(&_MBAR[0x8618 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCCTLR(x) (*(volatile uint8_t *)(&_MBAR[0x861C + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCIP(x) (*(volatile uint8_t *)(&_MBAR[0x8634 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCOPSET(x) (*(volatile uint8_t *)(&_MBAR[0x8638 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCOPRESET(x) (*(volatile uint8_t *)(&_MBAR[0x863C + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCSICR(x) (*(volatile uint8_t *)(&_MBAR[0x8640 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCIRCR1(x) (*(volatile uint8_t *)(&_MBAR[0x8644 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCIRCR2(x) (*(volatile uint8_t *)(&_MBAR[0x8648 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCIRSDR(x) (*(volatile uint8_t *)(&_MBAR[0x864C + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCIRMDR(x) (*(volatile uint8_t *)(&_MBAR[0x8650 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCIRFDR(x) (*(volatile uint8_t *)(&_MBAR[0x8654 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCRFCNT(x) (*(volatile uint16_t*)(&_MBAR[0x8658 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCTFCNT(x) (*(volatile uint16_t*)(&_MBAR[0x865C + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCRFDR(x) (*(volatile uint32_t*)(&_MBAR[0x8660 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCRFSR(x) (*(volatile uint16_t*)(&_MBAR[0x8664 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCRFCR(x) (*(volatile uint32_t*)(&_MBAR[0x8668 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCRFAR(x) (*(volatile uint16_t*)(&_MBAR[0x866E + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCRFRP(x) (*(volatile uint16_t*)(&_MBAR[0x8672 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCRFWP(x) (*(volatile uint16_t*)(&_MBAR[0x8676 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCRLRFP(x) (*(volatile uint16_t*)(&_MBAR[0x867A + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCRLWFP(x) (*(volatile uint16_t*)(&_MBAR[0x867E + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCTFDR(x) (*(volatile uint32_t*)(&_MBAR[0x8680 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCTFSR(x) (*(volatile uint16_t*)(&_MBAR[0x8684 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCTFCR(x) (*(volatile uint32_t*)(&_MBAR[0x8688 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCTFAR(x) (*(volatile uint16_t*)(&_MBAR[0x868E + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCTFRP(x) (*(volatile uint16_t*)(&_MBAR[0x8692 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCTFWP(x) (*(volatile uint16_t*)(&_MBAR[0x8696 + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCTLRFP(x) (*(volatile uint16_t*)(&_MBAR[0x869A + ((x)*0x100)]))
|
||||||
|
#define MCF_PSC_PSCTLWFP(x) (*(volatile uint16_t*)(&_MBAR[0x869E + ((x)*0x100)]))
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCMR */
|
||||||
|
#define MCF_PSC_PSCMR_SB(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_PSC_PSCMR_TXCTS (0x10)
|
||||||
|
#define MCF_PSC_PSCMR_TXRTS (0x20)
|
||||||
|
#define MCF_PSC_PSCMR_CM(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_PSC_PSCMR_CM_NORMAL (0)
|
||||||
|
#define MCF_PSC_PSCMR_CM_ECHO (0x40)
|
||||||
|
#define MCF_PSC_PSCMR_CM_LOCAL_LOOP (0x80)
|
||||||
|
#define MCF_PSC_PSCMR_CM_REMOTE_LOOP (0xC0)
|
||||||
|
#define MCF_PSC_PSCMR_SB_STOP_BITS_1 (0x7)
|
||||||
|
#define MCF_PSC_PSCMR_SB_STOP_BITS_15 (0x8)
|
||||||
|
#define MCF_PSC_PSCMR_SB_STOP_BITS_2 (0xF)
|
||||||
|
#define MCF_PSC_PSCMR_PM_MULTI_ADDR (0x1C)
|
||||||
|
#define MCF_PSC_PSCMR_PM_MULTI_DATA (0x18)
|
||||||
|
#define MCF_PSC_PSCMR_PM_NONE (0x10)
|
||||||
|
#define MCF_PSC_PSCMR_PM_FORCE_HI (0xC)
|
||||||
|
#define MCF_PSC_PSCMR_PM_FORCE_LO (0x8)
|
||||||
|
#define MCF_PSC_PSCMR_PM_ODD (0x4)
|
||||||
|
#define MCF_PSC_PSCMR_PM_EVEN (0)
|
||||||
|
#define MCF_PSC_PSCMR_BC(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_PSC_PSCMR_BC_5 (0)
|
||||||
|
#define MCF_PSC_PSCMR_BC_6 (0x1)
|
||||||
|
#define MCF_PSC_PSCMR_BC_7 (0x2)
|
||||||
|
#define MCF_PSC_PSCMR_BC_8 (0x3)
|
||||||
|
#define MCF_PSC_PSCMR_PT (0x4)
|
||||||
|
#define MCF_PSC_PSCMR_PM(x) (((x)&0x3)<<0x3)
|
||||||
|
#define MCF_PSC_PSCMR_ERR (0x20)
|
||||||
|
#define MCF_PSC_PSCMR_RXIRQ_FU (0x40)
|
||||||
|
#define MCF_PSC_PSCMR_RXRTS (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCCSR */
|
||||||
|
#define MCF_PSC_PSCCSR_TCSEL(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_PSC_PSCCSR_RCSEL(x) (((x)&0xF)<<0x4)
|
||||||
|
#define MCF_PSC_PSCCSR_TCSEL_SYS_CLK (0x0D)
|
||||||
|
#define MCF_PSC_PSCCSR_TCSEL_CTM16 (0x0E)
|
||||||
|
#define MCF_PSC_PSCCSR_TCSEL_CTM (0x0F)
|
||||||
|
#define MCF_PSC_PSCCSR_RCSEL_SYS_CLK (0xD0)
|
||||||
|
#define MCF_PSC_PSCCSR_RCSEL_CTM16 (0xE0)
|
||||||
|
#define MCF_PSC_PSCCSR_RCSEL_CTM (0xF0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCSR */
|
||||||
|
#define MCF_PSC_PSCSR_ERR (0x40)
|
||||||
|
#define MCF_PSC_PSCSR_CDE_DEOF (0x80)
|
||||||
|
#define MCF_PSC_PSCSR_RXRDY (0x100)
|
||||||
|
#define MCF_PSC_PSCSR_FU (0x200)
|
||||||
|
#define MCF_PSC_PSCSR_TXRDY (0x400)
|
||||||
|
#define MCF_PSC_PSCSR_TXEMP_URERR (0x800)
|
||||||
|
#define MCF_PSC_PSCSR_OE (0x1000)
|
||||||
|
#define MCF_PSC_PSCSR_PE_CRCERR (0x2000)
|
||||||
|
#define MCF_PSC_PSCSR_FE_PHYERR (0x4000)
|
||||||
|
#define MCF_PSC_PSCSR_RB_NEOF (0x8000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCCR */
|
||||||
|
#define MCF_PSC_PSCCR_RXC(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_PSC_PSCCR_RX_ENABLED (0x1)
|
||||||
|
#define MCF_PSC_PSCCR_RX_DISABLED (0x2)
|
||||||
|
#define MCF_PSC_PSCCR_TXC(x) (((x)&0x3)<<0x2)
|
||||||
|
#define MCF_PSC_PSCCR_TX_ENABLED (0x4)
|
||||||
|
#define MCF_PSC_PSCCR_TX_DISABLED (0x8)
|
||||||
|
#define MCF_PSC_PSCCR_MISC(x) (((x)&0x7)<<0x4)
|
||||||
|
#define MCF_PSC_PSCCR_NONE (0)
|
||||||
|
#define MCF_PSC_PSCCR_RESET_MR (0x10)
|
||||||
|
#define MCF_PSC_PSCCR_RESET_RX (0x20)
|
||||||
|
#define MCF_PSC_PSCCR_RESET_TX (0x30)
|
||||||
|
#define MCF_PSC_PSCCR_RESET_ERROR (0x40)
|
||||||
|
#define MCF_PSC_PSCCR_RESET_BKCHGINT (0x50)
|
||||||
|
#define MCF_PSC_PSCCR_START_BREAK (0x60)
|
||||||
|
#define MCF_PSC_PSCCR_STOP_BREAK (0x70)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCRB_8BIT */
|
||||||
|
#define MCF_PSC_PSCRB_8BIT_RB3(x) (((x)&0xFF)<<0)
|
||||||
|
#define MCF_PSC_PSCRB_8BIT_RB2(x) (((x)&0xFF)<<0x8)
|
||||||
|
#define MCF_PSC_PSCRB_8BIT_RB1(x) (((x)&0xFF)<<0x10)
|
||||||
|
#define MCF_PSC_PSCRB_8BIT_RB0(x) (((x)&0xFF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCTB_8BIT */
|
||||||
|
#define MCF_PSC_PSCTB_8BIT_TB3(x) (((x)&0xFF)<<0)
|
||||||
|
#define MCF_PSC_PSCTB_8BIT_TB2(x) (((x)&0xFF)<<0x8)
|
||||||
|
#define MCF_PSC_PSCTB_8BIT_TB1(x) (((x)&0xFF)<<0x10)
|
||||||
|
#define MCF_PSC_PSCTB_8BIT_TB0(x) (((x)&0xFF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCRB_16BIT */
|
||||||
|
#define MCF_PSC_PSCRB_16BIT_RB1(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_PSC_PSCRB_16BIT_RB0(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCTB_16BIT */
|
||||||
|
#define MCF_PSC_PSCTB_16BIT_TB1(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_PSC_PSCTB_16BIT_TB0(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCRB_AC97 */
|
||||||
|
#define MCF_PSC_PSCRB_AC97_SOF (0x800)
|
||||||
|
#define MCF_PSC_PSCRB_AC97_RB(x) (((x)&0xFFFFF)<<0xC)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCTB_AC97 */
|
||||||
|
#define MCF_PSC_PSCTB_AC97_TB(x) (((x)&0xFFFFF)<<0xC)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCIPCR */
|
||||||
|
#define MCF_PSC_PSCIPCR_RESERVED (0xC)
|
||||||
|
#define MCF_PSC_PSCIPCR_CTS (0xD)
|
||||||
|
#define MCF_PSC_PSCIPCR_D_CTS (0x1C)
|
||||||
|
#define MCF_PSC_PSCIPCR_SYNC (0x8C)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCACR */
|
||||||
|
#define MCF_PSC_PSCACR_IEC0 (0x1)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCIMR */
|
||||||
|
#define MCF_PSC_PSCIMR_ERR (0x40)
|
||||||
|
#define MCF_PSC_PSCIMR_DEOF (0x80)
|
||||||
|
#define MCF_PSC_PSCIMR_TXRDY (0x100)
|
||||||
|
#define MCF_PSC_PSCIMR_RXRDY_FU (0x200)
|
||||||
|
#define MCF_PSC_PSCIMR_DB (0x400)
|
||||||
|
#define MCF_PSC_PSCIMR_IPC (0x8000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCISR */
|
||||||
|
#define MCF_PSC_PSCISR_ERR (0x40)
|
||||||
|
#define MCF_PSC_PSCISR_DEOF (0x80)
|
||||||
|
#define MCF_PSC_PSCISR_TXRDY (0x100)
|
||||||
|
#define MCF_PSC_PSCISR_RXRDY_FU (0x200)
|
||||||
|
#define MCF_PSC_PSCISR_DB (0x400)
|
||||||
|
#define MCF_PSC_PSCISR_IPC (0x8000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCCTUR */
|
||||||
|
#define MCF_PSC_PSCCTUR_CT(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCCTLR */
|
||||||
|
#define MCF_PSC_PSCCTLR_CT(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCIP */
|
||||||
|
#define MCF_PSC_PSCIP_CTS (0x1)
|
||||||
|
#define MCF_PSC_PSCIP_TGL (0x40)
|
||||||
|
#define MCF_PSC_PSCIP_LPWR_B (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCOPSET */
|
||||||
|
#define MCF_PSC_PSCOPSET_RTS (0x1)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCOPRESET */
|
||||||
|
#define MCF_PSC_PSCOPRESET_RTS (0x1)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCSICR */
|
||||||
|
#define MCF_PSC_PSCSICR_SIM(x) (((x)&0x7)<<0)
|
||||||
|
#define MCF_PSC_PSCSICR_SIM_UART (0)
|
||||||
|
#define MCF_PSC_PSCSICR_SIM_MODEM8 (0x1)
|
||||||
|
#define MCF_PSC_PSCSICR_SIM_MODEM16 (0x2)
|
||||||
|
#define MCF_PSC_PSCSICR_SIM_AC97 (0x3)
|
||||||
|
#define MCF_PSC_PSCSICR_SIM_SIR (0x4)
|
||||||
|
#define MCF_PSC_PSCSICR_SIM_MIR (0x5)
|
||||||
|
#define MCF_PSC_PSCSICR_SIM_FIR (0x6)
|
||||||
|
#define MCF_PSC_PSCSICR_SHDIR (0x10)
|
||||||
|
#define MCF_PSC_PSCSICR_DTS1 (0x20)
|
||||||
|
#define MCF_PSC_PSCSICR_AWR (0x40)
|
||||||
|
#define MCF_PSC_PSCSICR_ACRB (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCIRCR1 */
|
||||||
|
#define MCF_PSC_PSCIRCR1_SPUL (0x1)
|
||||||
|
#define MCF_PSC_PSCIRCR1_SIPEN (0x2)
|
||||||
|
#define MCF_PSC_PSCIRCR1_FD (0x4)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCIRCR2 */
|
||||||
|
#define MCF_PSC_PSCIRCR2_NXTEOF (0x1)
|
||||||
|
#define MCF_PSC_PSCIRCR2_ABORT (0x2)
|
||||||
|
#define MCF_PSC_PSCIRCR2_SIPREQ (0x4)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCIRSDR */
|
||||||
|
#define MCF_PSC_PSCIRSDR_IRSTIM(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCIRMDR */
|
||||||
|
#define MCF_PSC_PSCIRMDR_M_FDIV(x) (((x)&0x7F)<<0)
|
||||||
|
#define MCF_PSC_PSCIRMDR_FREQ (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCIRFDR */
|
||||||
|
#define MCF_PSC_PSCIRFDR_F_FDIV(x) (((x)&0xF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCRFCNT */
|
||||||
|
#define MCF_PSC_PSCRFCNT_CNT(x) (((x)&0x1FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCTFCNT */
|
||||||
|
#define MCF_PSC_PSCTFCNT_CNT(x) (((x)&0x1FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCRFDR */
|
||||||
|
#define MCF_PSC_PSCRFDR_DATA(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCRFSR */
|
||||||
|
#define MCF_PSC_PSCRFSR_EMT (0x1)
|
||||||
|
#define MCF_PSC_PSCRFSR_ALARM (0x2)
|
||||||
|
#define MCF_PSC_PSCRFSR_FU (0x4)
|
||||||
|
#define MCF_PSC_PSCRFSR_FRMRDY (0x8)
|
||||||
|
#define MCF_PSC_PSCRFSR_OF (0x10)
|
||||||
|
#define MCF_PSC_PSCRFSR_UF (0x20)
|
||||||
|
#define MCF_PSC_PSCRFSR_RXW (0x40)
|
||||||
|
#define MCF_PSC_PSCRFSR_FAE (0x80)
|
||||||
|
#define MCF_PSC_PSCRFSR_FRM(x) (((x)&0xF)<<0x8)
|
||||||
|
#define MCF_PSC_PSCRFSR_FRM_BYTE0 (0x800)
|
||||||
|
#define MCF_PSC_PSCRFSR_FRM_BYTE1 (0x400)
|
||||||
|
#define MCF_PSC_PSCRFSR_FRM_BYTE2 (0x200)
|
||||||
|
#define MCF_PSC_PSCRFSR_FRM_BYTE3 (0x100)
|
||||||
|
#define MCF_PSC_PSCRFSR_TAG(x) (((x)&0x3)<<0xC)
|
||||||
|
#define MCF_PSC_PSCRFSR_TXW (0x4000)
|
||||||
|
#define MCF_PSC_PSCRFSR_IP (0x8000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCRFCR */
|
||||||
|
#define MCF_PSC_PSCRFCR_CNTR(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_PSC_PSCRFCR_TXW_MSK (0x40000)
|
||||||
|
#define MCF_PSC_PSCRFCR_OF_MSK (0x80000)
|
||||||
|
#define MCF_PSC_PSCRFCR_UF_MSK (0x100000)
|
||||||
|
#define MCF_PSC_PSCRFCR_RXW_MSK (0x200000)
|
||||||
|
#define MCF_PSC_PSCRFCR_FAE_MSK (0x400000)
|
||||||
|
#define MCF_PSC_PSCRFCR_IP_MSK (0x800000)
|
||||||
|
#define MCF_PSC_PSCRFCR_GR(x) (((x)&0x7)<<0x18)
|
||||||
|
#define MCF_PSC_PSCRFCR_FRMEN (0x8000000)
|
||||||
|
#define MCF_PSC_PSCRFCR_TIMER (0x10000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCRFAR */
|
||||||
|
#define MCF_PSC_PSCRFAR_ALARM(x) (((x)&0x1FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCRFRP */
|
||||||
|
#define MCF_PSC_PSCRFRP_READ(x) (((x)&0x1FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCRFWP */
|
||||||
|
#define MCF_PSC_PSCRFWP_WRITE(x) (((x)&0x1FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCRLRFP */
|
||||||
|
#define MCF_PSC_PSCRLRFP_LRFP(x) (((x)&0x1FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCRLWFP */
|
||||||
|
#define MCF_PSC_PSCRLWFP_LWFP(x) (((x)&0x1FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCTFDR */
|
||||||
|
#define MCF_PSC_PSCTFDR_DATA(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCTFSR */
|
||||||
|
#define MCF_PSC_PSCTFSR_EMT (0x1)
|
||||||
|
#define MCF_PSC_PSCTFSR_ALARM (0x2)
|
||||||
|
#define MCF_PSC_PSCTFSR_FU (0x4)
|
||||||
|
#define MCF_PSC_PSCTFSR_FRMRDY (0x8)
|
||||||
|
#define MCF_PSC_PSCTFSR_OF (0x10)
|
||||||
|
#define MCF_PSC_PSCTFSR_UF (0x20)
|
||||||
|
#define MCF_PSC_PSCTFSR_RXW (0x40)
|
||||||
|
#define MCF_PSC_PSCTFSR_FAE (0x80)
|
||||||
|
#define MCF_PSC_PSCTFSR_FRM(x) (((x)&0xF)<<0x8)
|
||||||
|
#define MCF_PSC_PSCTFSR_FRM_BYTE0 (0x800)
|
||||||
|
#define MCF_PSC_PSCTFSR_FRM_BYTE1 (0x400)
|
||||||
|
#define MCF_PSC_PSCTFSR_FRM_BYTE2 (0x200)
|
||||||
|
#define MCF_PSC_PSCTFSR_FRM_BYTE3 (0x100)
|
||||||
|
#define MCF_PSC_PSCTFSR_TAG(x) (((x)&0x3)<<0xC)
|
||||||
|
#define MCF_PSC_PSCTFSR_TXW (0x4000)
|
||||||
|
#define MCF_PSC_PSCTFSR_IP (0x8000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCTFCR */
|
||||||
|
#define MCF_PSC_PSCTFCR_CNTR(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_PSC_PSCTFCR_TXW_MSK (0x40000)
|
||||||
|
#define MCF_PSC_PSCTFCR_OF_MSK (0x80000)
|
||||||
|
#define MCF_PSC_PSCTFCR_UF_MSK (0x100000)
|
||||||
|
#define MCF_PSC_PSCTFCR_RXW_MSK (0x200000)
|
||||||
|
#define MCF_PSC_PSCTFCR_FAE_MSK (0x400000)
|
||||||
|
#define MCF_PSC_PSCTFCR_IP_MSK (0x800000)
|
||||||
|
#define MCF_PSC_PSCTFCR_GR(x) (((x)&0x7)<<0x18)
|
||||||
|
#define MCF_PSC_PSCTFCR_FRMEN (0x8000000)
|
||||||
|
#define MCF_PSC_PSCTFCR_TIMER (0x10000000)
|
||||||
|
#define MCF_PSC_PSCTFCR_WFR (0x20000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCTFAR */
|
||||||
|
#define MCF_PSC_PSCTFAR_ALARM(x) (((x)&0x1FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCTFRP */
|
||||||
|
#define MCF_PSC_PSCTFRP_READ(x) (((x)&0x1FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCTFWP */
|
||||||
|
#define MCF_PSC_PSCTFWP_WRITE(x) (((x)&0x1FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCTLRFP */
|
||||||
|
#define MCF_PSC_PSCTLRFP_LRFP(x) (((x)&0x1FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_PSC_PSCTLWFP */
|
||||||
|
#define MCF_PSC_PSCTLWFP_LWFP(x) (((x)&0x1FF)<<0)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_PSC_H__ */
|
||||||
106
i2cspi_BaS_gcc/include/MCF5475_SDRAMC.h
Normal file
106
i2cspi_BaS_gcc/include/MCF5475_SDRAMC.h
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_SDRAMC_H__
|
||||||
|
#define __MCF5475_SDRAMC_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Synchronous DRAM Controller (SDRAMC)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_SDRAMC_SDRAMDS (*(volatile uint32_t*)(&_MBAR[0x4]))
|
||||||
|
#define MCF_SDRAMC_CS0CFG (*(volatile uint32_t*)(&_MBAR[0x20]))
|
||||||
|
#define MCF_SDRAMC_CS1CFG (*(volatile uint32_t*)(&_MBAR[0x24]))
|
||||||
|
#define MCF_SDRAMC_CS2CFG (*(volatile uint32_t*)(&_MBAR[0x28]))
|
||||||
|
#define MCF_SDRAMC_CS3CFG (*(volatile uint32_t*)(&_MBAR[0x2C]))
|
||||||
|
#define MCF_SDRAMC_SDMR (*(volatile uint32_t*)(&_MBAR[0x100]))
|
||||||
|
#define MCF_SDRAMC_SDCR (*(volatile uint32_t*)(&_MBAR[0x104]))
|
||||||
|
#define MCF_SDRAMC_SDCFG1 (*(volatile uint32_t*)(&_MBAR[0x108]))
|
||||||
|
#define MCF_SDRAMC_SDCFG2 (*(volatile uint32_t*)(&_MBAR[0x10C]))
|
||||||
|
#define MCF_SDRAMC_CSCFG(x) (*(volatile uint32_t*)(&_MBAR[0x20 + ((x)*0x4)]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SDRAMC_SDRAMDS */
|
||||||
|
#define MCF_SDRAMC_SDRAMDS_SB_D(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_SDRAMC_SDRAMDS_SB_S(x) (((x)&0x3)<<0x2)
|
||||||
|
#define MCF_SDRAMC_SDRAMDS_SB_A(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_SDRAMC_SDRAMDS_SB_C(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_SDRAMC_SDRAMDS_SB_E(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_SDRAMC_SDRAMDS_DRIVE_24MA (0)
|
||||||
|
#define MCF_SDRAMC_SDRAMDS_DRIVE_16MA (0x1)
|
||||||
|
#define MCF_SDRAMC_SDRAMDS_DRIVE_8MA (0x2)
|
||||||
|
#define MCF_SDRAMC_SDRAMDS_DRIVE_NONE (0x3)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SDRAMC_CSCFG */
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ(x) (((x)&0x1F)<<0)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_DISABLED (0)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_1MBYTE (0x13)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_2MBYTE (0x14)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_4MBYTE (0x15)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_8MBYTE (0x16)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_16MBYTE (0x17)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_32MBYTE (0x18)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_64MBYTE (0x19)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_128MBYTE (0x1A)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_256MBYTE (0x1B)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_512MBYTE (0x1C)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_1GBYTE (0x1D)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_2GBYTE (0x1E)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSSZ_4GBYTE (0x1F)
|
||||||
|
#define MCF_SDRAMC_CSCFG_CSBA(x) (((x)&0xFFF)<<0x14)
|
||||||
|
#define MCF_SDRAMC_CSCFG_BA(x) ((x)&0xFFF00000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SDRAMC_SDMR */
|
||||||
|
#define MCF_SDRAMC_SDMR_CMD (0x10000)
|
||||||
|
#define MCF_SDRAMC_SDMR_AD(x) (((x)&0xFFF)<<0x12)
|
||||||
|
#define MCF_SDRAMC_SDMR_BNKAD(x) (((x)&0x3)<<0x1E)
|
||||||
|
#define MCF_SDRAMC_SDMR_BK_LMR (0)
|
||||||
|
#define MCF_SDRAMC_SDMR_BK_LEMR (0x40000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SDRAMC_SDCR */
|
||||||
|
#define MCF_SDRAMC_SDCR_IPALL (0x2)
|
||||||
|
#define MCF_SDRAMC_SDCR_IREF (0x4)
|
||||||
|
#define MCF_SDRAMC_SDCR_BUFF (0x10)
|
||||||
|
#define MCF_SDRAMC_SDCR_DQS_OE(x) (((x)&0xF)<<0x8)
|
||||||
|
#define MCF_SDRAMC_SDCR_RCNT(x) (((x)&0x3F)<<0x10)
|
||||||
|
#define MCF_SDRAMC_SDCR_DRIVE (0x400000)
|
||||||
|
#define MCF_SDRAMC_SDCR_AP (0x800000)
|
||||||
|
#define MCF_SDRAMC_SDCR_MUX(x) (((x)&0x3)<<0x18)
|
||||||
|
#define MCF_SDRAMC_SDCR_REF (0x10000000)
|
||||||
|
#define MCF_SDRAMC_SDCR_DDR (0x20000000)
|
||||||
|
#define MCF_SDRAMC_SDCR_CKE (0x40000000)
|
||||||
|
#define MCF_SDRAMC_SDCR_MODE_EN (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SDRAMC_SDCFG1 */
|
||||||
|
#define MCF_SDRAMC_SDCFG1_WTLAT(x) (((x)&0x7)<<0x4)
|
||||||
|
#define MCF_SDRAMC_SDCFG1_REF2ACT(x) (((x)&0xF)<<0x8)
|
||||||
|
#define MCF_SDRAMC_SDCFG1_PRE2ACT(x) (((x)&0x7)<<0xC)
|
||||||
|
#define MCF_SDRAMC_SDCFG1_ACT2RW(x) (((x)&0x7)<<0x10)
|
||||||
|
#define MCF_SDRAMC_SDCFG1_RDLAT(x) (((x)&0xF)<<0x14)
|
||||||
|
#define MCF_SDRAMC_SDCFG1_SWT2RD(x) (((x)&0x7)<<0x18)
|
||||||
|
#define MCF_SDRAMC_SDCFG1_SRD2RW(x) (((x)&0xF)<<0x1C)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SDRAMC_SDCFG2 */
|
||||||
|
#define MCF_SDRAMC_SDCFG2_BL(x) (((x)&0xF)<<0x10)
|
||||||
|
#define MCF_SDRAMC_SDCFG2_BRD2WT(x) (((x)&0xF)<<0x14)
|
||||||
|
#define MCF_SDRAMC_SDCFG2_BWT2RW(x) (((x)&0xF)<<0x18)
|
||||||
|
#define MCF_SDRAMC_SDCFG2_BRD2PRE(x) (((x)&0xF)<<0x1C)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_SDRAMC_H__ */
|
||||||
398
i2cspi_BaS_gcc/include/MCF5475_SEC.h
Normal file
398
i2cspi_BaS_gcc/include/MCF5475_SEC.h
Normal file
@@ -0,0 +1,398 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_SEC_H__
|
||||||
|
#define __MCF5475_SEC_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Integrated Security Engine (SEC)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_SEC_EUACRH (*(volatile uint32_t*)(&_MBAR[0x21000]))
|
||||||
|
#define MCF_SEC_EUACRL (*(volatile uint32_t*)(&_MBAR[0x21004]))
|
||||||
|
#define MCF_SEC_SIMRH (*(volatile uint32_t*)(&_MBAR[0x21008]))
|
||||||
|
#define MCF_SEC_SIMRL (*(volatile uint32_t*)(&_MBAR[0x2100C]))
|
||||||
|
#define MCF_SEC_SISRH (*(volatile uint32_t*)(&_MBAR[0x21010]))
|
||||||
|
#define MCF_SEC_SISRL (*(volatile uint32_t*)(&_MBAR[0x21014]))
|
||||||
|
#define MCF_SEC_SICRH (*(volatile uint32_t*)(&_MBAR[0x21018]))
|
||||||
|
#define MCF_SEC_SICRL (*(volatile uint32_t*)(&_MBAR[0x2101C]))
|
||||||
|
#define MCF_SEC_SIDR (*(volatile uint32_t*)(&_MBAR[0x21020]))
|
||||||
|
#define MCF_SEC_EUASRH (*(volatile uint32_t*)(&_MBAR[0x21028]))
|
||||||
|
#define MCF_SEC_EUASRL (*(volatile uint32_t*)(&_MBAR[0x2102C]))
|
||||||
|
#define MCF_SEC_SMCR (*(volatile uint32_t*)(&_MBAR[0x21030]))
|
||||||
|
#define MCF_SEC_MEAR (*(volatile uint32_t*)(&_MBAR[0x21038]))
|
||||||
|
#define MCF_SEC_CCCR0 (*(volatile uint32_t*)(&_MBAR[0x2200C]))
|
||||||
|
#define MCF_SEC_CCPSRH0 (*(volatile uint32_t*)(&_MBAR[0x22010]))
|
||||||
|
#define MCF_SEC_CCPSRL0 (*(volatile uint32_t*)(&_MBAR[0x22014]))
|
||||||
|
#define MCF_SEC_CDPR0 (*(volatile uint32_t*)(&_MBAR[0x22044]))
|
||||||
|
#define MCF_SEC_FR0 (*(volatile uint32_t*)(&_MBAR[0x2204C]))
|
||||||
|
#define MCF_SEC_CCCR1 (*(volatile uint32_t*)(&_MBAR[0x2300C]))
|
||||||
|
#define MCF_SEC_CCPSRH1 (*(volatile uint32_t*)(&_MBAR[0x23010]))
|
||||||
|
#define MCF_SEC_CCPSRL1 (*(volatile uint32_t*)(&_MBAR[0x23014]))
|
||||||
|
#define MCF_SEC_CDPR1 (*(volatile uint32_t*)(&_MBAR[0x23044]))
|
||||||
|
#define MCF_SEC_FR1 (*(volatile uint32_t*)(&_MBAR[0x2304C]))
|
||||||
|
#define MCF_SEC_AFRCR (*(volatile uint32_t*)(&_MBAR[0x28018]))
|
||||||
|
#define MCF_SEC_AFSR (*(volatile uint32_t*)(&_MBAR[0x28028]))
|
||||||
|
#define MCF_SEC_AFISR (*(volatile uint32_t*)(&_MBAR[0x28030]))
|
||||||
|
#define MCF_SEC_AFIMR (*(volatile uint32_t*)(&_MBAR[0x28038]))
|
||||||
|
#define MCF_SEC_DRCR (*(volatile uint32_t*)(&_MBAR[0x2A018]))
|
||||||
|
#define MCF_SEC_DSR (*(volatile uint32_t*)(&_MBAR[0x2A028]))
|
||||||
|
#define MCF_SEC_DISR (*(volatile uint32_t*)(&_MBAR[0x2A030]))
|
||||||
|
#define MCF_SEC_DIMR (*(volatile uint32_t*)(&_MBAR[0x2A038]))
|
||||||
|
#define MCF_SEC_MDRCR (*(volatile uint32_t*)(&_MBAR[0x2C018]))
|
||||||
|
#define MCF_SEC_MDSR (*(volatile uint32_t*)(&_MBAR[0x2C028]))
|
||||||
|
#define MCF_SEC_MDISR (*(volatile uint32_t*)(&_MBAR[0x2C030]))
|
||||||
|
#define MCF_SEC_MDIMR (*(volatile uint32_t*)(&_MBAR[0x2C038]))
|
||||||
|
#define MCF_SEC_RNGRCR (*(volatile uint32_t*)(&_MBAR[0x2E018]))
|
||||||
|
#define MCF_SEC_RNGSR (*(volatile uint32_t*)(&_MBAR[0x2E028]))
|
||||||
|
#define MCF_SEC_RNGISR (*(volatile uint32_t*)(&_MBAR[0x2E030]))
|
||||||
|
#define MCF_SEC_RNGIMR (*(volatile uint32_t*)(&_MBAR[0x2E038]))
|
||||||
|
#define MCF_SEC_AESRCR (*(volatile uint32_t*)(&_MBAR[0x32018]))
|
||||||
|
#define MCF_SEC_AESSR (*(volatile uint32_t*)(&_MBAR[0x32028]))
|
||||||
|
#define MCF_SEC_AESISR (*(volatile uint32_t*)(&_MBAR[0x32030]))
|
||||||
|
#define MCF_SEC_AESIMR (*(volatile uint32_t*)(&_MBAR[0x32038]))
|
||||||
|
#define MCF_SEC_CCCRn(x) (*(volatile uint32_t*)(&_MBAR[0x2200C + ((x)*0x1000)]))
|
||||||
|
#define MCF_SEC_CCPSRHn(x) (*(volatile uint32_t*)(&_MBAR[0x22010 + ((x)*0x1000)]))
|
||||||
|
#define MCF_SEC_CCPSRLn(x) (*(volatile uint32_t*)(&_MBAR[0x22014 + ((x)*0x1000)]))
|
||||||
|
#define MCF_SEC_CDPRn(x) (*(volatile uint32_t*)(&_MBAR[0x22044 + ((x)*0x1000)]))
|
||||||
|
#define MCF_SEC_FRn(x) (*(volatile uint32_t*)(&_MBAR[0x2204C + ((x)*0x1000)]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_EUACRH */
|
||||||
|
#define MCF_SEC_EUACRH_AFEU(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_SEC_EUACRH_AFFEU_NOASSIGN (0)
|
||||||
|
#define MCF_SEC_EUACRH_AFFEU_CHA0 (0x1)
|
||||||
|
#define MCF_SEC_EUACRH_AFFEU_CHA1 (0x2)
|
||||||
|
#define MCF_SEC_EUACRH_MDEU(x) (((x)&0xF)<<0x8)
|
||||||
|
#define MCF_SEC_EUACRH_MDEU_NOASSIGN (0)
|
||||||
|
#define MCF_SEC_EUACRH_MDEU_CHA0 (0x100)
|
||||||
|
#define MCF_SEC_EUACRH_MDEU_CHA1 (0x200)
|
||||||
|
#define MCF_SEC_EUACRH_RNG(x) (((x)&0xF)<<0x18)
|
||||||
|
#define MCF_SEC_EUACRH_RNG_NOASSIGN (0)
|
||||||
|
#define MCF_SEC_EUACRH_RNG_CHA0 (0x1000000)
|
||||||
|
#define MCF_SEC_EUACRH_RNG_CHA1 (0x2000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_EUACRL */
|
||||||
|
#define MCF_SEC_EUACRL_AESU(x) (((x)&0xF)<<0x10)
|
||||||
|
#define MCF_SEC_EUACRL_AESU_NOASSIGN (0)
|
||||||
|
#define MCF_SEC_EUACRL_AESU_CHA0 (0x10000)
|
||||||
|
#define MCF_SEC_EUACRL_AESU_CHA1 (0x20000)
|
||||||
|
#define MCF_SEC_EUACRL_DEU(x) (((x)&0xF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_SIMRH */
|
||||||
|
#define MCF_SEC_SIMRH_AERR (0x8000000)
|
||||||
|
#define MCF_SEC_SIMRH_CHA_0_DN (0x10000000)
|
||||||
|
#define MCF_SEC_SIMRH_CHA_0_ERR (0x20000000)
|
||||||
|
#define MCF_SEC_SIMRH_CHA_1_DN (0x40000000)
|
||||||
|
#define MCF_SEC_SIMRH_CHA_1_ERR (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_SIMRL */
|
||||||
|
#define MCF_SEC_SIMRL_TEA (0x40)
|
||||||
|
#define MCF_SEC_SIMRL_DEU_DN (0x100)
|
||||||
|
#define MCF_SEC_SIMRL_DEU_ERR (0x200)
|
||||||
|
#define MCF_SEC_SIMRL_AESU_DN (0x1000)
|
||||||
|
#define MCF_SEC_SIMRL_AESU_ERR (0x2000)
|
||||||
|
#define MCF_SEC_SIMRL_MDEU_DN (0x10000)
|
||||||
|
#define MCF_SEC_SIMRL_MDEU_ERR (0x20000)
|
||||||
|
#define MCF_SEC_SIMRL_AFEU_DN (0x100000)
|
||||||
|
#define MCF_SEC_SIMRL_AFEU_ERR (0x200000)
|
||||||
|
#define MCF_SEC_SIMRL_RNG_DN (0x1000000)
|
||||||
|
#define MCF_SEC_SIMRL_RNG_ERR (0x2000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_SISRH */
|
||||||
|
#define MCF_SEC_SISRH_AERR (0x8000000)
|
||||||
|
#define MCF_SEC_SISRH_CHA_0_DN (0x10000000)
|
||||||
|
#define MCF_SEC_SISRH_CHA_0_ERR (0x20000000)
|
||||||
|
#define MCF_SEC_SISRH_CHA_1_DN (0x40000000)
|
||||||
|
#define MCF_SEC_SISRH_CHA_1_ERR (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_SISRL */
|
||||||
|
#define MCF_SEC_SISRL_TEA (0x40)
|
||||||
|
#define MCF_SEC_SISRL_DEU_DN (0x100)
|
||||||
|
#define MCF_SEC_SISRL_DEU_ERR (0x200)
|
||||||
|
#define MCF_SEC_SISRL_AESU_DN (0x1000)
|
||||||
|
#define MCF_SEC_SISRL_AESU_ERR (0x2000)
|
||||||
|
#define MCF_SEC_SISRL_MDEU_DN (0x10000)
|
||||||
|
#define MCF_SEC_SISRL_MDEU_ERR (0x20000)
|
||||||
|
#define MCF_SEC_SISRL_AFEU_DN (0x100000)
|
||||||
|
#define MCF_SEC_SISRL_AFEU_ERR (0x200000)
|
||||||
|
#define MCF_SEC_SISRL_RNG_DN (0x1000000)
|
||||||
|
#define MCF_SEC_SISRL_RNG_ERR (0x2000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_SICRH */
|
||||||
|
#define MCF_SEC_SICRH_AERR (0x8000000)
|
||||||
|
#define MCF_SEC_SICRH_CHA_0_DN (0x10000000)
|
||||||
|
#define MCF_SEC_SICRH_CHA_0_ERR (0x20000000)
|
||||||
|
#define MCF_SEC_SICRH_CHA_1_DN (0x40000000)
|
||||||
|
#define MCF_SEC_SICRH_CHA_1_ERR (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_SICRL */
|
||||||
|
#define MCF_SEC_SICRL_TEA (0x40)
|
||||||
|
#define MCF_SEC_SICRL_DEU_DN (0x100)
|
||||||
|
#define MCF_SEC_SICRL_DEU_ERR (0x200)
|
||||||
|
#define MCF_SEC_SICRL_AESU_DN (0x1000)
|
||||||
|
#define MCF_SEC_SICRL_AESU_ERR (0x2000)
|
||||||
|
#define MCF_SEC_SICRL_MDEU_DN (0x10000)
|
||||||
|
#define MCF_SEC_SICRL_MDEU_ERR (0x20000)
|
||||||
|
#define MCF_SEC_SICRL_AFEU_DN (0x100000)
|
||||||
|
#define MCF_SEC_SICRL_AFEU_ERR (0x200000)
|
||||||
|
#define MCF_SEC_SICRL_RNG_DN (0x1000000)
|
||||||
|
#define MCF_SEC_SICRL_RNG_ERR (0x2000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_SIDR */
|
||||||
|
#define MCF_SEC_SIDR_VERSION(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_EUASRH */
|
||||||
|
#define MCF_SEC_EUASRH_AFEU(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_SEC_EUASRH_MDEU(x) (((x)&0xF)<<0x8)
|
||||||
|
#define MCF_SEC_EUASRH_RNG(x) (((x)&0xF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_EUASRL */
|
||||||
|
#define MCF_SEC_EUASRL_AESU(x) (((x)&0xF)<<0x10)
|
||||||
|
#define MCF_SEC_EUASRL_DEU(x) (((x)&0xF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_SMCR */
|
||||||
|
#define MCF_SEC_SMCR_CURR_CHAN(x) (((x)&0xF)<<0x4)
|
||||||
|
#define MCF_SEC_SMCR_CURR_CHAN_1 (0x10)
|
||||||
|
#define MCF_SEC_SMCR_CURR_CHAN_2 (0x20)
|
||||||
|
#define MCF_SEC_SMCR_SWR (0x1000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_MEAR */
|
||||||
|
#define MCF_SEC_MEAR_ADDRESS(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_CCCRn */
|
||||||
|
#define MCF_SEC_CCCRn_RST (0x1)
|
||||||
|
#define MCF_SEC_CCCRn_CDIE (0x2)
|
||||||
|
#define MCF_SEC_CCCRn_NT (0x4)
|
||||||
|
#define MCF_SEC_CCCRn_NE (0x8)
|
||||||
|
#define MCF_SEC_CCCRn_WE (0x10)
|
||||||
|
#define MCF_SEC_CCCRn_BURST_SIZE(x) (((x)&0x7)<<0x8)
|
||||||
|
#define MCF_SEC_CCCRn_BURST_SIZE_2 (0)
|
||||||
|
#define MCF_SEC_CCCRn_BURST_SIZE_8 (0x100)
|
||||||
|
#define MCF_SEC_CCCRn_BURST_SIZE_16 (0x200)
|
||||||
|
#define MCF_SEC_CCCRn_BURST_SIZE_24 (0x300)
|
||||||
|
#define MCF_SEC_CCCRn_BURST_SIZE_32 (0x400)
|
||||||
|
#define MCF_SEC_CCCRn_BURST_SIZE_40 (0x500)
|
||||||
|
#define MCF_SEC_CCCRn_BURST_SIZE_48 (0x600)
|
||||||
|
#define MCF_SEC_CCCRn_BURST_SIZE_56 (0x700)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_CCPSRHn */
|
||||||
|
#define MCF_SEC_CCPSRHn_STATE(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_CCPSRLn */
|
||||||
|
#define MCF_SEC_CCPSRLn_PAIR_PTR(x) (((x)&0xFF)<<0)
|
||||||
|
#define MCF_SEC_CCPSRLn_EUERR (0x100)
|
||||||
|
#define MCF_SEC_CCPSRLn_SERR (0x200)
|
||||||
|
#define MCF_SEC_CCPSRLn_DERR (0x400)
|
||||||
|
#define MCF_SEC_CCPSRLn_PERR (0x1000)
|
||||||
|
#define MCF_SEC_CCPSRLn_TEA (0x2000)
|
||||||
|
#define MCF_SEC_CCPSRLn_SD (0x10000)
|
||||||
|
#define MCF_SEC_CCPSRLn_PD (0x20000)
|
||||||
|
#define MCF_SEC_CCPSRLn_SRD (0x40000)
|
||||||
|
#define MCF_SEC_CCPSRLn_PRD (0x80000)
|
||||||
|
#define MCF_SEC_CCPSRLn_SG (0x100000)
|
||||||
|
#define MCF_SEC_CCPSRLn_PG (0x200000)
|
||||||
|
#define MCF_SEC_CCPSRLn_SR (0x400000)
|
||||||
|
#define MCF_SEC_CCPSRLn_PR (0x800000)
|
||||||
|
#define MCF_SEC_CCPSRLn_MO (0x1000000)
|
||||||
|
#define MCF_SEC_CCPSRLn_MI (0x2000000)
|
||||||
|
#define MCF_SEC_CCPSRLn_STAT (0x4000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_CDPRn */
|
||||||
|
#define MCF_SEC_CDPRn_CDP(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_FRn */
|
||||||
|
#define MCF_SEC_FRn_FETCH_ADDR(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_AFRCR */
|
||||||
|
#define MCF_SEC_AFRCR_SR (0x1000000)
|
||||||
|
#define MCF_SEC_AFRCR_MI (0x2000000)
|
||||||
|
#define MCF_SEC_AFRCR_RI (0x4000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_AFSR */
|
||||||
|
#define MCF_SEC_AFSR_RD (0x1000000)
|
||||||
|
#define MCF_SEC_AFSR_ID (0x2000000)
|
||||||
|
#define MCF_SEC_AFSR_IE (0x4000000)
|
||||||
|
#define MCF_SEC_AFSR_OFR (0x8000000)
|
||||||
|
#define MCF_SEC_AFSR_IFW (0x10000000)
|
||||||
|
#define MCF_SEC_AFSR_HALT (0x20000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_AFISR */
|
||||||
|
#define MCF_SEC_AFISR_DSE (0x10000)
|
||||||
|
#define MCF_SEC_AFISR_KSE (0x20000)
|
||||||
|
#define MCF_SEC_AFISR_CE (0x40000)
|
||||||
|
#define MCF_SEC_AFISR_ERE (0x80000)
|
||||||
|
#define MCF_SEC_AFISR_IE (0x100000)
|
||||||
|
#define MCF_SEC_AFISR_OFU (0x2000000)
|
||||||
|
#define MCF_SEC_AFISR_IFO (0x4000000)
|
||||||
|
#define MCF_SEC_AFISR_IFE (0x10000000)
|
||||||
|
#define MCF_SEC_AFISR_OFE (0x20000000)
|
||||||
|
#define MCF_SEC_AFISR_AE (0x40000000)
|
||||||
|
#define MCF_SEC_AFISR_ME (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_AFIMR */
|
||||||
|
#define MCF_SEC_AFIMR_DSE (0x10000)
|
||||||
|
#define MCF_SEC_AFIMR_KSE (0x20000)
|
||||||
|
#define MCF_SEC_AFIMR_CE (0x40000)
|
||||||
|
#define MCF_SEC_AFIMR_ERE (0x80000)
|
||||||
|
#define MCF_SEC_AFIMR_IE (0x100000)
|
||||||
|
#define MCF_SEC_AFIMR_OFU (0x2000000)
|
||||||
|
#define MCF_SEC_AFIMR_IFO (0x4000000)
|
||||||
|
#define MCF_SEC_AFIMR_IFE (0x10000000)
|
||||||
|
#define MCF_SEC_AFIMR_OFE (0x20000000)
|
||||||
|
#define MCF_SEC_AFIMR_AE (0x40000000)
|
||||||
|
#define MCF_SEC_AFIMR_ME (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_DRCR */
|
||||||
|
#define MCF_SEC_DRCR_SR (0x1000000)
|
||||||
|
#define MCF_SEC_DRCR_MI (0x2000000)
|
||||||
|
#define MCF_SEC_DRCR_RI (0x4000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_DSR */
|
||||||
|
#define MCF_SEC_DSR_RD (0x1000000)
|
||||||
|
#define MCF_SEC_DSR_ID (0x2000000)
|
||||||
|
#define MCF_SEC_DSR_IE (0x4000000)
|
||||||
|
#define MCF_SEC_DSR_OFR (0x8000000)
|
||||||
|
#define MCF_SEC_DSR_IFW (0x10000000)
|
||||||
|
#define MCF_SEC_DSR_HALT (0x20000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_DISR */
|
||||||
|
#define MCF_SEC_DISR_DSE (0x10000)
|
||||||
|
#define MCF_SEC_DISR_KSE (0x20000)
|
||||||
|
#define MCF_SEC_DISR_CE (0x40000)
|
||||||
|
#define MCF_SEC_DISR_ERE (0x80000)
|
||||||
|
#define MCF_SEC_DISR_IE (0x100000)
|
||||||
|
#define MCF_SEC_DISR_KPE (0x200000)
|
||||||
|
#define MCF_SEC_DISR_OFU (0x2000000)
|
||||||
|
#define MCF_SEC_DISR_IFO (0x4000000)
|
||||||
|
#define MCF_SEC_DISR_IFE (0x10000000)
|
||||||
|
#define MCF_SEC_DISR_OFE (0x20000000)
|
||||||
|
#define MCF_SEC_DISR_AE (0x40000000)
|
||||||
|
#define MCF_SEC_DISR_ME (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_DIMR */
|
||||||
|
#define MCF_SEC_DIMR_DSE (0x10000)
|
||||||
|
#define MCF_SEC_DIMR_KSE (0x20000)
|
||||||
|
#define MCF_SEC_DIMR_CE (0x40000)
|
||||||
|
#define MCF_SEC_DIMR_ERE (0x80000)
|
||||||
|
#define MCF_SEC_DIMR_IE (0x100000)
|
||||||
|
#define MCF_SEC_DIMR_KPE (0x200000)
|
||||||
|
#define MCF_SEC_DIMR_OFU (0x2000000)
|
||||||
|
#define MCF_SEC_DIMR_IFO (0x4000000)
|
||||||
|
#define MCF_SEC_DIMR_IFE (0x10000000)
|
||||||
|
#define MCF_SEC_DIMR_OFE (0x20000000)
|
||||||
|
#define MCF_SEC_DIMR_AE (0x40000000)
|
||||||
|
#define MCF_SEC_DIMR_ME (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_MDRCR */
|
||||||
|
#define MCF_SEC_MDRCR_SR (0x1000000)
|
||||||
|
#define MCF_SEC_MDRCR_MI (0x2000000)
|
||||||
|
#define MCF_SEC_MDRCR_RI (0x4000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_MDSR */
|
||||||
|
#define MCF_SEC_MDSR_RD (0x1000000)
|
||||||
|
#define MCF_SEC_MDSR_ID (0x2000000)
|
||||||
|
#define MCF_SEC_MDSR_IE (0x4000000)
|
||||||
|
#define MCF_SEC_MDSR_IFW (0x10000000)
|
||||||
|
#define MCF_SEC_MDSR_HALT (0x20000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_MDISR */
|
||||||
|
#define MCF_SEC_MDISR_DSE (0x10000)
|
||||||
|
#define MCF_SEC_MDISR_KSE (0x20000)
|
||||||
|
#define MCF_SEC_MDISR_CE (0x40000)
|
||||||
|
#define MCF_SEC_MDISR_ERE (0x80000)
|
||||||
|
#define MCF_SEC_MDISR_IE (0x100000)
|
||||||
|
#define MCF_SEC_MDISR_IFO (0x4000000)
|
||||||
|
#define MCF_SEC_MDISR_AE (0x40000000)
|
||||||
|
#define MCF_SEC_MDISR_ME (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_MDIMR */
|
||||||
|
#define MCF_SEC_MDIMR_DSE (0x10000)
|
||||||
|
#define MCF_SEC_MDIMR_KSE (0x20000)
|
||||||
|
#define MCF_SEC_MDIMR_CE (0x40000)
|
||||||
|
#define MCF_SEC_MDIMR_ERE (0x80000)
|
||||||
|
#define MCF_SEC_MDIMR_IE (0x100000)
|
||||||
|
#define MCF_SEC_MDIMR_IFO (0x4000000)
|
||||||
|
#define MCF_SEC_MDIMR_AE (0x40000000)
|
||||||
|
#define MCF_SEC_MDIMR_ME (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_RNGRCR */
|
||||||
|
#define MCF_SEC_RNGRCR_SR (0x1000000)
|
||||||
|
#define MCF_SEC_RNGRCR_MI (0x2000000)
|
||||||
|
#define MCF_SEC_RNGRCR_RI (0x4000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_RNGSR */
|
||||||
|
#define MCF_SEC_RNGSR_RD (0x1000000)
|
||||||
|
#define MCF_SEC_RNGSR_IE (0x4000000)
|
||||||
|
#define MCF_SEC_RNGSR_OFR (0x8000000)
|
||||||
|
#define MCF_SEC_RNGSR_HALT (0x20000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_RNGISR */
|
||||||
|
#define MCF_SEC_RNGISR_IE (0x100000)
|
||||||
|
#define MCF_SEC_RNGISR_OFU (0x2000000)
|
||||||
|
#define MCF_SEC_RNGISR_AE (0x40000000)
|
||||||
|
#define MCF_SEC_RNGISR_ME (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_RNGIMR */
|
||||||
|
#define MCF_SEC_RNGIMR_IE (0x100000)
|
||||||
|
#define MCF_SEC_RNGIMR_OFU (0x2000000)
|
||||||
|
#define MCF_SEC_RNGIMR_AE (0x40000000)
|
||||||
|
#define MCF_SEC_RNGIMR_ME (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_AESRCR */
|
||||||
|
#define MCF_SEC_AESRCR_SR (0x1000000)
|
||||||
|
#define MCF_SEC_AESRCR_MI (0x2000000)
|
||||||
|
#define MCF_SEC_AESRCR_RI (0x4000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_AESSR */
|
||||||
|
#define MCF_SEC_AESSR_RD (0x1000000)
|
||||||
|
#define MCF_SEC_AESSR_ID (0x2000000)
|
||||||
|
#define MCF_SEC_AESSR_IE (0x4000000)
|
||||||
|
#define MCF_SEC_AESSR_OFR (0x8000000)
|
||||||
|
#define MCF_SEC_AESSR_IFW (0x10000000)
|
||||||
|
#define MCF_SEC_AESSR_HALT (0x20000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_AESISR */
|
||||||
|
#define MCF_SEC_AESISR_DSE (0x10000)
|
||||||
|
#define MCF_SEC_AESISR_KSE (0x20000)
|
||||||
|
#define MCF_SEC_AESISR_CE (0x40000)
|
||||||
|
#define MCF_SEC_AESISR_ERE (0x80000)
|
||||||
|
#define MCF_SEC_AESISR_IE (0x100000)
|
||||||
|
#define MCF_SEC_AESISR_OFU (0x2000000)
|
||||||
|
#define MCF_SEC_AESISR_IFO (0x4000000)
|
||||||
|
#define MCF_SEC_AESISR_IFE (0x10000000)
|
||||||
|
#define MCF_SEC_AESISR_OFE (0x20000000)
|
||||||
|
#define MCF_SEC_AESISR_AE (0x40000000)
|
||||||
|
#define MCF_SEC_AESISR_ME (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SEC_AESIMR */
|
||||||
|
#define MCF_SEC_AESIMR_DSE (0x10000)
|
||||||
|
#define MCF_SEC_AESIMR_KSE (0x20000)
|
||||||
|
#define MCF_SEC_AESIMR_CE (0x40000)
|
||||||
|
#define MCF_SEC_AESIMR_ERE (0x80000)
|
||||||
|
#define MCF_SEC_AESIMR_IE (0x100000)
|
||||||
|
#define MCF_SEC_AESIMR_OFU (0x2000000)
|
||||||
|
#define MCF_SEC_AESIMR_IFO (0x4000000)
|
||||||
|
#define MCF_SEC_AESIMR_IFE (0x10000000)
|
||||||
|
#define MCF_SEC_AESIMR_OFE (0x20000000)
|
||||||
|
#define MCF_SEC_AESIMR_AE (0x40000000)
|
||||||
|
#define MCF_SEC_AESIMR_ME (0x80000000)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_SEC_H__ */
|
||||||
52
i2cspi_BaS_gcc/include/MCF5475_SIU.h
Normal file
52
i2cspi_BaS_gcc/include/MCF5475_SIU.h
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_SIU_H__
|
||||||
|
#define __MCF5475_SIU_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* System Integration Unit (SIU)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_SIU_SBCR (*(volatile uint32_t*)(&_MBAR[0x10]))
|
||||||
|
#define MCF_SIU_SECSACR (*(volatile uint32_t*)(&_MBAR[0x38]))
|
||||||
|
#define MCF_SIU_RSR (*(volatile uint32_t*)(&_MBAR[0x44]))
|
||||||
|
#define MCF_SIU_JTAGID (*(volatile uint32_t*)(&_MBAR[0x50]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SIU_SBCR */
|
||||||
|
#define MCF_SIU_SBCR_PIN2DSPI (0x8000000)
|
||||||
|
#define MCF_SIU_SBCR_DMA2CPU (0x10000000)
|
||||||
|
#define MCF_SIU_SBCR_CPU2DMA (0x20000000)
|
||||||
|
#define MCF_SIU_SBCR_PIN2DMA (0x40000000)
|
||||||
|
#define MCF_SIU_SBCR_PIN2CPU (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SIU_SECSACR */
|
||||||
|
#define MCF_SIU_SECSACR_SEQEN (0x1)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SIU_RSR */
|
||||||
|
#define MCF_SIU_RSR_RST (0x1)
|
||||||
|
#define MCF_SIU_RSR_RSTWD (0x2)
|
||||||
|
#define MCF_SIU_RSR_RSTJTG (0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SIU_JTAGID */
|
||||||
|
#define MCF_SIU_JTAGID_JTAGID(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_SIU_H__ */
|
||||||
59
i2cspi_BaS_gcc/include/MCF5475_SLT.h
Normal file
59
i2cspi_BaS_gcc/include/MCF5475_SLT.h
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_SLT_H__
|
||||||
|
#define __MCF5475_SLT_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Slice Timers (SLT)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_SLT0_STCNT (*(volatile uint32_t*)(&_MBAR[0x900]))
|
||||||
|
#define MCF_SLT0_SCR (*(volatile uint32_t*)(&_MBAR[0x904]))
|
||||||
|
#define MCF_SLT0_SCNT (*(volatile uint32_t*)(&_MBAR[0x908]))
|
||||||
|
#define MCF_SLT0_SSR (*(volatile uint32_t*)(&_MBAR[0x90C]))
|
||||||
|
|
||||||
|
#define MCF_SLT1_STCNT (*(volatile uint32_t*)(&_MBAR[0x910]))
|
||||||
|
#define MCF_SLT1_SCR (*(volatile uint32_t*)(&_MBAR[0x914]))
|
||||||
|
#define MCF_SLT1_SCNT (*(volatile uint32_t*)(&_MBAR[0x918]))
|
||||||
|
#define MCF_SLT1_SSR (*(volatile uint32_t*)(&_MBAR[0x91C]))
|
||||||
|
|
||||||
|
#define MCF_SLT_STCNT(x) (*(volatile uint32_t*)(&_MBAR[0x900 + ((x)*0x10)]))
|
||||||
|
#define MCF_SLT_SCR(x) (*(volatile uint32_t*)(&_MBAR[0x904 + ((x)*0x10)]))
|
||||||
|
#define MCF_SLT_SCNT(x) (*(volatile uint32_t*)(&_MBAR[0x908 + ((x)*0x10)]))
|
||||||
|
#define MCF_SLT_SSR(x) (*(volatile uint32_t*)(&_MBAR[0x90C + ((x)*0x10)]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SLT_STCNT */
|
||||||
|
#define MCF_SLT_STCNT_TC(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SLT_SCR */
|
||||||
|
#define MCF_SLT_SCR_TEN (0x1000000)
|
||||||
|
#define MCF_SLT_SCR_IEN (0x2000000)
|
||||||
|
#define MCF_SLT_SCR_RUN (0x4000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SLT_SCNT */
|
||||||
|
#define MCF_SLT_SCNT_CNT(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SLT_SSR */
|
||||||
|
#define MCF_SLT_SSR_ST (0x1000000)
|
||||||
|
#define MCF_SLT_SSR_BE (0x2000000)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_SLT_H__ */
|
||||||
62
i2cspi_BaS_gcc/include/MCF5475_SRAM.h
Normal file
62
i2cspi_BaS_gcc/include/MCF5475_SRAM.h
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_SRAM_H__
|
||||||
|
#define __MCF5475_SRAM_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* System SRAM Module (SRAM)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_SRAM_SSCR (*(volatile uint32_t*)(&__MBAR[0x1FFC0]))
|
||||||
|
#define MCF_SRAM_TCCR (*(volatile uint32_t*)(&__MBAR[0x1FFC4]))
|
||||||
|
#define MCF_SRAM_TCCRDR (*(volatile uint32_t*)(&__MBAR[0x1FFC8]))
|
||||||
|
#define MCF_SRAM_TCCRDW (*(volatile uint32_t*)(&__MBAR[0x1FFCC]))
|
||||||
|
#define MCF_SRAM_TCCRSEC (*(volatile uint32_t*)(&__MBAR[0x1FFD0]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SRAM_SSCR */
|
||||||
|
#define MCF_SRAM_SSCR_INLV (0x10000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SRAM_TCCR */
|
||||||
|
#define MCF_SRAM_TCCR_BANK0_TC(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_SRAM_TCCR_BANK1_TC(x) (((x)&0xF)<<0x8)
|
||||||
|
#define MCF_SRAM_TCCR_BANK2_TC(x) (((x)&0xF)<<0x10)
|
||||||
|
#define MCF_SRAM_TCCR_BANK3_TC(x) (((x)&0xF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SRAM_TCCRDR */
|
||||||
|
#define MCF_SRAM_TCCRDR_BANK0_TC(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_SRAM_TCCRDR_BANK1_TC(x) (((x)&0xF)<<0x8)
|
||||||
|
#define MCF_SRAM_TCCRDR_BANK2_TC(x) (((x)&0xF)<<0x10)
|
||||||
|
#define MCF_SRAM_TCCRDR_BANK3_TC(x) (((x)&0xF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SRAM_TCCRDW */
|
||||||
|
#define MCF_SRAM_TCCRDW_BANK0_TC(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_SRAM_TCCRDW_BANK1_TC(x) (((x)&0xF)<<0x8)
|
||||||
|
#define MCF_SRAM_TCCRDW_BANK2_TC(x) (((x)&0xF)<<0x10)
|
||||||
|
#define MCF_SRAM_TCCRDW_BANK3_TC(x) (((x)&0xF)<<0x18)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_SRAM_TCCRSEC */
|
||||||
|
#define MCF_SRAM_TCCRSEC_BANK0_TC(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_SRAM_TCCRSEC_BANK1_TC(x) (((x)&0xF)<<0x8)
|
||||||
|
#define MCF_SRAM_TCCRSEC_BANK2_TC(x) (((x)&0xF)<<0x10)
|
||||||
|
#define MCF_SRAM_TCCRSEC_BANK3_TC(x) (((x)&0xF)<<0x18)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_SRAM_H__ */
|
||||||
554
i2cspi_BaS_gcc/include/MCF5475_USB.h
Normal file
554
i2cspi_BaS_gcc/include/MCF5475_USB.h
Normal file
@@ -0,0 +1,554 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_USB_H__
|
||||||
|
#define __MCF5475_USB_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Universal Serial Bus Interface (USB)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_USB_USBAISR (*(volatile uint8_t *)(&__MBAR[0xB000]))
|
||||||
|
#define MCF_USB_USBAIMR (*(volatile uint8_t *)(&__MBAR[0xB001]))
|
||||||
|
#define MCF_USB_EPINFO (*(volatile uint8_t *)(&__MBAR[0xB003]))
|
||||||
|
#define MCF_USB_CFGR (*(volatile uint8_t *)(&__MBAR[0xB004]))
|
||||||
|
#define MCF_USB_CFGAR (*(volatile uint8_t *)(&__MBAR[0xB005]))
|
||||||
|
#define MCF_USB_SPEEDR (*(volatile uint8_t *)(&__MBAR[0xB006]))
|
||||||
|
#define MCF_USB_FRMNUMR (*(volatile uint16_t*)(&__MBAR[0xB00E]))
|
||||||
|
#define MCF_USB_EPTNR (*(volatile uint16_t*)(&__MBAR[0xB010]))
|
||||||
|
#define MCF_USB_IFUR (*(volatile uint16_t*)(&__MBAR[0xB014]))
|
||||||
|
#define MCF_USB_IFR0 (*(volatile uint16_t*)(&__MBAR[0xB040]))
|
||||||
|
#define MCF_USB_IFR1 (*(volatile uint16_t*)(&__MBAR[0xB042]))
|
||||||
|
#define MCF_USB_IFR2 (*(volatile uint16_t*)(&__MBAR[0xB044]))
|
||||||
|
#define MCF_USB_IFR3 (*(volatile uint16_t*)(&__MBAR[0xB046]))
|
||||||
|
#define MCF_USB_IFR4 (*(volatile uint16_t*)(&__MBAR[0xB048]))
|
||||||
|
#define MCF_USB_IFR5 (*(volatile uint16_t*)(&__MBAR[0xB04A]))
|
||||||
|
#define MCF_USB_IFR6 (*(volatile uint16_t*)(&__MBAR[0xB04C]))
|
||||||
|
#define MCF_USB_IFR7 (*(volatile uint16_t*)(&__MBAR[0xB04E]))
|
||||||
|
#define MCF_USB_IFR8 (*(volatile uint16_t*)(&__MBAR[0xB050]))
|
||||||
|
#define MCF_USB_IFR9 (*(volatile uint16_t*)(&__MBAR[0xB052]))
|
||||||
|
#define MCF_USB_IFR10 (*(volatile uint16_t*)(&__MBAR[0xB054]))
|
||||||
|
#define MCF_USB_IFR11 (*(volatile uint16_t*)(&__MBAR[0xB056]))
|
||||||
|
#define MCF_USB_IFR12 (*(volatile uint16_t*)(&__MBAR[0xB058]))
|
||||||
|
#define MCF_USB_IFR13 (*(volatile uint16_t*)(&__MBAR[0xB05A]))
|
||||||
|
#define MCF_USB_IFR14 (*(volatile uint16_t*)(&__MBAR[0xB05C]))
|
||||||
|
#define MCF_USB_IFR15 (*(volatile uint16_t*)(&__MBAR[0xB05E]))
|
||||||
|
#define MCF_USB_IFR16 (*(volatile uint16_t*)(&__MBAR[0xB060]))
|
||||||
|
#define MCF_USB_IFR17 (*(volatile uint16_t*)(&__MBAR[0xB062]))
|
||||||
|
#define MCF_USB_IFR18 (*(volatile uint16_t*)(&__MBAR[0xB064]))
|
||||||
|
#define MCF_USB_IFR19 (*(volatile uint16_t*)(&__MBAR[0xB066]))
|
||||||
|
#define MCF_USB_IFR20 (*(volatile uint16_t*)(&__MBAR[0xB068]))
|
||||||
|
#define MCF_USB_IFR21 (*(volatile uint16_t*)(&__MBAR[0xB06A]))
|
||||||
|
#define MCF_USB_IFR22 (*(volatile uint16_t*)(&__MBAR[0xB06C]))
|
||||||
|
#define MCF_USB_IFR23 (*(volatile uint16_t*)(&__MBAR[0xB06E]))
|
||||||
|
#define MCF_USB_IFR24 (*(volatile uint16_t*)(&__MBAR[0xB070]))
|
||||||
|
#define MCF_USB_IFR25 (*(volatile uint16_t*)(&__MBAR[0xB072]))
|
||||||
|
#define MCF_USB_IFR26 (*(volatile uint16_t*)(&__MBAR[0xB074]))
|
||||||
|
#define MCF_USB_IFR27 (*(volatile uint16_t*)(&__MBAR[0xB076]))
|
||||||
|
#define MCF_USB_IFR28 (*(volatile uint16_t*)(&__MBAR[0xB078]))
|
||||||
|
#define MCF_USB_IFR29 (*(volatile uint16_t*)(&__MBAR[0xB07A]))
|
||||||
|
#define MCF_USB_IFR30 (*(volatile uint16_t*)(&__MBAR[0xB07C]))
|
||||||
|
#define MCF_USB_IFR31 (*(volatile uint16_t*)(&__MBAR[0xB07E]))
|
||||||
|
#define MCF_USB_PPCNT (*(volatile uint16_t*)(&__MBAR[0xB080]))
|
||||||
|
#define MCF_USB_DPCNT (*(volatile uint16_t*)(&__MBAR[0xB082]))
|
||||||
|
#define MCF_USB_CRCECNT (*(volatile uint16_t*)(&__MBAR[0xB084]))
|
||||||
|
#define MCF_USB_BSECNT (*(volatile uint16_t*)(&__MBAR[0xB086]))
|
||||||
|
#define MCF_USB_PIDECNT (*(volatile uint16_t*)(&__MBAR[0xB088]))
|
||||||
|
#define MCF_USB_FRMECNT (*(volatile uint16_t*)(&__MBAR[0xB08A]))
|
||||||
|
#define MCF_USB_TXPCNT (*(volatile uint16_t*)(&__MBAR[0xB08C]))
|
||||||
|
#define MCF_USB_CNTOVR (*(volatile uint8_t *)(&__MBAR[0xB08E]))
|
||||||
|
#define MCF_USB_EP0ACR (*(volatile uint8_t *)(&__MBAR[0xB101]))
|
||||||
|
#define MCF_USB_EP0MPSR (*(volatile uint16_t*)(&__MBAR[0xB102]))
|
||||||
|
#define MCF_USB_EP0IFR (*(volatile uint8_t *)(&__MBAR[0xB104]))
|
||||||
|
#define MCF_USB_EP0SR (*(volatile uint8_t *)(&__MBAR[0xB105]))
|
||||||
|
#define MCF_USB_BMRTR (*(volatile uint8_t *)(&__MBAR[0xB106]))
|
||||||
|
#define MCF_USB_BRTR (*(volatile uint8_t *)(&__MBAR[0xB107]))
|
||||||
|
#define MCF_USB_WVALUER (*(volatile uint16_t*)(&__MBAR[0xB108]))
|
||||||
|
#define MCF_USB_WINDEXR (*(volatile uint16_t*)(&__MBAR[0xB10A]))
|
||||||
|
#define MCF_USB_WLENGTHR (*(volatile uint16_t*)(&__MBAR[0xB10C]))
|
||||||
|
#define MCF_USB_EP1OUTACR (*(volatile uint8_t *)(&__MBAR[0xB131]))
|
||||||
|
#define MCF_USB_EP1OUTMPSR (*(volatile uint16_t*)(&__MBAR[0xB132]))
|
||||||
|
#define MCF_USB_EP1OUTIFR (*(volatile uint8_t *)(&__MBAR[0xB134]))
|
||||||
|
#define MCF_USB_EP1OUTSR (*(volatile uint8_t *)(&__MBAR[0xB135]))
|
||||||
|
#define MCF_USB_EP1OUTSFR (*(volatile uint16_t*)(&__MBAR[0xB13E]))
|
||||||
|
#define MCF_USB_EP1INACR (*(volatile uint8_t *)(&__MBAR[0xB149]))
|
||||||
|
#define MCF_USB_EP1INMPSR (*(volatile uint16_t*)(&__MBAR[0xB14A]))
|
||||||
|
#define MCF_USB_EP1INIFR (*(volatile uint8_t *)(&__MBAR[0xB14C]))
|
||||||
|
#define MCF_USB_EP1INSR (*(volatile uint8_t *)(&__MBAR[0xB14D]))
|
||||||
|
#define MCF_USB_EP1INSFR (*(volatile uint16_t*)(&__MBAR[0xB156]))
|
||||||
|
#define MCF_USB_EP2OUTACR (*(volatile uint8_t *)(&__MBAR[0xB161]))
|
||||||
|
#define MCF_USB_EP2OUTMPSR (*(volatile uint16_t*)(&__MBAR[0xB162]))
|
||||||
|
#define MCF_USB_EP2OUTIFR (*(volatile uint8_t *)(&__MBAR[0xB164]))
|
||||||
|
#define MCF_USB_EP2OUTSR (*(volatile uint8_t *)(&__MBAR[0xB165]))
|
||||||
|
#define MCF_USB_EP2OUTSFR (*(volatile uint16_t*)(&__MBAR[0xB16E]))
|
||||||
|
#define MCF_USB_EP2INACR (*(volatile uint8_t *)(&__MBAR[0xB179]))
|
||||||
|
#define MCF_USB_EP2INMPSR (*(volatile uint16_t*)(&__MBAR[0xB17A]))
|
||||||
|
#define MCF_USB_EP2INIFR (*(volatile uint8_t *)(&__MBAR[0xB17C]))
|
||||||
|
#define MCF_USB_EP2INSR (*(volatile uint8_t *)(&__MBAR[0xB17D]))
|
||||||
|
#define MCF_USB_EP2INSFR (*(volatile uint16_t*)(&__MBAR[0xB186]))
|
||||||
|
#define MCF_USB_EP3OUTACR (*(volatile uint8_t *)(&__MBAR[0xB191]))
|
||||||
|
#define MCF_USB_EP3OUTMPSR (*(volatile uint16_t*)(&__MBAR[0xB192]))
|
||||||
|
#define MCF_USB_EP3OUTIFR (*(volatile uint8_t *)(&__MBAR[0xB194]))
|
||||||
|
#define MCF_USB_EP3OUTSR (*(volatile uint8_t *)(&__MBAR[0xB195]))
|
||||||
|
#define MCF_USB_EP3OUTSFR (*(volatile uint16_t*)(&__MBAR[0xB19E]))
|
||||||
|
#define MCF_USB_EP3INACR (*(volatile uint8_t *)(&__MBAR[0xB1A9]))
|
||||||
|
#define MCF_USB_EP3INMPSR (*(volatile uint16_t*)(&__MBAR[0xB1AA]))
|
||||||
|
#define MCF_USB_EP3INIFR (*(volatile uint8_t *)(&__MBAR[0xB1AC]))
|
||||||
|
#define MCF_USB_EP3INSR (*(volatile uint8_t *)(&__MBAR[0xB1AD]))
|
||||||
|
#define MCF_USB_EP3INSFR (*(volatile uint16_t*)(&__MBAR[0xB1B6]))
|
||||||
|
#define MCF_USB_EP4OUTACR (*(volatile uint8_t *)(&__MBAR[0xB1C1]))
|
||||||
|
#define MCF_USB_EP4OUTMPSR (*(volatile uint16_t*)(&__MBAR[0xB1C2]))
|
||||||
|
#define MCF_USB_EP4OUTIFR (*(volatile uint8_t *)(&__MBAR[0xB1C4]))
|
||||||
|
#define MCF_USB_EP4OUTSR (*(volatile uint8_t *)(&__MBAR[0xB1C5]))
|
||||||
|
#define MCF_USB_EP4OUTSFR (*(volatile uint16_t*)(&__MBAR[0xB1CE]))
|
||||||
|
#define MCF_USB_EP4INACR (*(volatile uint8_t *)(&__MBAR[0xB1D9]))
|
||||||
|
#define MCF_USB_EP4INMPSR (*(volatile uint16_t*)(&__MBAR[0xB1DA]))
|
||||||
|
#define MCF_USB_EP4INIFR (*(volatile uint8_t *)(&__MBAR[0xB1DC]))
|
||||||
|
#define MCF_USB_EP4INSR (*(volatile uint8_t *)(&__MBAR[0xB1DD]))
|
||||||
|
#define MCF_USB_EP4INSFR (*(volatile uint16_t*)(&__MBAR[0xB1E6]))
|
||||||
|
#define MCF_USB_EP5OUTACR (*(volatile uint8_t *)(&__MBAR[0xB1F1]))
|
||||||
|
#define MCF_USB_EP5OUTMPSR (*(volatile uint16_t*)(&__MBAR[0xB1F2]))
|
||||||
|
#define MCF_USB_EP5OUTIFR (*(volatile uint8_t *)(&__MBAR[0xB1F4]))
|
||||||
|
#define MCF_USB_EP5OUTSR (*(volatile uint8_t *)(&__MBAR[0xB1F5]))
|
||||||
|
#define MCF_USB_EP5OUTSFR (*(volatile uint16_t*)(&__MBAR[0xB1FE]))
|
||||||
|
#define MCF_USB_EP5INACR (*(volatile uint8_t *)(&__MBAR[0xB209]))
|
||||||
|
#define MCF_USB_EP5INMPSR (*(volatile uint16_t*)(&__MBAR[0xB20A]))
|
||||||
|
#define MCF_USB_EP5INIFR (*(volatile uint8_t *)(&__MBAR[0xB20C]))
|
||||||
|
#define MCF_USB_EP5INSR (*(volatile uint8_t *)(&__MBAR[0xB20D]))
|
||||||
|
#define MCF_USB_EP5INSFR (*(volatile uint16_t*)(&__MBAR[0xB216]))
|
||||||
|
#define MCF_USB_EP6OUTACR (*(volatile uint8_t *)(&__MBAR[0xB221]))
|
||||||
|
#define MCF_USB_EP6OUTMPSR (*(volatile uint16_t*)(&__MBAR[0xB222]))
|
||||||
|
#define MCF_USB_EP6OUTIFR (*(volatile uint8_t *)(&__MBAR[0xB224]))
|
||||||
|
#define MCF_USB_EP6OUTSR (*(volatile uint8_t *)(&__MBAR[0xB225]))
|
||||||
|
#define MCF_USB_EP6OUTSFR (*(volatile uint16_t*)(&__MBAR[0xB22E]))
|
||||||
|
#define MCF_USB_EP6INACR (*(volatile uint8_t *)(&__MBAR[0xB239]))
|
||||||
|
#define MCF_USB_EP6INMPSR (*(volatile uint16_t*)(&__MBAR[0xB23A]))
|
||||||
|
#define MCF_USB_EP6INIFR (*(volatile uint8_t *)(&__MBAR[0xB23C]))
|
||||||
|
#define MCF_USB_EP6INSR (*(volatile uint8_t *)(&__MBAR[0xB23D]))
|
||||||
|
#define MCF_USB_EP6INSFR (*(volatile uint16_t*)(&__MBAR[0xB246]))
|
||||||
|
#define MCF_USB_USBSR (*(volatile uint32_t*)(&__MBAR[0xB400]))
|
||||||
|
#define MCF_USB_USBCR (*(volatile uint32_t*)(&__MBAR[0xB404]))
|
||||||
|
#define MCF_USB_DRAMCR (*(volatile uint32_t*)(&__MBAR[0xB408]))
|
||||||
|
#define MCF_USB_DRAMDR (*(volatile uint32_t*)(&__MBAR[0xB40C]))
|
||||||
|
#define MCF_USB_USBISR (*(volatile uint32_t*)(&__MBAR[0xB410]))
|
||||||
|
#define MCF_USB_USBIMR (*(volatile uint32_t*)(&__MBAR[0xB414]))
|
||||||
|
#define MCF_USB_EP0STAT (*(volatile uint32_t*)(&__MBAR[0xB440]))
|
||||||
|
#define MCF_USB_EP0ISR (*(volatile uint32_t*)(&__MBAR[0xB444]))
|
||||||
|
#define MCF_USB_EP0IMR (*(volatile uint32_t*)(&__MBAR[0xB448]))
|
||||||
|
#define MCF_USB_EP0FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB44C]))
|
||||||
|
#define MCF_USB_EP0FDR (*(volatile uint32_t*)(&__MBAR[0xB450]))
|
||||||
|
#define MCF_USB_EP0FSR (*(volatile uint32_t*)(&__MBAR[0xB454]))
|
||||||
|
#define MCF_USB_EP0FCR (*(volatile uint32_t*)(&__MBAR[0xB458]))
|
||||||
|
#define MCF_USB_EP0FAR (*(volatile uint32_t*)(&__MBAR[0xB45C]))
|
||||||
|
#define MCF_USB_EP0FRP (*(volatile uint32_t*)(&__MBAR[0xB460]))
|
||||||
|
#define MCF_USB_EP0FWP (*(volatile uint32_t*)(&__MBAR[0xB464]))
|
||||||
|
#define MCF_USB_EP0LRFP (*(volatile uint32_t*)(&__MBAR[0xB468]))
|
||||||
|
#define MCF_USB_EP0LWFP (*(volatile uint32_t*)(&__MBAR[0xB46C]))
|
||||||
|
#define MCF_USB_EP1STAT (*(volatile uint32_t*)(&__MBAR[0xB470]))
|
||||||
|
#define MCF_USB_EP1ISR (*(volatile uint32_t*)(&__MBAR[0xB474]))
|
||||||
|
#define MCF_USB_EP1IMR (*(volatile uint32_t*)(&__MBAR[0xB478]))
|
||||||
|
#define MCF_USB_EP1FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB47C]))
|
||||||
|
#define MCF_USB_EP1FDR (*(volatile uint32_t*)(&__MBAR[0xB480]))
|
||||||
|
#define MCF_USB_EP1FSR (*(volatile uint32_t*)(&__MBAR[0xB484]))
|
||||||
|
#define MCF_USB_EP1FCR (*(volatile uint32_t*)(&__MBAR[0xB488]))
|
||||||
|
#define MCF_USB_EP1FAR (*(volatile uint32_t*)(&__MBAR[0xB48C]))
|
||||||
|
#define MCF_USB_EP1FRP (*(volatile uint32_t*)(&__MBAR[0xB490]))
|
||||||
|
#define MCF_USB_EP1FWP (*(volatile uint32_t*)(&__MBAR[0xB494]))
|
||||||
|
#define MCF_USB_EP1LRFP (*(volatile uint32_t*)(&__MBAR[0xB498]))
|
||||||
|
#define MCF_USB_EP1LWFP (*(volatile uint32_t*)(&__MBAR[0xB49C]))
|
||||||
|
#define MCF_USB_EP2STAT (*(volatile uint32_t*)(&__MBAR[0xB4A0]))
|
||||||
|
#define MCF_USB_EP2ISR (*(volatile uint32_t*)(&__MBAR[0xB4A4]))
|
||||||
|
#define MCF_USB_EP2IMR (*(volatile uint32_t*)(&__MBAR[0xB4A8]))
|
||||||
|
#define MCF_USB_EP2FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB4AC]))
|
||||||
|
#define MCF_USB_EP2FDR (*(volatile uint32_t*)(&__MBAR[0xB4B0]))
|
||||||
|
#define MCF_USB_EP2FSR (*(volatile uint32_t*)(&__MBAR[0xB4B4]))
|
||||||
|
#define MCF_USB_EP2FCR (*(volatile uint32_t*)(&__MBAR[0xB4B8]))
|
||||||
|
#define MCF_USB_EP2FAR (*(volatile uint32_t*)(&__MBAR[0xB4BC]))
|
||||||
|
#define MCF_USB_EP2FRP (*(volatile uint32_t*)(&__MBAR[0xB4C0]))
|
||||||
|
#define MCF_USB_EP2FWP (*(volatile uint32_t*)(&__MBAR[0xB4C4]))
|
||||||
|
#define MCF_USB_EP2LRFP (*(volatile uint32_t*)(&__MBAR[0xB4C8]))
|
||||||
|
#define MCF_USB_EP2LWFP (*(volatile uint32_t*)(&__MBAR[0xB4CC]))
|
||||||
|
#define MCF_USB_EP3STAT (*(volatile uint32_t*)(&__MBAR[0xB4D0]))
|
||||||
|
#define MCF_USB_EP3ISR (*(volatile uint32_t*)(&__MBAR[0xB4D4]))
|
||||||
|
#define MCF_USB_EP3IMR (*(volatile uint32_t*)(&__MBAR[0xB4D8]))
|
||||||
|
#define MCF_USB_EP3FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB4DC]))
|
||||||
|
#define MCF_USB_EP3FDR (*(volatile uint32_t*)(&__MBAR[0xB4E0]))
|
||||||
|
#define MCF_USB_EP3FSR (*(volatile uint32_t*)(&__MBAR[0xB4E4]))
|
||||||
|
#define MCF_USB_EP3FCR (*(volatile uint32_t*)(&__MBAR[0xB4E8]))
|
||||||
|
#define MCF_USB_EP3FAR (*(volatile uint32_t*)(&__MBAR[0xB4EC]))
|
||||||
|
#define MCF_USB_EP3FRP (*(volatile uint32_t*)(&__MBAR[0xB4F0]))
|
||||||
|
#define MCF_USB_EP3FWP (*(volatile uint32_t*)(&__MBAR[0xB4F4]))
|
||||||
|
#define MCF_USB_EP3LRFP (*(volatile uint32_t*)(&__MBAR[0xB4F8]))
|
||||||
|
#define MCF_USB_EP3LWFP (*(volatile uint32_t*)(&__MBAR[0xB4FC]))
|
||||||
|
#define MCF_USB_EP4STAT (*(volatile uint32_t*)(&__MBAR[0xB500]))
|
||||||
|
#define MCF_USB_EP4ISR (*(volatile uint32_t*)(&__MBAR[0xB504]))
|
||||||
|
#define MCF_USB_EP4IMR (*(volatile uint32_t*)(&__MBAR[0xB508]))
|
||||||
|
#define MCF_USB_EP4FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB50C]))
|
||||||
|
#define MCF_USB_EP4FDR (*(volatile uint32_t*)(&__MBAR[0xB510]))
|
||||||
|
#define MCF_USB_EP4FSR (*(volatile uint32_t*)(&__MBAR[0xB514]))
|
||||||
|
#define MCF_USB_EP4FCR (*(volatile uint32_t*)(&__MBAR[0xB518]))
|
||||||
|
#define MCF_USB_EP4FAR (*(volatile uint32_t*)(&__MBAR[0xB51C]))
|
||||||
|
#define MCF_USB_EP4FRP (*(volatile uint32_t*)(&__MBAR[0xB520]))
|
||||||
|
#define MCF_USB_EP4FWP (*(volatile uint32_t*)(&__MBAR[0xB524]))
|
||||||
|
#define MCF_USB_EP4LRFP (*(volatile uint32_t*)(&__MBAR[0xB528]))
|
||||||
|
#define MCF_USB_EP4LWFP (*(volatile uint32_t*)(&__MBAR[0xB52C]))
|
||||||
|
#define MCF_USB_EP5STAT (*(volatile uint32_t*)(&__MBAR[0xB530]))
|
||||||
|
#define MCF_USB_EP5ISR (*(volatile uint32_t*)(&__MBAR[0xB534]))
|
||||||
|
#define MCF_USB_EP5IMR (*(volatile uint32_t*)(&__MBAR[0xB538]))
|
||||||
|
#define MCF_USB_EP5FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB53C]))
|
||||||
|
#define MCF_USB_EP5FDR (*(volatile uint32_t*)(&__MBAR[0xB540]))
|
||||||
|
#define MCF_USB_EP5FSR (*(volatile uint32_t*)(&__MBAR[0xB544]))
|
||||||
|
#define MCF_USB_EP5FCR (*(volatile uint32_t*)(&__MBAR[0xB548]))
|
||||||
|
#define MCF_USB_EP5FAR (*(volatile uint32_t*)(&__MBAR[0xB54C]))
|
||||||
|
#define MCF_USB_EP5FRP (*(volatile uint32_t*)(&__MBAR[0xB550]))
|
||||||
|
#define MCF_USB_EP5FWP (*(volatile uint32_t*)(&__MBAR[0xB554]))
|
||||||
|
#define MCF_USB_EP5LRFP (*(volatile uint32_t*)(&__MBAR[0xB558]))
|
||||||
|
#define MCF_USB_EP5LWFP (*(volatile uint32_t*)(&__MBAR[0xB55C]))
|
||||||
|
#define MCF_USB_EP6STAT (*(volatile uint32_t*)(&__MBAR[0xB560]))
|
||||||
|
#define MCF_USB_EP6ISR (*(volatile uint32_t*)(&__MBAR[0xB564]))
|
||||||
|
#define MCF_USB_EP6IMR (*(volatile uint32_t*)(&__MBAR[0xB568]))
|
||||||
|
#define MCF_USB_EP6FRCFGR (*(volatile uint32_t*)(&__MBAR[0xB56C]))
|
||||||
|
#define MCF_USB_EP6FDR (*(volatile uint32_t*)(&__MBAR[0xB570]))
|
||||||
|
#define MCF_USB_EP6FSR (*(volatile uint32_t*)(&__MBAR[0xB574]))
|
||||||
|
#define MCF_USB_EP6FCR (*(volatile uint32_t*)(&__MBAR[0xB578]))
|
||||||
|
#define MCF_USB_EP6FAR (*(volatile uint32_t*)(&__MBAR[0xB57C]))
|
||||||
|
#define MCF_USB_EP6FRP (*(volatile uint32_t*)(&__MBAR[0xB580]))
|
||||||
|
#define MCF_USB_EP6FWP (*(volatile uint32_t*)(&__MBAR[0xB584]))
|
||||||
|
#define MCF_USB_EP6LRFP (*(volatile uint32_t*)(&__MBAR[0xB588]))
|
||||||
|
#define MCF_USB_EP6LWFP (*(volatile uint32_t*)(&__MBAR[0xB58C]))
|
||||||
|
#define MCF_USB_IFR(x) (*(volatile uint16_t*)(&__MBAR[0xB040 + ((x)*0x2)]))
|
||||||
|
#define MCF_USB_EPOUTACR(x) (*(volatile uint8_t *)(&__MBAR[0xB131 + ((x-1)*0x30)]))
|
||||||
|
#define MCF_USB_EPOUTMPSR(x) (*(volatile uint16_t*)(&__MBAR[0xB132 + ((x-1)*0x30)]))
|
||||||
|
#define MCF_USB_EPOUTIFR(x) (*(volatile uint8_t *)(&__MBAR[0xB134 + ((x-1)*0x30)]))
|
||||||
|
#define MCF_USB_EPOUTSR(x) (*(volatile uint8_t *)(&__MBAR[0xB135 + ((x-1)*0x30)]))
|
||||||
|
#define MCF_USB_EPOUTSFR(x) (*(volatile uint16_t*)(&__MBAR[0xB13E + ((x-1)*0x30)]))
|
||||||
|
#define MCF_USB_EPINACR(x) (*(volatile uint8_t *)(&__MBAR[0xB149 + ((x-1)*0x30)]))
|
||||||
|
#define MCF_USB_EPINMPSR(x) (*(volatile uint16_t*)(&__MBAR[0xB14A + ((x-1)*0x30)]))
|
||||||
|
#define MCF_USB_EPINIFR(x) (*(volatile uint8_t *)(&__MBAR[0xB14C + ((x-1)*0x30)]))
|
||||||
|
#define MCF_USB_EPINSR(x) (*(volatile uint8_t *)(&__MBAR[0xB14D + ((x-1)*0x30)]))
|
||||||
|
#define MCF_USB_EPINSFR(x) (*(volatile uint16_t*)(&__MBAR[0xB156 + ((x-1)*0x30)]))
|
||||||
|
#define MCF_USB_EPSTAT(x) (*(volatile uint32_t*)(&__MBAR[0xB440 + ((x)*0x30)]))
|
||||||
|
#define MCF_USB_EPISR(x) (*(volatile uint32_t*)(&__MBAR[0xB444 + ((x)*0x30)]))
|
||||||
|
#define MCF_USB_EPIMR(x) (*(volatile uint32_t*)(&__MBAR[0xB448 + ((x)*0x30)]))
|
||||||
|
#define MCF_USB_EPFRCFGR(x) (*(volatile uint32_t*)(&__MBAR[0xB44C + ((x)*0x30)]))
|
||||||
|
#define MCF_USB_EPFDR(x) (*(volatile uint32_t*)(&__MBAR[0xB450 + ((x)*0x30)]))
|
||||||
|
#define MCF_USB_EPFSR(x) (*(volatile uint32_t*)(&__MBAR[0xB454 + ((x)*0x30)]))
|
||||||
|
#define MCF_USB_EPFCR(x) (*(volatile uint32_t*)(&__MBAR[0xB458 + ((x)*0x30)]))
|
||||||
|
#define MCF_USB_EPFAR(x) (*(volatile uint32_t*)(&__MBAR[0xB45C + ((x)*0x30)]))
|
||||||
|
#define MCF_USB_EPFRP(x) (*(volatile uint32_t*)(&__MBAR[0xB460 + ((x)*0x30)]))
|
||||||
|
#define MCF_USB_EPFWP(x) (*(volatile uint32_t*)(&__MBAR[0xB464 + ((x)*0x30)]))
|
||||||
|
#define MCF_USB_EPLRFP(x) (*(volatile uint32_t*)(&__MBAR[0xB468 + ((x)*0x30)]))
|
||||||
|
#define MCF_USB_EPLWFP(x) (*(volatile uint32_t*)(&__MBAR[0xB46C + ((x)*0x30)]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_USBAISR */
|
||||||
|
#define MCF_USB_USBAISR_SETUP (0x1)
|
||||||
|
#define MCF_USB_USBAISR_IN (0x2)
|
||||||
|
#define MCF_USB_USBAISR_OUT (0x4)
|
||||||
|
#define MCF_USB_USBAISR_EPHALT (0x8)
|
||||||
|
#define MCF_USB_USBAISR_TRANSERR (0x10)
|
||||||
|
#define MCF_USB_USBAISR_ACK (0x20)
|
||||||
|
#define MCF_USB_USBAISR_CTROVFL (0x40)
|
||||||
|
#define MCF_USB_USBAISR_EPSTALL (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_USBAIMR */
|
||||||
|
#define MCF_USB_USBAIMR_SETUPEN (0x1)
|
||||||
|
#define MCF_USB_USBAIMR_INEN (0x2)
|
||||||
|
#define MCF_USB_USBAIMR_OUTEN (0x4)
|
||||||
|
#define MCF_USB_USBAIMR_EPHALTEN (0x8)
|
||||||
|
#define MCF_USB_USBAIMR_TRANSERREN (0x10)
|
||||||
|
#define MCF_USB_USBAIMR_ACKEN (0x20)
|
||||||
|
#define MCF_USB_USBAIMR_CTROVFLEN (0x40)
|
||||||
|
#define MCF_USB_USBAIMR_EPSTALLEN (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPINFO */
|
||||||
|
#define MCF_USB_EPINFO_EPDIR (0x1)
|
||||||
|
#define MCF_USB_EPINFO_EPNUM(x) (((x)&0x7)<<0x1)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_CFGR */
|
||||||
|
#define MCF_USB_CFGR_Configuration_Value(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_CFGAR */
|
||||||
|
#define MCF_USB_CFGAR_RESERVED (0xA0)
|
||||||
|
#define MCF_USB_CFGAR_RMTWKEUP (0xE0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_SPEEDR */
|
||||||
|
#define MCF_USB_SPEEDR_SPEED(x) (((x)&0x3)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_FRMNUMR */
|
||||||
|
#define MCF_USB_FRMNUMR_FRMNUM(x) (((x)&0xFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPTNR */
|
||||||
|
#define MCF_USB_EPTNR_EP1T(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_USB_EPTNR_EP2T(x) (((x)&0x3)<<0x2)
|
||||||
|
#define MCF_USB_EPTNR_EP3T(x) (((x)&0x3)<<0x4)
|
||||||
|
#define MCF_USB_EPTNR_EP4T(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_USB_EPTNR_EP5T(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_USB_EPTNR_EP6T(x) (((x)&0x3)<<0xA)
|
||||||
|
#define MCF_USB_EPTNR_EPnT1 (0)
|
||||||
|
#define MCF_USB_EPTNR_EPnT2 (0x1)
|
||||||
|
#define MCF_USB_EPTNR_EPnT3 (0x2)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_IFUR */
|
||||||
|
#define MCF_USB_IFUR_ALTSET(x) (((x)&0xFF)<<0)
|
||||||
|
#define MCF_USB_IFUR_IFNUM(x) (((x)&0xFF)<<0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_IFR */
|
||||||
|
#define MCF_USB_IFR_ALTSET(x) (((x)&0xFF)<<0)
|
||||||
|
#define MCF_USB_IFR_IFNUM(x) (((x)&0xFF)<<0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_PPCNT */
|
||||||
|
#define MCF_USB_PPCNT_PPCNT(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_DPCNT */
|
||||||
|
#define MCF_USB_DPCNT_DPCNT(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_CRCECNT */
|
||||||
|
#define MCF_USB_CRCECNT_CRCECNT(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_BSECNT */
|
||||||
|
#define MCF_USB_BSECNT_BSECNT(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_PIDECNT */
|
||||||
|
#define MCF_USB_PIDECNT_PIDECNT(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_FRMECNT */
|
||||||
|
#define MCF_USB_FRMECNT_FRMECNT(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_TXPCNT */
|
||||||
|
#define MCF_USB_TXPCNT_TXPCNT(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_CNTOVR */
|
||||||
|
#define MCF_USB_CNTOVR_PPCNT (0x1)
|
||||||
|
#define MCF_USB_CNTOVR_DPCNT (0x2)
|
||||||
|
#define MCF_USB_CNTOVR_CRCECNT (0x4)
|
||||||
|
#define MCF_USB_CNTOVR_BSECNT (0x8)
|
||||||
|
#define MCF_USB_CNTOVR_PIDECNT (0x10)
|
||||||
|
#define MCF_USB_CNTOVR_FRMECNT (0x20)
|
||||||
|
#define MCF_USB_CNTOVR_TXPCNT (0x40)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EP0ACR */
|
||||||
|
#define MCF_USB_EP0ACR_TTYPE(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_USB_EP0ACR_TTYPE_CTRL (0)
|
||||||
|
#define MCF_USB_EP0ACR_TTYPE_ISOC (0x1)
|
||||||
|
#define MCF_USB_EP0ACR_TTYPE_BULK (0x2)
|
||||||
|
#define MCF_USB_EP0ACR_TTYPE_INT (0x3)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EP0MPSR */
|
||||||
|
#define MCF_USB_EP0MPSR_MAXPKTSZ(x) (((x)&0x7FF)<<0)
|
||||||
|
#define MCF_USB_EP0MPSR_ADDTRANS(x) (((x)&0x3)<<0xB)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EP0IFR */
|
||||||
|
#define MCF_USB_EP0IFR_IFNUM(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EP0SR */
|
||||||
|
#define MCF_USB_EP0SR_HALT (0x1)
|
||||||
|
#define MCF_USB_EP0SR_ACTIVE (0x2)
|
||||||
|
#define MCF_USB_EP0SR_PSTALL (0x4)
|
||||||
|
#define MCF_USB_EP0SR_CCOMP (0x8)
|
||||||
|
#define MCF_USB_EP0SR_TXZERO (0x20)
|
||||||
|
#define MCF_USB_EP0SR_INT (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_BMRTR */
|
||||||
|
#define MCF_USB_BMRTR_REC(x) (((x)&0x1F)<<0)
|
||||||
|
#define MCF_USB_BMRTR_REC_DEVICE (0)
|
||||||
|
#define MCF_USB_BMRTR_REC_INTERFACE (0x1)
|
||||||
|
#define MCF_USB_BMRTR_REC_ENDPOINT (0x2)
|
||||||
|
#define MCF_USB_BMRTR_REC_OTHER (0x3)
|
||||||
|
#define MCF_USB_BMRTR_TYPE(x) (((x)&0x3)<<0x5)
|
||||||
|
#define MCF_USB_BMRTR_TYPE_STANDARD (0)
|
||||||
|
#define MCF_USB_BMRTR_TYPE_CLASS (0x20)
|
||||||
|
#define MCF_USB_BMRTR_TYPE_VENDOR (0x40)
|
||||||
|
#define MCF_USB_BMRTR_DIR (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_BRTR */
|
||||||
|
#define MCF_USB_BRTR_BREQ(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_WVALUER */
|
||||||
|
#define MCF_USB_WVALUER_WVALUE(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_WINDEXR */
|
||||||
|
#define MCF_USB_WINDEXR_WINDEX(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_WLENGTHR */
|
||||||
|
#define MCF_USB_WLENGTHR_WLENGTH(x) (((x)&0xFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPOUTACR */
|
||||||
|
#define MCF_USB_EPOUTACR_TTYPE(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_USB_EPOUTACR_TTYPE_ISOC (0x1)
|
||||||
|
#define MCF_USB_EPOUTACR_TTYPE_BULK (0x2)
|
||||||
|
#define MCF_USB_EPOUTACR_TTYPE_INT (0x3)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPOUTMPSR */
|
||||||
|
#define MCF_USB_EPOUTMPSR_MAXPKTSZ(x) (((x)&0x7FF)<<0)
|
||||||
|
#define MCF_USB_EPOUTMPSR_ADDTRANS(x) (((x)&0x3)<<0xB)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPOUTIFR */
|
||||||
|
#define MCF_USB_EPOUTIFR_IFNUM(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPOUTSR */
|
||||||
|
#define MCF_USB_EPOUTSR_HALT (0x1)
|
||||||
|
#define MCF_USB_EPOUTSR_ACTIVE (0x2)
|
||||||
|
#define MCF_USB_EPOUTSR_PSTALL (0x4)
|
||||||
|
#define MCF_USB_EPOUTSR_CCOMP (0x8)
|
||||||
|
#define MCF_USB_EPOUTSR_TXZERO (0x20)
|
||||||
|
#define MCF_USB_EPOUTSR_INT (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPOUTSFR */
|
||||||
|
#define MCF_USB_EPOUTSFR_FRMNUM(x) (((x)&0x7FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPINACR */
|
||||||
|
#define MCF_USB_EPINACR_TTYPE(x) (((x)&0x3)<<0)
|
||||||
|
#define MCF_USB_EPINACR_TTYPE_ISOC (0x1)
|
||||||
|
#define MCF_USB_EPINACR_TTYPE_BULK (0x2)
|
||||||
|
#define MCF_USB_EPINACR_TTYPE_INT (0x3)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPINMPSR */
|
||||||
|
#define MCF_USB_EPINMPSR_MAXPKTSZ(x) (((x)&0x7FF)<<0)
|
||||||
|
#define MCF_USB_EPINMPSR_ADDTRANS(x) (((x)&0x3)<<0xB)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPINIFR */
|
||||||
|
#define MCF_USB_EPINIFR_IFNUM(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPINSR */
|
||||||
|
#define MCF_USB_EPINSR_HALT (0x1)
|
||||||
|
#define MCF_USB_EPINSR_ACTIVE (0x2)
|
||||||
|
#define MCF_USB_EPINSR_PSTALL (0x4)
|
||||||
|
#define MCF_USB_EPINSR_CCOMP (0x8)
|
||||||
|
#define MCF_USB_EPINSR_TXZERO (0x20)
|
||||||
|
#define MCF_USB_EPINSR_INT (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPINSFR */
|
||||||
|
#define MCF_USB_EPINSFR_FRMNUM(x) (((x)&0x7FF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_USBSR */
|
||||||
|
#define MCF_USB_USBSR_ISOERREP(x) (((x)&0xF)<<0)
|
||||||
|
#define MCF_USB_USBSR_SUSP (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_USBCR */
|
||||||
|
#define MCF_USB_USBCR_RESUME (0x1)
|
||||||
|
#define MCF_USB_USBCR_APPLOCK (0x2)
|
||||||
|
#define MCF_USB_USBCR_RST (0x4)
|
||||||
|
#define MCF_USB_USBCR_RAMEN (0x8)
|
||||||
|
#define MCF_USB_USBCR_RAMSPLIT (0x20)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_DRAMCR */
|
||||||
|
#define MCF_USB_DRAMCR_DADR(x) (((x)&0x3FF)<<0)
|
||||||
|
#define MCF_USB_DRAMCR_DSIZE(x) (((x)&0x7FF)<<0x10)
|
||||||
|
#define MCF_USB_DRAMCR_BSY (0x40000000)
|
||||||
|
#define MCF_USB_DRAMCR_START (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_DRAMDR */
|
||||||
|
#define MCF_USB_DRAMDR_DDAT(x) (((x)&0xFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_USBISR */
|
||||||
|
#define MCF_USB_USBISR_ISOERR (0x1)
|
||||||
|
#define MCF_USB_USBISR_FTUNLCK (0x2)
|
||||||
|
#define MCF_USB_USBISR_SUSP (0x4)
|
||||||
|
#define MCF_USB_USBISR_RES (0x8)
|
||||||
|
#define MCF_USB_USBISR_UPDSOF (0x10)
|
||||||
|
#define MCF_USB_USBISR_RSTSTOP (0x20)
|
||||||
|
#define MCF_USB_USBISR_SOF (0x40)
|
||||||
|
#define MCF_USB_USBISR_MSOF (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_USBIMR */
|
||||||
|
#define MCF_USB_USBIMR_ISOERR (0x1)
|
||||||
|
#define MCF_USB_USBIMR_FTUNLCK (0x2)
|
||||||
|
#define MCF_USB_USBIMR_SUSP (0x4)
|
||||||
|
#define MCF_USB_USBIMR_RES (0x8)
|
||||||
|
#define MCF_USB_USBIMR_UPDSOF (0x10)
|
||||||
|
#define MCF_USB_USBIMR_RSTSTOP (0x20)
|
||||||
|
#define MCF_USB_USBIMR_SOF (0x40)
|
||||||
|
#define MCF_USB_USBIMR_MSOF (0x80)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPSTAT */
|
||||||
|
#define MCF_USB_EPSTAT_RST (0x1)
|
||||||
|
#define MCF_USB_EPSTAT_FLUSH (0x2)
|
||||||
|
#define MCF_USB_EPSTAT_DIR (0x80)
|
||||||
|
#define MCF_USB_EPSTAT_BYTECNT(x) (((x)&0xFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPISR */
|
||||||
|
#define MCF_USB_EPISR_EOF (0x1)
|
||||||
|
#define MCF_USB_EPISR_EOT (0x4)
|
||||||
|
#define MCF_USB_EPISR_FIFOLO (0x10)
|
||||||
|
#define MCF_USB_EPISR_FIFOHI (0x20)
|
||||||
|
#define MCF_USB_EPISR_ERR (0x40)
|
||||||
|
#define MCF_USB_EPISR_EMT (0x80)
|
||||||
|
#define MCF_USB_EPISR_FU (0x100)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPIMR */
|
||||||
|
#define MCF_USB_EPIMR_EOF (0x1)
|
||||||
|
#define MCF_USB_EPIMR_EOT (0x4)
|
||||||
|
#define MCF_USB_EPIMR_FIFOLO (0x10)
|
||||||
|
#define MCF_USB_EPIMR_FIFOHI (0x20)
|
||||||
|
#define MCF_USB_EPIMR_ERR (0x40)
|
||||||
|
#define MCF_USB_EPIMR_EMT (0x80)
|
||||||
|
#define MCF_USB_EPIMR_FU (0x100)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPFRCFGR */
|
||||||
|
#define MCF_USB_EPFRCFGR_DEPTH(x) (((x)&0x1FFF)<<0)
|
||||||
|
#define MCF_USB_EPFRCFGR_BASE(x) (((x)&0xFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPFDR */
|
||||||
|
#define MCF_USB_EPFDR_RX_TXDATA(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPFSR */
|
||||||
|
#define MCF_USB_EPFSR_EMT (0x10000)
|
||||||
|
#define MCF_USB_EPFSR_ALRM (0x20000)
|
||||||
|
#define MCF_USB_EPFSR_FU (0x40000)
|
||||||
|
#define MCF_USB_EPFSR_FR (0x80000)
|
||||||
|
#define MCF_USB_EPFSR_OF (0x100000)
|
||||||
|
#define MCF_USB_EPFSR_UF (0x200000)
|
||||||
|
#define MCF_USB_EPFSR_RXW (0x400000)
|
||||||
|
#define MCF_USB_EPFSR_FAE (0x800000)
|
||||||
|
#define MCF_USB_EPFSR_FRM(x) (((x)&0xF)<<0x18)
|
||||||
|
#define MCF_USB_EPFSR_TXW (0x40000000)
|
||||||
|
#define MCF_USB_EPFSR_IP (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPFCR */
|
||||||
|
#define MCF_USB_EPFCR_COUNTER(x) (((x)&0xFFFF)<<0)
|
||||||
|
#define MCF_USB_EPFCR_TXWMSK (0x40000)
|
||||||
|
#define MCF_USB_EPFCR_OFMSK (0x80000)
|
||||||
|
#define MCF_USB_EPFCR_UFMSK (0x100000)
|
||||||
|
#define MCF_USB_EPFCR_RXWMSK (0x200000)
|
||||||
|
#define MCF_USB_EPFCR_FAEMSK (0x400000)
|
||||||
|
#define MCF_USB_EPFCR_IPMSK (0x800000)
|
||||||
|
#define MCF_USB_EPFCR_GR(x) (((x)&0x7)<<0x18)
|
||||||
|
#define MCF_USB_EPFCR_FRM (0x8000000)
|
||||||
|
#define MCF_USB_EPFCR_TMR (0x10000000)
|
||||||
|
#define MCF_USB_EPFCR_WFR (0x20000000)
|
||||||
|
#define MCF_USB_EPFCR_SHAD (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPFAR */
|
||||||
|
#define MCF_USB_EPFAR_ALRMP(x) (((x)&0xFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPFRP */
|
||||||
|
#define MCF_USB_EPFRP_RP(x) (((x)&0xFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPFWP */
|
||||||
|
#define MCF_USB_EPFWP_WP(x) (((x)&0xFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPLRFP */
|
||||||
|
#define MCF_USB_EPLRFP_LRFP(x) (((x)&0xFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_USB_EPLWFP */
|
||||||
|
#define MCF_USB_EPLWFP_LWFP(x) (((x)&0xFFF)<<0)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_USB_H__ */
|
||||||
101
i2cspi_BaS_gcc/include/MCF5475_XLB.h
Normal file
101
i2cspi_BaS_gcc/include/MCF5475_XLB.h
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
/* Coldfire C Header File
|
||||||
|
* Copyright Freescale Semiconductor Inc
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* 2008/05/23 Revision: 0.81
|
||||||
|
*
|
||||||
|
* (c) Copyright UNIS, a.s. 1997-2008
|
||||||
|
* UNIS, a.s.
|
||||||
|
* Jundrovska 33
|
||||||
|
* 624 00 Brno
|
||||||
|
* Czech Republic
|
||||||
|
* http : www.processorexpert.com
|
||||||
|
* mail : info@processorexpert.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MCF5475_XLB_H__
|
||||||
|
#define __MCF5475_XLB_H__
|
||||||
|
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* XL Bus Arbiter (XLB)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_XLB_XARB_CFG (*(volatile uint32_t*)(&__MBAR[0x240]))
|
||||||
|
#define MCF_XLB_XARB_VER (*(volatile uint32_t*)(&__MBAR[0x244]))
|
||||||
|
#define MCF_XLB_XARB_SR (*(volatile uint32_t*)(&__MBAR[0x248]))
|
||||||
|
#define MCF_XLB_XARB_IMR (*(volatile uint32_t*)(&__MBAR[0x24C]))
|
||||||
|
#define MCF_XLB_XARB_ADRCAP (*(volatile uint32_t*)(&__MBAR[0x250]))
|
||||||
|
#define MCF_XLB_XARB_SIGCAP (*(volatile uint32_t*)(&__MBAR[0x254]))
|
||||||
|
#define MCF_XLB_XARB_ADRTO (*(volatile uint32_t*)(&__MBAR[0x258]))
|
||||||
|
#define MCF_XLB_XARB_DATTO (*(volatile uint32_t*)(&__MBAR[0x25C]))
|
||||||
|
#define MCF_XLB_XARB_BUSTO (*(volatile uint32_t*)(&__MBAR[0x260]))
|
||||||
|
#define MCF_XLB_XARB_PRIEN (*(volatile uint32_t*)(&__MBAR[0x264]))
|
||||||
|
#define MCF_XLB_XARB_PRI (*(volatile uint32_t*)(&__MBAR[0x268]))
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_XLB_XARB_CFG */
|
||||||
|
#define MCF_XLB_XARB_CFG_AT (0x2)
|
||||||
|
#define MCF_XLB_XARB_CFG_DT (0x4)
|
||||||
|
#define MCF_XLB_XARB_CFG_BA (0x8)
|
||||||
|
#define MCF_XLB_XARB_CFG_PM(x) (((x)&0x3)<<0x5)
|
||||||
|
#define MCF_XLB_XARB_CFG_SP(x) (((x)&0x7)<<0x8)
|
||||||
|
#define MCF_XLB_XARB_CFG_PLDIS (0x80000000)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_XLB_XARB_VER */
|
||||||
|
#define MCF_XLB_XARB_VER_VER(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_XLB_XARB_SR */
|
||||||
|
#define MCF_XLB_XARB_SR_AT (0x1)
|
||||||
|
#define MCF_XLB_XARB_SR_DT (0x2)
|
||||||
|
#define MCF_XLB_XARB_SR_BA (0x4)
|
||||||
|
#define MCF_XLB_XARB_SR_TTM (0x8)
|
||||||
|
#define MCF_XLB_XARB_SR_ECW (0x10)
|
||||||
|
#define MCF_XLB_XARB_SR_TTR (0x20)
|
||||||
|
#define MCF_XLB_XARB_SR_TTA (0x40)
|
||||||
|
#define MCF_XLB_XARB_SR_MM (0x80)
|
||||||
|
#define MCF_XLB_XARB_SR_SEA (0x100)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_XLB_XARB_IMR */
|
||||||
|
#define MCF_XLB_XARB_IMR_ATE (0x1)
|
||||||
|
#define MCF_XLB_XARB_IMR_DTE (0x2)
|
||||||
|
#define MCF_XLB_XARB_IMR_BAE (0x4)
|
||||||
|
#define MCF_XLB_XARB_IMR_TTME (0x8)
|
||||||
|
#define MCF_XLB_XARB_IMR_ECWE (0x10)
|
||||||
|
#define MCF_XLB_XARB_IMR_TTRE (0x20)
|
||||||
|
#define MCF_XLB_XARB_IMR_TTAE (0x40)
|
||||||
|
#define MCF_XLB_XARB_IMR_MME (0x80)
|
||||||
|
#define MCF_XLB_XARB_IMR_SEAE (0x100)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_XLB_XARB_ADRCAP */
|
||||||
|
#define MCF_XLB_XARB_ADRCAP_ADRCAP(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_XLB_XARB_SIGCAP */
|
||||||
|
#define MCF_XLB_XARB_SIGCAP_TT(x) (((x)&0x1F)<<0)
|
||||||
|
#define MCF_XLB_XARB_SIGCAP_TBST (0x20)
|
||||||
|
#define MCF_XLB_XARB_SIGCAP_TSIZ(x) (((x)&0x7)<<0x7)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_XLB_XARB_ADRTO */
|
||||||
|
#define MCF_XLB_XARB_ADRTO_ADRTO(x) (((x)&0xFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_XLB_XARB_DATTO */
|
||||||
|
#define MCF_XLB_XARB_DATTO_DATTO(x) (((x)&0xFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_XLB_XARB_BUSTO */
|
||||||
|
#define MCF_XLB_XARB_BUSTO_BUSTO(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_XLB_XARB_PRIEN */
|
||||||
|
#define MCF_XLB_XARB_PRIEN_M0 (0x1)
|
||||||
|
#define MCF_XLB_XARB_PRIEN_M2 (0x4)
|
||||||
|
#define MCF_XLB_XARB_PRIEN_M3 (0x8)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_XLB_XARB_PRI */
|
||||||
|
#define MCF_XLB_XARB_PRI_M0P(x) (((x)&0x7)<<0)
|
||||||
|
#define MCF_XLB_XARB_PRI_M2P(x) (((x)&0x7)<<0x8)
|
||||||
|
#define MCF_XLB_XARB_PRI_M3P(x) (((x)&0x7)<<0xC)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __MCF5475_XLB_H__ */
|
||||||
32
i2cspi_BaS_gcc/include/bas_printf.h
Normal file
32
i2cspi_BaS_gcc/include/bas_printf.h
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _BAS_PRINTF_H_
|
||||||
|
#define _BAS_PRINTF_H_
|
||||||
|
#include <stdarg.h>
|
||||||
|
typedef uint32_t size_t;
|
||||||
|
|
||||||
|
extern void xvsnprintf(char *str, size_t size, const char *fmt, va_list va);
|
||||||
|
extern void xvprintf(const char *fmt, va_list va);
|
||||||
|
extern void xprintf(const char *fmt, ...);
|
||||||
|
extern void xsnprintf(char *str, size_t size, const char *fmt, ...);
|
||||||
|
|
||||||
|
extern void display_progress(void);
|
||||||
|
|
||||||
|
#endif /* _BAS_PRINTF_H_ */
|
||||||
26
i2cspi_BaS_gcc/include/bas_string.h
Normal file
26
i2cspi_BaS_gcc/include/bas_string.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* bas_string.h
|
||||||
|
*
|
||||||
|
* Created on: 26.02.2013
|
||||||
|
* Author: mfro
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BAS_STRING_H_
|
||||||
|
#define BAS_STRING_H_
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
extern int strncmp(const char *s1, const char *s2, int max);
|
||||||
|
extern char *strcpy(char *dst, const char *src);
|
||||||
|
extern size_t strlen(const char *str);
|
||||||
|
extern char *strcat(char *dst, const char *src);
|
||||||
|
extern char *strncat(char *dst, const char *src, int max);
|
||||||
|
extern int atoi(const char *c);
|
||||||
|
|
||||||
|
#define isdigit(c) (((c) >= '0') && ((c) <= '9'))
|
||||||
|
#define isupper(c) ((c) >= 'A' && ((c) <= 'Z'))
|
||||||
|
#define islower(c) ((c) >= 'a' && ((c) <= 'z'))
|
||||||
|
#define isalpha(c) (isupper((c)) || islower(c))
|
||||||
|
#define tolower(c) (isupper(c) ? ((c) + 'a' - 'A') : (c))
|
||||||
|
|
||||||
|
#endif /* BAS_STRING_H_ */
|
||||||
37
i2cspi_BaS_gcc/include/bas_types.h
Normal file
37
i2cspi_BaS_gcc/include/bas_types.h
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* bas_types.h
|
||||||
|
*
|
||||||
|
* Created on: 17.11.2012
|
||||||
|
* Author: mfro
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2010 - 2012 F. Aschwanden
|
||||||
|
* Copyright 2011 - 2012 V. Riviere
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BAS_TYPES_H_
|
||||||
|
#define BAS_TYPES_H_
|
||||||
|
|
||||||
|
#ifndef __cplusplus
|
||||||
|
#include <stdbool.h>
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* BAS_TYPES_H_ */
|
||||||
32
i2cspi_BaS_gcc/include/cache.h
Normal file
32
i2cspi_BaS_gcc/include/cache.h
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#ifndef _CACHE_H_
|
||||||
|
#define _CACHE_H_
|
||||||
|
|
||||||
|
/*
|
||||||
|
* cache.h
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2010 - 2012 F. Aschwanden
|
||||||
|
* Copyright 2011 - 2012 V. Riviere
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
extern void flush_and_invalidate_caches(void);
|
||||||
|
|
||||||
|
#endif /* _CACHE_H_ */
|
||||||
90
i2cspi_BaS_gcc/include/diskio.h
Normal file
90
i2cspi_BaS_gcc/include/diskio.h
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
/*-----------------------------------------------------------------------
|
||||||
|
/ Low level disk interface modlue include file (C)ChaN, 2012
|
||||||
|
/-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef _DISKIO_DEFINED
|
||||||
|
#define _DISKIO_DEFINED
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define _USE_WRITE 1 /* 1: Enable disk_write function */
|
||||||
|
#define _USE_IOCTL 1 /* 1: Enable disk_ioctl fucntion */
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* Status of Disk Functions */
|
||||||
|
typedef uint8_t DSTATUS;
|
||||||
|
|
||||||
|
/* Results of Disk Functions */
|
||||||
|
typedef enum {
|
||||||
|
RES_OK = 0, /* 0: Successful */
|
||||||
|
RES_ERROR, /* 1: R/W Error */
|
||||||
|
RES_WRPRT, /* 2: Write Protected */
|
||||||
|
RES_NOTRDY, /* 3: Not Ready */
|
||||||
|
RES_PARERR /* 4: Invalid Parameter */
|
||||||
|
} DRESULT;
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------*/
|
||||||
|
/* Prototypes for disk control functions */
|
||||||
|
|
||||||
|
|
||||||
|
DSTATUS disk_initialize (uint8_t);
|
||||||
|
DSTATUS disk_status (uint8_t);
|
||||||
|
DRESULT disk_read (uint8_t, uint8_t*, uint32_t, uint8_t);
|
||||||
|
#if _READONLY == 0
|
||||||
|
DRESULT disk_write (uint8_t, const uint8_t*, uint32_t, uint8_t);
|
||||||
|
#endif
|
||||||
|
DRESULT disk_ioctl (uint8_t, uint8_t, void*);
|
||||||
|
|
||||||
|
|
||||||
|
/* Disk Status Bits (DSTATUS) */
|
||||||
|
#define STA_NOINIT 0x01 /* Drive not initialized */
|
||||||
|
#define STA_NODISK 0x02 /* No medium in the drive */
|
||||||
|
#define STA_PROTECT 0x04 /* Write protected */
|
||||||
|
|
||||||
|
|
||||||
|
/* Command code for disk_ioctrl fucntion */
|
||||||
|
|
||||||
|
/* Generic command (used by FatFs) */
|
||||||
|
#define CTRL_SYNC 0 /* Flush disk cache (for write functions) */
|
||||||
|
#define GET_SECTOR_COUNT 1 /* Get media size (for only f_mkfs()) */
|
||||||
|
#define GET_SECTOR_SIZE 2 /* Get sector size (for multiple sector size (_MAX_SS >= 1024)) */
|
||||||
|
#define GET_BLOCK_SIZE 3 /* Get erase block size (for only f_mkfs()) */
|
||||||
|
#define CTRL_ERASE_SECTOR 4 /* Force erased a block of sectors (for only _USE_ERASE) */
|
||||||
|
|
||||||
|
/* Generic command (not used by FatFs) */
|
||||||
|
#define CTRL_POWER 5 /* Get/Set power status */
|
||||||
|
#define CTRL_LOCK 6 /* Lock/Unlock media removal */
|
||||||
|
#define CTRL_EJECT 7 /* Eject media */
|
||||||
|
#define CTRL_FORMAT 8 /* Create physical format on the media */
|
||||||
|
|
||||||
|
/* MMC/SDC specific ioctl command */
|
||||||
|
#define MMC_GET_TYPE 10 /* Get card type */
|
||||||
|
#define MMC_GET_CSD 11 /* Get CSD */
|
||||||
|
#define MMC_GET_CID 12 /* Get CID */
|
||||||
|
#define MMC_GET_OCR 13 /* Get OCR */
|
||||||
|
#define MMC_GET_SDSTAT 14 /* Get SD status */
|
||||||
|
|
||||||
|
/* ATA/CF specific ioctl command */
|
||||||
|
#define ATA_GET_REV 20 /* Get F/W revision */
|
||||||
|
#define ATA_GET_MODEL 21 /* Get model name */
|
||||||
|
#define ATA_GET_SN 22 /* Get serial number */
|
||||||
|
|
||||||
|
|
||||||
|
/* MMC card type flags (MMC_GET_TYPE) */
|
||||||
|
#define CT_MMC 0x01 /* MMC ver 3 */
|
||||||
|
#define CT_SD1 0x02 /* SD ver 1 */
|
||||||
|
#define CT_SD2 0x04 /* SD ver 2 */
|
||||||
|
#define CT_SDC (CT_SD1|CT_SD2) /* SD */
|
||||||
|
#define CT_BLOCK 0x08 /* Block addressing */
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
337
i2cspi_BaS_gcc/include/ff.h
Normal file
337
i2cspi_BaS_gcc/include/ff.h
Normal file
@@ -0,0 +1,337 @@
|
|||||||
|
/*---------------------------------------------------------------------------/
|
||||||
|
/ FatFs - FAT file system module include file R0.09a (C)ChaN, 2012
|
||||||
|
/----------------------------------------------------------------------------/
|
||||||
|
/ FatFs module is a generic FAT file system module for small embedded systems.
|
||||||
|
/ This is a free software that opened for education, research and commercial
|
||||||
|
/ developments under license policy of following terms.
|
||||||
|
/
|
||||||
|
/ Copyright (C) 2012, ChaN, all right reserved.
|
||||||
|
/
|
||||||
|
/ * The FatFs module is a free software and there is NO WARRANTY.
|
||||||
|
/ * No restriction on use. You can use, modify and redistribute it for
|
||||||
|
/ personal, non-profit or commercial product UNDER YOUR RESPONSIBILITY.
|
||||||
|
/ * Redistributions of source code must retain the above copyright notice.
|
||||||
|
/
|
||||||
|
/----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef _FATFS
|
||||||
|
#define _FATFS 4004 /* Revision ID */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <ffconf.h> /* FatFs configuration options */
|
||||||
|
|
||||||
|
#if _FATFS != _FFCONF
|
||||||
|
#error Wrong configuration file (ffconf.h).
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Definitions of volume management */
|
||||||
|
|
||||||
|
#if _MULTI_PARTITION /* Multiple partition configuration */
|
||||||
|
typedef struct {
|
||||||
|
uint8_t pd; /* Physical drive number */
|
||||||
|
uint8_t pt; /* Partition: 0:Auto detect, 1-4:Forced partition) */
|
||||||
|
} PARTITION;
|
||||||
|
extern PARTITION VolToPart[]; /* Volume - Partition resolution table */
|
||||||
|
#define LD2PD(vol) (VolToPart[vol].pd) /* Get physical drive number */
|
||||||
|
#define LD2PT(vol) (VolToPart[vol].pt) /* Get partition index */
|
||||||
|
|
||||||
|
#else /* Single partition configuration */
|
||||||
|
#define LD2PD(vol) (uint8_t)(vol) /* Each logical drive is bound to the same physical drive number */
|
||||||
|
#define LD2PT(vol) 0 /* Always mounts the 1st partition or in SFD */
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Type of path name strings on FatFs API */
|
||||||
|
|
||||||
|
#if _LFN_UNICODE /* Unicode string */
|
||||||
|
#if !_USE_LFN
|
||||||
|
#error _LFN_UNICODE must be 0 in non-LFN cfg.
|
||||||
|
#endif
|
||||||
|
#ifndef _INC_TCHAR
|
||||||
|
typedef uint16_t TCHAR;
|
||||||
|
#define _T(x) L ## x
|
||||||
|
#define _TEXT(x) L ## x
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else /* ANSI/OEM string */
|
||||||
|
#ifndef _INC_TCHAR
|
||||||
|
typedef char TCHAR;
|
||||||
|
#define _T(x) x
|
||||||
|
#define _TEXT(x) x
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* File system object structure (FATFS) */
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint8_t fs_type; /* FAT sub-type (0:Not mounted) */
|
||||||
|
uint8_t drv; /* Physical drive number */
|
||||||
|
uint8_t csize; /* Sectors per cluster (1,2,4...128) */
|
||||||
|
uint8_t n_fats; /* Number of FAT copies (1,2) */
|
||||||
|
uint8_t wflag; /* win[] dirty flag (1:must be written back) */
|
||||||
|
uint8_t fsi_flag; /* fsinfo dirty flag (1:must be written back) */
|
||||||
|
uint16_t id; /* File system mount ID */
|
||||||
|
uint16_t n_rootdir; /* Number of root directory entries (FAT12/16) */
|
||||||
|
#if _MAX_SS != 512
|
||||||
|
uint16_t ssize; /* Bytes per sector (512, 1024, 2048 or 4096) */
|
||||||
|
#endif
|
||||||
|
#if _FS_REENTRANT
|
||||||
|
_SYNC_t sobj; /* Identifier of sync object */
|
||||||
|
#endif
|
||||||
|
#if !_FS_READONLY
|
||||||
|
uint32_t last_clust; /* Last allocated cluster */
|
||||||
|
uint32_t free_clust; /* Number of free clusters */
|
||||||
|
uint32_t fsi_sector; /* fsinfo sector (FAT32) */
|
||||||
|
#endif
|
||||||
|
#if _FS_RPATH
|
||||||
|
uint32_t cdir; /* Current directory start cluster (0:root) */
|
||||||
|
#endif
|
||||||
|
uint32_t n_fatent; /* Number of FAT entries (= number of clusters + 2) */
|
||||||
|
uint32_t fsize; /* Sectors per FAT */
|
||||||
|
uint32_t fatbase; /* FAT start sector */
|
||||||
|
uint32_t dirbase; /* Root directory start sector (FAT32:Cluster#) */
|
||||||
|
uint32_t database; /* Data start sector */
|
||||||
|
uint32_t winsect; /* Current sector appearing in the win[] */
|
||||||
|
uint8_t win[_MAX_SS]; /* Disk access window for Directory, FAT (and Data on tiny cfg) */
|
||||||
|
} FATFS;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* File object structure (FIL) */
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
FATFS* fs; /* Pointer to the related file system object */
|
||||||
|
uint16_t id; /* File system mount ID of the related file system object */
|
||||||
|
uint8_t flag; /* File status flags */
|
||||||
|
uint8_t pad1;
|
||||||
|
uint32_t fptr; /* File read/write pointer (0ed on file open) */
|
||||||
|
uint32_t fsize; /* File size */
|
||||||
|
uint32_t sclust; /* File data start cluster (0:no data cluster, always 0 when fsize is 0) */
|
||||||
|
uint32_t clust; /* Current cluster of fpter */
|
||||||
|
uint32_t dsect; /* Current data sector of fpter */
|
||||||
|
#if !_FS_READONLY
|
||||||
|
uint32_t dir_sect; /* Sector containing the directory entry */
|
||||||
|
uint8_t* dir_ptr; /* Pointer to the directory entry in the window */
|
||||||
|
#endif
|
||||||
|
#if _USE_FASTSEEK
|
||||||
|
uint32_t* cltbl; /* Pointer to the cluster link map table (null on file open) */
|
||||||
|
#endif
|
||||||
|
#if _FS_LOCK
|
||||||
|
uint32_t lockid; /* File lock ID (index of file semaphore table Files[]) */
|
||||||
|
#endif
|
||||||
|
#if !_FS_TINY
|
||||||
|
uint8_t buf[_MAX_SS]; /* File data read/write buffer */
|
||||||
|
#endif
|
||||||
|
} FIL;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Directory object structure (DIR) */
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
FATFS* fs; /* Pointer to the owner file system object */
|
||||||
|
uint16_t id; /* Owner file system mount ID */
|
||||||
|
uint16_t index; /* Current read/write index number */
|
||||||
|
uint32_t sclust; /* Table start cluster (0:Root dir) */
|
||||||
|
uint32_t clust; /* Current cluster */
|
||||||
|
uint32_t sect; /* Current sector */
|
||||||
|
uint8_t* dir; /* Pointer to the current SFN entry in the win[] */
|
||||||
|
uint8_t* fn; /* Pointer to the SFN (in/out) {file[8],ext[3],status[1]} */
|
||||||
|
#if _USE_LFN
|
||||||
|
uint16_t* lfn; /* Pointer to the LFN working buffer */
|
||||||
|
uint16_t lfn_idx; /* Last matched LFN index number (0xFFFF:No LFN) */
|
||||||
|
#endif
|
||||||
|
} DIR;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* File status structure (FILINFO) */
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint32_t fsize; /* File size */
|
||||||
|
uint16_t fdate; /* Last modified date */
|
||||||
|
uint16_t ftime; /* Last modified time */
|
||||||
|
uint8_t fattrib; /* Attribute */
|
||||||
|
TCHAR fname[13]; /* Short file name (8.3 format) */
|
||||||
|
#if _USE_LFN
|
||||||
|
TCHAR* lfname; /* Pointer to the LFN buffer */
|
||||||
|
uint32_t lfsize; /* Size of LFN buffer in TCHAR */
|
||||||
|
#endif
|
||||||
|
} FILINFO;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* File function return code (FRESULT) */
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
FR_OK = 0, /* (0) Succeeded */
|
||||||
|
FR_DISK_ERR, /* (1) A hard error occurred in the low level disk I/O layer */
|
||||||
|
FR_INT_ERR, /* (2) Assertion failed */
|
||||||
|
FR_NOT_READY, /* (3) The physical drive cannot work */
|
||||||
|
FR_NO_FILE, /* (4) Could not find the file */
|
||||||
|
FR_NO_PATH, /* (5) Could not find the path */
|
||||||
|
FR_INVALID_NAME, /* (6) The path name format is invalid */
|
||||||
|
FR_DENIED, /* (7) Access denied due to prohibited access or directory full */
|
||||||
|
FR_EXIST, /* (8) Access denied due to prohibited access */
|
||||||
|
FR_INVALID_OBJECT, /* (9) The file/directory object is invalid */
|
||||||
|
FR_WRITE_PROTECTED, /* (10) The physical drive is write protected */
|
||||||
|
FR_INVALID_DRIVE, /* (11) The logical drive number is invalid */
|
||||||
|
FR_NOT_ENABLED, /* (12) The volume has no work area */
|
||||||
|
FR_NO_FILESYSTEM, /* (13) There is no valid FAT volume */
|
||||||
|
FR_MKFS_ABORTED, /* (14) The f_mkfs() aborted due to any parameter error */
|
||||||
|
FR_TIMEOUT, /* (15) Could not get a grant to access the volume within defined period */
|
||||||
|
FR_LOCKED, /* (16) The operation is rejected according to the file sharing policy */
|
||||||
|
FR_NOT_ENOUGH_CORE, /* (17) LFN working buffer could not be allocated */
|
||||||
|
FR_TOO_MANY_OPEN_FILES, /* (18) Number of open files > _FS_SHARE */
|
||||||
|
FR_INVALID_PARAMETER /* (19) Given parameter is invalid */
|
||||||
|
} FRESULT;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------*/
|
||||||
|
/* FatFs module application interface */
|
||||||
|
|
||||||
|
FRESULT f_mount (uint8_t, FATFS*); /* Mount/Unmount a logical drive */
|
||||||
|
FRESULT f_open (FIL*, const TCHAR*, uint8_t); /* Open or create a file */
|
||||||
|
FRESULT f_read (FIL*, void*, uint32_t, uint32_t*); /* Read data from a file */
|
||||||
|
FRESULT f_lseek (FIL*, uint32_t); /* Move file pointer of a file object */
|
||||||
|
FRESULT f_close (FIL*); /* Close an open file object */
|
||||||
|
FRESULT f_opendir (DIR*, const char*); /* Open an existing directory */
|
||||||
|
FRESULT f_readdir (DIR*, FILINFO*); /* Read a directory item */
|
||||||
|
FRESULT f_stat (const TCHAR*, FILINFO*); /* Get file status */
|
||||||
|
FRESULT f_write (FIL*, const void*, uint32_t, uint32_t*); /* Write data to a file */
|
||||||
|
FRESULT f_getfree (const TCHAR*, uint32_t*, FATFS**); /* Get number of free clusters on the drive */
|
||||||
|
FRESULT f_truncate (FIL*); /* Truncate file */
|
||||||
|
FRESULT f_sync (FIL*); /* Flush cached data of a writing file */
|
||||||
|
FRESULT f_unlink (const TCHAR*); /* Delete an existing file or directory */
|
||||||
|
FRESULT f_mkdir (const TCHAR*); /* Create a new directory */
|
||||||
|
FRESULT f_chmod (const TCHAR*, uint8_t, uint8_t); /* Change attribute of the file/dir */
|
||||||
|
FRESULT f_utime (const TCHAR*, const FILINFO*); /* Change times-tamp of the file/dir */
|
||||||
|
FRESULT f_rename (const TCHAR*, const TCHAR*); /* Rename/Move a file or directory */
|
||||||
|
FRESULT f_chdrive (uint8_t); /* Change current drive */
|
||||||
|
FRESULT f_chdir (const TCHAR*); /* Change current directory */
|
||||||
|
FRESULT f_getcwd (TCHAR*, uint32_t); /* Get current directory */
|
||||||
|
FRESULT f_forward (FIL*, uint32_t(*)(const uint8_t*,uint32_t), uint32_t, uint32_t*); /* Forward data to the stream */
|
||||||
|
FRESULT f_mkfs (uint8_t, uint8_t, uint32_t); /* Create a file system on the drive */
|
||||||
|
FRESULT f_fdisk (uint8_t, const uint32_t[], void*); /* Divide a physical drive into some partitions */
|
||||||
|
int f_putc (TCHAR, FIL*); /* Put a character to the file */
|
||||||
|
int f_puts (const TCHAR*, FIL*); /* Put a string to the file */
|
||||||
|
int f_printf (FIL*, const TCHAR*, ...); /* Put a formatted string to the file */
|
||||||
|
TCHAR* f_gets (TCHAR*, int, FIL*); /* Get a string from the file */
|
||||||
|
|
||||||
|
#define f_eof(fp) (((fp)->fptr == (fp)->fsize) ? 1 : 0)
|
||||||
|
#define f_error(fp) (((fp)->flag & FA__ERROR) ? 1 : 0)
|
||||||
|
#define f_tell(fp) ((fp)->fptr)
|
||||||
|
#define f_size(fp) ((fp)->fsize)
|
||||||
|
|
||||||
|
#ifndef EOF
|
||||||
|
#define EOF (-1)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------*/
|
||||||
|
/* Additional user defined functions */
|
||||||
|
|
||||||
|
/* RTC function */
|
||||||
|
#if !_FS_READONLY
|
||||||
|
uint32_t get_fattime (void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Unicode support functions */
|
||||||
|
#if _USE_LFN /* Unicode - OEM code conversion */
|
||||||
|
uint16_t ff_convert (uint16_t, uint32_t); /* OEM-Unicode bidirectional conversion */
|
||||||
|
uint16_t ff_wtoupper (uint16_t); /* Unicode upper-case conversion */
|
||||||
|
#if _USE_LFN == 3 /* Memory functions */
|
||||||
|
void* ff_memalloc (uint32_t); /* Allocate memory block */
|
||||||
|
void ff_memfree (void*); /* Free memory block */
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Sync functions */
|
||||||
|
#if _FS_REENTRANT
|
||||||
|
int ff_cre_syncobj (uint8_t, _SYNC_t*);/* Create a sync object */
|
||||||
|
int ff_req_grant (_SYNC_t); /* Lock sync object */
|
||||||
|
void ff_rel_grant (_SYNC_t); /* Unlock sync object */
|
||||||
|
int ff_del_syncobj (_SYNC_t); /* Delete a sync object */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------*/
|
||||||
|
/* Flags and offset address */
|
||||||
|
|
||||||
|
|
||||||
|
/* File access control and file status flags (FIL.flag) */
|
||||||
|
|
||||||
|
#define FA_READ 0x01
|
||||||
|
#define FA_OPEN_EXISTING 0x00
|
||||||
|
#define FA__ERROR 0x80
|
||||||
|
|
||||||
|
#if !_FS_READONLY
|
||||||
|
#define FA_WRITE 0x02
|
||||||
|
#define FA_CREATE_NEW 0x04
|
||||||
|
#define FA_CREATE_ALWAYS 0x08
|
||||||
|
#define FA_OPEN_ALWAYS 0x10
|
||||||
|
#define FA__WRITTEN 0x20
|
||||||
|
#define FA__DIRTY 0x40
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* FAT sub type (FATFS.fs_type) */
|
||||||
|
|
||||||
|
#define FS_FAT12 1
|
||||||
|
#define FS_FAT16 2
|
||||||
|
#define FS_FAT32 3
|
||||||
|
|
||||||
|
|
||||||
|
/* File attribute bits for directory entry */
|
||||||
|
|
||||||
|
#define AM_RDO 0x01 /* Read only */
|
||||||
|
#define AM_HID 0x02 /* Hidden */
|
||||||
|
#define AM_SYS 0x04 /* System */
|
||||||
|
#define AM_VOL 0x08 /* Volume label */
|
||||||
|
#define AM_LFN 0x0F /* LFN entry */
|
||||||
|
#define AM_DIR 0x10 /* Directory */
|
||||||
|
#define AM_ARC 0x20 /* Archive */
|
||||||
|
#define AM_MASK 0x3F /* Mask of defined bits */
|
||||||
|
|
||||||
|
|
||||||
|
/* Fast seek feature */
|
||||||
|
#define CREATE_LINKMAP 0xFFFFFFFF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*--------------------------------*/
|
||||||
|
/* Multi-byte word access macros */
|
||||||
|
|
||||||
|
#if _WORD_ACCESS == 1 /* Enable word access to the FAT structure */
|
||||||
|
#define LD_WORD(ptr) (uint16_t)(* (uint16_t *)(uint8_t *)(ptr))
|
||||||
|
#define LD_DWORD(ptr) (uint32_t)(* (uint32_t *)(uint8_t *)(ptr))
|
||||||
|
#define ST_WORD(ptr,val) *(uint16_t *) (uint8_t *)(ptr) = (uint16_t)(val)
|
||||||
|
#define ST_DWORD(ptr,val) *(uint32_t *) (uint8_t *)(ptr) = (uint32_t)(val)
|
||||||
|
#else /* Use byte-by-byte access to the FAT structure */
|
||||||
|
#define LD_WORD(ptr) (uint16_t)(((uint16_t)*((uint8_t *)(ptr) + 1) << 8) | (uint16_t) *(uint8_t *)(ptr))
|
||||||
|
#define LD_DWORD(ptr) (uint32_t)(((uint32_t)*((uint8_t *)(ptr) + 3) << 24) | ((uint32_t)*((uint8_t*)(ptr) + 2) << 16) | ((uint16_t) *((uint8_t*)(ptr) + 1) << 8) | *(uint8_t*)(ptr))
|
||||||
|
#define ST_WORD(ptr,val) *(uint8_t *)(ptr) = (uint8_t)(val); *((uint8_t *)(ptr) + 1) = (uint8_t)((uint16_t)(val) >> 8)
|
||||||
|
#define ST_DWORD(ptr,val) *(uint8_t *)(ptr) = (uint8_t)(val); *((uint8_t *)(ptr) + 1) = (uint8_t)((uint16_t)(val) >> 8); *((uint8_t*)(ptr) + 2) = (uint8_t)((uint32_t)(val) >> 16); *((uint8_t *)(ptr) + 3) = (uint8_t)((uint32_t)(val) >> 24)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _FATFS */
|
||||||
190
i2cspi_BaS_gcc/include/ffconf.h
Normal file
190
i2cspi_BaS_gcc/include/ffconf.h
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
/*---------------------------------------------------------------------------/
|
||||||
|
/ FatFs - FAT file system module configuration file R0.09a (C)ChaN, 2012
|
||||||
|
/----------------------------------------------------------------------------/
|
||||||
|
/
|
||||||
|
/ CAUTION! Do not forget to make clean the project after any changes to
|
||||||
|
/ the configuration options.
|
||||||
|
/
|
||||||
|
/----------------------------------------------------------------------------*/
|
||||||
|
#ifndef _FFCONF
|
||||||
|
#define _FFCONF 4004 /* Revision ID */
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------/
|
||||||
|
/ Functions and Buffer Configurations
|
||||||
|
/----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#define _FS_TINY 0 /* 0:Normal or 1:Tiny */
|
||||||
|
/* When _FS_TINY is set to 1, FatFs uses the sector buffer in the file system
|
||||||
|
/ object instead of the sector buffer in the individual file object for file
|
||||||
|
/ data transfer. This reduces memory consumption 512 bytes each file object. */
|
||||||
|
|
||||||
|
|
||||||
|
#define _FS_READONLY 0 /* 0:Read/Write or 1:Read only */
|
||||||
|
/* Setting _FS_READONLY to 1 defines read only configuration. This removes
|
||||||
|
/ writing functions, f_write, f_sync, f_unlink, f_mkdir, f_chmod, f_rename,
|
||||||
|
/ f_truncate and useless f_getfree. */
|
||||||
|
|
||||||
|
|
||||||
|
#define _FS_MINIMIZE 0 /* 0 to 3 */
|
||||||
|
/* The _FS_MINIMIZE option defines minimization level to remove some functions.
|
||||||
|
/
|
||||||
|
/ 0: Full function.
|
||||||
|
/ 1: f_stat, f_getfree, f_unlink, f_mkdir, f_chmod, f_truncate and f_rename
|
||||||
|
/ are removed.
|
||||||
|
/ 2: f_opendir and f_readdir are removed in addition to 1.
|
||||||
|
/ 3: f_lseek is removed in addition to 2. */
|
||||||
|
|
||||||
|
|
||||||
|
#define _USE_STRFUNC 1 /* 0:Disable or 1-2:Enable */
|
||||||
|
/* To enable string functions, set _USE_STRFUNC to 1 or 2. */
|
||||||
|
|
||||||
|
|
||||||
|
#define _USE_MKFS 0 /* 0:Disable or 1:Enable */
|
||||||
|
/* To enable f_mkfs function, set _USE_MKFS to 1 and set _FS_READONLY to 0 */
|
||||||
|
|
||||||
|
|
||||||
|
#define _USE_FORWARD 0 /* 0:Disable or 1:Enable */
|
||||||
|
/* To enable f_forward function, set _USE_FORWARD to 1 and set _FS_TINY to 1. */
|
||||||
|
|
||||||
|
|
||||||
|
#define _USE_FASTSEEK 0 /* 0:Disable or 1:Enable */
|
||||||
|
/* To enable fast seek feature, set _USE_FASTSEEK to 1. */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------/
|
||||||
|
/ Locale and Namespace Configurations
|
||||||
|
/----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#define _CODE_PAGE 858
|
||||||
|
/* The _CODE_PAGE specifies the OEM code page to be used on the target system.
|
||||||
|
/ Incorrect setting of the code page can cause a file open failure.
|
||||||
|
/
|
||||||
|
/ 932 - Japanese Shift-JIS (DBCS, OEM, Windows)
|
||||||
|
/ 936 - Simplified Chinese GBK (DBCS, OEM, Windows)
|
||||||
|
/ 949 - Korean (DBCS, OEM, Windows)
|
||||||
|
/ 950 - Traditional Chinese Big5 (DBCS, OEM, Windows)
|
||||||
|
/ 1250 - Central Europe (Windows)
|
||||||
|
/ 1251 - Cyrillic (Windows)
|
||||||
|
/ 1252 - Latin 1 (Windows)
|
||||||
|
/ 1253 - Greek (Windows)
|
||||||
|
/ 1254 - Turkish (Windows)
|
||||||
|
/ 1255 - Hebrew (Windows)
|
||||||
|
/ 1256 - Arabic (Windows)
|
||||||
|
/ 1257 - Baltic (Windows)
|
||||||
|
/ 1258 - Vietnam (OEM, Windows)
|
||||||
|
/ 437 - U.S. (OEM)
|
||||||
|
/ 720 - Arabic (OEM)
|
||||||
|
/ 737 - Greek (OEM)
|
||||||
|
/ 775 - Baltic (OEM)
|
||||||
|
/ 850 - Multilingual Latin 1 (OEM)
|
||||||
|
/ 858 - Multilingual Latin 1 + Euro (OEM)
|
||||||
|
/ 852 - Latin 2 (OEM)
|
||||||
|
/ 855 - Cyrillic (OEM)
|
||||||
|
/ 866 - Russian (OEM)
|
||||||
|
/ 857 - Turkish (OEM)
|
||||||
|
/ 862 - Hebrew (OEM)
|
||||||
|
/ 874 - Thai (OEM, Windows)
|
||||||
|
/ 1 - ASCII only (Valid for non LFN cfg.)
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define _USE_LFN 0 /* 0 to 3 */
|
||||||
|
#define _MAX_LFN 255 /* Maximum LFN length to handle (12 to 255) */
|
||||||
|
/* The _USE_LFN option switches the LFN support.
|
||||||
|
/
|
||||||
|
/ 0: Disable LFN feature. _MAX_LFN and _LFN_UNICODE have no effect.
|
||||||
|
/ 1: Enable LFN with static working buffer on the BSS. Always NOT reentrant.
|
||||||
|
/ 2: Enable LFN with dynamic working buffer on the STACK.
|
||||||
|
/ 3: Enable LFN with dynamic working buffer on the HEAP.
|
||||||
|
/
|
||||||
|
/ The LFN working buffer occupies (_MAX_LFN + 1) * 2 bytes. To enable LFN,
|
||||||
|
/ Unicode handling functions ff_convert() and ff_wtoupper() must be added
|
||||||
|
/ to the project. When enable to use heap, memory control functions
|
||||||
|
/ ff_memalloc() and ff_memfree() must be added to the project. */
|
||||||
|
|
||||||
|
|
||||||
|
#define _LFN_UNICODE 0 /* 0:ANSI/OEM or 1:Unicode */
|
||||||
|
/* To switch the character code set on FatFs API to Unicode,
|
||||||
|
/ enable LFN feature and set _LFN_UNICODE to 1. */
|
||||||
|
|
||||||
|
|
||||||
|
#define _FS_RPATH 0 /* 0 to 2 */
|
||||||
|
/* The _FS_RPATH option configures relative path feature.
|
||||||
|
/
|
||||||
|
/ 0: Disable relative path feature and remove related functions.
|
||||||
|
/ 1: Enable relative path. f_chdrive() and f_chdir() are available.
|
||||||
|
/ 2: f_getcwd() is available in addition to 1.
|
||||||
|
/
|
||||||
|
/ Note that output of the f_readdir fnction is affected by this option. */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------/
|
||||||
|
/ Physical Drive Configurations
|
||||||
|
/----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#define _VOLUMES 1
|
||||||
|
/* Number of volumes (logical drives) to be used. */
|
||||||
|
|
||||||
|
|
||||||
|
#define _MAX_SS 512 /* 512, 1024, 2048 or 4096 */
|
||||||
|
/* Maximum sector size to be handled.
|
||||||
|
/ Always set 512 for memory card and hard disk but a larger value may be
|
||||||
|
/ required for on-board flash memory, floppy disk and optical disk.
|
||||||
|
/ When _MAX_SS is larger than 512, it configures FatFs to variable sector size
|
||||||
|
/ and GET_SECTOR_SIZE command must be implememted to the disk_ioctl function. */
|
||||||
|
|
||||||
|
|
||||||
|
#define _MULTI_PARTITION 0 /* 0:Single partition, 1/2:Enable multiple partition */
|
||||||
|
/* When set to 0, each volume is bound to the same physical drive number and
|
||||||
|
/ it can mount only first primaly partition. When it is set to 1, each volume
|
||||||
|
/ is tied to the partitions listed in VolToPart[]. */
|
||||||
|
|
||||||
|
|
||||||
|
#define _USE_ERASE 0 /* 0:Disable or 1:Enable */
|
||||||
|
/* To enable sector erase feature, set _USE_ERASE to 1. CTRL_ERASE_SECTOR command
|
||||||
|
/ should be added to the disk_ioctl functio. */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------/
|
||||||
|
/ System Configurations
|
||||||
|
/----------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#define _WORD_ACCESS 0 /* 0 or 1 */
|
||||||
|
/* Set 0 first and it is always compatible with all platforms. The _WORD_ACCESS
|
||||||
|
/ option defines which access method is used to the word data on the FAT volume.
|
||||||
|
/
|
||||||
|
/ 0: Byte-by-byte access.
|
||||||
|
/ 1: Word access. Do not choose this unless following condition is met.
|
||||||
|
/
|
||||||
|
/ When the byte order on the memory is big-endian or address miss-aligned word
|
||||||
|
/ access results incorrect behavior, the _WORD_ACCESS must be set to 0.
|
||||||
|
/ If it is not the case, the value can also be set to 1 to improve the
|
||||||
|
/ performance and code size.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* A header file that defines sync object types on the O/S, such as
|
||||||
|
/ windows.h, ucos_ii.h and semphr.h, must be included prior to ff.h. */
|
||||||
|
|
||||||
|
#define _FS_REENTRANT 0 /* 0:Disable or 1:Enable */
|
||||||
|
#define _FS_TIMEOUT 1000 /* Timeout period in unit of time ticks */
|
||||||
|
#define _SYNC_t HANDLE /* O/S dependent type of sync object. e.g. HANDLE, OS_EVENT*, ID and etc.. */
|
||||||
|
|
||||||
|
/* The _FS_REENTRANT option switches the reentrancy (thread safe) of the FatFs module.
|
||||||
|
/
|
||||||
|
/ 0: Disable reentrancy. _SYNC_t and _FS_TIMEOUT have no effect.
|
||||||
|
/ 1: Enable reentrancy. Also user provided synchronization handlers,
|
||||||
|
/ ff_req_grant, ff_rel_grant, ff_del_syncobj and ff_cre_syncobj
|
||||||
|
/ function must be added to the project. */
|
||||||
|
|
||||||
|
|
||||||
|
#define _FS_LOCK 0 /* 0:Disable or >=1:Enable */
|
||||||
|
/* To enable file lock control feature, set _FS_LOCK to 1 or greater.
|
||||||
|
The value defines how many files can be opened simultaneously. */
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* _FFCONFIG */
|
||||||
47
i2cspi_BaS_gcc/include/s19reader.h
Normal file
47
i2cspi_BaS_gcc/include/s19reader.h
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* s19reader.h
|
||||||
|
*
|
||||||
|
* Created on: 17.11.2012
|
||||||
|
* Author: mfro
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _S19READER_H_
|
||||||
|
#define _S19READER_H_
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
OK, /* no error */
|
||||||
|
FAIL, /* general error aka "I don't know what went wrong" */
|
||||||
|
FILE_OPEN, /* file open failed */
|
||||||
|
FILE_READ, /* file read failed */
|
||||||
|
SREC_CORRUPT, /* file doesn't seem to contain valid S-records */
|
||||||
|
MEMCPY_FAILED, /* could not copy buffer to destination */
|
||||||
|
CODE_OVERLAPS, /* copying would overwrite ourself */
|
||||||
|
VERIFY_FAILED, /* destination does not read as we've written to */
|
||||||
|
ILLEGAL_SECTOR /* flash sector number invalid */
|
||||||
|
} err_t;
|
||||||
|
|
||||||
|
typedef err_t (*memcpy_callback_t)(uint8_t *dst, uint8_t *src, uint32_t length);
|
||||||
|
|
||||||
|
extern void srec_execute(char *filename);
|
||||||
|
extern err_t read_srecords(char *filename, void **start_address, uint32_t *actual_length, memcpy_callback_t callback);
|
||||||
|
|
||||||
|
#endif /* _S19READER_H_ */
|
||||||
45
i2cspi_BaS_gcc/include/sd_card.h
Normal file
45
i2cspi_BaS_gcc/include/sd_card.h
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* sd_card.h
|
||||||
|
*
|
||||||
|
* Exported sd-card access routines for the FireBee BaS
|
||||||
|
*
|
||||||
|
* Created on: 19.11.2012
|
||||||
|
* Author: mfro
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2010 - 2012 F. Aschwanden
|
||||||
|
* Copyright 2011 - 2012 V. Riviere
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SD_CARD_H_
|
||||||
|
#define _SD_CARD_H_
|
||||||
|
|
||||||
|
#include <MCF5475.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
extern void sd_card_init(void);
|
||||||
|
|
||||||
|
/* MMC card type flags (MMC_GET_TYPE) */
|
||||||
|
#define CT_MMC 0x01 /* MMC ver 3 */
|
||||||
|
#define CT_SD1 0x02 /* SD ver 1 */
|
||||||
|
#define CT_SD2 0x04 /* SD ver 2 */
|
||||||
|
#define CT_SDC (CT_SD1|CT_SD2) /* SD */
|
||||||
|
#define CT_BLOCK 0x08 /* Block addressing */
|
||||||
|
|
||||||
|
#endif /* _SD_CARD_H_ */
|
||||||
8
i2cspi_BaS_gcc/include/startcf.h
Normal file
8
i2cspi_BaS_gcc/include/startcf.h
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
#define cf_stack
|
||||||
|
|
||||||
|
#define DIP_SWITCH (*(volatile uint8_t *)(&_MBAR[0xA2C]))
|
||||||
|
#define DIP_SWITCHa __MBAR + 0xA2C
|
||||||
|
|
||||||
|
#define sca_page_ID 6
|
||||||
|
|
||||||
45
i2cspi_BaS_gcc/include/sysinit.h
Normal file
45
i2cspi_BaS_gcc/include/sysinit.h
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* File: sysinit.h
|
||||||
|
* Purpose: Firebee Power-on Reset configuration
|
||||||
|
*
|
||||||
|
* Notes:
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2010 - 2012 F. Aschwanden
|
||||||
|
* Copyright 2011 - 2012 V. Riviere
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __SYSINIT_H__
|
||||||
|
#define __SYSINIT_H__
|
||||||
|
|
||||||
|
extern void wait_10us(void);
|
||||||
|
|
||||||
|
/* send a 16-bit word out on the serial port */
|
||||||
|
#define uart_out_word(a) MCF_PSC0_PSCTB_8BIT = (a)
|
||||||
|
|
||||||
|
/* adresses where FPGA data lives in flash */
|
||||||
|
#define FPGA_FLASH_DATA ((uint8_t *) 0xe0700000L)
|
||||||
|
#define FPGA_FLASH_DATA_END ((uint8_t *) 0xe0800000L)
|
||||||
|
|
||||||
|
/* function(s) from init_fpga.c */
|
||||||
|
extern void init_fpga(void);
|
||||||
|
|
||||||
|
#endif /* __SYSINIT_H__ */
|
||||||
|
|
||||||
|
|
||||||
63
i2cspi_BaS_gcc/include/wait.h
Normal file
63
i2cspi_BaS_gcc/include/wait.h
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* wait.h
|
||||||
|
*
|
||||||
|
* Author: mfro
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2010 - 2012 F. Aschwanden
|
||||||
|
* Copyright 2011 - 2012 V. Riviere
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _WAIT_H_
|
||||||
|
#define _WAIT_H_
|
||||||
|
|
||||||
|
#include <bas_types.h>
|
||||||
|
|
||||||
|
typedef bool (*checker_func)(void);
|
||||||
|
|
||||||
|
extern __inline__ void wait(uint32_t) __attribute__((always_inline));
|
||||||
|
extern __inline__ bool waitfor(uint32_t us, checker_func condition) __attribute__((always_inline));
|
||||||
|
/*
|
||||||
|
* wait for the specified number of us on slice timer 0. Replaces the original routines that had
|
||||||
|
* the number of useconds to wait for hardcoded in their name.
|
||||||
|
*/
|
||||||
|
extern __inline__ void wait(uint32_t us)
|
||||||
|
{
|
||||||
|
uint32_t target = MCF_SLT_SCNT(0) - (us * 132);
|
||||||
|
|
||||||
|
while (MCF_SLT_SCNT(0) > target);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* the same as above, with a checker function which gets called while
|
||||||
|
* busy waiting and allows for an early return if it returns true
|
||||||
|
*/
|
||||||
|
extern __inline__ bool waitfor(uint32_t us, checker_func condition)
|
||||||
|
{
|
||||||
|
uint32_t target = MCF_SLT_SCNT(0) - (us * 132);
|
||||||
|
uint32_t res;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if ((res = (*condition)()))
|
||||||
|
return res;
|
||||||
|
} while (MCF_SLT_SCNT(0) > target);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif /* _WAIT_H_ */
|
||||||
66
i2cspi_BaS_gcc/mcf5474.gdb
Normal file
66
i2cspi_BaS_gcc/mcf5474.gdb
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
#
|
||||||
|
# GDB Init script for the Coldfire 5474 processor (firebee).
|
||||||
|
#
|
||||||
|
|
||||||
|
define addresses
|
||||||
|
set $vbr = 0x00000000
|
||||||
|
monitor bdm-ctl-set 0x0801 0x00000000
|
||||||
|
|
||||||
|
set $mbar = 0xFF000000
|
||||||
|
monitor bdm-ctl-set 0x0C0F 0xFF000000
|
||||||
|
|
||||||
|
set $rambar0 = 0xFF100000
|
||||||
|
monitor bdm-ctl-set 0x0C04 0xFF100007
|
||||||
|
|
||||||
|
set $rambar1 = 0xFF101000
|
||||||
|
monitor bdm-ctl-set 0x0C05 0xFF101001
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Setup the DRAM controller.
|
||||||
|
#
|
||||||
|
|
||||||
|
define setup-dram
|
||||||
|
# Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes)
|
||||||
|
set *((long *) 0xFF000500) = 0xE0000000
|
||||||
|
set *((long *) 0xFF000508) = 0x00041180
|
||||||
|
set *((long *) 0xFF000504) = 0x007F0001
|
||||||
|
|
||||||
|
# set *((long *) 0xFF00050C) = 0xFFF00000 # ATARI I/O address
|
||||||
|
|
||||||
|
# SDRAM Initialization @ 0000_0000 - 1FFF_FFFF 512Mbytes
|
||||||
|
set *((long *) 0xFF000004) = 0x000002AA
|
||||||
|
set *((long *) 0xFF000020) = 0x0000001A
|
||||||
|
set *((long *) 0xFF000024) = 0x0800001A
|
||||||
|
set *((long *) 0xFF000028) = 0x1000001A
|
||||||
|
set *((long *) 0xFF00002C) = 0x1800001A
|
||||||
|
set *((long *) 0xFF000108) = 0x73622830
|
||||||
|
set *((long *) 0xFF00010C) = 0x46770000
|
||||||
|
|
||||||
|
|
||||||
|
set *((long *) 0xFF000104) = 0xE10D0002
|
||||||
|
set *((long *) 0xFF000100) = 0x40010000
|
||||||
|
set *((long *) 0xFF000100) = 0x048D0000
|
||||||
|
set *((long *) 0xFF000104) = 0xE10D0002
|
||||||
|
set *((long *) 0xFF000104) = 0xE10D0004
|
||||||
|
set *((long *) 0xFF000104) = 0xE10D0004
|
||||||
|
set *((long *) 0xFF000100) = 0x008D0000
|
||||||
|
set *((long *) 0xFF000104) = 0x710D0F00
|
||||||
|
end
|
||||||
|
|
||||||
|
define cu
|
||||||
|
!killall m68k-bdm-gdbserver
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Wake up the board
|
||||||
|
#
|
||||||
|
|
||||||
|
define ib
|
||||||
|
addresses
|
||||||
|
setup-dram
|
||||||
|
end
|
||||||
|
|
||||||
|
tr
|
||||||
|
ib
|
||||||
|
load
|
||||||
72
i2cspi_BaS_gcc/run_bas.bdm
Executable file
72
i2cspi_BaS_gcc/run_bas.bdm
Executable file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/local/bin/bdmctrl -D2
|
||||||
|
#
|
||||||
|
# firebee board initialization for bdmctrl
|
||||||
|
#
|
||||||
|
open $1
|
||||||
|
reset
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
wait
|
||||||
|
|
||||||
|
# set VBR
|
||||||
|
#write-ctrl 0x0801 0x00000000
|
||||||
|
sleep 10
|
||||||
|
# Turn on MBAR at 0xFF00_0000
|
||||||
|
write-ctrl 0x0C0F 0xFF000000
|
||||||
|
|
||||||
|
# Turn on MMUBAR at 0xFF04_0000
|
||||||
|
write-ctrl 0x0008 0xFF040001
|
||||||
|
|
||||||
|
# Turn on RAMBAR0 at address FF10_0000
|
||||||
|
write-ctrl 0x0C04 0xFF100007
|
||||||
|
sleep 10
|
||||||
|
# Turn on RAMBAR1 at address FF10_1000
|
||||||
|
write-ctrl 0x0C05 0xFF101001
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
# Init CS0 (BootFLASH @ E000_0000 - E07F_FFFF 8Mbytes)
|
||||||
|
write 0xFF000500 0xE0000000 4
|
||||||
|
write 0xFF000508 0x00001180 4
|
||||||
|
write 0xFF000504 0x007F0001 4
|
||||||
|
# Init CS1 (Atari I/O address range)
|
||||||
|
write 0xFF00050C 0xFFF00000 4
|
||||||
|
write 0xFF000514 0x00002180 4
|
||||||
|
write 0xFF000510 0x000F0001 4
|
||||||
|
# Init CS2 (FireBee 32 bit I/O address range)
|
||||||
|
write 0xFF000518 0xF0000000 4
|
||||||
|
write 0xFF000520 0x00002100 4
|
||||||
|
write 0xFF00051C 0x07FF0001 4
|
||||||
|
# Init CS3 (FireBee 16 bit I/O address range)
|
||||||
|
write 0xFF000524 0xF8000000 4
|
||||||
|
write 0xFF00052C 0x00000180 4
|
||||||
|
write 0xFF000528 0x03FF0001 4
|
||||||
|
# Init CS4 (FireBee video address range)
|
||||||
|
write 0xFF000530 0x40000000 4
|
||||||
|
write 0xFF000538 0x00000018 4
|
||||||
|
write 0xFF000534 0x003F0001 4
|
||||||
|
|
||||||
|
|
||||||
|
# SDRAM Initialization @ 0000_0000 - 1FFF_FFFF 512Mbytes
|
||||||
|
write 0xFF000004 0x000002AA 4 # SDRAMDS configuration
|
||||||
|
write 0xFF000020 0x0000001A 4 # SDRAM CS0 configuration (128Mbytes 0000_0000 - 07FF_FFFF)
|
||||||
|
write 0xFF000024 0x0800001A 4 # SDRAM CS1 configuration (128Mbytes 0800_0000 - 0FFF_FFFF)
|
||||||
|
write 0xFF000028 0x1000001A 4 # SDRAM CS2 configuration (128Mbytes 1000_0000 - 17FF_FFFF)
|
||||||
|
write 0xFF00002C 0x1800001A 4 # SDRAM CS3 configuration (128Mbytes 1800_0000 - 1FFF_FFFF)
|
||||||
|
write 0xFF000108 0x73622830 4 # SDCFG1
|
||||||
|
write 0xFF00010C 0x46770000 4 # SDCFG2
|
||||||
|
|
||||||
|
write 0xFF000104 0xE10D0002 4 # SDCR + IPALL
|
||||||
|
write 0xFF000100 0x40010000 4 # SDMR (write to LEMR)
|
||||||
|
write 0xFF000100 0x048D0000 4 # SDMR (write to LMR)
|
||||||
|
write 0xFF000104 0xE10D0002 4 # SDCR + IPALL
|
||||||
|
write 0xFF000104 0xE10D0004 4 # SDCR + IREF (first refresh)
|
||||||
|
write 0xFF000104 0xE10D0004 4 # SDCR + IREF (first refresh)
|
||||||
|
write 0xFF000100 0x008D0000 4 # SDMR (write to LMR)
|
||||||
|
write 0xFF000104 0x710D0F00 4 # SDCR (lock SDMR and enable refresh)
|
||||||
|
|
||||||
|
write 0xFF000240 0x80000000 4 # disable watchdog arbiter
|
||||||
|
|
||||||
|
load -v ram.elf
|
||||||
|
wait
|
||||||
|
sleep 100
|
||||||
|
execute
|
||||||
309
i2cspi_BaS_gcc/sources/BaS.c
Normal file
309
i2cspi_BaS_gcc/sources/BaS.c
Normal file
@@ -0,0 +1,309 @@
|
|||||||
|
/*
|
||||||
|
* BaS
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2010 - 2012 F. Aschwanden
|
||||||
|
* Copyright 2011 - 2012 V. Riviere
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include "MCF5475.h"
|
||||||
|
#include "MCF5475_SLT.h"
|
||||||
|
#include "startcf.h"
|
||||||
|
#include "cache.h"
|
||||||
|
#include "bas_printf.h"
|
||||||
|
#include "bas_types.h"
|
||||||
|
#include "sd_card.h"
|
||||||
|
#include "wait.h"
|
||||||
|
|
||||||
|
#include "diskio.h"
|
||||||
|
#include "ff.h"
|
||||||
|
#include "s19reader.h"
|
||||||
|
|
||||||
|
/* imported routines */
|
||||||
|
extern int mmu_init();
|
||||||
|
extern int vec_init();
|
||||||
|
|
||||||
|
/* Symbols from the linker script */
|
||||||
|
extern uint8_t _STRAM_END[];
|
||||||
|
#define STRAM_END ((uint32_t)_STRAM_END)
|
||||||
|
extern uint8_t _TOS[];
|
||||||
|
#define TOS ((uint32_t)_TOS) /* final TOS location */
|
||||||
|
extern uint8_t _FASTRAM_END[];
|
||||||
|
#define FASTRAM_END ((uint32_t)_FASTRAM_END)
|
||||||
|
extern uint8_t _EMUTOS[];
|
||||||
|
#define EMUTOS ((uint32_t)_EMUTOS) /* where EmuTOS is stored in flash */
|
||||||
|
extern uint8_t _EMUTOS_SIZE[];
|
||||||
|
#define EMUTOS_SIZE ((uint32_t)_EMUTOS_SIZE) /* size of EmuTOS, in bytes */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* check if it is possible to transfer data to PIC
|
||||||
|
*/
|
||||||
|
static inline bool pic_txready(void)
|
||||||
|
{
|
||||||
|
if (MCF_PSC3_PSCSR & MCF_PSC_PSCSR_TXRDY)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* check if it is possible to receive data from PIC
|
||||||
|
*/
|
||||||
|
static inline bool pic_rxready(void)
|
||||||
|
{
|
||||||
|
if (MCF_PSC3_PSCSR & MCF_PSC_PSCSR_RXRDY)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void write_pic_byte(uint8_t value)
|
||||||
|
{
|
||||||
|
/* Wait until the transmitter is ready or 1000us are passed */
|
||||||
|
waitfor(1000, pic_txready);
|
||||||
|
|
||||||
|
/* Transmit the byte */
|
||||||
|
*(volatile uint8_t*)(&MCF_PSC3_PSCTB_8BIT) = value; // Really 8-bit
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t read_pic_byte(void)
|
||||||
|
{
|
||||||
|
/* Wait until a byte has been received or 1000us are passed */
|
||||||
|
waitfor(1000, pic_rxready);
|
||||||
|
|
||||||
|
/* Return the received byte */
|
||||||
|
return *(volatile uint8_t*)(&MCF_PSC3_PSCTB_8BIT); // Really 8-bit
|
||||||
|
}
|
||||||
|
|
||||||
|
void pic_init(void)
|
||||||
|
{
|
||||||
|
char answer[4] = "OLD";
|
||||||
|
|
||||||
|
xprintf("initialize the PIC: ");
|
||||||
|
|
||||||
|
/* Send the PIC initialization string */
|
||||||
|
write_pic_byte('A');
|
||||||
|
write_pic_byte('C');
|
||||||
|
write_pic_byte('P');
|
||||||
|
write_pic_byte('F');
|
||||||
|
|
||||||
|
/* Read the 3-char answer string. Should be "OK!". */
|
||||||
|
answer[0] = read_pic_byte();
|
||||||
|
answer[1] = read_pic_byte();
|
||||||
|
answer[2] = read_pic_byte();
|
||||||
|
answer[3] = '\0';
|
||||||
|
|
||||||
|
if (answer[0] != 'O' || answer[1] != 'K' || answer[2] != '!')
|
||||||
|
{
|
||||||
|
xprintf("PIC initialization failed. Already initialized?\r\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("%s\r\n", answer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void nvram_init(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
xprintf("Restore the NVRAM data: ");
|
||||||
|
|
||||||
|
/* Request for NVRAM backup data */
|
||||||
|
write_pic_byte(0x01);
|
||||||
|
|
||||||
|
/* Check answer type */
|
||||||
|
if (read_pic_byte() != 0x81)
|
||||||
|
{
|
||||||
|
// FIXME: PIC protocol error
|
||||||
|
xprintf("FAILED\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Restore the NVRAM backup to the FPGA */
|
||||||
|
for (i = 0; i < 64; i++)
|
||||||
|
{
|
||||||
|
uint8_t data = read_pic_byte();
|
||||||
|
*(volatile uint8_t*)0xffff8961 = i;
|
||||||
|
*(volatile uint8_t*)0xffff8963 = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void enable_coldfire_interrupts()
|
||||||
|
{
|
||||||
|
xprintf("enable interrupts: ");
|
||||||
|
* (volatile uint32_t *) 0xf0010004 = 0L; /* disable all interrupts */
|
||||||
|
MCF_EPORT_EPPAR = 0xaaa8; /* all interrupts on falling edge */
|
||||||
|
|
||||||
|
MCF_GPT0_GMS = MCF_GPT_GMS_ICT(1) | /* timer 0 on, video change capture on rising edge */
|
||||||
|
MCF_GPT_GMS_IEN |
|
||||||
|
MCF_GPT_GMS_TMS(1);
|
||||||
|
MCF_INTC_ICR62 = 0x3f;
|
||||||
|
|
||||||
|
* (volatile uint8_t *) 0xf0010004 = 0xfe; /* enable int 1-7 */
|
||||||
|
MCF_EPORT_EPIER = 0xfe; /* int 1-7 on */
|
||||||
|
MCF_EPORT_EPFR = 0xff; /* clear all pending interrupts */
|
||||||
|
MCF_INTC_IMRL = 0xffffff00; /* int 1-7 on */
|
||||||
|
MCF_INTC_IMRH = 0xbffffffe; /* psc3 and timer 0 int on */
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void disable_coldfire_interrupts()
|
||||||
|
{
|
||||||
|
* (volatile uint32_t *) 0xf0010004 = 0L; /* disable all interrupts */
|
||||||
|
}
|
||||||
|
|
||||||
|
void BaS(void)
|
||||||
|
{
|
||||||
|
uint8_t *src;
|
||||||
|
uint8_t *dst = (uint8_t *)TOS;
|
||||||
|
uint32_t *adr;
|
||||||
|
|
||||||
|
pic_init();
|
||||||
|
nvram_init();
|
||||||
|
|
||||||
|
xprintf("copy EmuTOS: ");
|
||||||
|
|
||||||
|
/* copy EMUTOS */
|
||||||
|
src = (uint8_t *) EMUTOS;
|
||||||
|
while (src < (uint8_t *)(EMUTOS + EMUTOS_SIZE))
|
||||||
|
{
|
||||||
|
*dst++ = *src++;
|
||||||
|
}
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
|
||||||
|
/* we have copied a code area, so flush the caches */
|
||||||
|
flush_and_invalidate_caches();
|
||||||
|
|
||||||
|
xprintf("initialize MMU: ");
|
||||||
|
mmu_init();
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
|
||||||
|
xprintf("initialize exception vector table: ");
|
||||||
|
vec_init();
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
|
||||||
|
MCF_MMU_MMUCR = MCF_MMU_MMUCR_EN; /* MMU on */
|
||||||
|
|
||||||
|
xprintf("IDE reset: ");
|
||||||
|
/* IDE reset */
|
||||||
|
* (volatile uint8_t *) (0xffff8802 - 2) = 14;
|
||||||
|
* (volatile uint8_t *) (0xffff8802 - 0) = 0x80;
|
||||||
|
wait(1);
|
||||||
|
|
||||||
|
* (volatile uint8_t *) (0xffff8802 - 0) = 0;
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
xprintf("enable video: ");
|
||||||
|
/*
|
||||||
|
* video setup (25MHz)
|
||||||
|
*/
|
||||||
|
* (volatile uint32_t *) (0xf0000410 + 0) = 0x032002ba; /* horizontal 640x480 */
|
||||||
|
* (volatile uint32_t *) (0xf0000410 + 4) = 0x020c020a; /* vertical 640x480 */
|
||||||
|
* (volatile uint32_t *) (0xf0000410 + 8) = 0x0190015d; /* horizontal 320x240 */
|
||||||
|
* (volatile uint32_t *) (0xf0000410 + 12) = 0x020C020A; /* vertical 320x230 */
|
||||||
|
|
||||||
|
#ifdef _NOT_USED_
|
||||||
|
// 32MHz
|
||||||
|
move.l #0x037002ba,(a0)+ // horizontal 640x480
|
||||||
|
move.l #0x020d020a,(a0)+ // vertikal 640x480
|
||||||
|
move.l #0x02A001e0,(a0)+ // horizontal 320x240
|
||||||
|
move.l #0x05a00160,(a0)+ // vertikal 320x240
|
||||||
|
#endif /* _NOT_USED_ */
|
||||||
|
|
||||||
|
/* fifo on, refresh on, ddrcs and cke on, video dac on */
|
||||||
|
* (volatile uint32_t *) (0xf0000410 - 0x20) = 0x01070002;
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
|
||||||
|
sd_card_init();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* memory setup
|
||||||
|
*/
|
||||||
|
for (adr = (uint32_t *) 0x400L; adr < (uint32_t *) 0x800L; ) {
|
||||||
|
*adr++ = 0x0L;
|
||||||
|
*adr++ = 0x0L;
|
||||||
|
*adr++ = 0x0L;
|
||||||
|
*adr++ = 0x0L;
|
||||||
|
}
|
||||||
|
|
||||||
|
* (volatile uint8_t *) 0xffff8007 = 0x48; /* FIXME: what's that ? */
|
||||||
|
|
||||||
|
/* ST RAM */
|
||||||
|
|
||||||
|
* (uint32_t *) 0x42e = STRAM_END; /* phystop TOS system variable */
|
||||||
|
* (uint32_t *) 0x420 = 0x752019f3; /* memvalid TOS system variable */
|
||||||
|
* (uint32_t *) 0x43a = 0x237698aa; /* memval2 TOS system variable */
|
||||||
|
* (uint32_t *) 0x51a = 0x5555aaaa; /* memval3 TOS system variable */
|
||||||
|
|
||||||
|
/* TT-RAM */
|
||||||
|
|
||||||
|
* (uint32_t *) 0x5a4 = FASTRAM_END; /* ramtop TOS system variable */
|
||||||
|
* (uint32_t *) 0x5a8 = 0x1357bd13; /* ramvalid TOS system variable */
|
||||||
|
|
||||||
|
#define NOP() __asm__ __volatile__("nop\n\t" : : : "memory")
|
||||||
|
|
||||||
|
xprintf("init ACIA: ");
|
||||||
|
/* init ACIA */
|
||||||
|
* (uint8_t *) 0xfffffc00 = 3;
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
* (uint8_t *) 0xfffffc04 = 3;
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
* (uint8_t *) 0xfffffc00 = 0x96;
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
* (uint8_t *) 0xfffffa0f = -1;
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
* (uint8_t *) 0xfffffa11 = -1;
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
|
||||||
|
/* Test for pseudo-supervisor mode: DIP switch #6 down */
|
||||||
|
if (DIP_SWITCH & (1 << 7)) {
|
||||||
|
/* In this mode, the OS actually runs in user mode
|
||||||
|
* and all the supervisor instructions are emulated. */
|
||||||
|
__asm__ __volatile__("move.w #0x0700,sr \n\t" : : : "memory");
|
||||||
|
}
|
||||||
|
|
||||||
|
srec_execute("BASFLASH.S19");
|
||||||
|
|
||||||
|
/* Jump into the OS */
|
||||||
|
typedef void void_func(void);
|
||||||
|
typedef struct {
|
||||||
|
void *initial_sp;
|
||||||
|
void_func *initial_pc;
|
||||||
|
} ROM_HEADER;
|
||||||
|
|
||||||
|
xprintf("Call OS. BaS initialization finished...\r\n");
|
||||||
|
enable_coldfire_interrupts();
|
||||||
|
|
||||||
|
ROM_HEADER* os_header = (ROM_HEADER*)TOS;
|
||||||
|
os_header->initial_pc();
|
||||||
|
}
|
||||||
366
i2cspi_BaS_gcc/sources/bas_printf.c
Normal file
366
i2cspi_BaS_gcc/sources/bas_printf.c
Normal file
@@ -0,0 +1,366 @@
|
|||||||
|
/*
|
||||||
|
* tc.printf.c: A public-domain, minimal printf/sprintf routine that prints
|
||||||
|
* through the putchar() routine. Feel free to use for
|
||||||
|
* anything... -- 7/17/87 Paul Placeway
|
||||||
|
*/
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1980, 1991 The Regents of the University of California.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. 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.
|
||||||
|
* 3. Neither the name of the University 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 REGENTS 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 REGENTS 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include "MCF5475.h"
|
||||||
|
#include "bas_printf.h"
|
||||||
|
#include "bas_string.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Lexical definitions.
|
||||||
|
*
|
||||||
|
* All lexical space is allocated dynamically.
|
||||||
|
* The eighth/sixteenth bit of characters is used to prevent recognition,
|
||||||
|
* and eventually stripped.
|
||||||
|
*/
|
||||||
|
#define META 0200
|
||||||
|
#define ASCII 0177
|
||||||
|
#define QUOTE ((char) 0200) /* Eighth char bit used for 'ing */
|
||||||
|
#define TRIM 0177 /* Mask to strip quote bit */
|
||||||
|
#define UNDER 0000000 /* No extra bits to do both */
|
||||||
|
#define BOLD 0000000 /* Bold flag */
|
||||||
|
#define STANDOUT META /* Standout flag */
|
||||||
|
#define LITERAL 0000000 /* Literal character flag */
|
||||||
|
#define ATTRIBUTES 0200 /* The bits used for attributes */
|
||||||
|
#define CHAR 0000177 /* Mask to mask out the character */
|
||||||
|
|
||||||
|
#define INF 32766 /* should be bigger than any field to print */
|
||||||
|
|
||||||
|
static char snil[] = "(nil)";
|
||||||
|
|
||||||
|
static void xputchar(int c)
|
||||||
|
{
|
||||||
|
__asm__ __volatile__
|
||||||
|
(
|
||||||
|
".extern printf_helper\n\t"
|
||||||
|
"move.b %0,d0\n\t"
|
||||||
|
"bsr printf_helper\n\t"
|
||||||
|
/* output */:
|
||||||
|
/* input */: "r" (c)
|
||||||
|
/* clobber */: "d0","d2","a0","memory"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void doprnt(void (*addchar)(int), const char *sfmt, va_list ap)
|
||||||
|
{
|
||||||
|
char buf[128]; /* FIXME: this gets allocated in BSS which is not reachable in -mpcrel code */
|
||||||
|
char *bp;
|
||||||
|
const char *f;
|
||||||
|
long l;
|
||||||
|
unsigned long u;
|
||||||
|
int i;
|
||||||
|
int fmt;
|
||||||
|
unsigned char pad = ' ';
|
||||||
|
int flush_left = 0;
|
||||||
|
int f_width = 0;
|
||||||
|
int prec = INF;
|
||||||
|
int hash = 0;
|
||||||
|
int do_long = 0;
|
||||||
|
int sign = 0;
|
||||||
|
int attributes = 0;
|
||||||
|
|
||||||
|
f = sfmt;
|
||||||
|
for (; *f; f++)
|
||||||
|
{
|
||||||
|
if (*f != '%')
|
||||||
|
{
|
||||||
|
/* then just out the char */
|
||||||
|
(*addchar)((int) (((unsigned char) *f) | attributes));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
f++; /* skip the % */
|
||||||
|
|
||||||
|
if (*f == '-')
|
||||||
|
{ /* minus: flush left */
|
||||||
|
flush_left = 1;
|
||||||
|
f++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*f == '0' || *f == '.')
|
||||||
|
{
|
||||||
|
/* padding with 0 rather than blank */
|
||||||
|
pad = '0';
|
||||||
|
f++;
|
||||||
|
}
|
||||||
|
if (*f == '*')
|
||||||
|
{
|
||||||
|
/* field width */
|
||||||
|
f_width = va_arg(ap, int);
|
||||||
|
f++;
|
||||||
|
}
|
||||||
|
else if (isdigit((unsigned char)*f))
|
||||||
|
{
|
||||||
|
f_width = atoi(f);
|
||||||
|
while (isdigit((unsigned char)*f))
|
||||||
|
f++; /* skip the digits */
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*f == '.')
|
||||||
|
{ /* precision */
|
||||||
|
f++;
|
||||||
|
if (*f == '*')
|
||||||
|
{
|
||||||
|
prec = va_arg(ap, int);
|
||||||
|
f++;
|
||||||
|
}
|
||||||
|
else if (isdigit((unsigned char)*f))
|
||||||
|
{
|
||||||
|
prec = atoi(f);
|
||||||
|
while (isdigit((unsigned char)*f))
|
||||||
|
f++; /* skip the digits */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*f == '#')
|
||||||
|
{ /* alternate form */
|
||||||
|
hash = 1;
|
||||||
|
f++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*f == 'l')
|
||||||
|
{ /* long format */
|
||||||
|
do_long++;
|
||||||
|
f++;
|
||||||
|
if (*f == 'l')
|
||||||
|
{
|
||||||
|
do_long++;
|
||||||
|
f++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt = (unsigned char) *f;
|
||||||
|
if (fmt != 'S' && fmt != 'Q' && isupper(fmt))
|
||||||
|
{
|
||||||
|
do_long = 1;
|
||||||
|
fmt = tolower(fmt);
|
||||||
|
}
|
||||||
|
bp = buf;
|
||||||
|
switch (fmt)
|
||||||
|
{ /* do the format */
|
||||||
|
case 'd':
|
||||||
|
switch (do_long)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
l = (long) (va_arg(ap, int));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
default:
|
||||||
|
l = va_arg(ap, long);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (l < 0)
|
||||||
|
{
|
||||||
|
sign = 1;
|
||||||
|
l = -l;
|
||||||
|
}
|
||||||
|
do
|
||||||
|
{
|
||||||
|
*bp++ = (char) (l % 10) + '0';
|
||||||
|
} while ((l /= 10) > 0);
|
||||||
|
if (sign)
|
||||||
|
*bp++ = '-';
|
||||||
|
f_width = f_width - (int) (bp - buf);
|
||||||
|
if (!flush_left)
|
||||||
|
while (f_width-- > 0)
|
||||||
|
(*addchar)((int) (pad | attributes));
|
||||||
|
for (bp--; bp >= buf; bp--)
|
||||||
|
(*addchar)((int) (((unsigned char) *bp) | attributes));
|
||||||
|
if (flush_left)
|
||||||
|
while (f_width-- > 0)
|
||||||
|
(*addchar)((int) (' ' | attributes));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'p':
|
||||||
|
do_long = 1;
|
||||||
|
hash = 1;
|
||||||
|
fmt = 'x';
|
||||||
|
/* no break */
|
||||||
|
case 'o':
|
||||||
|
case 'x':
|
||||||
|
case 'u':
|
||||||
|
switch (do_long)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
u = (unsigned long) (va_arg(ap, unsigned int));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
default:
|
||||||
|
u = va_arg(ap, unsigned long);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (fmt == 'u')
|
||||||
|
{ /* unsigned decimal */
|
||||||
|
do
|
||||||
|
{
|
||||||
|
*bp++ = (char) (u % 10) + '0';
|
||||||
|
} while ((u /= 10) > 0);
|
||||||
|
}
|
||||||
|
else if (fmt == 'o')
|
||||||
|
{ /* octal */
|
||||||
|
do
|
||||||
|
{
|
||||||
|
*bp++ = (char) (u % 8) + '0';
|
||||||
|
} while ((u /= 8) > 0);
|
||||||
|
if (hash)
|
||||||
|
*bp++ = '0';
|
||||||
|
}
|
||||||
|
else if (fmt == 'x')
|
||||||
|
{ /* hex */
|
||||||
|
do
|
||||||
|
{
|
||||||
|
i = (int) (u % 16);
|
||||||
|
if (i < 10)
|
||||||
|
*bp++ = i + '0';
|
||||||
|
else
|
||||||
|
*bp++ = i - 10 + 'a';
|
||||||
|
} while ((u /= 16) > 0);
|
||||||
|
if (hash)
|
||||||
|
{
|
||||||
|
*bp++ = 'x';
|
||||||
|
*bp++ = '0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
i = f_width - (int) (bp - buf);
|
||||||
|
if (!flush_left)
|
||||||
|
while (i-- > 0)
|
||||||
|
(*addchar)((int) (pad | attributes));
|
||||||
|
for (bp--; bp >= buf; bp--)
|
||||||
|
(*addchar)((int) (((unsigned char) *bp) | attributes));
|
||||||
|
if (flush_left)
|
||||||
|
while (i-- > 0)
|
||||||
|
(*addchar)((int) (' ' | attributes));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'c':
|
||||||
|
i = va_arg(ap, int);
|
||||||
|
(*addchar)((int) (i | attributes));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'S':
|
||||||
|
case 'Q':
|
||||||
|
case 's':
|
||||||
|
case 'q':
|
||||||
|
bp = va_arg(ap, char *);
|
||||||
|
if (!bp)
|
||||||
|
bp = snil;
|
||||||
|
f_width = f_width - strlen((char *) bp);
|
||||||
|
if (!flush_left)
|
||||||
|
while (f_width-- > 0)
|
||||||
|
(*addchar)((int) (pad | attributes));
|
||||||
|
for (i = 0; *bp && i < prec; i++)
|
||||||
|
{
|
||||||
|
if (fmt == 'q' && (*bp & QUOTE))
|
||||||
|
(*addchar)((int) ('\\' | attributes));
|
||||||
|
(*addchar)(
|
||||||
|
(int) (((unsigned char) *bp & TRIM) | attributes));
|
||||||
|
bp++;
|
||||||
|
}
|
||||||
|
if (flush_left)
|
||||||
|
while (f_width-- > 0)
|
||||||
|
(*addchar)((int) (' ' | attributes));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'a':
|
||||||
|
attributes = va_arg(ap, int);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '%':
|
||||||
|
(*addchar)((int) ('%' | attributes));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
flush_left = 0, f_width = 0, prec = INF, hash = 0, do_long = 0;
|
||||||
|
sign = 0;
|
||||||
|
pad = ' ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *xstring, *xestring;
|
||||||
|
|
||||||
|
static void xaddchar(int c)
|
||||||
|
{
|
||||||
|
if (xestring == xstring)
|
||||||
|
*xstring = '\0';
|
||||||
|
else
|
||||||
|
*xstring++ = (char) c;
|
||||||
|
}
|
||||||
|
|
||||||
|
void xsnprintf(char *str, size_t size, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list va;
|
||||||
|
va_start(va, fmt);
|
||||||
|
|
||||||
|
xstring = str;
|
||||||
|
xestring = str + size - 1;
|
||||||
|
doprnt(xaddchar, fmt, va);
|
||||||
|
va_end(va);
|
||||||
|
*xstring++ = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
void xprintf(const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list va;
|
||||||
|
va_start(va, fmt);
|
||||||
|
doprnt(xputchar, fmt, va);
|
||||||
|
va_end(va);
|
||||||
|
}
|
||||||
|
|
||||||
|
void xvprintf(const char *fmt, va_list va)
|
||||||
|
{
|
||||||
|
doprnt(xputchar, fmt, va);
|
||||||
|
}
|
||||||
|
|
||||||
|
void xvsnprintf(char *str, size_t size, const char *fmt, va_list va)
|
||||||
|
{
|
||||||
|
xstring = str;
|
||||||
|
xestring = str + size - 1;
|
||||||
|
doprnt(xaddchar, fmt, va);
|
||||||
|
*xstring++ = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void display_progress()
|
||||||
|
{
|
||||||
|
static int _progress_index;
|
||||||
|
char progress_char[] = "|/-\\";
|
||||||
|
|
||||||
|
xputchar(progress_char[_progress_index++ % strlen(progress_char)]);
|
||||||
|
xputchar('\r');
|
||||||
|
}
|
||||||
|
|
||||||
74
i2cspi_BaS_gcc/sources/bas_string.c
Normal file
74
i2cspi_BaS_gcc/sources/bas_string.c
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* bas_string.c
|
||||||
|
*
|
||||||
|
* Created on: 26.02.2013
|
||||||
|
* Author: mfro
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "bas_string.h"
|
||||||
|
|
||||||
|
int strncmp(const char *s1, const char *s2, int max)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int cmp;
|
||||||
|
|
||||||
|
for (i = 0; i < max && *s1++ && *s2++; i++);
|
||||||
|
{
|
||||||
|
cmp = (*s1 - *s2);
|
||||||
|
if (cmp != 0) return cmp;
|
||||||
|
}
|
||||||
|
return cmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *strcpy(char *dst, const char *src)
|
||||||
|
{
|
||||||
|
char *ptr = dst;
|
||||||
|
|
||||||
|
while ((*dst++ = *src++) != '\0');
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
int atoi(const char *c)
|
||||||
|
{
|
||||||
|
int value = 0;
|
||||||
|
while (isdigit(*c))
|
||||||
|
{
|
||||||
|
value *= 10;
|
||||||
|
value += (int) (*c - '0');
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t strlen(const char *s)
|
||||||
|
{
|
||||||
|
const char *start = s;
|
||||||
|
|
||||||
|
while (*s++);
|
||||||
|
|
||||||
|
return s - start - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char *strcat(char *dst, const char *src)
|
||||||
|
{
|
||||||
|
char *ret = dst;
|
||||||
|
dst = &dst[strlen(dst)];
|
||||||
|
while ((*dst++ = *src++) != '\0');
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *strncat(char *dst, const char *src, int max)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char *ret = dst;
|
||||||
|
|
||||||
|
dst = &dst[strlen(dst)];
|
||||||
|
for (i = 0; i < max && *src; i++)
|
||||||
|
{
|
||||||
|
*dst++ = *src++;
|
||||||
|
}
|
||||||
|
*dst++ = '\0';
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
420
i2cspi_BaS_gcc/sources/basflash.c
Normal file
420
i2cspi_BaS_gcc/sources/basflash.c
Normal file
@@ -0,0 +1,420 @@
|
|||||||
|
/*
|
||||||
|
* basflash.c
|
||||||
|
*
|
||||||
|
* Created on: 18.12.2012
|
||||||
|
* Author: mfro
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include "bas_string.h"
|
||||||
|
#include "bas_printf.h"
|
||||||
|
#include "diskio.h"
|
||||||
|
#include "ff.h"
|
||||||
|
#include "s19reader.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static uint32_t mx29lv640d_flash_sectors[] =
|
||||||
|
{
|
||||||
|
0xe0000000, 0xe0002000, 0xe0004000, 0xe0006000, 0xe0008000, 0xe000a000, 0xe000c000, 0xe000e000,
|
||||||
|
0xe0010000, 0xe0020000, 0xe0030000, 0xe0040000, 0xe0050000, 0xe0060000, 0xe0070000, 0xe0080000,
|
||||||
|
0xe0090000, 0xe00a0000, 0xe00b0000, 0xe00c0000, 0xe00d0000, 0xe00e0000, 0xe00f0000, 0xe0100000,
|
||||||
|
0xe0110000, 0xe0120000, 0xe0130000, 0xe0140000, 0xe0150000, 0xe0160000, 0xe0170000, 0xe0180000,
|
||||||
|
0xe0190000, 0xe01a0000, 0xe01b0000, 0xe01c0000, 0xe01d0000, 0xe01e0000, 0xe01f0000, 0xe0200000,
|
||||||
|
0xe0210000, 0xe0220000, 0xe0230000, 0xe0240000, 0xe0250000, 0xe0260000, 0xe0270000, 0xe0280000,
|
||||||
|
0xe0290000, 0xe02a0000, 0xe02b0000, 0xe02c0000, 0xe02d0000, 0xe02e0000, 0xe02f0000, 0xe0300000,
|
||||||
|
0xe0310000, 0xe0320000, 0xe0330000, 0xe0340000, 0xe0350000, 0xe0360000, 0xe0370000, 0xe0380000,
|
||||||
|
0xe0390000, 0xe03a0000, 0xe03b0000, 0xe03c0000, 0xe03d0000, 0xe03e0000, 0xe03f0000, 0xe0400000,
|
||||||
|
0xe0410000, 0xe0420000, 0xe0430000, 0xe0440000, 0xe0450000, 0xe0460000, 0xe0470000, 0xe0480000,
|
||||||
|
0xe0490000, 0xe04a0000, 0xe04b0000, 0xe04c0000, 0xe04d0000, 0xe04e0000, 0xe04f0000, 0xe0500000,
|
||||||
|
0xe0510000, 0xe0520000, 0xe0530000, 0xe0540000, 0xe0550000, 0xe0560000, 0xe0570000, 0xe0580000,
|
||||||
|
0xe0590000, 0xe05a0000, 0xe05b0000, 0xe05c0000, 0xe05d0000, 0xe05e0000, 0xe05f0000, 0xe0600000,
|
||||||
|
0xe0610000, 0xe0620000, 0xe0630000, 0xe0640000, 0xe0650000, 0xe0660000, 0xe0670000, 0xe0680000,
|
||||||
|
0xe0690000, 0xe06a0000, 0xe06b0000, 0xe06c0000, 0xe06d0000, 0xe06e0000, 0xe06f0000, 0xe0700000,
|
||||||
|
0xe0710000, 0xe0720000, 0xe0730000, 0xe0740000, 0xe0750000, 0xe0760000, 0xe0770000, 0xe0780000,
|
||||||
|
0xe0790000, 0xe07a0000, 0xe07b0000, 0xe07c0000, 0xe07d0000, 0xe07e0000, 0xe07f0000, 0xe0800000
|
||||||
|
};
|
||||||
|
static const int num_flash_sectors = sizeof(mx29lv640d_flash_sectors) / sizeof(uint32_t);
|
||||||
|
|
||||||
|
typedef struct romram
|
||||||
|
{
|
||||||
|
uint32_t flash_address;
|
||||||
|
uint32_t ram_address;
|
||||||
|
char *name;
|
||||||
|
} ROMRAM;
|
||||||
|
|
||||||
|
static const struct romram flash_areas[] =
|
||||||
|
{
|
||||||
|
{ 0xe0600000, 0x00e00000, "EmuTOS" }, /* EmuTOS */
|
||||||
|
{ 0xe0400000, 0x00e00000, "FireTOS" }, /* FireTOS */
|
||||||
|
{ 0xe0700000, 0x00e00000, "FPGA" }, /* FPGA config */
|
||||||
|
};
|
||||||
|
static const int num_flash_areas = sizeof(flash_areas) / sizeof(struct romram);
|
||||||
|
|
||||||
|
#define FLASH_ADDRESS 0xe0000000
|
||||||
|
static volatile uint16_t *flash_unlock1 = (volatile uint16_t *) FLASH_ADDRESS + 0xaaa;
|
||||||
|
static volatile uint16_t *flash_unlock2 = (volatile uint16_t *) FLASH_ADDRESS + 0x554;
|
||||||
|
static const uint16_t cmd_unlock1 = 0xaa;
|
||||||
|
static const uint16_t cmd_unlock2 = 0x55;
|
||||||
|
static const uint16_t cmd_sector_erase1 = 0x80;
|
||||||
|
static const uint16_t cmd_sector_erase2 = 0x30;
|
||||||
|
static const uint16_t cmd_sector_erase_suspend = 0xb0;
|
||||||
|
static const uint16_t cmd_sector_erase_resume = 0x30;
|
||||||
|
static const uint16_t cmd_program = 0xa0;
|
||||||
|
static const uint16_t cmd_autoselect = 0x90;
|
||||||
|
static const uint16_t cmd_read = 0xf0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* this callback just does nothing besides returning OK. Meant to do a dry run over the file to check its integrity
|
||||||
|
*/
|
||||||
|
static err_t simulate()
|
||||||
|
{
|
||||||
|
err_t ret = OK;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static err_t memcpy(uint8_t *dst, uint8_t *src, uint32_t length)
|
||||||
|
{
|
||||||
|
uint8_t *end = src + length;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
*dst++ = *src++;
|
||||||
|
} while (src < end);
|
||||||
|
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static err_t flash(uint8_t *dst, uint8_t *src, uint32_t length)
|
||||||
|
{
|
||||||
|
err_t ret = OK;
|
||||||
|
|
||||||
|
/* TODO: do the actual flash */
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* this callback verifies the data against the S-record file contents after a write to destination
|
||||||
|
*/
|
||||||
|
static err_t verify(uint8_t *dst, uint8_t *src, uint32_t length)
|
||||||
|
{
|
||||||
|
uint8_t *end = src + length;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (*src++ != *dst++)
|
||||||
|
return FAIL;
|
||||||
|
} while (src < end);
|
||||||
|
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* unlock a flash sector
|
||||||
|
*/
|
||||||
|
|
||||||
|
err_t unlock_flash_sector(int sector_num)
|
||||||
|
{
|
||||||
|
volatile uint32_t rd;
|
||||||
|
uint32_t size = (sector_num < num_flash_sectors ?
|
||||||
|
mx29lv640d_flash_sectors[sector_num + 1] - mx29lv640d_flash_sectors[sector_num] :
|
||||||
|
0);
|
||||||
|
|
||||||
|
*flash_unlock1 = cmd_unlock1;
|
||||||
|
*flash_unlock2 = cmd_unlock2;
|
||||||
|
*flash_unlock1 = cmd_autoselect;
|
||||||
|
rd = * (volatile uint32_t *) FLASH_ADDRESS;
|
||||||
|
* (volatile uint32_t *) FLASH_ADDRESS = size;
|
||||||
|
(void) rd; /* get rid of "unused variable" compiler warning */
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* erase a flash sector
|
||||||
|
*
|
||||||
|
* sector_num is the index into the sector table above.
|
||||||
|
*
|
||||||
|
* FIXME: need to disable data cache to ensure proper operation
|
||||||
|
*/
|
||||||
|
err_t erase_flash_sector(int sector_num)
|
||||||
|
{
|
||||||
|
volatile uint32_t rd;
|
||||||
|
uint32_t size = (sector_num < num_flash_sectors ?
|
||||||
|
mx29lv640d_flash_sectors[sector_num + 1] - mx29lv640d_flash_sectors[sector_num] :
|
||||||
|
0);
|
||||||
|
|
||||||
|
if (unlock_flash_sector(sector_num) == OK)
|
||||||
|
{
|
||||||
|
*flash_unlock1 = cmd_unlock1;
|
||||||
|
*flash_unlock2 = cmd_unlock2;
|
||||||
|
*flash_unlock1 = cmd_sector_erase1;
|
||||||
|
*flash_unlock1 = cmd_unlock1;
|
||||||
|
*flash_unlock2 = cmd_unlock2;
|
||||||
|
*flash_unlock1 = cmd_sector_erase1;
|
||||||
|
rd = * (volatile uint32_t *) FLASH_ADDRESS;
|
||||||
|
* (volatile uint32_t *) FLASH_ADDRESS = size;
|
||||||
|
(void) rd; /* get rid of "unused variable" compiler warning */
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
return ILLEGAL_SECTOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
err_t erase_flash_region(void *start_address, uint32_t length)
|
||||||
|
{
|
||||||
|
err_t err;
|
||||||
|
int sector = -1;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* determine first sector to erase
|
||||||
|
*
|
||||||
|
* FIXME: if the start address of the .s19 file does not fall on a sector boundary, we
|
||||||
|
* will probably erase vital code in the previous flash sector. This should not happen on the Firebee
|
||||||
|
* where we have fixed areas for the different flash codes, but we should probably take care anyway
|
||||||
|
*/
|
||||||
|
for (i = 0; i < num_flash_sectors; i++)
|
||||||
|
{
|
||||||
|
if (start_address >= (void *) mx29lv640d_flash_sectors[i] && start_address <= (void *) mx29lv640d_flash_sectors[i])
|
||||||
|
sector = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sector >= 0 && sector <= num_flash_sectors)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* erase sectors until free space equals length
|
||||||
|
*
|
||||||
|
* FIXME: same as above. Currently, there is no prevention against overlapping flash areas.
|
||||||
|
*/
|
||||||
|
do {
|
||||||
|
err = erase_flash_sector(sector);
|
||||||
|
sector++;
|
||||||
|
} while ((uint8_t *) mx29lv640d_flash_sectors[sector] < (uint8_t *) start_address + length && ! err);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
err = ILLEGAL_SECTOR;
|
||||||
|
}
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
void srec_flash(char *flash_filename)
|
||||||
|
{
|
||||||
|
DRESULT res;
|
||||||
|
FRESULT fres;
|
||||||
|
FATFS fs;
|
||||||
|
FIL file;
|
||||||
|
err_t err;
|
||||||
|
void *start_address;
|
||||||
|
uint32_t length;
|
||||||
|
|
||||||
|
res = disk_status(0);
|
||||||
|
if (res == RES_OK)
|
||||||
|
{
|
||||||
|
fres = f_mount(0, &fs);
|
||||||
|
if (fres == FR_OK)
|
||||||
|
{
|
||||||
|
if ((fres = f_open(&file, flash_filename, FA_READ) != FR_OK))
|
||||||
|
{
|
||||||
|
xprintf("flasher file %s not present on disk\r\n", flash_filename);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
f_close(&file);
|
||||||
|
|
||||||
|
/* first pass: parse and check for inconsistencies */
|
||||||
|
xprintf("check file integrity: ");
|
||||||
|
err = read_srecords(flash_filename, &start_address, &length, simulate);
|
||||||
|
if (err == OK)
|
||||||
|
{
|
||||||
|
xprintf("OK.\r\nerase flash area (from %p, length 0x%lx): ", start_address, length);
|
||||||
|
err = erase_flash_region(start_address, length);
|
||||||
|
|
||||||
|
/* next pass: copy data to destination */
|
||||||
|
xprintf("OK.\r\flash data: ");
|
||||||
|
err = read_srecords(flash_filename, &start_address, &length, memcpy);
|
||||||
|
if (err == OK)
|
||||||
|
{
|
||||||
|
/* next pass: verify data */
|
||||||
|
xprintf("OK.\r\nverify data: ");
|
||||||
|
err = read_srecords(flash_filename, &start_address, &length, verify);
|
||||||
|
if (err == OK)
|
||||||
|
{
|
||||||
|
typedef void void_func(void);
|
||||||
|
void_func *func;
|
||||||
|
|
||||||
|
xprintf("OK.\r\n");
|
||||||
|
|
||||||
|
xprintf("target successfully written and verified. Start address: %p\r\n", start_address);
|
||||||
|
|
||||||
|
func = (void_func *) start_address;
|
||||||
|
(*func)();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("failed\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("failed\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("failed\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// xprintf("could not mount FAT FS\r\n");
|
||||||
|
}
|
||||||
|
f_mount(0, 0L);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// xprintf("could not initialize SD card\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
err_t srec_load(char *flash_filename)
|
||||||
|
{
|
||||||
|
FRESULT fres;
|
||||||
|
FIL file;
|
||||||
|
err_t err;
|
||||||
|
void *start_address;
|
||||||
|
uint32_t length;
|
||||||
|
|
||||||
|
if ((fres = f_open(&file, flash_filename, FA_READ) != FR_OK))
|
||||||
|
{
|
||||||
|
xprintf("flasher file %s not present on disk\r\n", flash_filename);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
f_close(&file);
|
||||||
|
|
||||||
|
/* first pass: parse and check for inconsistencies */
|
||||||
|
xprintf("check file integrity: ");
|
||||||
|
err = read_srecords(flash_filename, &start_address, &length, simulate);
|
||||||
|
if (err == OK)
|
||||||
|
{
|
||||||
|
/* next pass: copy data to destination */
|
||||||
|
xprintf("OK.\r\ncopy/flash data: ");
|
||||||
|
err = read_srecords(flash_filename, &start_address, &length, memcpy);
|
||||||
|
if (err == OK)
|
||||||
|
{
|
||||||
|
/* next pass: verify data */
|
||||||
|
xprintf("OK.\r\nverify data: ");
|
||||||
|
err = read_srecords(flash_filename, &start_address, &length, verify);
|
||||||
|
if (err == OK)
|
||||||
|
{
|
||||||
|
typedef void void_func(void);
|
||||||
|
void_func *func;
|
||||||
|
|
||||||
|
xprintf("OK.\r\n");
|
||||||
|
xprintf("target successfully written and verified. Start address: %p\r\n", start_address);
|
||||||
|
|
||||||
|
func = (void_func *) start_address;
|
||||||
|
(*func)();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("failed\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("failed\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("failed\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void basflash(void)
|
||||||
|
{
|
||||||
|
const char *basflash_str = "\\BASFLASH";
|
||||||
|
const char *bastest_str = "\\BASTEST";
|
||||||
|
DRESULT res;
|
||||||
|
FRESULT fres;
|
||||||
|
FATFS fs;
|
||||||
|
|
||||||
|
xprintf("\r\nHello from BASFLASH.S19!\r\n\r\n");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* read \BASTEST\ folder contents (search for .S19-files). If found load them to their final destination
|
||||||
|
* (after BaS has copied them, not their flash location) and return.
|
||||||
|
*
|
||||||
|
* Files located in the BASTEST-folder thus override those in flash. Useful for testing before flashing
|
||||||
|
*/
|
||||||
|
res = disk_status(0);
|
||||||
|
xprintf("disk_status(0) = %d\r\n", res);
|
||||||
|
if (res == RES_OK)
|
||||||
|
{
|
||||||
|
fres = f_mount(0, &fs);
|
||||||
|
xprintf("f_mount() = %d\r\n", fres);
|
||||||
|
if (fres == FR_OK)
|
||||||
|
{
|
||||||
|
DIR directory;
|
||||||
|
|
||||||
|
fres = f_opendir(&directory, bastest_str);
|
||||||
|
xprintf("f_opendir() = %d\r\n", fres);
|
||||||
|
if (fres == FR_OK)
|
||||||
|
{
|
||||||
|
FILINFO fileinfo;
|
||||||
|
|
||||||
|
fres = f_readdir(&directory, &fileinfo);
|
||||||
|
xprintf("f_readdir() = %d\r\n", fres);
|
||||||
|
while (fres == FR_OK)
|
||||||
|
{
|
||||||
|
const char *srec_ext = ".S19";
|
||||||
|
char path[30];
|
||||||
|
|
||||||
|
if (fileinfo.fname[0] != '\0') /* found a file */
|
||||||
|
{
|
||||||
|
xprintf("check file %s (%s == %s ?)\r\n", fileinfo.fname, &fileinfo.fname[strlen(fileinfo.fname) - 4], srec_ext);
|
||||||
|
if (strlen(fileinfo.fname) >= 4 && strncmp(&fileinfo.fname[strlen(fileinfo.fname) - 4], srec_ext, 4) == 0) /* we have a .S19 file */
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* build path + filename
|
||||||
|
*/
|
||||||
|
strcpy(path, bastest_str);
|
||||||
|
strcat(path, "\\");
|
||||||
|
strncat(path, fileinfo.fname, 13);
|
||||||
|
|
||||||
|
xprintf("loading file %s\r\n", path);
|
||||||
|
/*
|
||||||
|
* load file
|
||||||
|
*/
|
||||||
|
if (srec_load(path) != OK)
|
||||||
|
{
|
||||||
|
xprintf("failed to load file %s\r\n", path);
|
||||||
|
// error handling
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break; /* exit if no file found */
|
||||||
|
fres = f_readdir(&directory, &fileinfo);
|
||||||
|
xprintf("f_readdir() = %d\r\n", fres);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("f_opendir %s failed with error code %d\r\n", bastest_str, fres);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// xprintf("could not mount FAT FS\r\n");
|
||||||
|
}
|
||||||
|
f_mount(0, 0L); /* unmount SD card */
|
||||||
|
}
|
||||||
|
}
|
||||||
26
i2cspi_BaS_gcc/sources/basflash_start.c
Normal file
26
i2cspi_BaS_gcc/sources/basflash_start.c
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* basflash_start.c
|
||||||
|
*
|
||||||
|
* Created on: 16.02.2013
|
||||||
|
* Author: mfro
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
static uint32_t ownstack[4096];
|
||||||
|
static uint32_t *stackptr = &ownstack[4095];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* setup our own stack in SDRAM to prevent clashing BaS's in SRAM (size limited).
|
||||||
|
*/
|
||||||
|
void startup(void)
|
||||||
|
{
|
||||||
|
static uint32_t oldstack;
|
||||||
|
|
||||||
|
void basflash(void);
|
||||||
|
__asm__ __volatile__("move.l sp,%0\n\t" : "=g"(oldstack) : :);
|
||||||
|
__asm__ __volatile__("move.l %0,sp\n\t" : : "g"(stackptr) : );
|
||||||
|
basflash();
|
||||||
|
__asm__ __volatile__("move.l %0,sp\n\t" : : "g"(oldstack) : "sp");
|
||||||
|
(void) stackptr; /* make compiler happy about unused variables */
|
||||||
|
}
|
||||||
48
i2cspi_BaS_gcc/sources/cache.c
Normal file
48
i2cspi_BaS_gcc/sources/cache.c
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* cache handling
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2010 - 2012 F. Aschwanden
|
||||||
|
* Copyright 2011 - 2012 V. Riviere
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "cache.h"
|
||||||
|
|
||||||
|
void flush_and_invalidate_caches(void)
|
||||||
|
{
|
||||||
|
__asm__ (
|
||||||
|
" clr.l d0\n\t"
|
||||||
|
" clr.l d1\n\t"
|
||||||
|
" move.l d0,a0\n\t"
|
||||||
|
"cfa_setloop:\n\t"
|
||||||
|
" cpushl bc,(a0) | flush\n\t"
|
||||||
|
" lea 0x10(a0),a0 | index+1\n\t"
|
||||||
|
" addq.l #1,d1 | index+1\n\t"
|
||||||
|
" cmpi.w #512,d1 | all sets?\n\t"
|
||||||
|
" bne.s cfa_setloop | no->\n\t"
|
||||||
|
" clr.l d1\n\t"
|
||||||
|
" addq.l #1,d0\n\t"
|
||||||
|
" move.l d0,a0\n\t"
|
||||||
|
" cmpi.w #4,d0 | all ways?\n\t"
|
||||||
|
" bne.s cfa_setloop | no->\n\t"
|
||||||
|
/* input */ :
|
||||||
|
/* output */ :
|
||||||
|
/* clobber */ : "d0", "d1", "a0"
|
||||||
|
);
|
||||||
|
}
|
||||||
3798
i2cspi_BaS_gcc/sources/cc932.c
Normal file
3798
i2cspi_BaS_gcc/sources/cc932.c
Normal file
File diff suppressed because it is too large
Load Diff
10973
i2cspi_BaS_gcc/sources/cc936.c
Normal file
10973
i2cspi_BaS_gcc/sources/cc936.c
Normal file
File diff suppressed because it is too large
Load Diff
8603
i2cspi_BaS_gcc/sources/cc949.c
Normal file
8603
i2cspi_BaS_gcc/sources/cc949.c
Normal file
File diff suppressed because it is too large
Load Diff
6829
i2cspi_BaS_gcc/sources/cc950.c
Normal file
6829
i2cspi_BaS_gcc/sources/cc950.c
Normal file
File diff suppressed because it is too large
Load Diff
540
i2cspi_BaS_gcc/sources/ccsbcs.c
Normal file
540
i2cspi_BaS_gcc/sources/ccsbcs.c
Normal file
@@ -0,0 +1,540 @@
|
|||||||
|
/*------------------------------------------------------------------------*/
|
||||||
|
/* Unicode - Local code bidirectional converter (C)ChaN, 2009 */
|
||||||
|
/* (SBCS code pages) */
|
||||||
|
/*------------------------------------------------------------------------*/
|
||||||
|
/* 437 U.S. (OEM)
|
||||||
|
/ 720 Arabic (OEM)
|
||||||
|
/ 1256 Arabic (Windows)
|
||||||
|
/ 737 Greek (OEM)
|
||||||
|
/ 1253 Greek (Windows)
|
||||||
|
/ 1250 Central Europe (Windows)
|
||||||
|
/ 775 Baltic (OEM)
|
||||||
|
/ 1257 Baltic (Windows)
|
||||||
|
/ 850 Multilingual Latin 1 (OEM)
|
||||||
|
/ 852 Latin 2 (OEM)
|
||||||
|
/ 1252 Latin 1 (Windows)
|
||||||
|
/ 855 Cyrillic (OEM)
|
||||||
|
/ 1251 Cyrillic (Windows)
|
||||||
|
/ 866 Russian (OEM)
|
||||||
|
/ 857 Turkish (OEM)
|
||||||
|
/ 1254 Turkish (Windows)
|
||||||
|
/ 858 Multilingual Latin 1 + Euro (OEM)
|
||||||
|
/ 862 Hebrew (OEM)
|
||||||
|
/ 1255 Hebrew (Windows)
|
||||||
|
/ 874 Thai (OEM, Windows)
|
||||||
|
/ 1258 Vietnam (OEM, Windows)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ff.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#if _CODE_PAGE == 437
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP437(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
|
||||||
|
0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
|
||||||
|
0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
|
||||||
|
0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192,
|
||||||
|
0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
|
||||||
|
0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
|
||||||
|
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
|
||||||
|
0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
|
||||||
|
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
|
||||||
|
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
|
||||||
|
0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
|
||||||
|
0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
|
||||||
|
0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4,
|
||||||
|
0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229,
|
||||||
|
0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
|
||||||
|
0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 720
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP720(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x0000, 0x0000, 0x00E9, 0x00E2, 0x0000, 0x00E0, 0x0000, 0x00E7,
|
||||||
|
0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x0000, 0x0651, 0x0652, 0x00F4, 0x00A4, 0x0640, 0x00FB, 0x00F9,
|
||||||
|
0x0621, 0x0622, 0x0623, 0x0624, 0x00A3, 0x0625, 0x0626, 0x0627,
|
||||||
|
0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F,
|
||||||
|
0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x00AB, 0x00BB,
|
||||||
|
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
|
||||||
|
0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
|
||||||
|
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
|
||||||
|
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
|
||||||
|
0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
|
||||||
|
0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
|
||||||
|
0x0636, 0x0637, 0x0638, 0x0639, 0x063A, 0x0641, 0x00B5, 0x0642,
|
||||||
|
0x0643, 0x0644, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649, 0x064A,
|
||||||
|
0x2261, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, 0xO650, 0x2248,
|
||||||
|
0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 737
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP737(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
|
||||||
|
0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0,
|
||||||
|
0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,
|
||||||
|
0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8,
|
||||||
|
0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0,
|
||||||
|
0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8,
|
||||||
|
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
|
||||||
|
0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
|
||||||
|
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
|
||||||
|
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
|
||||||
|
0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
|
||||||
|
0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
|
||||||
|
0x03C9, 0x03AC, 0x03AD, 0x03AE, 0x03CA, 0x03AF, 0x03CC, 0x03CD,
|
||||||
|
0x03CB, 0x03CE, 0x0386, 0x0388, 0x0389, 0x038A, 0x038C, 0x038E,
|
||||||
|
0x038F, 0x00B1, 0x2265, 0x2264, 0x03AA, 0x03AB, 0x00F7, 0x2248,
|
||||||
|
0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 775
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP775(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x0106, 0x00FC, 0x00E9, 0x0101, 0x00E4, 0x0123, 0x00E5, 0x0107,
|
||||||
|
0x0142, 0x0113, 0x0156, 0x0157, 0x012B, 0x0179, 0x00C4, 0x00C5,
|
||||||
|
0x00C9, 0x00E6, 0x00C6, 0x014D, 0x00F6, 0x0122, 0x00A2, 0x015A,
|
||||||
|
0x015B, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x00A4,
|
||||||
|
0x0100, 0x012A, 0x00F3, 0x017B, 0x017C, 0x017A, 0x201D, 0x00A6,
|
||||||
|
0x00A9, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x0141, 0x00AB, 0x00BB,
|
||||||
|
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0104, 0x010C, 0x0118,
|
||||||
|
0x0116, 0x2563, 0x2551, 0x2557, 0x255D, 0x012E, 0x0160, 0x2510,
|
||||||
|
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0172, 0x016A,
|
||||||
|
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x017D,
|
||||||
|
0x0105, 0x010D, 0x0119, 0x0117, 0x012F, 0x0161, 0x0173, 0x016B,
|
||||||
|
0x017E, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
|
||||||
|
0x00D3, 0x00DF, 0x014C, 0x0143, 0x00F5, 0x00D5, 0x00B5, 0x0144,
|
||||||
|
0x0136, 0x0137, 0x013B, 0x013C, 0x0146, 0x0112, 0x0145, 0x2019,
|
||||||
|
0x00AD, 0x00B1, 0x201C, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x201E,
|
||||||
|
0x00B0, 0x2219, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 850
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP850(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
|
||||||
|
0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
|
||||||
|
0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
|
||||||
|
0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192,
|
||||||
|
0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
|
||||||
|
0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
|
||||||
|
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0,
|
||||||
|
0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510,
|
||||||
|
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3,
|
||||||
|
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
|
||||||
|
0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x0131, 0x00CD, 0x00CE,
|
||||||
|
0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580,
|
||||||
|
0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE,
|
||||||
|
0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4,
|
||||||
|
0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8,
|
||||||
|
0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 852
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP852(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x016F, 0x0107, 0x00E7,
|
||||||
|
0x0142, 0x00EB, 0x0150, 0x0151, 0x00EE, 0x0179, 0x00C4, 0x0106,
|
||||||
|
0x00C9, 0x0139, 0x013A, 0x00F4, 0x00F6, 0x013D, 0x013E, 0x015A,
|
||||||
|
0x015B, 0x00D6, 0x00DC, 0x0164, 0x0165, 0x0141, 0x00D7, 0x010D,
|
||||||
|
0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x0104, 0x0105, 0x017D, 0x017E,
|
||||||
|
0x0118, 0x0119, 0x00AC, 0x017A, 0x010C, 0x015F, 0x00AB, 0x00BB,
|
||||||
|
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x011A,
|
||||||
|
0x015E, 0x2563, 0x2551, 0x2557, 0x255D, 0x017B, 0x017C, 0x2510,
|
||||||
|
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0102, 0x0103,
|
||||||
|
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
|
||||||
|
0x0111, 0x0110, 0x010E, 0x00CB, 0x010F, 0x0147, 0x00CD, 0x00CE,
|
||||||
|
0x011B, 0x2518, 0x250C, 0x2588, 0x2584, 0x0162, 0x016E, 0x2580,
|
||||||
|
0x00D3, 0x00DF, 0x00D4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161,
|
||||||
|
0x0154, 0x00DA, 0x0155, 0x0170, 0x00FD, 0x00DD, 0x0163, 0x00B4,
|
||||||
|
0x00AD, 0x02DD, 0x02DB, 0x02C7, 0x02D8, 0x00A7, 0x00F7, 0x00B8,
|
||||||
|
0x00B0, 0x00A8, 0x02D9, 0x0171, 0x0158, 0x0159, 0x25A0, 0x00A0
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 855
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP855(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404,
|
||||||
|
0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408,
|
||||||
|
0x0459, 0x0409, 0x045A, 0x040A, 0x045B, 0x040B, 0x045C, 0x040C,
|
||||||
|
0x045E, 0x040E, 0x045F, 0x040F, 0x044E, 0x042E, 0x044A, 0x042A,
|
||||||
|
0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414,
|
||||||
|
0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00AB, 0x00BB,
|
||||||
|
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438,
|
||||||
|
0x0418, 0x2563, 0x2551, 0x2557, 0x255D, 0x0439, 0x0419, 0x2510,
|
||||||
|
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x043A, 0x041A,
|
||||||
|
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
|
||||||
|
0x043B, 0x041B, 0x043C, 0x041C, 0x043D, 0x041D, 0x043E, 0x041E,
|
||||||
|
0x043F, 0x2518, 0x250C, 0x2588, 0x2584, 0x041F, 0x044F, 0x2580,
|
||||||
|
0x042F, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443,
|
||||||
|
0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044C, 0x042C, 0x2116,
|
||||||
|
0x00AD, 0x044B, 0x042B, 0x0437, 0x0417, 0x0448, 0x0428, 0x044D,
|
||||||
|
0x042D, 0x0449, 0x0429, 0x0447, 0x0427, 0x00A7, 0x25A0, 0x00A0
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 857
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP857(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
|
||||||
|
0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0131, 0x00C4, 0x00C5,
|
||||||
|
0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
|
||||||
|
0x0130, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x015E, 0x015F,
|
||||||
|
0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x011E, 0x011F,
|
||||||
|
0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
|
||||||
|
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0,
|
||||||
|
0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510,
|
||||||
|
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3,
|
||||||
|
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
|
||||||
|
0x00BA, 0x00AA, 0x00CA, 0x00CB, 0x00C8, 0x0000, 0x00CD, 0x00CE,
|
||||||
|
0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580,
|
||||||
|
0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x0000,
|
||||||
|
0x00D7, 0x00DA, 0x00DB, 0x00D9, 0x00EC, 0x00FF, 0x00AF, 0x00B4,
|
||||||
|
0x00AD, 0x00B1, 0x0000, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8,
|
||||||
|
0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 858
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP858(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
|
||||||
|
0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
|
||||||
|
0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
|
||||||
|
0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192,
|
||||||
|
0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
|
||||||
|
0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
|
||||||
|
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0,
|
||||||
|
0x00A9, 0x2563, 0x2551, 0x2557, 0x2550, 0x00A2, 0x00A5, 0x2510,
|
||||||
|
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3,
|
||||||
|
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
|
||||||
|
0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x20AC, 0x00CD, 0x00CE,
|
||||||
|
0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00C6, 0x00CC, 0x2580,
|
||||||
|
0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE,
|
||||||
|
0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4,
|
||||||
|
0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8,
|
||||||
|
0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 862
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP862(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
|
||||||
|
0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
|
||||||
|
0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
|
||||||
|
0x05E8, 0x05E9, 0x05EA, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192,
|
||||||
|
0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
|
||||||
|
0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
|
||||||
|
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
|
||||||
|
0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
|
||||||
|
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
|
||||||
|
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
|
||||||
|
0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
|
||||||
|
0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
|
||||||
|
0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4,
|
||||||
|
0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229,
|
||||||
|
0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
|
||||||
|
0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 866
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP866(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
|
||||||
|
0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
|
||||||
|
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
|
||||||
|
0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
|
||||||
|
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
|
||||||
|
0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
|
||||||
|
0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
|
||||||
|
0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
|
||||||
|
0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
|
||||||
|
0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
|
||||||
|
0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
|
||||||
|
0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
|
||||||
|
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
|
||||||
|
0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
|
||||||
|
0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E,
|
||||||
|
0x00B0, 0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 874
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP874(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x20AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x2026, 0x0000, 0x0000,
|
||||||
|
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||||
|
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x00A0, 0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07,
|
||||||
|
0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F,
|
||||||
|
0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16, 0x0E17,
|
||||||
|
0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F,
|
||||||
|
0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27,
|
||||||
|
0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F,
|
||||||
|
0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37,
|
||||||
|
0x0E38, 0x0E39, 0x0E3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0E3F,
|
||||||
|
0x0E40, 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47,
|
||||||
|
0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F,
|
||||||
|
0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57,
|
||||||
|
0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0x0000, 0x0000, 0x0000, 0x0000
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 1250
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP1250(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||||
|
0x0000, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179,
|
||||||
|
0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||||
|
0x0000, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A,
|
||||||
|
0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7,
|
||||||
|
0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B,
|
||||||
|
0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||||
|
0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C,
|
||||||
|
0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7,
|
||||||
|
0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E,
|
||||||
|
0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7,
|
||||||
|
0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF,
|
||||||
|
0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7,
|
||||||
|
0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F,
|
||||||
|
0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7,
|
||||||
|
0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 1251
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP1251(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||||
|
0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
|
||||||
|
0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||||
|
0x0000, 0x2111, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,
|
||||||
|
0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,
|
||||||
|
0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
|
||||||
|
0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,
|
||||||
|
0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,
|
||||||
|
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
|
||||||
|
0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
|
||||||
|
0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
|
||||||
|
0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
|
||||||
|
0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
|
||||||
|
0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
|
||||||
|
0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
|
||||||
|
0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 1252
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP1252(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||||
|
0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x017D, 0x0000,
|
||||||
|
0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||||
|
0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0000, 0x017E, 0x0178,
|
||||||
|
0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||||
|
0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
|
||||||
|
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||||
|
0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
|
||||||
|
0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
|
||||||
|
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
|
||||||
|
0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
|
||||||
|
0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
|
||||||
|
0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
|
||||||
|
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
|
||||||
|
0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
|
||||||
|
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 1253
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP1253(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||||
|
0x0000, 0x2030, 0x0000, 0x2039, 0x000C, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||||
|
0x0000, 0x2122, 0x0000, 0x203A, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||||
|
0x00A8, 0x00A9, 0x0000, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015,
|
||||||
|
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7,
|
||||||
|
0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F,
|
||||||
|
0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
|
||||||
|
0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
|
||||||
|
0x03A0, 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
|
||||||
|
0x03A8, 0x03A9, 0x03AA, 0x03AD, 0x03AC, 0x03AD, 0x03AE, 0x03AF,
|
||||||
|
0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
|
||||||
|
0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
|
||||||
|
0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
|
||||||
|
0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x0000
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 1254
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP1254(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x20AC, 0x0000, 0x210A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||||
|
0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||||
|
0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x0000, 0x0000, 0x0178,
|
||||||
|
0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||||
|
0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
|
||||||
|
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||||
|
0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
|
||||||
|
0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
|
||||||
|
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
|
||||||
|
0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
|
||||||
|
0x00D8, 0x00D9, 0x00DA, 0x00BD, 0x00DC, 0x0130, 0x015E, 0x00DF,
|
||||||
|
0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
|
||||||
|
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
|
||||||
|
0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
|
||||||
|
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 1255
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP1255(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||||
|
0x02C6, 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||||
|
0x02DC, 0x2122, 0x0000, 0x203A, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||||
|
0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
|
||||||
|
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||||
|
0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
|
||||||
|
0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7,
|
||||||
|
0x05B8, 0x05B9, 0x0000, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF,
|
||||||
|
0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3,
|
||||||
|
0x05F4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
|
||||||
|
0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
|
||||||
|
0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
|
||||||
|
0x05E8, 0x05E9, 0x05EA, 0x0000, 0x0000, 0x200E, 0x200F, 0x0000
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 1256
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP1256(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||||
|
0x02C6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
|
||||||
|
0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||||
|
0x06A9, 0x2122, 0x0691, 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA,
|
||||||
|
0x00A0, 0x060C, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||||
|
0x00A8, 0x00A9, 0x06BE, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
|
||||||
|
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||||
|
0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061F,
|
||||||
|
0x06C1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
|
||||||
|
0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F,
|
||||||
|
0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7,
|
||||||
|
0x0637, 0x0638, 0x0639, 0x063A, 0x0640, 0x0640, 0x0642, 0x0643,
|
||||||
|
0x00E0, 0x0644, 0x00E2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7,
|
||||||
|
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A, 0x00EE, 0x00EF,
|
||||||
|
0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, 0x00F7,
|
||||||
|
0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x06D2
|
||||||
|
}
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 1257
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP1257(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||||
|
0x0000, 0x2030, 0x0000, 0x2039, 0x0000, 0x00A8, 0x02C7, 0x00B8,
|
||||||
|
0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||||
|
0x0000, 0x2122, 0x0000, 0x203A, 0x0000, 0x00AF, 0x02DB, 0x0000,
|
||||||
|
0x00A0, 0x0000, 0x00A2, 0x00A3, 0x00A4, 0x0000, 0x00A6, 0x00A7,
|
||||||
|
0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
|
||||||
|
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||||
|
0x00B8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6,
|
||||||
|
0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112,
|
||||||
|
0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B,
|
||||||
|
0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7,
|
||||||
|
0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF,
|
||||||
|
0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113,
|
||||||
|
0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C,
|
||||||
|
0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7,
|
||||||
|
0x0173, 0x014E, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9
|
||||||
|
};
|
||||||
|
|
||||||
|
#elif _CODE_PAGE == 1258
|
||||||
|
#define _TBLDEF 1
|
||||||
|
static
|
||||||
|
const uint16_t Tbl[] = { /* CP1258(0x80-0xFF) to Unicode conversion table */
|
||||||
|
0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
|
||||||
|
0x02C6, 0x2030, 0x0000, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000,
|
||||||
|
0x0000, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
|
||||||
|
0x02DC, 0x2122, 0x0000, 0x203A, 0x0153, 0x0000, 0x0000, 0x0178,
|
||||||
|
0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
|
||||||
|
0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
|
||||||
|
0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
|
||||||
|
0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
|
||||||
|
0x00C0, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
|
||||||
|
0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x0300, 0x00CD, 0x00CE, 0x00CF,
|
||||||
|
0x0110, 0x00D1, 0x0309, 0x00D3, 0x00D4, 0x01A0, 0x00D6, 0x00D7,
|
||||||
|
0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x01AF, 0x0303, 0x00DF,
|
||||||
|
0x00E0, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
|
||||||
|
0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0301, 0x00ED, 0x00EE, 0x00EF,
|
||||||
|
0x0111, 0x00F1, 0x0323, 0x00F3, 0x00F4, 0x01A1, 0x00F6, 0x00F7,
|
||||||
|
0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x01B0, 0x20AB, 0x00FF
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if !_TBLDEF || !_USE_LFN
|
||||||
|
#error This file is not needed in current configuration. Remove from the project.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
uint16_t ff_convert ( /* Converted character, Returns zero on error */
|
||||||
|
uint16_t src, /* Character code to be converted */
|
||||||
|
uint32_t dir /* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
uint16_t c;
|
||||||
|
|
||||||
|
|
||||||
|
if (src < 0x80) { /* ASCII */
|
||||||
|
c = src;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (dir) { /* OEMCP to Unicode */
|
||||||
|
c = (src >= 0x100) ? 0 : Tbl[src - 0x80];
|
||||||
|
|
||||||
|
} else { /* Unicode to OEMCP */
|
||||||
|
for (c = 0; c < 0x80; c++) {
|
||||||
|
if (src == Tbl[c]) break;
|
||||||
|
}
|
||||||
|
c = (c + 0x80) & 0xFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint16_t ff_wtoupper ( /* Upper converted character */
|
||||||
|
uint16_t chr /* Input character */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
static const uint16_t tbl_lower[] = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xA1, 0x00A2, 0x00A3, 0x00A5, 0x00AC, 0x00AF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x0FF, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x148, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x17E, 0x192, 0x3B1, 0x3B2, 0x3B3, 0x3B4, 0x3B5, 0x3B6, 0x3B7, 0x3B8, 0x3B9, 0x3BA, 0x3BB, 0x3BC, 0x3BD, 0x3BE, 0x3BF, 0x3C0, 0x3C1, 0x3C3, 0x3C4, 0x3C5, 0x3C6, 0x3C7, 0x3C8, 0x3C9, 0x3CA, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43A, 0x43B, 0x43C, 0x43D, 0x43E, 0x43F, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44A, 0x44B, 0x44C, 0x44D, 0x44E, 0x44F, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457, 0x458, 0x459, 0x45A, 0x45B, 0x45C, 0x45E, 0x45F, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x217C, 0x217D, 0x217E, 0x217F, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0 };
|
||||||
|
static const uint16_t tbl_upper[] = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x21, 0xFFE0, 0xFFE1, 0xFFE5, 0xFFE2, 0xFFE3, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0x178, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x179, 0x17B, 0x17D, 0x191, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39A, 0x39B, 0x39C, 0x39D, 0x39E, 0x39F, 0x3A0, 0x3A1, 0x3A3, 0x3A4, 0x3A5, 0x3A6, 0x3A7, 0x3A8, 0x3A9, 0x3AA, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41A, 0x41B, 0x41C, 0x41D, 0x41E, 0x41F, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42A, 0x42B, 0x42C, 0x42D, 0x42E, 0x42F, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40A, 0x40B, 0x40C, 0x40E, 0x40F, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0 };
|
||||||
|
int i;
|
||||||
|
|
||||||
|
|
||||||
|
for (i = 0; tbl_lower[i] && chr != tbl_lower[i]; i++) ;
|
||||||
|
|
||||||
|
return tbl_lower[i] ? tbl_upper[i] : chr;
|
||||||
|
}
|
||||||
839
i2cspi_BaS_gcc/sources/exceptions.S
Normal file
839
i2cspi_BaS_gcc/sources/exceptions.S
Normal file
@@ -0,0 +1,839 @@
|
|||||||
|
/*
|
||||||
|
* initialize exception vectors
|
||||||
|
*/
|
||||||
|
#include "startcf.h"
|
||||||
|
|
||||||
|
.extern __Bas_base
|
||||||
|
.extern __SUP_SP
|
||||||
|
.extern _rom_entry
|
||||||
|
.extern __RAMBAR0
|
||||||
|
.extern _rt_cacr
|
||||||
|
.extern _rt_mod
|
||||||
|
.extern _rt_ssp
|
||||||
|
.extern _rt_usp
|
||||||
|
.extern _rt_vbr
|
||||||
|
.extern _illegal_instruction
|
||||||
|
.extern _privileg_violation
|
||||||
|
.extern _mmutr_miss
|
||||||
|
.extern __MBAR
|
||||||
|
.extern __MMUBAR
|
||||||
|
.extern _video_tlb
|
||||||
|
.extern _video_sbt
|
||||||
|
.extern cpusha
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_MMU_MMUCR __MMUBAR
|
||||||
|
#define MCF_MMU_MMUOR __MMUBAR+0x04
|
||||||
|
#define MCF_MMU_MMUSR __MMUBAR+0x08
|
||||||
|
#define MCF_MMU_MMUAR __MMUBAR+0x10
|
||||||
|
#define MCF_MMU_MMUTR __MMUBAR+0x14
|
||||||
|
#define MCF_MMU_MMUDR __MMUBAR+0x18
|
||||||
|
|
||||||
|
#define MCF_EPORT_EPPAR __MBAR+0xF00
|
||||||
|
#define MCF_EPORT_EPDDR __MBAR+0xF04
|
||||||
|
#define MCF_EPORT_EPIER __MBAR+0xF05
|
||||||
|
#define MCF_EPORT_EPDR __MBAR+0xF08
|
||||||
|
#define MCF_EPORT_EPPDR __MBAR+0xF09
|
||||||
|
#define MCF_EPORT_EPFR __MBAR+0xF0C
|
||||||
|
|
||||||
|
#define MCF_GPIO_PODR_FEC1L __MBAR+0xA07
|
||||||
|
|
||||||
|
#define MCF_PSC0_PSCTB_8BIT __MBAR+0x860C
|
||||||
|
|
||||||
|
#define MCF_PSC3_PSCRB_8BIT __MBAR+0x890C
|
||||||
|
#define MCF_PSC3_PSCTB_8BIT __MBAR+0x890C
|
||||||
|
|
||||||
|
.global _vec_init
|
||||||
|
|
||||||
|
//mmu ---------------------------------------------------
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_MMU_MMUCR __MMUBAR
|
||||||
|
#define MCF_MMU_MMUOR __MMUBAR+0x04
|
||||||
|
#define MCF_MMU_MMUSR __MMUBAR+0x08
|
||||||
|
#define MCF_MMU_MMUAR __MMUBAR+0x10
|
||||||
|
#define MCF_MMU_MMUTR __MMUBAR+0x14
|
||||||
|
#define MCF_MMU_MMUDR __MMUBAR+0x18
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUCR */
|
||||||
|
#define MCF_MMU_MMUCR_EN (0x1)
|
||||||
|
#define MCF_MMU_MMUCR_ASM (0x2)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUOR */
|
||||||
|
#define MCF_MMU_MMUOR_UAA (0x1)
|
||||||
|
#define MCF_MMU_MMUOR_ACC (0x2)
|
||||||
|
#define MCF_MMU_MMUOR_RW (0x4)
|
||||||
|
#define MCF_MMU_MMUOR_ADR (0x8)
|
||||||
|
#define MCF_MMU_MMUOR_ITLB (0x10)
|
||||||
|
#define MCF_MMU_MMUOR_CAS (0x20)
|
||||||
|
#define MCF_MMU_MMUOR_CNL (0x40)
|
||||||
|
#define MCF_MMU_MMUOR_CA (0x80)
|
||||||
|
#define MCF_MMU_MMUOR_STLB (0x100)
|
||||||
|
#define MCF_MMU_MMUOR_AA(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUSR */
|
||||||
|
#define MCF_MMU_MMUSR_HIT (0x2)
|
||||||
|
#define MCF_MMU_MMUSR_WF (0x8)
|
||||||
|
#define MCF_MMU_MMUSR_RF (0x10)
|
||||||
|
#define MCF_MMU_MMUSR_SPF (0x20)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUAR */
|
||||||
|
#define MCF_MMU_MMUAR_FA(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUTR */
|
||||||
|
#define MCF_MMU_MMUTR_V (0x1)
|
||||||
|
#define MCF_MMU_MMUTR_SG (0x2)
|
||||||
|
#define MCF_MMU_MMUTR_ID(x) (((x)&0xFF)<<0x2)
|
||||||
|
#define MCF_MMU_MMUTR_VA(x) (((x)&0x3FFFFF)<<0xA)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUDR */
|
||||||
|
#define MCF_MMU_MMUDR_LK (0x2)
|
||||||
|
#define MCF_MMU_MMUDR_X (0x4)
|
||||||
|
#define MCF_MMU_MMUDR_W (0x8)
|
||||||
|
#define MCF_MMU_MMUDR_R (0x10)
|
||||||
|
#define MCF_MMU_MMUDR_SP (0x20)
|
||||||
|
#define MCF_MMU_MMUDR_CM(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_MMU_MMUDR_SZ(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_MMU_MMUDR_PA(x) (((x)&0x3FFFFF)<<0xA)
|
||||||
|
|
||||||
|
#define std_mmutr (MCF_MMU_MMUTR_SG|MCF_MMU_MMUTR_V)
|
||||||
|
#define mmuord_d ( MCF_MMU_MMUOR_ACC|MCF_MMU_MMUOR_UAA)
|
||||||
|
#define mmuord_i (MCF_MMU_MMUOR_ITLB|MCF_MMU_MMUOR_ACC|MCF_MMU_MMUOR_UAA)
|
||||||
|
#define wt_mmudr (MCF_MMU_MMUDR_SZ(00)|MCF_MMU_MMUDR_CM(00)|MCF_MMU_MMUDR_R|MCF_MMU_MMUDR_W|MCF_MMU_MMUDR_X)
|
||||||
|
#define cb_mmudr (MCF_MMU_MMUDR_SZ(00)|MCF_MMU_MMUDR_CM(01)|MCF_MMU_MMUDR_R|MCF_MMU_MMUDR_W|MCF_MMU_MMUDR_X)
|
||||||
|
#define nc_mmudr (MCF_MMU_MMUDR_SZ(00)|MCF_MMU_MMUDR_CM(10)|MCF_MMU_MMUDR_R|MCF_MMU_MMUDR_W|MCF_MMU_MMUDR_X)
|
||||||
|
//---------------------------------------------------
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* General Purpose Timers (GPT)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_GPT0_GMS __MBAR+0x800
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* Slice Timers (SLT)
|
||||||
|
*
|
||||||
|
*********************************************************************/
|
||||||
|
|
||||||
|
#define MCF_SLT0_SCNT __MBAR+0x908
|
||||||
|
|
||||||
|
/**********************************************************/
|
||||||
|
// macros
|
||||||
|
/**********************************************************/
|
||||||
|
.altmacro
|
||||||
|
.macro irq vector,int_mask,clr_int
|
||||||
|
local irq_protect
|
||||||
|
local sev_supint
|
||||||
|
local irq_end
|
||||||
|
|
||||||
|
move.w #0x2700,sr // disable interrupt
|
||||||
|
subq.l #8,a7
|
||||||
|
movem.l d0/a5,(a7) // register sichern
|
||||||
|
lea MCF_EPORT_EPFR,a5
|
||||||
|
move.b #\clr_int,(a5) // clear int pending
|
||||||
|
// test auf protect mode ---------------------
|
||||||
|
move.b DIP_SWITCHa,d0
|
||||||
|
btst #7,d0
|
||||||
|
bne irq_protect // ja->
|
||||||
|
// -------------------------------------------
|
||||||
|
movem.l (a7),d0/a5 // register zurück
|
||||||
|
addq.l #8,a7
|
||||||
|
move.l \vector,-(a7)
|
||||||
|
move #0x2\int_mask\()00,sr
|
||||||
|
rts
|
||||||
|
irq_protect:
|
||||||
|
move.l usp,a5 // usp holen
|
||||||
|
tst.b _rt_mod // supervisor?
|
||||||
|
bne sev_supint // ja ->
|
||||||
|
mov3q.l #-1,_rt_mod // auf supervisor setzen
|
||||||
|
move.l a5,_rt_usp // rt_usp speichern
|
||||||
|
move.l _rt_ssp,a5 // rt_ssp holen
|
||||||
|
#ifdef cf_stack
|
||||||
|
move.l 12(a7),-(a5) // pc transferieren
|
||||||
|
move.l 8(a7),-(a5) // sr,vec
|
||||||
|
#else
|
||||||
|
move.w 8(a7),-(a5) // vector nr.
|
||||||
|
move.l 12(a7),-(a5) // pc verschieben
|
||||||
|
move.w 10(a7),-(a5) // sr verschieben
|
||||||
|
#endif
|
||||||
|
bra irq_end
|
||||||
|
sev_supint:
|
||||||
|
#ifdef cf_stack
|
||||||
|
move.l 12(a7),-(a5) // pc transferieren
|
||||||
|
move.l 8(a7),-(a5) // sr,vec
|
||||||
|
bset #5,2(a5) // auf super setzen
|
||||||
|
#else
|
||||||
|
move.w 8(a7),-(a5) // vector nr.
|
||||||
|
move.l 12(a7),-(a5) // pc verschieben
|
||||||
|
move.w 10(a7),-(a5) // sr verschieben
|
||||||
|
bset #5,(a5) // auf super
|
||||||
|
#endif
|
||||||
|
irq_end:
|
||||||
|
move.l a5,usp // usp setzen
|
||||||
|
lea \vector,a5
|
||||||
|
adda.l _rt_vbr,a5
|
||||||
|
move.l (a5),12(a7) // vectoradresse eintragen
|
||||||
|
move.b #\int_mask,10(a7) // intmaske setzen
|
||||||
|
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
||||||
|
addq.l #8,a7
|
||||||
|
rte // und weg
|
||||||
|
.endm
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FIXME: this is a GNU gas kludge. Ugly, but I just can't come up with any smarter solution
|
||||||
|
*
|
||||||
|
* GNU as does not support multi-character constants. At least I don't know of any way it would.
|
||||||
|
* The following might look more than strange, but I considered the statement
|
||||||
|
*
|
||||||
|
* mchar move.l, 'T,'E,'S,'T,-(SP)
|
||||||
|
*
|
||||||
|
* somewhat more readable than
|
||||||
|
*
|
||||||
|
* move.l #1413829460,-(SP)
|
||||||
|
*
|
||||||
|
* If anybody knows of any better way on how to do this - please do!
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
.macro mchar st,a,b,c,d,tgt
|
||||||
|
\st #\a << 24|\b<<16|\c<<8|\d,\tgt
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.text
|
||||||
|
_vec_init:
|
||||||
|
move.l a2,-(sp) // Backup registers
|
||||||
|
|
||||||
|
mov3q.l #-1,_rt_mod // rt_mod auf super
|
||||||
|
clr.l _rt_ssp
|
||||||
|
clr.l _rt_usp
|
||||||
|
clr.l _rt_vbr
|
||||||
|
move.l #__RAMBAR0,d0 // sind in rambar0
|
||||||
|
movec d0,VBR
|
||||||
|
move.l d0,a0
|
||||||
|
move.l a0,a2
|
||||||
|
init_vec:
|
||||||
|
move.l #256,d0
|
||||||
|
lea std_exc_vec(pc),a1 // standard vector
|
||||||
|
init_vec_loop:
|
||||||
|
move.l a1,(a2)+ // mal standard vector f<EFBFBD>r alle setzen
|
||||||
|
subq.l #1,d0
|
||||||
|
bne init_vec_loop
|
||||||
|
|
||||||
|
move.l #__SUP_SP,(a0)
|
||||||
|
lea reset_vector(pc),a1
|
||||||
|
move.l a1,0x04(a0)
|
||||||
|
lea acess(pc),a1
|
||||||
|
move.l a1,0x08(a0)
|
||||||
|
|
||||||
|
move.b DIP_SWITCHa,d0 // ++ vr
|
||||||
|
btst #7,d0
|
||||||
|
beq no_protect_vectors
|
||||||
|
|
||||||
|
lea _illegal_instruction(pc),a1
|
||||||
|
move.l a1,0x0c(a0)
|
||||||
|
lea _illegal_instruction(pc),a1
|
||||||
|
move.l a1,0x10(a0)
|
||||||
|
lea zero_divide(pc),a1
|
||||||
|
move.l a1,0x14(a0)
|
||||||
|
lea _privileg_violation(pc),a1
|
||||||
|
move.l a1,0x20(a0)
|
||||||
|
lea linea(pc),a1
|
||||||
|
move.l a1,0x28(a0)
|
||||||
|
lea linef(pc),a1
|
||||||
|
move.l a1,0x2c(a0)
|
||||||
|
lea format(pc),a1
|
||||||
|
move.l a1,0x38(a0)
|
||||||
|
|
||||||
|
// floating point overflow
|
||||||
|
lea flpoow(pc),a1
|
||||||
|
move.l a1,0xc0(a0)
|
||||||
|
lea flpoow(pc),a1
|
||||||
|
move.l a1,0xc4(a0)
|
||||||
|
lea flpoow(pc),a1
|
||||||
|
move.l a1,0xc8(a0)
|
||||||
|
lea flpoow(pc),a1
|
||||||
|
move.l a1,0xcc(a0)
|
||||||
|
lea flpoow(pc),a1
|
||||||
|
move.l a1,0xd0(a0)
|
||||||
|
lea flpoow(pc),a1
|
||||||
|
move.l a1,0xd4(a0)
|
||||||
|
lea flpoow(pc),a1
|
||||||
|
move.l a1,0xd8(a0)
|
||||||
|
lea flpoow(pc),a1
|
||||||
|
move.l a1,0xdc(a0)
|
||||||
|
no_protect_vectors:
|
||||||
|
|
||||||
|
|
||||||
|
// int 1-7
|
||||||
|
lea irq1(pc),a1
|
||||||
|
move.l a1,0x104(a0)
|
||||||
|
lea irq2(pc),a1
|
||||||
|
move.l a1,0x108(a0)
|
||||||
|
lea irq3(pc),a1
|
||||||
|
move.l a1,0x10c(a0)
|
||||||
|
lea irq4(pc),a1
|
||||||
|
move.l a1,0x110(a0)
|
||||||
|
lea irq5(pc),a1
|
||||||
|
move.l a1,0x114(a0)
|
||||||
|
lea irq6(pc),a1
|
||||||
|
move.l a1,0x118(a0)
|
||||||
|
lea irq7(pc),a1
|
||||||
|
move.l a1,0x11c(a0)
|
||||||
|
//psc_vectors
|
||||||
|
lea psc3(pc),a1
|
||||||
|
move.l a1,0x180(a0)
|
||||||
|
//timer 1 vectors
|
||||||
|
lea timer0(pc),a1
|
||||||
|
move.l a1,0x1f8(a0)
|
||||||
|
|
||||||
|
move.l (sp)+,a2 // Restore registers
|
||||||
|
rts
|
||||||
|
/*
|
||||||
|
* exception vector routines
|
||||||
|
*/
|
||||||
|
vector_table_start:
|
||||||
|
std_exc_vec:
|
||||||
|
move.w #0x2700,sr // disable interrupt
|
||||||
|
subq.l #8,a7
|
||||||
|
movem.l d0/a5,(a7) // register sichern
|
||||||
|
// test auf protect mode -------------------------------
|
||||||
|
move.b DIP_SWITCHa,d0
|
||||||
|
btst #7,d0
|
||||||
|
bne stv_protect // ja->
|
||||||
|
//------------------------------------------------------
|
||||||
|
move.w 8(a7),d0 // vector holen
|
||||||
|
and.l #0x3fc,d0 // vector nummer ausmaskieren
|
||||||
|
add.l _rt_vbr,d0 // + basis
|
||||||
|
move.l d0,a5
|
||||||
|
move.l (a5),d0
|
||||||
|
move.l 4(a7),a5 // a5 zur<EFBFBD>ck
|
||||||
|
move.l d0,4(a7)
|
||||||
|
move.w 10(a7),d0
|
||||||
|
bset #13,d0 // super
|
||||||
|
move.w d0,sr // orginal sr wert in super setzen
|
||||||
|
move.l (a7)+,d0 // d0 zur<EFBFBD>ck
|
||||||
|
rts
|
||||||
|
stv_protect:
|
||||||
|
move.l usp,a5 // usp holen
|
||||||
|
tst.b _rt_mod // supervisor?
|
||||||
|
bne sev_sup // ja ->
|
||||||
|
mov3q.l #-1,_rt_mod // auf supervisor setzen
|
||||||
|
move.l a5,_rt_usp // rt_usp speichern
|
||||||
|
move.l _rt_ssp,a5 // rt_ssp holen
|
||||||
|
#ifdef cf_stack
|
||||||
|
move.l 12(a7),-(a5) // pc transferieren
|
||||||
|
move.l 8(a7),d0 // sr holen
|
||||||
|
move.l d0,-(a5) // sr transferieren
|
||||||
|
swap d0 // vec -> lw
|
||||||
|
#else
|
||||||
|
move.w 8(a7),d0 // vector holen
|
||||||
|
move.w d0,-(a5) // ablegen
|
||||||
|
move.l 12(a7),-(a5) // pc transferieren
|
||||||
|
move.w 10(a7),-(a5) // sr transferieren
|
||||||
|
#endif
|
||||||
|
move.l a5,usp // usp setzen
|
||||||
|
and.l #0x3fc,d0 // vector nummer ausmaskieren
|
||||||
|
add.l _rt_vbr,d0 // + basis
|
||||||
|
move.l d0,a5
|
||||||
|
move.l (a5),12(a7) // hier geht's weiter
|
||||||
|
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
||||||
|
addq.l #8,a7
|
||||||
|
rte // und weg
|
||||||
|
sev_sup:
|
||||||
|
#ifdef cf_stack
|
||||||
|
move.l 12(a7),-(a5) // pc transferieren
|
||||||
|
move.l 8(a7),d0 // sr holen
|
||||||
|
bset #13,d0 // war aus rt super
|
||||||
|
move.l d0,-(a5) // sr transferieren
|
||||||
|
swap d0 // vec -> lw
|
||||||
|
#else
|
||||||
|
move.w 8(a7),d0 // vector holen
|
||||||
|
move.w d0,-(a5) // ablegen
|
||||||
|
move.l 12(a7),-(a5) // pc transferieren
|
||||||
|
move.w 10(a7),-(a5) // sr transferieren
|
||||||
|
bset #5,(a5) // war aus super
|
||||||
|
#endif
|
||||||
|
move.l a5,usp // usp setzen
|
||||||
|
and.l #0x3fc,d0 // vector nummer ausmaskieren
|
||||||
|
add.l _rt_vbr,d0 // + basis
|
||||||
|
move.l d0,a5
|
||||||
|
move.l (a5),12(a7) // hier geht's weiter
|
||||||
|
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
||||||
|
addq.l #8,a7
|
||||||
|
rte // und weg
|
||||||
|
//*******************************************
|
||||||
|
reset_vector:
|
||||||
|
move.w #0x2700,sr // disable interrupt
|
||||||
|
move.l #0x31415926,d0
|
||||||
|
cmp.l 0x426,d0 // reset vector g<EFBFBD>ltg?
|
||||||
|
beq std_exc_vec // ja->
|
||||||
|
jmp _rom_entry // sonst kaltstart
|
||||||
|
acess:
|
||||||
|
move.w #0x2700,sr // disable interrupt
|
||||||
|
move.l d0,-(sp) // ++ vr
|
||||||
|
move.w 4(sp),d0
|
||||||
|
andi.l #0x0c03,d0
|
||||||
|
cmpi.l #0x0401,d0
|
||||||
|
beq access_mmu
|
||||||
|
cmpi.l #0x0402,d0
|
||||||
|
beq access_mmu
|
||||||
|
cmpi.l #0x0802,d0
|
||||||
|
beq access_mmu
|
||||||
|
cmpi.l #0x0c02,d0
|
||||||
|
beq access_mmu
|
||||||
|
bra bus_error
|
||||||
|
access_mmu:
|
||||||
|
move.l MCF_MMU_MMUSR,d0
|
||||||
|
btst #1,d0
|
||||||
|
bne bus_error
|
||||||
|
move.l MCF_MMU_MMUAR,d0
|
||||||
|
cmp.l #__FASTRAM_END,d0 // max User RAM Bereich
|
||||||
|
bge bus_error // grösser -> bus error
|
||||||
|
bra _mmutr_miss
|
||||||
|
bus_error:
|
||||||
|
move.l (sp)+,d0
|
||||||
|
bra std_exc_vec
|
||||||
|
|
||||||
|
zero_divide:
|
||||||
|
move.w #0x2700,sr // disable interrupt
|
||||||
|
move.l a0,-(a7)
|
||||||
|
move.l d0,-(a7)
|
||||||
|
move.l 12(a7),a0 // pc
|
||||||
|
move.w (a0)+,d0 // befehlscode
|
||||||
|
btst #7,d0 // long?
|
||||||
|
beq zd_word // nein->
|
||||||
|
addq.l #2,a0
|
||||||
|
zd_word:
|
||||||
|
and.l 0x3f,d0 // ea ausmaskieren
|
||||||
|
cmp.w #0x08,d0 // -(ax) oder weniger
|
||||||
|
ble zd_end
|
||||||
|
addq.l #2,a0
|
||||||
|
cmp.w #0x39,d0 // xxx.L
|
||||||
|
bne zd_nal
|
||||||
|
addq.l #2,a0
|
||||||
|
bra zd_end
|
||||||
|
zd_nal: cmp.w #0x3c,d0 // immediate?
|
||||||
|
bne zd_end // nein->
|
||||||
|
btst #7,d0 // long?
|
||||||
|
beq zd_end // nein
|
||||||
|
addq.l #2,a0
|
||||||
|
zd_end:
|
||||||
|
move.l a0,12(a7)
|
||||||
|
move.l (a7)+,d0
|
||||||
|
move.l (a7)+,a0
|
||||||
|
rte
|
||||||
|
|
||||||
|
linea:
|
||||||
|
move.w #0x2700,sr // disable interrupt
|
||||||
|
halt
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
linef:
|
||||||
|
move.w #0x2700,sr // disable interrupt
|
||||||
|
halt
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
format:
|
||||||
|
move.w #0x2700,sr // disable interrupt
|
||||||
|
halt
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
//floating point
|
||||||
|
flpoow:
|
||||||
|
move.w #0x2700,sr // disable interrupt
|
||||||
|
halt
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
irq1:
|
||||||
|
irq 0x64,1,0x02
|
||||||
|
irq2: // hbl
|
||||||
|
// move.b #3,2(a7)
|
||||||
|
// rte
|
||||||
|
irq 0x68,2,0x04
|
||||||
|
irq3:
|
||||||
|
irq 0x6c,3,0x08
|
||||||
|
irq4: // vbl
|
||||||
|
irq 0x70,4,0x10
|
||||||
|
irq5: // acp
|
||||||
|
irq 0x74,5,0x20
|
||||||
|
irq6: // mfp
|
||||||
|
move.w #0x2700,sr // disable interrupt
|
||||||
|
subq.l #8,a7
|
||||||
|
movem.l d0/a5,(a7) // register sichern
|
||||||
|
lea MCF_EPORT_EPFR,a5
|
||||||
|
move.b #0x40,(a5) // clear int6
|
||||||
|
// test auf timeout screen adr change -------------------------------------------------------
|
||||||
|
move.l _video_sbt,d0
|
||||||
|
beq irq6_non_sca // wenn 0 nichts zu tun
|
||||||
|
sub.l #0x70000000,d0 // 14 sec abz<EFBFBD>hlen
|
||||||
|
lea MCF_SLT0_SCNT,a5
|
||||||
|
cmp.l (a5),d0 // aktuelle zeit weg
|
||||||
|
ble irq6_non_sca // noch nicht abgelaufen
|
||||||
|
lea -28(a7),a7
|
||||||
|
movem.l d0-d4/a0-a1,(a7) // register sichern
|
||||||
|
clr.l d3 // beginn mit 0
|
||||||
|
bsr cpusha // cache leeren
|
||||||
|
// eintrag suchen
|
||||||
|
irq6_next_sca:
|
||||||
|
move.l d3,d0
|
||||||
|
move.l d0,MCF_MMU_MMUAR // addresse
|
||||||
|
move.l #0x106,d4
|
||||||
|
move.l d4,MCF_MMU_MMUOR // suchen ->
|
||||||
|
nop
|
||||||
|
move.l MCF_MMU_MMUOR,d4
|
||||||
|
clr.w d4
|
||||||
|
swap d4
|
||||||
|
move.l d4,MCF_MMU_MMUAR
|
||||||
|
mvz.w #0x10e,d4
|
||||||
|
move.l d4,MCF_MMU_MMUOR // eintr<EFBFBD>ge holen aus mmu
|
||||||
|
nop
|
||||||
|
move.l MCF_MMU_MMUTR,d4 // ID holen
|
||||||
|
lsr.l #2,d4 // bit 9 bis 2
|
||||||
|
cmp.w #sca_page_ID,d4 // ist screen change ID?
|
||||||
|
bne irq6_sca_pn // nein -> page keine screen area next
|
||||||
|
// eintrag <EFBFBD>ndern
|
||||||
|
add.l #std_mmutr,d0
|
||||||
|
move.l d3,d1 // page 0?
|
||||||
|
beq irq6_sca_pn0 // ja ->
|
||||||
|
add.l #cb_mmudr,d1 // sonst page cb
|
||||||
|
bra irq6_sca_pn1c
|
||||||
|
irq6_sca_pn0:
|
||||||
|
add.l #wt_mmudr|MCF_MMU_MMUDR_LK,d1 // page wt and locked
|
||||||
|
irq6_sca_pn1c:
|
||||||
|
mvz.w #0x10b,d2 // MMU update
|
||||||
|
move.l d0,MCF_MMU_MMUTR
|
||||||
|
move.l d1,MCF_MMU_MMUDR
|
||||||
|
move.l d2,MCF_MMU_MMUOR // setze tlb data only
|
||||||
|
nop
|
||||||
|
// page copy
|
||||||
|
move.l d3,a0
|
||||||
|
add.l #0x60000000,a0
|
||||||
|
move.l d3,a1
|
||||||
|
move.l #0x10000,d4 // die ganze page
|
||||||
|
irq6_vcd0_loop:
|
||||||
|
move.l (a0)+,(a1)+ // page copy
|
||||||
|
move.l (a0)+,(a1)+
|
||||||
|
move.l (a0)+,(a1)+
|
||||||
|
move.l (a0)+,(a1)+
|
||||||
|
subq.l #1,d4
|
||||||
|
bne irq6_vcd0_loop
|
||||||
|
nop
|
||||||
|
irq6_sca_pn:
|
||||||
|
add.l #0x00100000,d3 // next
|
||||||
|
cmp.l #0x00d00000,d3 // ende?
|
||||||
|
blt irq6_next_sca // nein->
|
||||||
|
|
||||||
|
move.l #0x2000,d0
|
||||||
|
move.l d0,_video_tlb // anfangszustand wieder herstellen
|
||||||
|
clr.l _video_sbt // zeit l<EFBFBD>schen
|
||||||
|
|
||||||
|
movem.l (a7),d0-d4/a0-a1 // register zur<EFBFBD>ck
|
||||||
|
lea 28(a7),a7
|
||||||
|
irq6_non_sca:
|
||||||
|
// test auf acsi dma -----------------------------------------------------------------
|
||||||
|
lea 0xfffffa0b,a5
|
||||||
|
bset #7,-4(a5) // int ena
|
||||||
|
btst.b #7,(a5) // acsi dma int?
|
||||||
|
beq non_acsi_dma
|
||||||
|
bsr acsi_dma
|
||||||
|
non_acsi_dma:
|
||||||
|
// ----------------------------------------------------------------------------------
|
||||||
|
tst.b (a5)
|
||||||
|
bne irq6_1
|
||||||
|
tst.b 2(a5)
|
||||||
|
bne irq6_1
|
||||||
|
movem.l (a7),d0/a5
|
||||||
|
addq.l #8,a7
|
||||||
|
rte
|
||||||
|
irq6_1:
|
||||||
|
lea MCF_GPIO_PODR_FEC1L,a5
|
||||||
|
bclr.b #4,(a5) // led on
|
||||||
|
lea blinker,a5
|
||||||
|
addq.l #1,(a5) // +1
|
||||||
|
move.l (a5),d0
|
||||||
|
and.l #0x80,d0
|
||||||
|
bne irq6_2
|
||||||
|
lea MCF_GPIO_PODR_FEC1L,a5
|
||||||
|
bset.b #4,(a5) // led off
|
||||||
|
irq6_2:
|
||||||
|
// test auf protect mode ---------------------
|
||||||
|
move.b DIP_SWITCHa,d0
|
||||||
|
btst #7,d0
|
||||||
|
bne irq6_3 // ja->
|
||||||
|
// -------------------------------------------
|
||||||
|
move.l 0xF0020000,a5 // vector holen
|
||||||
|
add.l _rt_vbr,a5 // basis
|
||||||
|
move.l (a5),d0 // vector holen
|
||||||
|
move.l 4(a7),a5 // a5 zur<EFBFBD>ck
|
||||||
|
move.l d0,4(a7) // vector eintragen
|
||||||
|
move.l (a7)+,d0 // d0 zur<EFBFBD>ck
|
||||||
|
move #0x2600,sr
|
||||||
|
rts
|
||||||
|
irq6_3:
|
||||||
|
move.l usp,a5 // usp holen
|
||||||
|
tst.b _rt_mod // supervisor?
|
||||||
|
bne sev_sup6 // ja ->
|
||||||
|
mov3q.l #-1,_rt_mod // auf supervisor setzen
|
||||||
|
move.l a5,_rt_usp // rt_usp speichern
|
||||||
|
move.l _rt_ssp,a5 // rt_ssp holen
|
||||||
|
#ifdef cf_stack
|
||||||
|
move.l 12(a7),-(a5) // pc transferieren
|
||||||
|
move.l 8(a7),-(a5) // sr transferieren
|
||||||
|
#else
|
||||||
|
move.w 8(a7),-(a5) // vector transferieren
|
||||||
|
move.l 12(a7),-(a5) // pc transferieren
|
||||||
|
move.w 10(a7),-(a5) // sr transferieren
|
||||||
|
#endif
|
||||||
|
move.l a5,usp // usp setzen
|
||||||
|
move.l 0xF0020000,a5 // vector holen: intack routine
|
||||||
|
add.l _rt_vbr,a5 // virtuelle VBR des Systems
|
||||||
|
move.l (a5),12(a7) // hier gehts weiter
|
||||||
|
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
||||||
|
addq.l #8,a7
|
||||||
|
move.b #6,2(a7) // intmaske setzen
|
||||||
|
rte // und weg
|
||||||
|
sev_sup6:
|
||||||
|
#ifdef cf_stack
|
||||||
|
move.l 12(a7),-(a5) // pc transferieren
|
||||||
|
move.l 8(a7),-(a5) // sr,vec
|
||||||
|
bset #5,2(a5) // auf super setzen
|
||||||
|
#else
|
||||||
|
move.w 8(a7),-(a5) // vector nr.
|
||||||
|
move.l 12(a7),-(a5) // pc verschieben
|
||||||
|
move.w 10(a7),-(a5) // sr verschieben
|
||||||
|
bset #5,(a5) // auf super
|
||||||
|
#endif
|
||||||
|
move.l a5,usp // usp setzen
|
||||||
|
move.l 0xF0020000,a5 // vector holen: intack routine
|
||||||
|
add.l _rt_vbr,a5 // virtuelle VBR des Systems
|
||||||
|
move.l (a5),12(a7) // hier gehts weiter
|
||||||
|
movem.l (a7),d0/a5 // register zur<EFBFBD>ck
|
||||||
|
rts
|
||||||
|
|
||||||
|
.data
|
||||||
|
blinker:.long 0
|
||||||
|
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
/*
|
||||||
|
* pseudo dma
|
||||||
|
*/
|
||||||
|
acsi_dma: // atari dma
|
||||||
|
move.l a1,-(a7)
|
||||||
|
move.l d1,-(a7)
|
||||||
|
|
||||||
|
lea MCF_PSC0_PSCTB_8BIT,a1 // ++ vr
|
||||||
|
mchar move.l, 'D,'M','A,'\ ,(a1)
|
||||||
|
//move.l #"DMA ",(a1)
|
||||||
|
mchar move.l,'I,'N,'T,'!,(a1)
|
||||||
|
// move.l #'INT!',(a1)
|
||||||
|
|
||||||
|
lea 0xf0020110,a5 // fifo daten
|
||||||
|
acsi_dma_start:
|
||||||
|
move.l -12(a5),a1 // dma adresse
|
||||||
|
move.l -8(a5),d0 // byt counter
|
||||||
|
ble acsi_dma_end
|
||||||
|
btst.b #0,-16(a5) // write? (dma modus reg)
|
||||||
|
bne acsi_dma_wl // ja->
|
||||||
|
acsi_dma_rl:
|
||||||
|
tst.b -4(a5) // dma req?
|
||||||
|
bpl acsi_dma_fertig // nein->
|
||||||
|
move.l (a5),(a1)+ // read 4 bytes
|
||||||
|
move.l (a5),(a1)+ // read 4 bytes
|
||||||
|
move.l (a5),(a1)+ // read 4 bytes
|
||||||
|
move.l (a5),(a1)+ // read 4 bytes
|
||||||
|
|
||||||
|
moveq #'.',d1
|
||||||
|
move.b d1,MCF_PSC0_PSCTB_8BIT
|
||||||
|
|
||||||
|
sub.l #16,d0 // byt counter -16
|
||||||
|
bpl acsi_dma_rl
|
||||||
|
bra acsi_dma_fertig
|
||||||
|
acsi_dma_wl:
|
||||||
|
tst.b -4(a5) // dma req?
|
||||||
|
bpl acsi_dma_fertig // nein->
|
||||||
|
move.l (a1)+,(a5) // write 4 byts
|
||||||
|
move.l (a1)+,(a5) // write 4 byts
|
||||||
|
move.l (a1)+,(a5) // write 4 byts
|
||||||
|
move.l (a1)+,(a5) // write 4 byts
|
||||||
|
|
||||||
|
moveq #'.',d1
|
||||||
|
move.b d1,MCF_PSC0_PSCTB_8BIT
|
||||||
|
|
||||||
|
sub.l #16,d0 // byt counter -16
|
||||||
|
bpl acsi_dma_wl
|
||||||
|
acsi_dma_fertig:
|
||||||
|
move.l a1,-12(a5) // adresse zur<EFBFBD>ck
|
||||||
|
move.l d0,-8(a5) // byt counter zur<EFBFBD>ck
|
||||||
|
acsi_dma_end:
|
||||||
|
tst.b -4(a5) // dma req?
|
||||||
|
bmi acsi_dma_start // ja->
|
||||||
|
lea 0xfffffa0b,a5
|
||||||
|
bclr.b #7,4(a5) // clear int in service mfp
|
||||||
|
bclr.b #7,(a5) // clear int pending mfp 0xfffffa0b
|
||||||
|
|
||||||
|
move.w #0x0d0a,d1
|
||||||
|
move.w d1,MCF_PSC0_PSCTB_8BIT
|
||||||
|
|
||||||
|
move.l (a7)+,d1
|
||||||
|
move.l (a7)+,a1
|
||||||
|
rts
|
||||||
|
/*
|
||||||
|
* irq 7 = pseudo bus error
|
||||||
|
*/
|
||||||
|
irq7:
|
||||||
|
lea -12(sp),sp
|
||||||
|
movem.l d0/a0,(sp)
|
||||||
|
|
||||||
|
move.l __RAMBAR0+0x008,a0 // Real Access Error handler
|
||||||
|
move.l a0,8(sp) // This will be the return address for rts
|
||||||
|
|
||||||
|
move.w 12(sp),d0 // Format/Vector word
|
||||||
|
andi.l #0xf000,d0 // Keep only the Format
|
||||||
|
ori.l #2*4,d0 // Simulate Vector #2, no Fault
|
||||||
|
move.w d0,12(sp)
|
||||||
|
|
||||||
|
// TODO: Inside an interrupt handler, 16(sp) is the return address.
|
||||||
|
// For an Access Error, it should be the address of the fault instruction instead
|
||||||
|
|
||||||
|
lea MCF_EPORT_EPFR,a0
|
||||||
|
move.b #0x80,(a0) // clear int7
|
||||||
|
move.l (sp)+,d0
|
||||||
|
move.l (sp)+,a0
|
||||||
|
rts // Forward to the Access Error handler
|
||||||
|
|
||||||
|
/*
|
||||||
|
* psc3 com PIC MCF
|
||||||
|
*/
|
||||||
|
psc3:
|
||||||
|
move.w #0x2700,sr // disable interrupt
|
||||||
|
lea -20(a7),a7
|
||||||
|
movem.l d0-d2/a0/a3,(a7)
|
||||||
|
lea MCF_PSC3_PSCRB_8BIT,a3
|
||||||
|
move.b (a3),d1
|
||||||
|
cmp.b #2,d1 // anforderung rtc daten?
|
||||||
|
bne psc3_fertig
|
||||||
|
|
||||||
|
lea MCF_PSC0_PSCTB_8BIT,a0 // ++ vr
|
||||||
|
mchar move.l,'\P,'\I,'C,' ,(a0)
|
||||||
|
// move.l #'PIC ',(a0)
|
||||||
|
mchar move.l,'I,'N,'T,'\ ,(a0)
|
||||||
|
// move.l #'INT ',(a0)
|
||||||
|
mchar move.l,'R,'T,'C,'!,(a0)
|
||||||
|
// move.l #'RTC!',(a0)
|
||||||
|
mchar move.l,0x0d,0x0a,0,0,(a0)
|
||||||
|
//move.l #0x0d0a,(a0)
|
||||||
|
|
||||||
|
lea 0xffff8961,a0
|
||||||
|
lea MCF_PSC3_PSCTB_8BIT,a3
|
||||||
|
clr.l d1
|
||||||
|
moveq #64,d2
|
||||||
|
move.b #0x82,(a3) // header: rtcd mcf->pic
|
||||||
|
loop_sr2:
|
||||||
|
move.b d1,(a0)
|
||||||
|
move.b 2(a0),d0
|
||||||
|
move.b d0,(a3)
|
||||||
|
addq.l #1,d1
|
||||||
|
cmp.b d1,d2
|
||||||
|
bne loop_sr2
|
||||||
|
psc3_fertig:
|
||||||
|
movem.l (a7),d0-d2/a0/a3 // register zur<EFBFBD>ck
|
||||||
|
lea 20(a7),a7
|
||||||
|
RTE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* timer 0: video change later also others
|
||||||
|
*/
|
||||||
|
timer0:
|
||||||
|
move #0x2700,sr
|
||||||
|
// halt
|
||||||
|
lea -28(a7),a7
|
||||||
|
movem.l d0-d4/a0-a1,(a7)
|
||||||
|
mvz.b 0xffff8201,d0 // l<EFBFBD>schen und high byt
|
||||||
|
cmp.w #2,d0
|
||||||
|
blt video_chg_end
|
||||||
|
cmp.w #0xd0,d0 // normale addresse
|
||||||
|
blt sca_other // nein->
|
||||||
|
lea MCF_SLT0_SCNT,a0
|
||||||
|
move.l (a0),d4
|
||||||
|
move.l d4,_video_sbt // time sichern
|
||||||
|
sca_other:
|
||||||
|
lsl.l #8,d0
|
||||||
|
move.b 0xffff8203,d0 // mid byt
|
||||||
|
lsl.l #8,d0
|
||||||
|
move.b 0xffff820d,d0 // low byt
|
||||||
|
move.l d0,d3
|
||||||
|
video_chg_1page:
|
||||||
|
// test ob page schon gesetzt
|
||||||
|
moveq #20,d4
|
||||||
|
move.l d0,d2
|
||||||
|
lsr.l d4,d2 // neue page
|
||||||
|
move.l _video_tlb,d4
|
||||||
|
bset.l d2,d4 // setzen als ge<EFBFBD>ndert
|
||||||
|
bne video_chg_2page // schon gesetzt gewesen? ja->weg
|
||||||
|
move.l d4,_video_tlb
|
||||||
|
bsr cpusha // cache leeren
|
||||||
|
// daten copieren
|
||||||
|
video_copy_data:
|
||||||
|
move.l d4,_video_tlb
|
||||||
|
and.l #0x00f00000,d0
|
||||||
|
move.l d0,a0
|
||||||
|
move.l a0,a1
|
||||||
|
add.l #0x60000000,a1
|
||||||
|
move.l #0x10000,d4 // die ganze page
|
||||||
|
video_copy_data_loop:
|
||||||
|
move.l (a0)+,(a1)+
|
||||||
|
move.l (a0)+,(a1)+
|
||||||
|
move.l (a0)+,(a1)+
|
||||||
|
move.l (a0)+,(a1)+
|
||||||
|
subq.l #1,d4
|
||||||
|
bne video_copy_data_loop
|
||||||
|
// eintrag suchen
|
||||||
|
move.l d0,MCF_MMU_MMUAR // addresse
|
||||||
|
move.l #0x106,d4
|
||||||
|
move.l d4,MCF_MMU_MMUOR // suchen -> schl<EFBFBD>gt neuen vor wenn keiner
|
||||||
|
nop
|
||||||
|
move.l MCF_MMU_MMUOR,d4
|
||||||
|
clr.w d4
|
||||||
|
swap d4
|
||||||
|
move.l d4,MCF_MMU_MMUAR
|
||||||
|
move.l d0,d1
|
||||||
|
add.l #MCF_MMU_MMUTR_ID(sca_page_ID)|std_mmutr,d0
|
||||||
|
add.l #0x60000000|wt_mmudr|MCF_MMU_MMUDR_LK,d1
|
||||||
|
mvz.w #0x10b,d2 // MMU update
|
||||||
|
move.l d0,MCF_MMU_MMUTR
|
||||||
|
move.l d1,MCF_MMU_MMUDR
|
||||||
|
move.l d2,MCF_MMU_MMUOR // setzen vidoe maped to 60xxx only data
|
||||||
|
nop
|
||||||
|
video_chg_2page:
|
||||||
|
// test ob evt. anschliessende page gesetzt werden muss
|
||||||
|
move.l d3,d0
|
||||||
|
mvz.w 0xffff8210,d4 // byts pro zeile
|
||||||
|
mvz.w 0xffff82aa,d2 // zeilen ende
|
||||||
|
mvz.w 0xffff82a8,d1 // zeilenstart
|
||||||
|
sub.l d1,d2 // differenz = anzahl zeilen
|
||||||
|
mulu d2,d4 // maximal 480 zeilen
|
||||||
|
add.l d4,d0 // video gr<EFBFBD>sse
|
||||||
|
cmp.l #__STRAM_END,d0 // maximale addresse
|
||||||
|
bge video_chg_end // wenn gleich oder gr<EFBFBD>sser -> fertig
|
||||||
|
moveq #20,d4
|
||||||
|
move.l d0,d2
|
||||||
|
lsr.l d4,d2 // neue page
|
||||||
|
move.l _video_tlb,d4
|
||||||
|
bset.l d2,d4 // setzen als ge<EFBFBD>ndert
|
||||||
|
beq video_copy_data // nein nochmal
|
||||||
|
video_chg_end:
|
||||||
|
// int pending l<EFBFBD>schen
|
||||||
|
lea MCF_GPT0_GMS,a0
|
||||||
|
bclr.b #0,3(a0)
|
||||||
|
nop
|
||||||
|
bset.b #0,3(a0)
|
||||||
|
|
||||||
|
movem.l (a7),d0-d4/a0-a1
|
||||||
|
lea 28(a7),a7
|
||||||
|
//--------------------------------------------------------------------------------------------------------
|
||||||
|
RTE
|
||||||
|
|
||||||
4158
i2cspi_BaS_gcc/sources/ff.c
Normal file
4158
i2cspi_BaS_gcc/sources/ff.c
Normal file
File diff suppressed because it is too large
Load Diff
111
i2cspi_BaS_gcc/sources/flash.c
Normal file
111
i2cspi_BaS_gcc/sources/flash.c
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
/*
|
||||||
|
* flash.c
|
||||||
|
*
|
||||||
|
* flashing routines for BaS_gcc
|
||||||
|
*
|
||||||
|
* Created on: 19.12.2012
|
||||||
|
* Author: mfro
|
||||||
|
* The ACP Firebee project
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
void chip_erase(uint8_t *address)
|
||||||
|
{
|
||||||
|
* (volatile uint8_t *) (address + 0xaaa) = 0xaa;
|
||||||
|
* (volatile uint8_t *) (address + 0x555) = 0x55;
|
||||||
|
* (volatile uint8_t *) (address + 0xaaa) = 0x80;
|
||||||
|
* (volatile uint8_t *) (address + 0xaaa) = 0xaa;
|
||||||
|
* (volatile uint8_t *) (address + 0x555) = 0x55;
|
||||||
|
* (volatile uint8_t *) (address + 0xaaa) = 0x10;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sector_erase(uint8_t *address, uint16_t sector)
|
||||||
|
{
|
||||||
|
* (volatile uint8_t *) (address + 0xaaa) = 0xaa;
|
||||||
|
* (volatile uint8_t *) (address + 0x555) = 0x55;
|
||||||
|
* (volatile uint8_t *) (address + 0xaaa) = 0x80;
|
||||||
|
* (volatile uint8_t *) (address + 0xaaa) = 0xaa;
|
||||||
|
* (volatile uint8_t *) (address + 0x555) = 0x55;
|
||||||
|
* (volatile uint8_t *) (address + sector) = 0x30;
|
||||||
|
|
||||||
|
do {
|
||||||
|
;
|
||||||
|
} while (* (volatile uint32_t *) (address + sector) != 0xffffffff);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef _NOT_USED_
|
||||||
|
* MX28LV640DB.alg
|
||||||
|
bra lab0x5a
|
||||||
|
move.w #0xaa,d0
|
||||||
|
move.w d0,0xaaa(a5)
|
||||||
|
move.w #0xff,d0
|
||||||
|
move.w d0,0x554(a5)
|
||||||
|
move.w #0x20,d0
|
||||||
|
move.w d0,0xaaa(a5)
|
||||||
|
lab0x1c:
|
||||||
|
move.w #0xa0,d0
|
||||||
|
move.w d0,(a5)
|
||||||
|
moveq #0,d0
|
||||||
|
move.w (a3),d0
|
||||||
|
move.w d0,(a4)
|
||||||
|
lab0x28:
|
||||||
|
move.w (a4),d1
|
||||||
|
andi.l #0xffff,d1
|
||||||
|
cmp.l d1,d0
|
||||||
|
bne.s lab0x28
|
||||||
|
adda.l #2,a3
|
||||||
|
adda.l #2,a4
|
||||||
|
cmpa.l a2,a3
|
||||||
|
blt.s lab0x1c
|
||||||
|
move.w #0x90,d0
|
||||||
|
move.w d0,(a5)
|
||||||
|
move.w #0,d0
|
||||||
|
move.w d0,(a5)
|
||||||
|
lab0x50:
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
halt
|
||||||
|
nop
|
||||||
|
bra.s lab0x50
|
||||||
|
lab0x5a:
|
||||||
|
move.w #0xaa,d0
|
||||||
|
move.w d0,0xaaa(a5)
|
||||||
|
move.w #0x55,d0
|
||||||
|
move.w d0,0x554(a5)
|
||||||
|
move.w #0x80,d0
|
||||||
|
move.w d0,0xaaa(a5)
|
||||||
|
move.w #0xaa,d0
|
||||||
|
move.w d0,0xaaa(a5)
|
||||||
|
move.w #0x55,d0
|
||||||
|
move.w d0,0x554(a5)
|
||||||
|
move.w #0x30,d0
|
||||||
|
move.w d0,(a4)
|
||||||
|
lab0x88:
|
||||||
|
move.l (a4),d1
|
||||||
|
move.l #-1,d0
|
||||||
|
cmp.l d1,d0
|
||||||
|
bne.s lab0x88
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
halt
|
||||||
|
nop
|
||||||
|
#endif /* _NOT_USED_ */
|
||||||
42
i2cspi_BaS_gcc/sources/illegal_instruction.S
Normal file
42
i2cspi_BaS_gcc/sources/illegal_instruction.S
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* illegal_instruction.S
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2010 - 2012 F. Aschwanden
|
||||||
|
* Copyright 2011 - 2012 V. Riviere
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*/
|
||||||
|
|
||||||
|
.global _illegal_instruction
|
||||||
|
.global _illegal_table_make
|
||||||
|
|
||||||
|
#include "startcf.h"
|
||||||
|
|
||||||
|
.extern _ii_shift_vec
|
||||||
|
.extern ewf
|
||||||
|
|
||||||
|
/*******************************************************/
|
||||||
|
.text
|
||||||
|
ii_error:
|
||||||
|
nop
|
||||||
|
halt
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
_illegal_instruction:
|
||||||
|
_illegal_table_make:
|
||||||
|
rts
|
||||||
113
i2cspi_BaS_gcc/sources/init_fpga.c
Normal file
113
i2cspi_BaS_gcc/sources/init_fpga.c
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
/*
|
||||||
|
* init_fpga.c
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2010 - 2012 F. Aschwanden
|
||||||
|
* Copyright 2011 - 2012 V. Riviere
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <MCF5475.h>
|
||||||
|
#include "sysinit.h"
|
||||||
|
|
||||||
|
#define FPGA_STATUS (1 << 0)
|
||||||
|
#define FPGA_CLOCK (1 << 1)
|
||||||
|
#define FPGA_CONFIG (1 << 2)
|
||||||
|
#define FPGA_DATA0 (1 << 3)
|
||||||
|
#define FPGA_CONF_DONE (1 << 5)
|
||||||
|
|
||||||
|
extern void xprintf_before_copy(const char *fmt, ...);
|
||||||
|
|
||||||
|
#define xprintf xprintf_before_copy
|
||||||
|
#define display_progress display_progress_before_copy
|
||||||
|
/*
|
||||||
|
* load FPGA
|
||||||
|
*/
|
||||||
|
void init_fpga(void)
|
||||||
|
{
|
||||||
|
register uint8_t *fpga_data;
|
||||||
|
register int i;
|
||||||
|
|
||||||
|
xprintf("FPGA load config... ");
|
||||||
|
|
||||||
|
|
||||||
|
MCF_GPIO_PODR_FEC1L &= ~FPGA_CLOCK; /* FPGA clock => low */
|
||||||
|
MCF_GPIO_PODR_FEC1L &= ~FPGA_CONFIG; /* FPGA config => low */
|
||||||
|
|
||||||
|
while ((MCF_GPIO_PPDSDR_FEC1L & FPGA_STATUS) && (MCF_GPIO_PPDSDR_FEC1L & FPGA_CONF_DONE));
|
||||||
|
MCF_GPIO_PODR_FEC1L |= FPGA_CONFIG; /* pull FPGA_CONFIG high */
|
||||||
|
while (!(MCF_GPIO_PPDSDR_FEC1L & FPGA_STATUS)); /* wait until status becomes high */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* excerpt from an Altera configuration manual:
|
||||||
|
*
|
||||||
|
* The low-to-high transition of nCONFIG on the FPGA begins the configuration cycle. The
|
||||||
|
* configuration cycle consists of 3 stages<65>reset, configuration, and initialization.
|
||||||
|
* While nCONFIG is low, the device is in reset. When the device comes out of reset,
|
||||||
|
* nCONFIG must be at a logic high level in order for the device to release the open-drain
|
||||||
|
* nSTATUS pin. After nSTATUS is released, it is pulled high by a pull-up resistor and the FPGA
|
||||||
|
* is ready to receive configuration data. Before and during configuration, all user I/O pins
|
||||||
|
* are tri-stated. Stratix series, Arria series, and Cyclone series have weak pull-up resistors
|
||||||
|
* on the I/O pins which are on, before and during configuration.
|
||||||
|
*
|
||||||
|
* To begin configuration, nCONFIG and nSTATUS must be at a logic high level. You can delay
|
||||||
|
* configuration by holding the nCONFIG low. The device receives configuration data on its
|
||||||
|
* DATA0 pins. Configuration data is latched into the FPGA on the rising edge of DCLK. After
|
||||||
|
* the FPGA has received all configuration data successfully, it releases the CONF_DONE pin,
|
||||||
|
* which is pulled high by a pull-up resistor. A low to high transition on CONF_DONE indicates
|
||||||
|
* configuration is complete and initialization of the device can begin.
|
||||||
|
*/
|
||||||
|
fpga_data = (uint8_t *) FPGA_FLASH_DATA;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
uint8_t value = *fpga_data++;
|
||||||
|
for (i = 0; i < 8; i++, value >>= 1)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (value & 1)
|
||||||
|
{
|
||||||
|
/* bit set -> toggle DATA0 to high */
|
||||||
|
MCF_GPIO_PODR_FEC1L |= FPGA_DATA0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* bit is cleared -> toggle DATA0 to low */
|
||||||
|
MCF_GPIO_PODR_FEC1L &= ~FPGA_DATA0;
|
||||||
|
}
|
||||||
|
/* toggle DCLK -> FPGA reads the bit */
|
||||||
|
MCF_GPIO_PODR_FEC1L |= FPGA_CLOCK;
|
||||||
|
MCF_GPIO_PODR_FEC1L &= ~FPGA_CLOCK;
|
||||||
|
}
|
||||||
|
} while ((!(MCF_GPIO_PPDSDR_FEC1L & FPGA_CONF_DONE)) && (fpga_data < (uint8_t *) FPGA_FLASH_DATA_END));
|
||||||
|
|
||||||
|
if (fpga_data < (uint8_t *) FPGA_FLASH_DATA_END)
|
||||||
|
{
|
||||||
|
while (fpga_data++ < (uint8_t *) FPGA_FLASH_DATA_END)
|
||||||
|
{
|
||||||
|
/* toggle a little more since it's fun ;) */
|
||||||
|
MCF_GPIO_PODR_FEC1L |= FPGA_CLOCK;
|
||||||
|
MCF_GPIO_PODR_FEC1L &= ~FPGA_CLOCK;
|
||||||
|
}
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("FAILED!\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
100
i2cspi_BaS_gcc/sources/main.c
Normal file
100
i2cspi_BaS_gcc/sources/main.c
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
/* FatFs sample project for generic microcontrollers (C)ChaN, 2012 */
|
||||||
|
/*----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "ff.h"
|
||||||
|
|
||||||
|
|
||||||
|
FATFS Fatfs; /* File system object */
|
||||||
|
FIL Fil; /* File object */
|
||||||
|
uint8_t Buff[128]; /* File read buffer */
|
||||||
|
|
||||||
|
|
||||||
|
void die ( /* Stop with dying message */
|
||||||
|
FRESULT rc /* FatFs return value */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
xprintf("Failed with rc=%u.\n", rc);
|
||||||
|
for (;;) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
/* Program Main */
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int main (void)
|
||||||
|
{
|
||||||
|
FRESULT rc; /* Result code */
|
||||||
|
DIR dir; /* Directory object */
|
||||||
|
FILINFO fno; /* File information object */
|
||||||
|
uint32_t bw, br, i;
|
||||||
|
|
||||||
|
|
||||||
|
f_mount(0, &Fatfs); /* Register volume work area (never fails) */
|
||||||
|
|
||||||
|
xprintf("\nOpen an existing file (message.txt).\n");
|
||||||
|
rc = f_open(&Fil, "MESSAGE.TXT", FA_READ);
|
||||||
|
if (rc) die(rc);
|
||||||
|
|
||||||
|
xprintf("\nType the file content.\n");
|
||||||
|
for (;;) {
|
||||||
|
rc = f_read(&Fil, Buff, sizeof Buff, &br); /* Read a chunk of file */
|
||||||
|
if (rc || !br) break; /* Error or end of file */
|
||||||
|
for (i = 0; i < br; i++) /* Type the data */
|
||||||
|
putchar(Buff[i]);
|
||||||
|
}
|
||||||
|
if (rc) die(rc);
|
||||||
|
|
||||||
|
xprintf("\nClose the file.\n");
|
||||||
|
rc = f_close(&Fil);
|
||||||
|
if (rc) die(rc);
|
||||||
|
|
||||||
|
xprintf("\nCreate a new file (hello.txt).\n");
|
||||||
|
rc = f_open(&Fil, "HELLO.TXT", FA_WRITE | FA_CREATE_ALWAYS);
|
||||||
|
if (rc) die(rc);
|
||||||
|
|
||||||
|
xprintf("\nWrite a text data. (Hello world!)\n");
|
||||||
|
rc = f_write(&Fil, "Hello world!\r\n", 14, &bw);
|
||||||
|
if (rc) die(rc);
|
||||||
|
xprintf("%u bytes written.\n", bw);
|
||||||
|
|
||||||
|
xprintf("\nClose the file.\n");
|
||||||
|
rc = f_close(&Fil);
|
||||||
|
if (rc) die(rc);
|
||||||
|
|
||||||
|
xprintf("\nOpen root directory.\n");
|
||||||
|
rc = f_opendir(&dir, "");
|
||||||
|
if (rc) die(rc);
|
||||||
|
|
||||||
|
xprintf("\nDirectory listing...\n");
|
||||||
|
for (;;) {
|
||||||
|
rc = f_readdir(&dir, &fno); /* Read a directory item */
|
||||||
|
if (rc || !fno.fname[0]) break; /* Error or end of dir */
|
||||||
|
if (fno.fattrib & AM_DIR)
|
||||||
|
xprintf(" <dir> %s\n", fno.fname);
|
||||||
|
else
|
||||||
|
xprintf("%8lu %s\n", fno.fsize, fno.fname);
|
||||||
|
}
|
||||||
|
if (rc) die(rc);
|
||||||
|
|
||||||
|
xprintf("\nTest completed.\n");
|
||||||
|
for (;;) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------*/
|
||||||
|
/* User Provided Timer Function for FatFs module */
|
||||||
|
/*---------------------------------------------------------*/
|
||||||
|
|
||||||
|
uint32_t get_fattime (void)
|
||||||
|
{
|
||||||
|
return ((uint32_t)(2012 - 1980) << 25) /* Year = 2012 */
|
||||||
|
| ((uint32_t)1 << 21) /* Month = 1 */
|
||||||
|
| ((uint32_t)1 << 16) /* Day_m = 1*/
|
||||||
|
| ((uint32_t)0 << 11) /* Hour = 0 */
|
||||||
|
| ((uint32_t)0 << 5) /* Min = 0 */
|
||||||
|
| ((uint32_t)0 >> 1); /* Sec = 0 */
|
||||||
|
}
|
||||||
652
i2cspi_BaS_gcc/sources/mmc.c
Normal file
652
i2cspi_BaS_gcc/sources/mmc.c
Normal file
@@ -0,0 +1,652 @@
|
|||||||
|
#include <stdint.h>
|
||||||
|
#include <bas_types.h>
|
||||||
|
#include <sd_card.h>
|
||||||
|
#include <bas_printf.h>
|
||||||
|
#include <sysinit.h>
|
||||||
|
#include <wait.h>
|
||||||
|
#include <MCF5475.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Firebee: MMCv3/SDv1/SDv2 (SPI mode) control module
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (C) 2011, ChaN, all right reserved.
|
||||||
|
*
|
||||||
|
* This software is a free software and there is NO WARRANTY.
|
||||||
|
* No restriction on use. You can use, modify and redistribute it for
|
||||||
|
* personal, non-profit or commercial products UNDER YOUR RESPONSIBILITY.
|
||||||
|
* Redistributions of source code must retain the above copyright notice.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Copyright (C) 2012, mfro, all rights reserved. */
|
||||||
|
|
||||||
|
|
||||||
|
#define CS_HIGH() { dspi_fifo_val &= ~MCF_DSPI_DTFR_CS5; }
|
||||||
|
#define CS_LOW() { dspi_fifo_val |= MCF_DSPI_DTFR_CS5; }
|
||||||
|
|
||||||
|
#define SPICLK_FAST() { MCF_DSPI_DCTAR0 = MCF_DSPI_DCTAR_TRSZ(0b111) | /* transfer size = 8 bit */ \
|
||||||
|
MCF_DSPI_DCTAR_PCSSCK(0b01) | /* 1 clock DSPICS to DSPISCK delay prescaler */ \
|
||||||
|
MCF_DSPI_DCTAR_PASC_1CLK | /* 1 clock DSPISCK to DSPICS negation prescaler */ \
|
||||||
|
MCF_DSPI_DCTAR_PDT_1CLK | /* 1 clock delay between DSPICS assertions prescaler */ \
|
||||||
|
MCF_DSPI_DCTAR_PBR_3CLK | /* 3 clock Baudrate prescaler */ \
|
||||||
|
MCF_DSPI_DCTAR_ASC(0b0000) | /* 2 */ \
|
||||||
|
MCF_DSPI_DCTAR_DT(0b0000) | /* 2 */ \
|
||||||
|
MCF_DSPI_DCTAR_BR(0b0000); } /* clock / 2 */
|
||||||
|
|
||||||
|
#define SPICLK_SLOW() { MCF_DSPI_DCTAR0 = MCF_DSPI_DCTAR_TRSZ(0b111) | /* transfer size = 8 bit */ \
|
||||||
|
MCF_DSPI_DCTAR_PCSSCK(0b01) | /* 3 clock DSPICS to DSPISCK delay prescaler */ \
|
||||||
|
MCF_DSPI_DCTAR_PASC_3CLK | /* 3 clock DSPISCK to DSPICS negation prescaler */ \
|
||||||
|
MCF_DSPI_DCTAR_PDT_3CLK | /* 3 clock delay between DSPICS assertions prescaler */ \
|
||||||
|
MCF_DSPI_DCTAR_PBR_3CLK | /* 3 clock prescaler */ \
|
||||||
|
MCF_DSPI_DCTAR_ASC(0b1001) | /* 1024 */ \
|
||||||
|
MCF_DSPI_DCTAR_DT(0b1001) | /* 1024 */ \
|
||||||
|
MCF_DSPI_DCTAR_BR(0b0111); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Module Private Functions
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "diskio.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* MMC/SD command */
|
||||||
|
#define CMD0 (0) /* GO_IDLE_STATE */
|
||||||
|
#define CMD1 (1) /* SEND_OP_COND (MMC) */
|
||||||
|
#define ACMD41 (0x80+41) /* SEND_OP_COND (SDC) */
|
||||||
|
#define CMD8 (8) /* SEND_IF_COND */
|
||||||
|
#define CMD9 (9) /* SEND_CSD */
|
||||||
|
#define CMD10 (10) /* SEND_CID */
|
||||||
|
#define CMD12 (12) /* STOP_TRANSMISSION */
|
||||||
|
#define ACMD13 (0x80+13) /* SD_STATUS (SDC) */
|
||||||
|
#define CMD16 (16) /* SET_BLOCKLEN */
|
||||||
|
#define CMD17 (17) /* READ_SINGLE_BLOCK */
|
||||||
|
#define CMD18 (18) /* READ_MULTIPLE_BLOCK */
|
||||||
|
#define CMD23 (23) /* SET_BLOCK_COUNT (MMC) */
|
||||||
|
#define ACMD23 (0x80+23) /* SET_WR_BLK_ERASE_COUNT (SDC) */
|
||||||
|
#define CMD24 (24) /* WRITE_BLOCK */
|
||||||
|
#define CMD25 (25) /* WRITE_MULTIPLE_BLOCK */
|
||||||
|
#define CMD32 (32) /* ERASE_ER_BLK_START */
|
||||||
|
#define CMD33 (33) /* ERASE_ER_BLK_END */
|
||||||
|
#define CMD38 (38) /* ERASE */
|
||||||
|
#define CMD55 (55) /* APP_CMD */
|
||||||
|
#define CMD58 (58) /* READ_OCR */
|
||||||
|
|
||||||
|
|
||||||
|
static volatile DSTATUS Stat = 0 /* STA_NOINIT */; /* Physical drive status */
|
||||||
|
static uint8_t CardType; /* Card type flags */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
/* Send/Receive data to the MMC (Platform dependent) */
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static uint32_t dspi_fifo_val = /* CONT disable continous chip select */
|
||||||
|
/* CTAS use DCTAR0 for clock and attributes */
|
||||||
|
MCF_DSPI_DTFR_EOQ | /* current transfer is last in queue */
|
||||||
|
MCF_DSPI_DTFR_CTCNT;
|
||||||
|
|
||||||
|
/* Exchange a byte */
|
||||||
|
static uint8_t xchg_spi(uint8_t byte)
|
||||||
|
{
|
||||||
|
uint32_t fifo = dspi_fifo_val | byte;
|
||||||
|
uint8_t res;
|
||||||
|
|
||||||
|
MCF_DSPI_DTFR = fifo;
|
||||||
|
while (! (MCF_DSPI_DSR & MCF_DSPI_DSR_TCF)); /* wait until DSPI transfer complete */
|
||||||
|
MCF_DSPI_DSR = 0xffffffff; /* clear DSPI status register */
|
||||||
|
|
||||||
|
fifo = MCF_DSPI_DRFR;
|
||||||
|
MCF_DSPI_DSR = 0xffffffff;
|
||||||
|
res = fifo & 0xff;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Receive multiple byte
|
||||||
|
*
|
||||||
|
* buff: pointer to data buffer
|
||||||
|
* btr: number of bytes to receive (16, 64 or 512)
|
||||||
|
*/
|
||||||
|
static void rcvr_spi_multi(uint8_t *buff, uint32_t count)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < count; i++)
|
||||||
|
*buff++ = xchg_spi(0xff);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if _USE_WRITE
|
||||||
|
/* Send multiple byte
|
||||||
|
*
|
||||||
|
* buff: pointer to data
|
||||||
|
* btx: number of bytes to send
|
||||||
|
*/
|
||||||
|
static void xmit_spi_multi(const uint8_t *buff, uint32_t btx)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < btx; i++)
|
||||||
|
xchg_spi(*buff++);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
static bool card_ready(void)
|
||||||
|
{
|
||||||
|
uint8_t d;
|
||||||
|
|
||||||
|
d = xchg_spi(0xff);
|
||||||
|
return (d == 0xff);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wait for card ready
|
||||||
|
*
|
||||||
|
* wt: timeout in ms
|
||||||
|
* returns 1: ready, 0: timeout
|
||||||
|
*/
|
||||||
|
static int wait_ready(uint32_t wt)
|
||||||
|
{
|
||||||
|
return waitfor(wt, card_ready);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Deselect card and release SPI
|
||||||
|
*/
|
||||||
|
static void deselect(void)
|
||||||
|
{
|
||||||
|
CS_HIGH();
|
||||||
|
xchg_spi(0xFF); /* Dummy clock (force DO hi-z for multiple slave SPI) */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Select card and wait for ready
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int select(void) /* 1:OK, 0:Timeout */
|
||||||
|
{
|
||||||
|
CS_LOW();
|
||||||
|
|
||||||
|
xchg_spi(0xFF); /* Dummy clock (force DO enabled) */
|
||||||
|
|
||||||
|
if (wait_ready(5000000))
|
||||||
|
return 1; /* OK */
|
||||||
|
deselect();
|
||||||
|
return 0; /* Timeout */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Control SPI module (Platform dependent)
|
||||||
|
*/
|
||||||
|
static void power_on (void) /* Enable SSP module */
|
||||||
|
{
|
||||||
|
MCF_PAD_PAR_DSPI = 0x1fff; /* configure all DSPI GPIO pins for DSPI usage */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FIXME: really necessary or just an oversight
|
||||||
|
* that PAD_PAR_DSPI is only 16 bit?
|
||||||
|
*/
|
||||||
|
// MCF_PAD_PAR_TIMER = 0xff; leave off for now
|
||||||
|
|
||||||
|
/*
|
||||||
|
* initialize DSPI module configuration register
|
||||||
|
*/
|
||||||
|
MCF_DSPI_DMCR = MCF_DSPI_DMCR_MSTR | /* FireBee is DSPI master*/
|
||||||
|
MCF_DSPI_DMCR_CSIS5 | /* CS5 inactive state high */
|
||||||
|
MCF_DSPI_DMCR_CSIS3 | /* CS3 inactive state high */
|
||||||
|
MCF_DSPI_DMCR_CSIS2 | /* CS2 inactive state high */
|
||||||
|
MCF_DSPI_DMCR_DTXF | /* disable transmit FIFO */
|
||||||
|
MCF_DSPI_DMCR_DRXF | /* disable receive FIFO */
|
||||||
|
MCF_DSPI_DMCR_CTXF | /* clear transmit FIFO */
|
||||||
|
MCF_DSPI_DMCR_CRXF; /* clear receive FIFO */
|
||||||
|
|
||||||
|
/* initialize DSPI clock and transfer attributes register 0 */
|
||||||
|
MCF_DSPI_DCTAR0 = MCF_DSPI_DCTAR_TRSZ(0b111) | /* transfer size = 8 bit */
|
||||||
|
MCF_DSPI_DCTAR_PCSSCK(0b01) | /* 3 clock DSPICS to DSPISCK delay prescaler */
|
||||||
|
MCF_DSPI_DCTAR_PASC_3CLK | /* 3 clock DSPISCK to DSPICS negation prescaler */
|
||||||
|
MCF_DSPI_DCTAR_PDT_3CLK | /* 3 clock delay between DSPICS assertions prescaler */
|
||||||
|
MCF_DSPI_DCTAR_PBR_3CLK | /* 3 clock prescaler */
|
||||||
|
MCF_DSPI_DCTAR_ASC(0b1001) | /* 1024 */
|
||||||
|
MCF_DSPI_DCTAR_DT(0b1001) | /* 1024 */
|
||||||
|
MCF_DSPI_DCTAR_BR(0b0111);
|
||||||
|
|
||||||
|
CS_HIGH(); /* Set CS# high */
|
||||||
|
|
||||||
|
/* card should now be initialized as MMC */
|
||||||
|
|
||||||
|
wait(10 * 1000); /* 10ms */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static
|
||||||
|
void power_off (void) /* Disable SPI function */
|
||||||
|
{
|
||||||
|
select(); /* Wait for card ready */
|
||||||
|
deselect();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
/* Receive a data packet from the MMC */
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
static
|
||||||
|
int rcvr_datablock ( /* 1:OK, 0:Error */
|
||||||
|
uint8_t *buff, /* Data buffer */
|
||||||
|
uint32_t btr /* Data block length (byte) */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
uint8_t token;
|
||||||
|
uint32_t target = MCF_SLT_SCNT(0) - (200 * 1000L * 132);
|
||||||
|
|
||||||
|
do { /* Wait for DataStart token in timeout of 200ms */
|
||||||
|
token = xchg_spi(0xFF);
|
||||||
|
/* This loop will take a time. Insert rot_rdq() here for multitask envilonment. */
|
||||||
|
} while ((token == 0xFF) && MCF_SLT_SCNT(0) > target);
|
||||||
|
if(token != 0xFE) return 0; /* Function fails if invalid DataStart token or timeout */
|
||||||
|
|
||||||
|
rcvr_spi_multi(buff, btr); /* Store trailing data to the buffer */
|
||||||
|
xchg_spi(0xFF); xchg_spi(0xFF); /* Discard CRC */
|
||||||
|
|
||||||
|
return 1; /* Function succeeded */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
/* Send a data packet to the MMC */
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if _USE_WRITE
|
||||||
|
static
|
||||||
|
int xmit_datablock ( /* 1:OK, 0:Failed */
|
||||||
|
const uint8_t *buff, /* Ponter to 512 byte data to be sent */
|
||||||
|
uint8_t token /* Token */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
uint8_t resp;
|
||||||
|
|
||||||
|
|
||||||
|
if (!wait_ready(500)) return 0; /* Wait for card ready */
|
||||||
|
|
||||||
|
xchg_spi(token); /* Send token */
|
||||||
|
if (token != 0xFD) { /* Send data if token is other than StopTran */
|
||||||
|
xmit_spi_multi(buff, 512); /* Data */
|
||||||
|
xchg_spi(0xFF); xchg_spi(0xFF); /* Dummy CRC */
|
||||||
|
|
||||||
|
resp = xchg_spi(0xFF); /* Receive data resp */
|
||||||
|
if ((resp & 0x1F) != 0x05) /* Function fails if the data packet was not accepted */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
/* Send a command packet to the MMC */
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static uint8_t send_cmd ( /* Return value: R1 resp (bit7==1:Failed to send) */
|
||||||
|
uint8_t cmd, /* Command index */
|
||||||
|
uint32_t arg /* Argument */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
uint8_t n, res;
|
||||||
|
|
||||||
|
|
||||||
|
if (cmd & 0x80) { /* Send a CMD55 prior to ACMD<n> */
|
||||||
|
cmd &= 0x7F;
|
||||||
|
res = send_cmd(CMD55, 0);
|
||||||
|
if (res > 1) return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Select card */
|
||||||
|
deselect();
|
||||||
|
if (!select()) return 0xFF;
|
||||||
|
|
||||||
|
/* Send command packet */
|
||||||
|
xchg_spi(0x40 | cmd); /* Start + command index */
|
||||||
|
xchg_spi((uint8_t)(arg >> 24)); /* Argument[31..24] */
|
||||||
|
xchg_spi((uint8_t)(arg >> 16)); /* Argument[23..16] */
|
||||||
|
xchg_spi((uint8_t)(arg >> 8)); /* Argument[15..8] */
|
||||||
|
xchg_spi((uint8_t)arg); /* Argument[7..0] */
|
||||||
|
n = 0x01; /* Dummy CRC + Stop */
|
||||||
|
if (cmd == CMD0) n = 0x95; /* Valid CRC for CMD0(0) */
|
||||||
|
if (cmd == CMD8) n = 0x87; /* Valid CRC for CMD8(0x1AA) */
|
||||||
|
xchg_spi(n);
|
||||||
|
|
||||||
|
/* Receive command resp */
|
||||||
|
if (cmd == CMD12) xchg_spi(0xFF); /* Diacard following one byte when CMD12 */
|
||||||
|
n = 10; /* Wait for response (10 bytes max) */
|
||||||
|
do
|
||||||
|
res = xchg_spi(0xFF);
|
||||||
|
while ((res & 0x80) && --n);
|
||||||
|
|
||||||
|
return res; /* Return received response */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Public Functions
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialize disk drive
|
||||||
|
*
|
||||||
|
* drv: physical drive number (0)
|
||||||
|
*/
|
||||||
|
DSTATUS disk_initialize(uint8_t drv)
|
||||||
|
{
|
||||||
|
uint8_t n, cmd, ty, ocr[4];
|
||||||
|
|
||||||
|
|
||||||
|
if (drv) return STA_NOINIT; /* Supports only drive 0 */
|
||||||
|
power_on(); /* Initialize SPI */
|
||||||
|
|
||||||
|
if (Stat & STA_NODISK) return Stat; /* Is card existing in the socket? */
|
||||||
|
|
||||||
|
SPICLK_SLOW();
|
||||||
|
for (n = 10; n; n--) xchg_spi(0xFF); /* Send 80 dummy clocks */
|
||||||
|
|
||||||
|
ty = 0;
|
||||||
|
if (send_cmd(CMD0, 0) == 1) { /* Put the card SPI/Idle state */
|
||||||
|
uint32_t target = MCF_SLT_SCNT(0) - (1000L * 1000L * 132); /* 1 sec */
|
||||||
|
|
||||||
|
if (send_cmd(CMD8, 0x1AA) == 1) { /* SDv2? */
|
||||||
|
for (n = 0; n < 4; n++) ocr[n] = xchg_spi(0xFF); /* Get 32 bit return value of R7 resp */
|
||||||
|
if (ocr[2] == 0x01 && ocr[3] == 0xAA) { /* Is the card supports vcc of 2.7-3.6V? */
|
||||||
|
while (MCF_SLT_SCNT(0) > target && send_cmd(ACMD41, 1UL << 30)) ; /* Wait for end of initialization with ACMD41(HCS) */
|
||||||
|
if (MCF_SLT_SCNT(0) > target && send_cmd(CMD58, 0) == 0) { /* Check CCS bit in the OCR */
|
||||||
|
for (n = 0; n < 4; n++) ocr[n] = xchg_spi(0xFF);
|
||||||
|
ty = (ocr[0] & 0x40) ? CT_SD2 | CT_BLOCK : CT_SD2; /* Card id SDv2 */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else { /* Not SDv2 card */
|
||||||
|
if (send_cmd(ACMD41, 0) <= 1) { /* SDv1 or MMC? */
|
||||||
|
ty = CT_SD1; cmd = ACMD41; /* SDv1 (ACMD41(0)) */
|
||||||
|
} else {
|
||||||
|
ty = CT_MMC; cmd = CMD1; /* MMCv3 (CMD1(0)) */
|
||||||
|
}
|
||||||
|
while (MCF_SLT_SCNT(0) > target && send_cmd(cmd, 0)) ; /* Wait for end of initialization */
|
||||||
|
if (!MCF_SLT_SCNT(0) > target || send_cmd(CMD16, 512) != 0) /* Set block length: 512 */
|
||||||
|
ty = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CardType = ty; /* Card type */
|
||||||
|
deselect();
|
||||||
|
|
||||||
|
if (ty) { /* OK */
|
||||||
|
SPICLK_FAST(); /* Set fast clock */
|
||||||
|
Stat &= ~STA_NOINIT; /* Clear STA_NOINIT flag */
|
||||||
|
} else { /* Failed */
|
||||||
|
power_off();
|
||||||
|
Stat = STA_NOINIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Stat;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
/* Get disk status */
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
DSTATUS disk_status (
|
||||||
|
uint8_t drv /* Physical drive number (0) */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (drv) return STA_NOINIT; /* Supports only drive 0 */
|
||||||
|
|
||||||
|
return Stat; /* Return disk status */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
/* Read sector(s) */
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
DRESULT disk_read (
|
||||||
|
uint8_t drv, /* Physical drive number (0) */
|
||||||
|
uint8_t *buff, /* Pointer to the data buffer to store read data */
|
||||||
|
uint32_t sector, /* Start sector number (LBA) */
|
||||||
|
uint8_t count /* Number of sectors to read (1..128) */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (drv || !count) return RES_PARERR; /* Check parameter */
|
||||||
|
if (Stat & STA_NOINIT) return RES_NOTRDY; /* Check if drive is ready */
|
||||||
|
|
||||||
|
if (!(CardType & CT_BLOCK)) sector *= 512; /* LBA ot BA conversion (byte addressing cards) */
|
||||||
|
|
||||||
|
if (count == 1) { /* Single sector read */
|
||||||
|
if ((send_cmd(CMD17, sector) == 0) /* READ_SINGLE_BLOCK */
|
||||||
|
&& rcvr_datablock(buff, 512))
|
||||||
|
count = 0;
|
||||||
|
}
|
||||||
|
else { /* Multiple sector read */
|
||||||
|
if (send_cmd(CMD18, sector) == 0) { /* READ_MULTIPLE_BLOCK */
|
||||||
|
do {
|
||||||
|
if (!rcvr_datablock(buff, 512)) break;
|
||||||
|
buff += 512;
|
||||||
|
} while (--count);
|
||||||
|
send_cmd(CMD12, 0); /* STOP_TRANSMISSION */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
deselect();
|
||||||
|
|
||||||
|
return count ? RES_ERROR : RES_OK; /* Return result */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
/* Write sector(s) */
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if _USE_WRITE
|
||||||
|
DRESULT disk_write (
|
||||||
|
uint8_t drv, /* Physical drive number (0) */
|
||||||
|
const uint8_t *buff, /* Ponter to the data to write */
|
||||||
|
uint32_t sector, /* Start sector number (LBA) */
|
||||||
|
uint8_t count /* Number of sectors to write (1..128) */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (drv || !count) return RES_PARERR; /* Check parameter */
|
||||||
|
if (Stat & STA_NOINIT) return RES_NOTRDY; /* Check drive status */
|
||||||
|
if (Stat & STA_PROTECT) return RES_WRPRT; /* Check write protect */
|
||||||
|
|
||||||
|
if (!(CardType & CT_BLOCK)) sector *= 512; /* LBA ==> BA conversion (byte addressing cards) */
|
||||||
|
|
||||||
|
if (count == 1) { /* Single sector write */
|
||||||
|
if ((send_cmd(CMD24, sector) == 0) /* WRITE_BLOCK */
|
||||||
|
&& xmit_datablock(buff, 0xFE))
|
||||||
|
count = 0;
|
||||||
|
}
|
||||||
|
else { /* Multiple sector write */
|
||||||
|
if (CardType & CT_SDC) send_cmd(ACMD23, count); /* Predefine number of sectors */
|
||||||
|
if (send_cmd(CMD25, sector) == 0) { /* WRITE_MULTIPLE_BLOCK */
|
||||||
|
do {
|
||||||
|
if (!xmit_datablock(buff, 0xFC)) break;
|
||||||
|
buff += 512;
|
||||||
|
} while (--count);
|
||||||
|
if (!xmit_datablock(0, 0xFD)) /* STOP_TRAN token */
|
||||||
|
count = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
deselect();
|
||||||
|
|
||||||
|
return count ? RES_ERROR : RES_OK; /* Return result */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
/* Miscellaneous drive controls other than data read/write */
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if _USE_IOCTL
|
||||||
|
DRESULT disk_ioctl (
|
||||||
|
uint8_t drv, /* Physical drive number (0) */
|
||||||
|
uint8_t ctrl, /* Control command code */
|
||||||
|
void *buff /* Pointer to the conrtol data */
|
||||||
|
)
|
||||||
|
{
|
||||||
|
DRESULT res;
|
||||||
|
uint8_t n, csd[16], *ptr = buff;
|
||||||
|
uint32_t *dp, st, ed, csize;
|
||||||
|
|
||||||
|
|
||||||
|
if (drv) return RES_PARERR; /* Check parameter */
|
||||||
|
if (Stat & STA_NOINIT) return RES_NOTRDY; /* Check if drive is ready */
|
||||||
|
|
||||||
|
res = RES_ERROR;
|
||||||
|
|
||||||
|
switch (ctrl) {
|
||||||
|
case CTRL_SYNC : /* Wait for end of internal write process of the drive */
|
||||||
|
if (select()) {
|
||||||
|
deselect();
|
||||||
|
res = RES_OK;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GET_SECTOR_COUNT : /* Get drive capacity in unit of sector (DWORD) */
|
||||||
|
if ((send_cmd(CMD9, 0) == 0) && rcvr_datablock(csd, 16)) {
|
||||||
|
if ((csd[0] >> 6) == 1) { /* SDC ver 2.00 */
|
||||||
|
csize = csd[9] + ((uint16_t)csd[8] << 8) + ((uint32_t)(csd[7] & 63) << 16) + 1;
|
||||||
|
*(uint32_t*)buff = csize << 10;
|
||||||
|
} else { /* SDC ver 1.XX or MMC ver 3 */
|
||||||
|
n = (csd[5] & 15) + ((csd[10] & 128) >> 7) + ((csd[9] & 3) << 1) + 2;
|
||||||
|
csize = (csd[8] >> 6) + ((uint16_t)csd[7] << 2) + ((uint16_t)(csd[6] & 3) << 10) + 1;
|
||||||
|
*(uint32_t*)buff = csize << (n - 9);
|
||||||
|
}
|
||||||
|
res = RES_OK;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GET_SECTOR_SIZE : /* Get sector size in unit of byte (WORD) */
|
||||||
|
*(uint16_t*)buff = 512;
|
||||||
|
res = RES_OK;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GET_BLOCK_SIZE : /* Get erase block size in unit of sector (DWORD) */
|
||||||
|
if (CardType & CT_SD2) { /* SDC ver 2.00 */
|
||||||
|
if (send_cmd(ACMD13, 0) == 0) { /* Read SD status */
|
||||||
|
xchg_spi(0xFF);
|
||||||
|
if (rcvr_datablock(csd, 16)) { /* Read partial block */
|
||||||
|
for (n = 64 - 16; n; n--) xchg_spi(0xFF); /* Purge trailing data */
|
||||||
|
*(uint32_t*)buff = 16UL << (csd[10] >> 4);
|
||||||
|
res = RES_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else { /* SDC ver 1.XX or MMC */
|
||||||
|
if ((send_cmd(CMD9, 0) == 0) && rcvr_datablock(csd, 16)) { /* Read CSD */
|
||||||
|
if (CardType & CT_SD1) { /* SDC ver 1.XX */
|
||||||
|
*(uint32_t*)buff = (((csd[10] & 63) << 1) + ((uint16_t)(csd[11] & 128) >> 7) + 1) << ((csd[13] >> 6) - 1);
|
||||||
|
} else { /* MMC */
|
||||||
|
*(uint32_t*)buff = ((uint16_t)((csd[10] & 124) >> 2) + 1) * (((csd[11] & 3) << 3) + ((csd[11] & 224) >> 5) + 1);
|
||||||
|
}
|
||||||
|
res = RES_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CTRL_ERASE_SECTOR : /* Erase a block of sectors (used when _USE_ERASE == 1) */
|
||||||
|
if (!(CardType & CT_SDC)) break; /* Check if the card is SDC */
|
||||||
|
if (disk_ioctl(drv, MMC_GET_CSD, csd)) break; /* Get CSD */
|
||||||
|
if (!(csd[0] >> 6) && !(csd[10] & 0x40)) break; /* Check if sector erase can be applied to the card */
|
||||||
|
dp = buff; st = dp[0]; ed = dp[1]; /* Load sector block */
|
||||||
|
if (!(CardType & CT_BLOCK)) {
|
||||||
|
st *= 512; ed *= 512;
|
||||||
|
}
|
||||||
|
if (send_cmd(CMD32, st) == 0 && send_cmd(CMD33, ed) == 0 && send_cmd(CMD38, 0) == 0 && wait_ready(30000)) /* Erase sector block */
|
||||||
|
res = RES_OK; /* FatFs does not check result of this command */
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* Following command are not used by FatFs module */
|
||||||
|
|
||||||
|
case MMC_GET_TYPE : /* Get MMC/SDC type (BYTE) */
|
||||||
|
*ptr = CardType;
|
||||||
|
res = RES_OK;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MMC_GET_CSD : /* Read CSD (16 bytes) */
|
||||||
|
if (send_cmd(CMD9, 0) == 0 /* READ_CSD */
|
||||||
|
&& rcvr_datablock(ptr, 16))
|
||||||
|
res = RES_OK;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MMC_GET_CID : /* Read CID (16 bytes) */
|
||||||
|
if (send_cmd(CMD10, 0) == 0 /* READ_CID */
|
||||||
|
&& rcvr_datablock(ptr, 16))
|
||||||
|
res = RES_OK;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MMC_GET_OCR : /* Read OCR (4 bytes) */
|
||||||
|
if (send_cmd(CMD58, 0) == 0) { /* READ_OCR */
|
||||||
|
for (n = 4; n; n--) *ptr++ = xchg_spi(0xFF);
|
||||||
|
res = RES_OK;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MMC_GET_SDSTAT : /* Read SD status (64 bytes) */
|
||||||
|
if (send_cmd(ACMD13, 0) == 0) { /* SD_STATUS */
|
||||||
|
xchg_spi(0xFF);
|
||||||
|
if (rcvr_datablock(ptr, 64))
|
||||||
|
res = RES_OK;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
res = RES_PARERR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
deselect();
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
/* Device timer function */
|
||||||
|
/*-----------------------------------------------------------------------*/
|
||||||
|
/* This function must be called from timer interrupt routine in period
|
||||||
|
/ of 1 ms to generate card control timing.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef _NOT_USED_
|
||||||
|
void disk_timerproc (void)
|
||||||
|
{
|
||||||
|
uint8_t s;
|
||||||
|
|
||||||
|
s = Stat;
|
||||||
|
if (WP) /* Write protected */
|
||||||
|
s |= STA_PROTECT;
|
||||||
|
else /* Write enabled */
|
||||||
|
s &= ~STA_PROTECT;
|
||||||
|
//if (INS) /* Card is in socket */
|
||||||
|
s &= ~STA_NODISK;
|
||||||
|
//else /* Socket empty */
|
||||||
|
// s |= (STA_NODISK | STA_NOINIT);
|
||||||
|
Stat = s;
|
||||||
|
}
|
||||||
|
#endif /* _NOT_USED_ */
|
||||||
195
i2cspi_BaS_gcc/sources/mmu.S
Normal file
195
i2cspi_BaS_gcc/sources/mmu.S
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
/*
|
||||||
|
* INIT ACR and MMU
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "startcf.h"
|
||||||
|
|
||||||
|
.extern _rt_vbr
|
||||||
|
.extern _rt_cacr
|
||||||
|
.extern _rt_asid
|
||||||
|
.extern _rt_acr0
|
||||||
|
.extern _rt_acr1
|
||||||
|
.extern _rt_acr2
|
||||||
|
.extern _rt_acr3
|
||||||
|
.extern _rt_mmubar
|
||||||
|
.extern ___MMUBAR
|
||||||
|
.extern cpusha
|
||||||
|
.extern _video_tlb
|
||||||
|
.extern _video_sbt
|
||||||
|
.extern __TOS
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_MMU_MMUCR __MMUBAR
|
||||||
|
#define MCF_MMU_MMUOR __MMUBAR+0x04
|
||||||
|
#define MCF_MMU_MMUSR __MMUBAR+0x08
|
||||||
|
#define MCF_MMU_MMUAR __MMUBAR+0x10
|
||||||
|
#define MCF_MMU_MMUTR __MMUBAR+0x14
|
||||||
|
#define MCF_MMU_MMUDR __MMUBAR+0x18
|
||||||
|
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUCR */
|
||||||
|
#define MCF_MMU_MMUCR_EN (0x1)
|
||||||
|
#define MCF_MMU_MMUCR_ASM (0x2)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUOR */
|
||||||
|
#define MCF_MMU_MMUOR_UAA (0x1)
|
||||||
|
#define MCF_MMU_MMUOR_ACC (0x2)
|
||||||
|
#define MCF_MMU_MMUOR_RW (0x4)
|
||||||
|
#define MCF_MMU_MMUOR_ADR (0x8)
|
||||||
|
#define MCF_MMU_MMUOR_ITLB (0x10)
|
||||||
|
#define MCF_MMU_MMUOR_CAS (0x20)
|
||||||
|
#define MCF_MMU_MMUOR_CNL (0x40)
|
||||||
|
#define MCF_MMU_MMUOR_CA (0x80)
|
||||||
|
#define MCF_MMU_MMUOR_STLB (0x100)
|
||||||
|
#define MCF_MMU_MMUOR_AA(x) (((x)&0xFFFF)<<0x10)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUSR */
|
||||||
|
#define MCF_MMU_MMUSR_HIT (0x2)
|
||||||
|
#define MCF_MMU_MMUSR_WF (0x8)
|
||||||
|
#define MCF_MMU_MMUSR_RF (0x10)
|
||||||
|
#define MCF_MMU_MMUSR_SPF (0x20)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUAR */
|
||||||
|
#define MCF_MMU_MMUAR_FA(x) (((x)&0xFFFFFFFF)<<0)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUTR */
|
||||||
|
#define MCF_MMU_MMUTR_V (0x1)
|
||||||
|
#define MCF_MMU_MMUTR_SG (0x2)
|
||||||
|
#define MCF_MMU_MMUTR_ID(x) (((x)&0xFF)<<0x2)
|
||||||
|
#define MCF_MMU_MMUTR_VA(x) (((x)&0x3FFFFF)<<0xA)
|
||||||
|
|
||||||
|
/* Bit definitions and macros for MCF_MMU_MMUDR */
|
||||||
|
#define MCF_MMU_MMUDR_LK (0x2)
|
||||||
|
#define MCF_MMU_MMUDR_X (0x4)
|
||||||
|
#define MCF_MMU_MMUDR_W (0x8)
|
||||||
|
#define MCF_MMU_MMUDR_R (0x10)
|
||||||
|
#define MCF_MMU_MMUDR_SP (0x20)
|
||||||
|
#define MCF_MMU_MMUDR_CM(x) (((x)&0x3)<<0x6)
|
||||||
|
#define MCF_MMU_MMUDR_SZ(x) (((x)&0x3)<<0x8)
|
||||||
|
#define MCF_MMU_MMUDR_PA(x) (((x)&0x3FFFFF)<<0xA)
|
||||||
|
|
||||||
|
#define std_mmutr (MCF_MMU_MMUTR_SG|MCF_MMU_MMUTR_V)
|
||||||
|
#define mmuord_d ( MCF_MMU_MMUOR_ACC|MCF_MMU_MMUOR_UAA)
|
||||||
|
#define mmuord_i (MCF_MMU_MMUOR_ITLB|MCF_MMU_MMUOR_ACC|MCF_MMU_MMUOR_UAA)
|
||||||
|
#define wt_mmudr (MCF_MMU_MMUDR_SZ(00)|MCF_MMU_MMUDR_CM(00)|MCF_MMU_MMUDR_R|MCF_MMU_MMUDR_W|MCF_MMU_MMUDR_X)
|
||||||
|
#define cb_mmudr (MCF_MMU_MMUDR_SZ(00)|MCF_MMU_MMUDR_CM(01)|MCF_MMU_MMUDR_R|MCF_MMU_MMUDR_W|MCF_MMU_MMUDR_X)
|
||||||
|
#define nc_mmudr (MCF_MMU_MMUDR_SZ(00)|MCF_MMU_MMUDR_CM(10)|MCF_MMU_MMUDR_R|MCF_MMU_MMUDR_W|MCF_MMU_MMUDR_X)
|
||||||
|
|
||||||
|
.global _mmu_init
|
||||||
|
.global _mmutr_miss
|
||||||
|
|
||||||
|
.text
|
||||||
|
_mmu_init:
|
||||||
|
move.l d3,-(sp) // Backup registers
|
||||||
|
move.l d2,-(sp)
|
||||||
|
|
||||||
|
clr.l d0
|
||||||
|
movec d0,ASID // ASID allways 0
|
||||||
|
move.l d0,_rt_asid // sichern
|
||||||
|
|
||||||
|
move.l #0xC03FC040,d0 // data r/w precise c000'0000-ffff'ffff
|
||||||
|
movec d0,ACR0
|
||||||
|
move.l d0,_rt_acr0 // sichern
|
||||||
|
|
||||||
|
move.l #0x601FC000,d0 // data r/w wt 6000'0000-7fff'ffff
|
||||||
|
movec d0,ACR1
|
||||||
|
move.l d0,_rt_acr1 // sichern
|
||||||
|
|
||||||
|
move.l #0xe007C400,d0 // instruction r wt e000'0000-e07f'ffff
|
||||||
|
movec d0,ACR2
|
||||||
|
move.l d0,_rt_acr2 // sichern
|
||||||
|
|
||||||
|
clr.l d0 // acr3 aus
|
||||||
|
movec d0,ACR3
|
||||||
|
move.l d0,_rt_acr3 // sichern
|
||||||
|
|
||||||
|
move.l #__MMUBAR+1,d0
|
||||||
|
movec d0,MMUBAR //mmubar setzen
|
||||||
|
move.l d0,_rt_mmubar // sichern
|
||||||
|
|
||||||
|
nop
|
||||||
|
|
||||||
|
move.l #MCF_MMU_MMUOR_CA,d0 // clear all entries,
|
||||||
|
move.l d0,MCF_MMU_MMUOR
|
||||||
|
nop
|
||||||
|
// 0000'0000 locked
|
||||||
|
moveq.l #0x00000000|std_mmutr,d0
|
||||||
|
moveq.l #0x00000000|cb_mmudr|MCF_MMU_MMUDR_LK,d1
|
||||||
|
moveq.l #mmuord_d,d2 // MMU update date
|
||||||
|
moveq.l #mmuord_i,d3 // MMU update instruction
|
||||||
|
move.l d0,MCF_MMU_MMUTR
|
||||||
|
move.l d1,MCF_MMU_MMUDR
|
||||||
|
move.l d2,MCF_MMU_MMUOR // MMU update date
|
||||||
|
move.l d3,MCF_MMU_MMUOR // MMU update instruction
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------
|
||||||
|
// 00d0'0000 locked ID=6
|
||||||
|
// video ram: read write execute normal write true
|
||||||
|
move.l #0x00d00000|MCF_MMU_MMUTR_ID(sca_page_ID)|std_mmutr,d0
|
||||||
|
move.l #0x60d00000|wt_mmudr|MCF_MMU_MMUDR_LK,d1
|
||||||
|
move.l d0,MCF_MMU_MMUTR
|
||||||
|
move.l d1,MCF_MMU_MMUDR
|
||||||
|
move.l d2,MCF_MMU_MMUOR // MMU update date
|
||||||
|
move.l #0x00d00000|std_mmutr,d0
|
||||||
|
move.l d3,MCF_MMU_MMUOR // MMU update instruction
|
||||||
|
|
||||||
|
move.l #0x2000,d0
|
||||||
|
move.l d0,_video_tlb // set page as video page
|
||||||
|
clr.l _video_sbt // clear time
|
||||||
|
//-------------------------------------------------------------------------------------
|
||||||
|
// Make the TOS (in SDRAM) read-only
|
||||||
|
move.l #__TOS+std_mmutr,d0
|
||||||
|
move.l #__TOS+cb_mmudr+MCF_MMU_MMUDR_LK,d1
|
||||||
|
move.l d0,MCF_MMU_MMUTR
|
||||||
|
move.l d1,MCF_MMU_MMUDR
|
||||||
|
move.l d2,MCF_MMU_MMUOR // setzen read only ?????? noch nicht
|
||||||
|
move.l d3,MCF_MMU_MMUOR // setzen
|
||||||
|
// 00f0'0000 locked
|
||||||
|
move.l #0x00f00000|std_mmutr,d0
|
||||||
|
move.l #0xfff00000|nc_mmudr|MCF_MMU_MMUDR_LK,d1
|
||||||
|
move.l d0,MCF_MMU_MMUTR
|
||||||
|
move.l d1,MCF_MMU_MMUDR
|
||||||
|
move.l d2,MCF_MMU_MMUOR // maped to ffffxxx, precise,
|
||||||
|
move.l d3,MCF_MMU_MMUOR // maped to ffffxxx, precise,
|
||||||
|
// 1fe0'0000 locked
|
||||||
|
move.l #0x1FE00000|std_mmutr,d0
|
||||||
|
move.l #0x1FE00000|cb_mmudr|MCF_MMU_MMUDR_LK,d1
|
||||||
|
move.l d0,MCF_MMU_MMUTR
|
||||||
|
move.l d1,MCF_MMU_MMUDR
|
||||||
|
move.l d2,MCF_MMU_MMUOR // setzen data
|
||||||
|
move.l d3,MCF_MMU_MMUOR // setzen instr
|
||||||
|
// 1ff0'0000 locked
|
||||||
|
move.l #0x1FF00000|std_mmutr,d0
|
||||||
|
move.l #0x1FF00000|cb_mmudr|MCF_MMU_MMUDR_LK,d1
|
||||||
|
move.l d0,MCF_MMU_MMUTR
|
||||||
|
move.l d1,MCF_MMU_MMUDR
|
||||||
|
move.l d2,MCF_MMU_MMUOR // setzen data
|
||||||
|
move.l d3,MCF_MMU_MMUOR // setzen instr
|
||||||
|
// instr 0xFFF0'0000 nach 0x1FF0'0000 umleiten -->> short sprung
|
||||||
|
/* move.l #0xFFF00000|std_mmutr,d0
|
||||||
|
move.l #0x1FF00000|cb_mmudr|MCF_MMU_MMUDR_LK,d1
|
||||||
|
move.l d0,MCF_MMU_MMUTR
|
||||||
|
move.l d1,MCF_MMU_MMUDR
|
||||||
|
move.l d3,MCF_MMU_MMUOR // setzen instr
|
||||||
|
*/
|
||||||
|
move.l (sp)+,d2 // Restore registers
|
||||||
|
move.l (sp)+,d3
|
||||||
|
rts
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MMU table search
|
||||||
|
*/
|
||||||
|
_mmutr_miss:
|
||||||
|
bsr cpusha
|
||||||
|
and.l #0xFFF00000,d0
|
||||||
|
or.l #std_mmutr,d0
|
||||||
|
move.l d0,MCF_MMU_MMUTR
|
||||||
|
and.l #0xFFF00000,d0
|
||||||
|
or.l #cb_mmudr,d0
|
||||||
|
move.l d0,MCF_MMU_MMUDR
|
||||||
|
moveq.l #mmuord_d,d0 // MMU update data
|
||||||
|
move.l d0,MCF_MMU_MMUOR // setzen
|
||||||
|
moveq.l #mmuord_i,d0 // MMU update instruction
|
||||||
|
move.l d0,MCF_MMU_MMUOR // setzen
|
||||||
|
move.l (sp)+,d0
|
||||||
|
rte
|
||||||
36
i2cspi_BaS_gcc/sources/printf_helper.S
Normal file
36
i2cspi_BaS_gcc/sources/printf_helper.S
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* printf_helper.S
|
||||||
|
*
|
||||||
|
* assembler trampoline to let printf (compiled -mpcrel) indirectly reference __MBAR
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2010 - 2012 F. Aschwanden
|
||||||
|
* Copyright 2011 - 2012 V. Riviere
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
.global printf_helper
|
||||||
|
printf_helper:
|
||||||
|
.extern __MBAR
|
||||||
|
.wait_txready:
|
||||||
|
move.w __MBAR+0x8604,d2 // PSCSCR0 status register
|
||||||
|
btst #10,d2 // space left in TX fifo?
|
||||||
|
beq.s .wait_txready // no, loop
|
||||||
|
lea __MBAR+0x860C,a0 // PSCSTB0 transmitter buffer register
|
||||||
|
move.b d0,(a0) // send byte
|
||||||
|
rts
|
||||||
424
i2cspi_BaS_gcc/sources/s19reader.c
Normal file
424
i2cspi_BaS_gcc/sources/s19reader.c
Normal file
@@ -0,0 +1,424 @@
|
|||||||
|
/*
|
||||||
|
* s19reader.c
|
||||||
|
*
|
||||||
|
* Created on: 17.12.2012
|
||||||
|
* Author: mfro
|
||||||
|
* The ACP Firebee project
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "bas_printf.h"
|
||||||
|
#include "sd_card.h"
|
||||||
|
#include "diskio.h"
|
||||||
|
#include "ff.h"
|
||||||
|
#include "s19reader.h"
|
||||||
|
#include "cache.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Yes, I know. The following doesn't really look like code should look like...
|
||||||
|
*
|
||||||
|
* I did try to map structures over the S-records with (packed) which didn't work reliably due to gcc _not_ packing them appropiate
|
||||||
|
* and finally ended up with this. Not nice, put paid (and working).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define SREC_TYPE(a) (a)[0] /* type of record */
|
||||||
|
#define SREC_COUNT(a) (a)[1] /* length of valid bytes to follow */
|
||||||
|
#define SREC_ADDR16(a) (256 * (a)[2] + (a)[3]) /* 2 byte address field */
|
||||||
|
#define SREC_ADDR24(a) (0x10000 * (a)[2] + 0x100 * \
|
||||||
|
(a)[3] + (a)[4]) /* 3 byte address field */
|
||||||
|
#define SREC_ADDR32(a) (0x1000000 * a[2] + 0x10000 * \
|
||||||
|
a[3] + 0x100 * (a)[4] + (a)[5]) /* 4 byte address field */
|
||||||
|
#define SREC_DATA16(a) ((uint8_t *)&((a)[4])) /* address of first byte of data in a record */
|
||||||
|
#define SREC_DATA24(a) ((uint8_t *)&((a)[5])) /* address of first data byte in 24 bit record */
|
||||||
|
#define SREC_DATA32(a) ((uint8_t *)&((a)[6])) /* adress of first byte of a record with 32 bit address field */
|
||||||
|
#define SREC_DATA16_SIZE(a) (SREC_COUNT((a)) - 3) /* length of the data[] array without the checksum field */
|
||||||
|
#define SREC_DATA24_SIZE(a) (SREC_COUNT((a)) - 4) /* length of the data[] array without the checksum field */
|
||||||
|
#define SREC_DATA32_SIZE(a) (SREC_COUNT((a)) - 5) /* length of the data[] array without the checksum field */
|
||||||
|
#define SREC_CHECKSUM(a) (a)[SREC_COUNT(a) + 2 - 1] /* record's checksum (two's complement of the sum of all bytes) */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* convert a single hex character into byte
|
||||||
|
*/
|
||||||
|
static uint8_t nibble_to_byte(uint8_t nibble)
|
||||||
|
{
|
||||||
|
if ((nibble >= '0') && (nibble <= '9'))
|
||||||
|
return nibble - '0';
|
||||||
|
else if ((nibble >= 'A' && nibble <= 'F'))
|
||||||
|
return 10 + nibble - 'A';
|
||||||
|
else if ((nibble >= 'a' && nibble <= 'f'))
|
||||||
|
return 10 + nibble - 'a';
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* convert two hex characters into byte
|
||||||
|
*/
|
||||||
|
static uint8_t hex_to_byte(uint8_t hex[2])
|
||||||
|
{
|
||||||
|
return 16 * (nibble_to_byte(hex[0])) + (nibble_to_byte(hex[1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* convert four hex characters into a 16 bit word
|
||||||
|
*/
|
||||||
|
static uint16_t hex_to_word(uint8_t hex[4])
|
||||||
|
{
|
||||||
|
return 256 * hex_to_byte(&hex[0]) + hex_to_byte(&hex[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* convert eight hex characters into a 32 bit word
|
||||||
|
*/
|
||||||
|
static uint32_t hex_to_long(uint8_t hex[8])
|
||||||
|
{
|
||||||
|
return 65536 * hex_to_word(&hex[0]) + hex_to_word(&hex[4]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* compute the record checksum
|
||||||
|
*
|
||||||
|
* it consists of the one's complement of the byte sum of the data from the count field until the end
|
||||||
|
*/
|
||||||
|
static uint8_t checksum(uint8_t arr[])
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
uint8_t checksum = SREC_COUNT(arr);
|
||||||
|
|
||||||
|
for (i = 0; i < SREC_COUNT(arr) - 1; i++)
|
||||||
|
{
|
||||||
|
checksum += arr[i + 2];
|
||||||
|
}
|
||||||
|
return ~checksum;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _NOT_USED_
|
||||||
|
void print_record(uint8_t *arr)
|
||||||
|
{
|
||||||
|
switch (SREC_TYPE(arr))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
{
|
||||||
|
xprintf("type 0x%x ", SREC_TYPE(arr));
|
||||||
|
xprintf("count 0x%x ", SREC_COUNT(arr));
|
||||||
|
xprintf("addr 0x%x ", SREC_ADDR16(arr));
|
||||||
|
xprintf("module %11.11s ", SREC_DATA16(arr));
|
||||||
|
xprintf("chk 0x%x 0x%x\r\n", SREC_CHECKSUM(arr), checksum(arr));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
case 7:
|
||||||
|
{
|
||||||
|
xprintf("type 0x%x ", SREC_TYPE(arr));
|
||||||
|
xprintf("count 0x%x ", SREC_COUNT(arr));
|
||||||
|
xprintf("addr 0x%x ", SREC_ADDR32(arr));
|
||||||
|
xprintf("data %02x,%02x,%02x,%02x,... ",
|
||||||
|
SREC_DATA32(arr)[0], SREC_DATA32(arr)[1], SREC_DATA32(arr)[3], SREC_DATA32(arr)[4]);
|
||||||
|
xprintf("chk 0x%x 0x%x\r\n", SREC_CHECKSUM(arr), checksum(arr));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
xprintf("unsupported report type %d in print_record\r\n", arr[0]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* _NOT_USED_ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* convert an S-record line into its corresponding byte vector (ASCII->binary)
|
||||||
|
*/
|
||||||
|
static void line_to_vector(uint8_t *buff, uint8_t *vector)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int length;
|
||||||
|
uint8_t *vp = vector;
|
||||||
|
|
||||||
|
length = hex_to_byte(buff + 2);
|
||||||
|
|
||||||
|
buff++;
|
||||||
|
*vp++ = nibble_to_byte(*buff); /* record type. Only one single nibble */
|
||||||
|
buff++;
|
||||||
|
|
||||||
|
for (i = 0; i <= length; i++)
|
||||||
|
{
|
||||||
|
*vp++ = hex_to_byte(buff);
|
||||||
|
buff += 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* read and parse a Motorola S-record file and copy contents to dst. The theory of operation is to read and parse the S-record file
|
||||||
|
* and to use the supplied callback routine to copy the buffer to the destination once the S-record line is converted.
|
||||||
|
* The memcpy callback can be anything (as long as it conforms parameter-wise) - a basically empty function to just let
|
||||||
|
* read_srecords validate the file, a standard memcpy() to copy file contents to destination RAM or a more sophisticated
|
||||||
|
* routine that does write/erase flash
|
||||||
|
*
|
||||||
|
* FIXME: Currently only records that the gcc toolchain emits are supported.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* IN
|
||||||
|
* filename - the filename that contains the S-records
|
||||||
|
* callback - the memcpy() routine discussed above
|
||||||
|
* OUT
|
||||||
|
* start_address - the execution address of the code as read from the file. Can be used to jump into and execute it
|
||||||
|
* actual_length - the overall length of the binary code read from the file
|
||||||
|
* returns
|
||||||
|
* OK or an err_t error code if anything failed
|
||||||
|
*/
|
||||||
|
err_t read_srecords(char *filename, void **start_address, uint32_t *actual_length, memcpy_callback_t callback)
|
||||||
|
{
|
||||||
|
FRESULT fres;
|
||||||
|
FIL file;
|
||||||
|
err_t ret = OK;
|
||||||
|
|
||||||
|
if ((fres = f_open(&file, filename, FA_READ) == FR_OK))
|
||||||
|
{
|
||||||
|
uint8_t line[80];
|
||||||
|
int lineno = 0;
|
||||||
|
int data_records = 0;
|
||||||
|
bool found_block_header = false;
|
||||||
|
bool found_block_end = false;
|
||||||
|
bool found_block_data = false;
|
||||||
|
|
||||||
|
while (ret == OK && (uint8_t *) f_gets((char *) line, sizeof(line), &file) != NULL)
|
||||||
|
{
|
||||||
|
lineno++;
|
||||||
|
uint8_t vector[80];
|
||||||
|
|
||||||
|
line_to_vector(line, vector); /* vector now contains the decoded contents of line, from line[1] on */
|
||||||
|
|
||||||
|
if (line[0] == 'S')
|
||||||
|
{
|
||||||
|
if (SREC_CHECKSUM(vector) != checksum(vector))
|
||||||
|
{
|
||||||
|
xprintf("invalid checksum 0x%x (should be 0x%x) in line %d\r\n",
|
||||||
|
SREC_CHECKSUM(vector), checksum(vector), lineno);
|
||||||
|
ret = FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (vector[0])
|
||||||
|
{
|
||||||
|
case 0: /* block header */
|
||||||
|
found_block_header = true;
|
||||||
|
if (found_block_data || found_block_end)
|
||||||
|
{
|
||||||
|
xprintf("S7 or S3 record found before S0: S-records corrupt?\r\n");
|
||||||
|
ret = FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: /* three byte address field data record */
|
||||||
|
if (!found_block_header || found_block_end)
|
||||||
|
{
|
||||||
|
xprintf("S3 record found before S0 or after S7: S-records corrupt?\r\n");
|
||||||
|
ret = FAIL;
|
||||||
|
}
|
||||||
|
ret = callback((uint8_t *) SREC_ADDR24(vector), SREC_DATA24(vector), SREC_DATA24_SIZE(vector));
|
||||||
|
data_records++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3: /* four byte address field data record */
|
||||||
|
if (!found_block_header || found_block_end)
|
||||||
|
{
|
||||||
|
xprintf("S3 record found before S0 or after S7: S-records corrupt?\r\n");
|
||||||
|
ret = FAIL;
|
||||||
|
}
|
||||||
|
ret = callback((uint8_t *) SREC_ADDR32(vector), SREC_DATA32(vector), SREC_DATA32_SIZE(vector));
|
||||||
|
data_records++;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7: /* four byte address field end record */
|
||||||
|
if (!found_block_header || found_block_end)
|
||||||
|
{
|
||||||
|
xprintf("S7 record found before S0 or after S7: S-records corrupt?\r\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// xprintf("S7 record (end) found after %d valid data blocks\r\n", data_records);
|
||||||
|
*start_address = (void *) SREC_ADDR32(vector);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 8: /* three byte address field end record */
|
||||||
|
if (!found_block_header || found_block_end)
|
||||||
|
{
|
||||||
|
xprintf("S8 record found before S0 or after S8: S-records corrupt?\r\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// xprintf("S7 record (end) found after %d valid data blocks\r\n", data_records);
|
||||||
|
*start_address = (void *) SREC_ADDR24(vector);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
xprintf("unsupported record type (%d) found in line %d\r\n", vector[0], lineno);
|
||||||
|
xprintf("offending line: \r\n");
|
||||||
|
xprintf("%s\r\n", line);
|
||||||
|
ret = FAIL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("illegal character ('%c') found on line %d: S-records corrupt?\r\n", line[0], lineno);
|
||||||
|
ret = FAIL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
f_close(&file);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("could not open file %s\r\n", filename);
|
||||||
|
ret = FILE_OPEN;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* this callback just does nothing besides returning OK. Meant to do a dry run over the file to check its integrity
|
||||||
|
*/
|
||||||
|
static err_t simulate()
|
||||||
|
{
|
||||||
|
err_t ret = OK;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static err_t memcpy(uint8_t *dst, uint8_t *src, uint32_t length)
|
||||||
|
{
|
||||||
|
uint8_t *end = src + length;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
*dst++ = *src++;
|
||||||
|
} while (src < end);
|
||||||
|
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static err_t flash(uint8_t *dst, uint8_t *src, uint32_t length)
|
||||||
|
{
|
||||||
|
err_t ret = OK;
|
||||||
|
|
||||||
|
/* TODO: do the actual flash */
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* this callback verifies the data against the S-record file contents after a write to destination
|
||||||
|
*/
|
||||||
|
static err_t verify(uint8_t *dst, uint8_t *src, uint32_t length)
|
||||||
|
{
|
||||||
|
uint8_t *end = src + length;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (*src++ != *dst++)
|
||||||
|
return FAIL;
|
||||||
|
} while (src < end);
|
||||||
|
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void srec_execute(char *flasher_filename)
|
||||||
|
{
|
||||||
|
DRESULT res;
|
||||||
|
FRESULT fres;
|
||||||
|
FATFS fs;
|
||||||
|
FIL file;
|
||||||
|
err_t err;
|
||||||
|
void *start_address;
|
||||||
|
uint32_t length;
|
||||||
|
|
||||||
|
disk_initialize(0);
|
||||||
|
res = disk_status(0);
|
||||||
|
if (res == RES_OK)
|
||||||
|
{
|
||||||
|
fres = f_mount(0, &fs);
|
||||||
|
if (fres == FR_OK)
|
||||||
|
{
|
||||||
|
if ((fres = f_open(&file, flasher_filename, FA_READ) != FR_OK))
|
||||||
|
{
|
||||||
|
xprintf("flasher file %s not present on disk\r\n", flasher_filename);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
f_close(&file);
|
||||||
|
|
||||||
|
/* first pass: parse and check for inconsistencies */
|
||||||
|
xprintf("check file integrity: ");
|
||||||
|
err = read_srecords(flasher_filename, &start_address, &length, simulate);
|
||||||
|
if (err == OK)
|
||||||
|
{
|
||||||
|
/* next pass: copy data to destination */
|
||||||
|
xprintf("OK.\r\ncopy/flash data: ");
|
||||||
|
err = read_srecords(flasher_filename, &start_address, &length, memcpy);
|
||||||
|
if (err == OK)
|
||||||
|
{
|
||||||
|
/* next pass: verify data */
|
||||||
|
xprintf("OK.\r\nverify data: ");
|
||||||
|
err = read_srecords(flasher_filename, &start_address, &length, verify);
|
||||||
|
if (err == OK)
|
||||||
|
{
|
||||||
|
xprintf("OK.\r\n");
|
||||||
|
typedef void void_func(void);
|
||||||
|
void_func *func;
|
||||||
|
xprintf("target successfully written and verified. Start address: %p\r\n", start_address);
|
||||||
|
|
||||||
|
func = start_address;
|
||||||
|
flush_and_invalidate_caches();
|
||||||
|
(*func)();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("failed\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("failed\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("failed\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// xprintf("could not mount FAT FS\r\n");
|
||||||
|
}
|
||||||
|
f_mount(0, NULL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// xprintf("could not initialize SD card\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
121
i2cspi_BaS_gcc/sources/sd_card.c
Normal file
121
i2cspi_BaS_gcc/sources/sd_card.c
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
/*
|
||||||
|
* sd_card.c
|
||||||
|
*
|
||||||
|
* Created on: 16.12.2012
|
||||||
|
* Author: mfro
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <sd_card.h>
|
||||||
|
#include <diskio.h>
|
||||||
|
#include <ff.h>
|
||||||
|
#include <bas_printf.h>
|
||||||
|
|
||||||
|
#define WELCOME_NAME "WELCOME.MSG"
|
||||||
|
#define FLASHCODE_NAME "BENCH.BIN"
|
||||||
|
|
||||||
|
#define FLASHCODE_ADDRESS 0x03000000L
|
||||||
|
|
||||||
|
/*
|
||||||
|
* initialize SD-card and FF FAT filesystem routines. Harness to load a file during boot.
|
||||||
|
*
|
||||||
|
* This is currently more like a proof of concept,
|
||||||
|
* but will be extended to load and execute a bootstrap flasher to be able to flash the Bee directly
|
||||||
|
* from card.
|
||||||
|
*/
|
||||||
|
void sd_card_init(void)
|
||||||
|
{
|
||||||
|
DRESULT res;
|
||||||
|
FATFS fs;
|
||||||
|
FRESULT fres;
|
||||||
|
|
||||||
|
disk_initialize(0);
|
||||||
|
res = disk_status(0);
|
||||||
|
xprintf("disk status of SD card is %d\r\n", res);
|
||||||
|
if (res == RES_OK)
|
||||||
|
{
|
||||||
|
fres = f_mount(0, &fs);
|
||||||
|
xprintf("mount status of SD card fs is %d\r\n", fres);
|
||||||
|
if (fres == FR_OK)
|
||||||
|
{
|
||||||
|
DIR directory;
|
||||||
|
FIL file;
|
||||||
|
|
||||||
|
fres = f_opendir(&directory, "\\");
|
||||||
|
if (fres == FR_OK)
|
||||||
|
{
|
||||||
|
FILINFO fi;
|
||||||
|
|
||||||
|
while (((fres = f_readdir(&directory, &fi)) == FR_OK) && fi.fname[0])
|
||||||
|
{
|
||||||
|
xprintf("%13.13s %d\r\n", fi.fname, fi.fsize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("could not open directory \"\\\" on SD-card! Error code: %d\r\n", fres);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* let's see if we find our boot flashing executable on disk
|
||||||
|
*/
|
||||||
|
fres = f_open(&file, FLASHCODE_NAME, FA_READ);
|
||||||
|
if (fres == FR_OK)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* yes, load and execute it
|
||||||
|
*
|
||||||
|
* FIXME: we will need some kind of user confirmation here
|
||||||
|
* to avoid unwanted flashing or "bootsector viruses" before going productive
|
||||||
|
*/
|
||||||
|
uint32_t size; /* length of code piece read */
|
||||||
|
uint32_t total_size = 0L;
|
||||||
|
uint32_t start_time = MCF_SLT_SCNT(0);
|
||||||
|
uint32_t end_time;
|
||||||
|
uint32_t time = 0;
|
||||||
|
|
||||||
|
while ((fres = f_read(&file, (void *) FLASHCODE_ADDRESS, 1024 * 1000, &size)) == FR_OK && size > 0)
|
||||||
|
{
|
||||||
|
total_size += size / 1024;
|
||||||
|
xprintf("read hunk of %d bytes, total_size = %d kBytes\r\n", size, total_size);
|
||||||
|
}
|
||||||
|
end_time = MCF_SLT_SCNT(0);
|
||||||
|
time = (end_time - start_time) / 132L;
|
||||||
|
xprintf("result of f_read: %ld, %ld kbytes read\r\n", fres, total_size);
|
||||||
|
xprintf("time to load %s: %ld s\r\n", FLASHCODE_NAME, time / 1000 / 100);
|
||||||
|
xprintf("equals to about %ld kBytes/second\r\n", total_size / (time / 1000 / 100));
|
||||||
|
|
||||||
|
}
|
||||||
|
f_close(&file);
|
||||||
|
|
||||||
|
fres = f_open(&file, WELCOME_NAME, FA_READ);
|
||||||
|
if (fres == FR_OK)
|
||||||
|
{
|
||||||
|
char line[128];
|
||||||
|
|
||||||
|
while (f_gets(line, sizeof(line), &file))
|
||||||
|
{
|
||||||
|
xprintf("%s", line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
f_close(&file);
|
||||||
|
}
|
||||||
|
f_mount(0, 0L); /* release work area */
|
||||||
|
}
|
||||||
|
}
|
||||||
63
i2cspi_BaS_gcc/sources/startcf.S
Normal file
63
i2cspi_BaS_gcc/sources/startcf.S
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
/* This object file must be the first to be linked,
|
||||||
|
* so it will be placed at the very beginning of the ROM.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.equ MCF_MMU_MMUCR, __MMUBAR + 0
|
||||||
|
|
||||||
|
.global _rom_header
|
||||||
|
.global _rom_entry
|
||||||
|
|
||||||
|
.extern _initialize_hardware
|
||||||
|
.extern _rt_mbar
|
||||||
|
|
||||||
|
/* ROM header */
|
||||||
|
_rom_header:
|
||||||
|
/* The first long is supposed to be the initial SP.
|
||||||
|
* We replace it by bra.s to allow running the ROM from the first byte.
|
||||||
|
* Then we add a fake jmp instruction for pretty disassembly.
|
||||||
|
*/
|
||||||
|
bra.s _rom_entry // Short jump to the real entry point
|
||||||
|
.short 0x4ef9 // Fake jmp instruction
|
||||||
|
/* The second long is the initial PC */
|
||||||
|
.long _rom_entry // Real entry point
|
||||||
|
|
||||||
|
/* ROM entry point */
|
||||||
|
_rom_entry:
|
||||||
|
/* disable interrupts */
|
||||||
|
move.w #0x2700,SR
|
||||||
|
|
||||||
|
/* Initialize MBAR */
|
||||||
|
move.l #__MBAR,d0
|
||||||
|
movec d0,MBAR
|
||||||
|
move.l d0,_rt_mbar
|
||||||
|
|
||||||
|
/* mmu off */
|
||||||
|
move.l #__MMUBAR+1,d0
|
||||||
|
movec d0,MMUBAR
|
||||||
|
|
||||||
|
clr.l d0
|
||||||
|
move.l d0,MCF_MMU_MMUCR
|
||||||
|
|
||||||
|
/* Initialize RAMBARs: locate SRAM and validate it */
|
||||||
|
move.l #__RAMBAR0 + 0x7,d0 /* supervisor only */
|
||||||
|
movec d0,RAMBAR0
|
||||||
|
move.l #__RAMBAR1 + 0x1,d0
|
||||||
|
movec d0,RAMBAR1
|
||||||
|
|
||||||
|
/* set stack pointer to end of SRAM1 */
|
||||||
|
lea __SUP_SP,a7
|
||||||
|
move.l #0,(sp)
|
||||||
|
|
||||||
|
/* Initialize the processor caches.
|
||||||
|
* The instruction cache is fully enabled.
|
||||||
|
* The data cache is enabled, but cache-inhibited by default.
|
||||||
|
* Later, the MMU will fully activate the data cache for specific areas.
|
||||||
|
* It is important to enable both caches now, otherwise cpushl would hang.
|
||||||
|
*/
|
||||||
|
move.l #0xa50c8120,d0
|
||||||
|
movec d0,cacr
|
||||||
|
andi.l #0xfefbfeff,d0 // Clear invalidate bits
|
||||||
|
move.l d0,_rt_cacr
|
||||||
|
|
||||||
|
/* initialize any hardware specific issues */
|
||||||
|
bra _initialize_hardware
|
||||||
565
i2cspi_BaS_gcc/sources/supervisor.S
Normal file
565
i2cspi_BaS_gcc/sources/supervisor.S
Normal file
@@ -0,0 +1,565 @@
|
|||||||
|
/*
|
||||||
|
* user/supervisor handler
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "startcf.h"
|
||||||
|
#define cf_stack
|
||||||
|
|
||||||
|
.extern _rt_cacr;
|
||||||
|
.extern _rt_mod;
|
||||||
|
.extern _rt_ssp;
|
||||||
|
.extern _rt_usp;
|
||||||
|
.extern ___MMUBAR
|
||||||
|
.extern _flush_and_invalidate_caches
|
||||||
|
|
||||||
|
/* Register read/write macros */
|
||||||
|
#define MCF_MMU_MMUCR __MMUBAR
|
||||||
|
#define MCF_MMU_MMUOR __MMUBAR+0x04
|
||||||
|
#define MCF_MMU_MMUSR __MMUBAR+0x08
|
||||||
|
#define MCF_MMU_MMUAR __MMUBAR+0x10
|
||||||
|
#define MCF_MMU_MMUTR __MMUBAR+0x14
|
||||||
|
#define MCF_MMU_MMUDR __MMUBAR+0x18
|
||||||
|
|
||||||
|
.global _privileg_violation
|
||||||
|
.global cpusha
|
||||||
|
|
||||||
|
.text
|
||||||
|
_privileg_violation:
|
||||||
|
move.w #0x2700,sr
|
||||||
|
lea -12(a7),a7
|
||||||
|
movem.l d0/a0/a5,(a7)
|
||||||
|
#ifndef cf_stack
|
||||||
|
lea 0x52f0,a0
|
||||||
|
move.l #0x20,(a0) // set auf 68030
|
||||||
|
#endif
|
||||||
|
lea _rt_mod,a0 // zugriff setzen
|
||||||
|
tst.b (a0) // vom rt_supervisormodus?
|
||||||
|
bne pv_work // ja->
|
||||||
|
// tats<EFBFBD>chlich privileg violation
|
||||||
|
mov3q.l #-1,(a0) // sr_mod setzen
|
||||||
|
move.l usp,a5 // usp holen
|
||||||
|
move.l a5,8(a0) // sichern
|
||||||
|
move.l 4(a0),a5 // rt_ssp holen
|
||||||
|
#ifdef cf_stack
|
||||||
|
move.l 16(a7),-(a5) // pc verschieben
|
||||||
|
move.l 12(a7),-(a5) // sr verschieben
|
||||||
|
bset #5,2(a5) // auf super setzen
|
||||||
|
#else
|
||||||
|
move.w 12(a7),-(a5) // vector nr.
|
||||||
|
move.l 16(a7),-(a5) // pc verschieben
|
||||||
|
move.w 14(a7),-(a5) // sr verschieben
|
||||||
|
bset #5,(a5) // auf super
|
||||||
|
#endif
|
||||||
|
move.l a5,usp
|
||||||
|
move.l 12(a0),a5 // rt_vbr
|
||||||
|
lea 0x18(a5),a5 // vector
|
||||||
|
move.l (a5),16(a7) // vector privileg violation
|
||||||
|
movem.l (a7),d0/a0/a5 // register zur<EFBFBD>ck
|
||||||
|
lea 12(a7),a7
|
||||||
|
rte
|
||||||
|
// privileg violation
|
||||||
|
pv_work:
|
||||||
|
move.l 16(a7),a5 // fault pc
|
||||||
|
move.b (a5),d0 // fault code
|
||||||
|
cmp.b #0x4e,d0 // 1.byt 0x4e
|
||||||
|
beq pv_4e // ja->
|
||||||
|
cmp.b #0x46,d0 // 1.byt 0x46
|
||||||
|
beq pv_46 // ja->
|
||||||
|
cmp.b #0x40,d0 // 1.byt 0x40
|
||||||
|
beq pv_40 // ja->
|
||||||
|
cmp.b #0xf4,d0 // 0xf4?
|
||||||
|
beq pv_f4
|
||||||
|
cmp.b #0xf3,d0 // 0xf3?
|
||||||
|
beq pv_f3
|
||||||
|
// hierher sollt man nicht kommen
|
||||||
|
nop
|
||||||
|
halt
|
||||||
|
nop
|
||||||
|
// code 0x4exx ********************************************
|
||||||
|
pv_4e:
|
||||||
|
move.b 1(a5),d0
|
||||||
|
cmp.b #0x73,d0 //rte?
|
||||||
|
beq pv_rte //ja->
|
||||||
|
cmp.b #0x72,d0 //stop?
|
||||||
|
beq pv_stop //ja->
|
||||||
|
cmp.b #0x7B,d0 //movec?
|
||||||
|
beq pv_movec //ja->
|
||||||
|
// move usp
|
||||||
|
btst #3,d0 // to or from
|
||||||
|
bne pv_usp_to_ax // usp -> ax
|
||||||
|
// move ax->usp
|
||||||
|
cmp.b #0x60,d0 //movec?
|
||||||
|
beq pv_a0_usp //ja->
|
||||||
|
cmp.b #0x61,d0 //movec?
|
||||||
|
beq pv_a1_usp //ja->
|
||||||
|
cmp.b #0x62,d0 //movec?
|
||||||
|
beq pv_a2_usp //ja->
|
||||||
|
cmp.b #0x63,d0 //movec?
|
||||||
|
beq pv_a3_usp //ja->
|
||||||
|
cmp.b #0x64,d0 //movec?
|
||||||
|
beq pv_a4_usp //ja->
|
||||||
|
cmp.b #0x65,d0 //movec?
|
||||||
|
beq pv_a5_usp //ja->
|
||||||
|
cmp.b #0x66,d0 //movec?
|
||||||
|
beq pv_a6_usp //ja->
|
||||||
|
halt
|
||||||
|
bra pv_a7_usp //ja->
|
||||||
|
// move usp->ax
|
||||||
|
pv_usp_to_ax:
|
||||||
|
move.l 8(a0),a5 //rt_usp holen
|
||||||
|
cmp.b #0x68,d0 //movec?
|
||||||
|
beq pv_usp_a0 //ja->
|
||||||
|
cmp.b #0x69,d0 //movec?
|
||||||
|
beq pv_usp_a1 //ja->
|
||||||
|
cmp.b #0x6a,d0 //movec?
|
||||||
|
beq pv_usp_a2 //ja->
|
||||||
|
cmp.b #0x6b,d0 //movec?
|
||||||
|
beq pv_usp_a3 //ja->
|
||||||
|
cmp.b #0x6c,d0 //movec?
|
||||||
|
beq pv_usp_a4 //ja->
|
||||||
|
cmp.b #0x6d,d0 //movec?
|
||||||
|
beq pv_usp_a5 //ja->
|
||||||
|
cmp.b #0x6e,d0 //movec?
|
||||||
|
beq pv_usp_a6 //ja->
|
||||||
|
// usp->a7
|
||||||
|
move.l a5,4(a0) // rt usp -> rt ssp
|
||||||
|
move.l a5,usp // und setzen
|
||||||
|
bra pv_usp_ax
|
||||||
|
// a0->usp
|
||||||
|
pv_a0_usp: move.l 4(a7),a5
|
||||||
|
bra pv_ax_usp
|
||||||
|
// a1->usp
|
||||||
|
pv_a1_usp: move.l a1,a5
|
||||||
|
bra pv_ax_usp
|
||||||
|
// a2->usp
|
||||||
|
pv_a2_usp: move.l a2,a5
|
||||||
|
bra pv_ax_usp
|
||||||
|
// a3->usp
|
||||||
|
pv_a3_usp: move.l a3,a5
|
||||||
|
bra pv_ax_usp
|
||||||
|
// a4->usp
|
||||||
|
pv_a4_usp: move.l a4,a5
|
||||||
|
bra pv_ax_usp
|
||||||
|
// a5->usp
|
||||||
|
pv_a5_usp: move.l 8(a7),a5
|
||||||
|
bra pv_ax_usp
|
||||||
|
// a6->usp
|
||||||
|
pv_a6_usp: move.l a6,a5
|
||||||
|
bra pv_ax_usp
|
||||||
|
// a7->usp
|
||||||
|
pv_a7_usp: move.l 4(a0),a5 // rt_ssp -> a5
|
||||||
|
pv_ax_usp:
|
||||||
|
move.l a5,8(a0) // usp -> rt_usp
|
||||||
|
addq.l #2,16(a7) // next
|
||||||
|
movem.l (a7),d0/a0/a5 // register zur<EFBFBD>ck
|
||||||
|
lea 12(a7),a7
|
||||||
|
rte
|
||||||
|
// usp->a0
|
||||||
|
pv_usp_a0:
|
||||||
|
move.l a5,4(a7)
|
||||||
|
bra pv_usp_ax
|
||||||
|
pv_usp_a1:
|
||||||
|
move.l a5,a1
|
||||||
|
bra pv_usp_ax
|
||||||
|
pv_usp_a2:
|
||||||
|
move.l a5,a2
|
||||||
|
bra pv_usp_ax
|
||||||
|
pv_usp_a3:
|
||||||
|
move.l a5,a3
|
||||||
|
bra pv_usp_ax
|
||||||
|
pv_usp_a4:
|
||||||
|
move.l a5,a4
|
||||||
|
bra pv_usp_ax
|
||||||
|
pv_usp_a5:
|
||||||
|
move.l a5,8(a7)
|
||||||
|
bra pv_usp_ax
|
||||||
|
pv_usp_a6:
|
||||||
|
move.l a5,a6
|
||||||
|
pv_usp_ax:
|
||||||
|
addq.l #2,16(a7) // next
|
||||||
|
movem.l (a7),d0/a0/a5 // register zur<EFBFBD>ck
|
||||||
|
lea 12(a7),a7
|
||||||
|
rte
|
||||||
|
// rte
|
||||||
|
pv_rte:
|
||||||
|
move.l usp,a5
|
||||||
|
#ifdef cf_stack
|
||||||
|
move.l (a5)+,12(a7) // sr verschieben
|
||||||
|
move.l (a5)+,16(a7) // pc verschieben
|
||||||
|
#else
|
||||||
|
move.w (a5)+,14(a7) // sr verschieben
|
||||||
|
move.l (a5)+,16(a7) // pc verschieben
|
||||||
|
move.w (a5)+,12(a7) // vector
|
||||||
|
#endif
|
||||||
|
bclr #5,14(a7) // war es von super?
|
||||||
|
bne pv_rte_sup // ja->
|
||||||
|
clr.l (a0) // rt_mod auf user
|
||||||
|
move.l a5,4(a0) // rt_ssp sichern
|
||||||
|
move.l 8(a0),a5 // rt_usp holen
|
||||||
|
pv_rte_sup:
|
||||||
|
move.l a5,usp // usp setzen
|
||||||
|
movem.l (a7),d0/a0/a5 // register zur<EFBFBD>ck
|
||||||
|
lea 12(a7),a7
|
||||||
|
rte
|
||||||
|
// stop
|
||||||
|
pv_stop:
|
||||||
|
move.b 2(a5),d0 // sr wert
|
||||||
|
and.l #0x0700,d0 // int mask
|
||||||
|
cmp.w #0x700,d0
|
||||||
|
beq stop7
|
||||||
|
cmp.w #0x600,d0
|
||||||
|
beq stop6
|
||||||
|
cmp.w #0x500,d0
|
||||||
|
beq stop5
|
||||||
|
cmp.w #0x400,d0
|
||||||
|
beq stop4
|
||||||
|
cmp.w #0x300,d0
|
||||||
|
beq stop3
|
||||||
|
cmp.w #0x200,d0
|
||||||
|
beq stop2
|
||||||
|
cmp.w #0x100,d0
|
||||||
|
beq stop1
|
||||||
|
stop #0x2000
|
||||||
|
bra stop_weiter
|
||||||
|
stop1:
|
||||||
|
stop #0x2100
|
||||||
|
bra stop_weiter
|
||||||
|
stop2:
|
||||||
|
stop #0x2200
|
||||||
|
bra stop_weiter
|
||||||
|
stop3:
|
||||||
|
stop #0x2300
|
||||||
|
bra stop_weiter
|
||||||
|
stop4:
|
||||||
|
stop #0x2400
|
||||||
|
bra stop_weiter
|
||||||
|
stop5:
|
||||||
|
stop #0x2500
|
||||||
|
bra stop_weiter
|
||||||
|
stop6:
|
||||||
|
stop #0x2600
|
||||||
|
bra stop_weiter
|
||||||
|
stop7:
|
||||||
|
stop #0x2700
|
||||||
|
stop_weiter:
|
||||||
|
addq.l #4,16(a7) // next
|
||||||
|
movem.l (a7),d0/a0/a5 // register zur<EFBFBD>ck
|
||||||
|
lea 12(a7),a7
|
||||||
|
rte
|
||||||
|
// movec ???????
|
||||||
|
pv_movec:
|
||||||
|
move.w 2(a5),d0 // 2.word holen
|
||||||
|
and.l #0xf000,d0
|
||||||
|
btst #15,d0 // addressregister?
|
||||||
|
bne pv_movec_ax // ja->
|
||||||
|
tst.w d0 // d0?
|
||||||
|
bne pvm_d1 // nein->
|
||||||
|
move.l (a7),-(a7) // d0 holen und sichern
|
||||||
|
bra pvm_me
|
||||||
|
pvm_d1:
|
||||||
|
cmp.w #0x1000,d0 // d1?
|
||||||
|
bne pvm_d2 // nein->
|
||||||
|
move.l d1,-(a7) // d1 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_d2:
|
||||||
|
cmp.w #0x2000,d0 // d1?
|
||||||
|
bne pvm_d3 // nein->
|
||||||
|
move.l d2,-(a7) // d2 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_d3:
|
||||||
|
cmp.w #0x3000,d0 // d1?
|
||||||
|
bne pvm_d4 // nein->
|
||||||
|
move.l d3,-(a7) // d3 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_d4:
|
||||||
|
cmp.w #0x4000,d0 // d1?
|
||||||
|
bne pvm_d5 // nein->
|
||||||
|
move.l d4,-(a7) // d4 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_d5:
|
||||||
|
cmp.w #0x5000,d0 // d1?
|
||||||
|
bne pvm_d6 // nein->
|
||||||
|
move.l d5,-(a7) // d5 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_d6:
|
||||||
|
cmp.w #0x6000,d0 // d1?
|
||||||
|
bne pvm_d7 // nein->
|
||||||
|
move.l d6,-(a7) // d6 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_d7:
|
||||||
|
move.l d7,-(a7) // d7 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pv_movec_ax:
|
||||||
|
cmp.w #0x8000,d0 // a0?
|
||||||
|
bne pvm_a1 // nein->
|
||||||
|
move.l 4(a7),-(a7) // a0 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_a1:
|
||||||
|
cmp.w #0x9000,d0 // a0?
|
||||||
|
bne pvm_a2 // nein->
|
||||||
|
move.l a1,-(a7) // a1 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_a2:
|
||||||
|
cmp.w #0xa000,d0 // a0?
|
||||||
|
bne pvm_a3 // nein->
|
||||||
|
move.l a2,-(a7) // a2 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_a3:
|
||||||
|
cmp.w #0xb000,d0 // a0?
|
||||||
|
bne pvm_a4 // nein->
|
||||||
|
move.l a3,-(a7) // a3 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_a4:
|
||||||
|
cmp.w #0xc000,d0 // a0?
|
||||||
|
bne pvm_a5 // nein->
|
||||||
|
move.l a4,-(a7) // a4 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_a5:
|
||||||
|
cmp.w #0xd000,d0 // a0?
|
||||||
|
bne pvm_a6 // nein->
|
||||||
|
move.l 8(a7),-(a7) // a5 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_a6:
|
||||||
|
cmp.w #0xe000,d0 // a0?
|
||||||
|
bne pvm_a7 // nein->
|
||||||
|
move.l a6,-(a7) // a6 holen und sichern
|
||||||
|
bra pvm_me // fertig machen
|
||||||
|
pvm_a7:
|
||||||
|
move.l 4(a7),-(a7) // a7 holen und sichern
|
||||||
|
pvm_me:
|
||||||
|
move.w 2(a5),d0 // 2.word holen
|
||||||
|
andi.l #0xf,d0 // nur letzte 4 bits
|
||||||
|
move.l (a7)+,8(a0,d0*4) // start bei +8, *4 weil long
|
||||||
|
jsr cpusha // gesammten cache flushen
|
||||||
|
rte
|
||||||
|
// code 0x46xx *****************************************
|
||||||
|
pv_46:
|
||||||
|
move.b 1(a5),d0
|
||||||
|
cmp.b #0xfc,d0 //#d16->sr
|
||||||
|
beq im_sr //ja->
|
||||||
|
//move dx->sr (sr und rt_mod ist supervisor sonst w<EFBFBD>re es privileg violation
|
||||||
|
cmp.b #0xc0,d0 //d0->sr?
|
||||||
|
bne d1_sr //nein->
|
||||||
|
move.w 2(a7),d0 //hier ist d0 gesichert
|
||||||
|
bra d0_sr
|
||||||
|
d1_sr:
|
||||||
|
cmp.b #0xc1,d0 //d1->sr?
|
||||||
|
bne d2_sr //nein->
|
||||||
|
move.w d1,d0
|
||||||
|
bra d0_sr
|
||||||
|
d2_sr:
|
||||||
|
cmp.b #0xc2,d0 //d2->sr?
|
||||||
|
bne d3_sr
|
||||||
|
move.w d2,d0
|
||||||
|
bra d0_sr
|
||||||
|
d3_sr:
|
||||||
|
cmp.b #0xc3,d0 //d3->sr?
|
||||||
|
bne d4_sr
|
||||||
|
move.w d3,d0
|
||||||
|
bra d0_sr
|
||||||
|
d4_sr:
|
||||||
|
cmp.b #0xc4,d0 //d4->sr?
|
||||||
|
bne d5_sr
|
||||||
|
move.w d4,d0
|
||||||
|
bra d0_sr
|
||||||
|
d5_sr:
|
||||||
|
cmp.b #0xc5,d0 //d5->sr?
|
||||||
|
bne d6_sr
|
||||||
|
move.w d5,d0
|
||||||
|
bra d0_sr
|
||||||
|
d6_sr:
|
||||||
|
cmp.b #0xc6,d0 //d6->sr?
|
||||||
|
bne d7_sr
|
||||||
|
move.w d6,d0
|
||||||
|
bra d0_sr
|
||||||
|
d7_sr:
|
||||||
|
move.w d7,d0 // sonst d7->sr
|
||||||
|
d0_sr:
|
||||||
|
addq.l #2,16(a7) // next
|
||||||
|
bra pv_set_sr_end // fertig machen
|
||||||
|
// move #xxxx,sr
|
||||||
|
im_sr:
|
||||||
|
addq.l #4,16(a7) // next
|
||||||
|
move.w 2(a5),d0 // data
|
||||||
|
pv_set_sr_end:
|
||||||
|
bclr #13,d0 // war super?
|
||||||
|
bne pv_sre2 // ja ->
|
||||||
|
clr.l (a0)
|
||||||
|
move.l usp,a5 // usp
|
||||||
|
move.l a5,4(a0) // rt_ssp speichern
|
||||||
|
move.l 8(a0),a5 // rt_usp holen
|
||||||
|
move.l a5,usp // setzen
|
||||||
|
pv_sre2:
|
||||||
|
move.w d0,14(a7) // sr setzen
|
||||||
|
movem.l (a7),d0/a0/a5 // register zur<EFBFBD>ck
|
||||||
|
lea 12(a7),a7
|
||||||
|
rte
|
||||||
|
// code 0x40xx *****************************************
|
||||||
|
pv_40:
|
||||||
|
move.b 1(a5),d0 // 2.byt
|
||||||
|
cmp.b #0xe7,d0
|
||||||
|
beq pv_strldsr
|
||||||
|
// move sr->dx
|
||||||
|
move.l 12(a7),a5 // sr holen
|
||||||
|
tst.b (a0) // super?
|
||||||
|
beq pv_40_user // nein?
|
||||||
|
lea 0x2000(a5),a5 // super zuaddieren
|
||||||
|
pv_40_user:
|
||||||
|
cmp.b #0xc0,d0
|
||||||
|
bne nsr_d1
|
||||||
|
move.w a5,2(a7)
|
||||||
|
bra sr_dx_end
|
||||||
|
nsr_d1:
|
||||||
|
cmp.b #0xc1,d0
|
||||||
|
bne nsr_d2
|
||||||
|
move.w a5,d1
|
||||||
|
bra sr_dx_end
|
||||||
|
nsr_d2:
|
||||||
|
cmp.b #0xc2,d0
|
||||||
|
bne nsr_d3
|
||||||
|
move.w a5,d2
|
||||||
|
bra sr_dx_end
|
||||||
|
nsr_d3:
|
||||||
|
cmp.b #0xc3,d0
|
||||||
|
bne nsr_d4
|
||||||
|
move.w a5,d3
|
||||||
|
bra sr_dx_end
|
||||||
|
nsr_d4:
|
||||||
|
cmp.b #0xc4,d0
|
||||||
|
bne nsr_d5
|
||||||
|
move.w a5,d4
|
||||||
|
bra sr_dx_end
|
||||||
|
nsr_d5:
|
||||||
|
cmp.b #0xc5,d0
|
||||||
|
bne nsr_d6
|
||||||
|
move.w a5,d5
|
||||||
|
bra sr_dx_end
|
||||||
|
nsr_d6:
|
||||||
|
cmp.b #0xc6,d0
|
||||||
|
bne nsr_d7
|
||||||
|
move.w a5,d6
|
||||||
|
bra sr_dx_end
|
||||||
|
nsr_d7:
|
||||||
|
move.w a5,d7
|
||||||
|
halt
|
||||||
|
sr_dx_end:
|
||||||
|
addq.l #2,16(a7) // next
|
||||||
|
movem.l (a7),d0/a0/a5 // register zur<EFBFBD>ck
|
||||||
|
lea 12(a7),a7
|
||||||
|
rte
|
||||||
|
// strldsr
|
||||||
|
pv_strldsr:
|
||||||
|
nop
|
||||||
|
halt
|
||||||
|
nop
|
||||||
|
// code 0xf4xx ***********************************
|
||||||
|
pv_f4:
|
||||||
|
addq.l #2,16(a7) // next instr
|
||||||
|
move.b 1(a5),d0 // 2.byt
|
||||||
|
bsr pv_ax_a0 // richtiges register
|
||||||
|
move.b 1(a5),d0 // 2.byt
|
||||||
|
cmp.b #0x30,d0 // >0xf430
|
||||||
|
blo pv_intouch
|
||||||
|
// cpushl
|
||||||
|
cpushl bc,(a0)
|
||||||
|
movem.l (a7),d0/a0/a5
|
||||||
|
lea 12(a7),a7
|
||||||
|
rte
|
||||||
|
pv_intouch:
|
||||||
|
intouch a0
|
||||||
|
movem.l (a7),d0/a0/a5
|
||||||
|
lea 12(a7),a7
|
||||||
|
rte
|
||||||
|
// subroutine register ax->a0
|
||||||
|
pv_ax_a0:
|
||||||
|
and.l #0x7,d0 // nur register nummer
|
||||||
|
subq.l #1,d0
|
||||||
|
bmi pv_a0_a0
|
||||||
|
subq.l #1,d0
|
||||||
|
bmi pv_a1_a0
|
||||||
|
subq.l #1,d0
|
||||||
|
bmi pv_a2_a0
|
||||||
|
subq.l #1,d0
|
||||||
|
bmi pv_a3_a0
|
||||||
|
subq.l #1,d0
|
||||||
|
bmi pv_a4_a0
|
||||||
|
subq.l #1,d0
|
||||||
|
bmi pv_a5_a0
|
||||||
|
subq.l #1,d0
|
||||||
|
bmi pv_a6_a0
|
||||||
|
move.l a7,a0
|
||||||
|
rts
|
||||||
|
pv_a0_a0:
|
||||||
|
move.l 8(a7),a0
|
||||||
|
rts
|
||||||
|
pv_a1_a0:
|
||||||
|
move.l a1,a0
|
||||||
|
rts
|
||||||
|
pv_a2_a0:
|
||||||
|
move.l a2,a0
|
||||||
|
rts
|
||||||
|
pv_a3_a0:
|
||||||
|
move.l a3,a0
|
||||||
|
rts
|
||||||
|
pv_a4_a0:
|
||||||
|
move.l a4,a0
|
||||||
|
rts
|
||||||
|
pv_a5_a0:
|
||||||
|
move.l 12(a7),a0
|
||||||
|
rts
|
||||||
|
pv_a6_a0:
|
||||||
|
move.l a6,a0
|
||||||
|
rts
|
||||||
|
// code 0xf4xx ***********************************
|
||||||
|
pv_f3:
|
||||||
|
addq.l #2,16(a7) // next instr
|
||||||
|
move.b 1(a5),d0 // 2. byt
|
||||||
|
cmp.b #0x40,d0
|
||||||
|
bgt pv_frestore
|
||||||
|
//fsave (ax) oder d16(ax)
|
||||||
|
jsr pv_ax_a0 // richtiges register holen
|
||||||
|
move.b 1(a5),d0
|
||||||
|
cmp.b #0x20,d0
|
||||||
|
// +d16
|
||||||
|
blt pv_f3_ax
|
||||||
|
addq.l #2,16(a7) // next instr
|
||||||
|
clr.l d0
|
||||||
|
move.w 2(a0),d0 // d16
|
||||||
|
add.l d0,a0
|
||||||
|
pv_f3_ax:
|
||||||
|
fsave (a0)
|
||||||
|
movem.l (a7),d0/a0/a5
|
||||||
|
lea 12(a7),a7
|
||||||
|
rte
|
||||||
|
pv_frestore:
|
||||||
|
cmp.b #0x7a,d0
|
||||||
|
beq pv_f_d16pc
|
||||||
|
// frestore (ax) oder d16(ax)
|
||||||
|
jsr pv_ax_a0 // richtiges register holen
|
||||||
|
move.b 1(a5),d0
|
||||||
|
cmp.b #0x60,d0
|
||||||
|
blt pv_frestore_ax
|
||||||
|
pv_fend:
|
||||||
|
addq.l #2,16(a7) // next instr
|
||||||
|
clr.l d0
|
||||||
|
move.w 2(a0),d0 // d16
|
||||||
|
add.l d0,a0
|
||||||
|
pv_frestore_ax:
|
||||||
|
frestore (a0)
|
||||||
|
movem.l (a7),d0/a0/a5
|
||||||
|
lea 12(a7),a7
|
||||||
|
rte
|
||||||
|
// frestore d16(pc)
|
||||||
|
pv_f_d16pc:
|
||||||
|
move.l 16(a7),a0 // pc holen
|
||||||
|
bra pv_fend
|
||||||
|
//*****************************************************
|
||||||
|
cpusha:
|
||||||
|
lea -16(a7),a7
|
||||||
|
movem.l d0-d1/a0-a1,(a7) // backup C trash registers
|
||||||
|
jsr _flush_and_invalidate_caches
|
||||||
|
movem.l (a7),d0-d1/a0-a1 // restore C trash registers
|
||||||
|
lea 16(a7),a7
|
||||||
|
rts
|
||||||
|
//*******************************************************33
|
||||||
|
|
||||||
877
i2cspi_BaS_gcc/sources/sysinit.c
Normal file
877
i2cspi_BaS_gcc/sources/sysinit.c
Normal file
@@ -0,0 +1,877 @@
|
|||||||
|
/*
|
||||||
|
* File: sysinit.c
|
||||||
|
* Purpose: Power-on Reset configuration of the Firebee board.
|
||||||
|
*
|
||||||
|
* Notes:
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2010 - 2012 F. Aschwanden
|
||||||
|
* Copyright 2011 - 2012 V. Riviere
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "MCF5475.h"
|
||||||
|
#include "startcf.h"
|
||||||
|
#include "cache.h"
|
||||||
|
#include "sysinit.h"
|
||||||
|
#include "bas_printf.h"
|
||||||
|
#include "bas_types.h"
|
||||||
|
#include "wait.h"
|
||||||
|
|
||||||
|
extern void xprintf_before_copy(const char *fmt, ...);
|
||||||
|
#define xprintf xprintf_before_copy
|
||||||
|
extern void flush_and_invalidate_caches_before_copy(void);
|
||||||
|
#define flush_and_invalidate_caches flush_and_invalidate_caches_before_copy
|
||||||
|
|
||||||
|
#define UNUSED(x) (void)(x) /* Unused variable */
|
||||||
|
|
||||||
|
extern volatile long _VRAM; /* start address of video ram from linker script */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* init SLICE TIMER 0
|
||||||
|
* all = 32.538 sec = 30.736mHz
|
||||||
|
* BYT0 = 127.1ms/tick = 7.876Hz offset 0
|
||||||
|
* BYT1 = 496.5us/tick = 2.014kHz offset 1
|
||||||
|
* BYT2 = 1.939us/tick = 515.6kHz offset 2
|
||||||
|
* BYT3 = 7.576ns/tick = 132.00MHz offset 3
|
||||||
|
* count down!!! 132MHz!!!
|
||||||
|
*/
|
||||||
|
void init_slt(void)
|
||||||
|
{
|
||||||
|
xprintf("slice timer initialization: ");
|
||||||
|
MCF_SLT0_STCNT = 0xffffffff;
|
||||||
|
MCF_SLT0_SCR = MCF_SLT_SCR_TEN | MCF_SLT_SCR_RUN; /* enable and run continuously */
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* init GPIO general purpose I/O module
|
||||||
|
*/
|
||||||
|
void init_gpio(void)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* pad register P.S.:FBCTL and FBCS set correctly at reset
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* configure all four 547x GPIO module DMA pins:
|
||||||
|
*
|
||||||
|
* /DACK1 - DMA acknowledge 1
|
||||||
|
* /DACK0 - DMA acknowledge 0
|
||||||
|
* /DREQ1 - DMA request 1
|
||||||
|
* /DREQ0 - DMA request 0
|
||||||
|
*
|
||||||
|
* for DMA operation
|
||||||
|
*/
|
||||||
|
MCF_PAD_PAR_DMA = MCF_PAD_PAR_DMA_PAR_DACK0_DACK0 |
|
||||||
|
MCF_PAD_PAR_DMA_PAR_DACK1_DACK1 |
|
||||||
|
MCF_PAD_PAR_DMA_PAR_DREQ1_DREQ1 |
|
||||||
|
MCF_PAD_PAR_DMA_PAR_DREQ0_DREQ0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* configure FEC0 pin assignment on GPIO module as FEC0
|
||||||
|
* configure FEC1 pin assignment (PAR_E17, PAR_E1MII) as GPIO,
|
||||||
|
* /IRQ5 and /IRQ6 from GPIO (needs to be disabled on EPORT module, which also can
|
||||||
|
* use those INTs).
|
||||||
|
*/
|
||||||
|
MCF_PAD_PAR_FECI2CIRQ = MCF_PAD_PAR_FECI2CIRQ_PAR_E07 |
|
||||||
|
MCF_PAD_PAR_FECI2CIRQ_PAR_E0MII |
|
||||||
|
MCF_PAD_PAR_FECI2CIRQ_PAR_E0MDIO |
|
||||||
|
MCF_PAD_PAR_FECI2CIRQ_PAR_E0MDC |
|
||||||
|
MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDIO_E1MDIO |
|
||||||
|
MCF_PAD_PAR_FECI2CIRQ_PAR_E1MDC_E1MDC |
|
||||||
|
MCF_PAD_PAR_FECI2CIRQ_PAR_SDA |
|
||||||
|
MCF_PAD_PAR_FECI2CIRQ_PAR_SCL |
|
||||||
|
MCF_PAD_PAR_FECI2CIRQ_PAR_IRQ6 |
|
||||||
|
MCF_PAD_PAR_FECI2CIRQ_PAR_IRQ5;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* configure PCI Grant pin assignment on GPIO module:
|
||||||
|
*
|
||||||
|
* /PCIBG4 used as FlexBus /TBST
|
||||||
|
* /PCIBG3 used as general purpose I/O
|
||||||
|
* /PCIBG2 used as /PCIBG2
|
||||||
|
* /PCIBG1 used as /PCIBG1
|
||||||
|
* /PCIBG0 used as /PCIBG0
|
||||||
|
*/
|
||||||
|
MCF_PAD_PAR_PCIBG = MCF_PAD_PAR_PCIBG_PAR_PCIBG4_TBST |
|
||||||
|
MCF_PAD_PAR_PCIBG_PAR_PCIBG3_GPIO |
|
||||||
|
MCF_PAD_PAR_PCIBG_PAR_PCIBG2_PCIBG2 |
|
||||||
|
MCF_PAD_PAR_PCIBG_PAR_PCIBG1_PCIBG1 |
|
||||||
|
MCF_PAD_PAR_PCIBG_PAR_PCIBG0_PCIBG0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* configure PCI request pin assignment on GPIO module:
|
||||||
|
* /PCIBR4 as /IRQ4
|
||||||
|
* /PCIBR3 as GPIO (PIC)
|
||||||
|
* /PCIBR2 as /PCIBR2
|
||||||
|
* /PCIBR1 as /PCIBR1
|
||||||
|
* /PCIBR0 as /PCIBR0
|
||||||
|
*/
|
||||||
|
MCF_PAD_PAR_PCIBR = MCF_PAD_PAR_PCIBR_PAR_PCIBR4_IRQ4 |
|
||||||
|
MCF_PAD_PAR_PCIBR_PAR_PCIBR3_GPIO |
|
||||||
|
MCF_PAD_PAR_PCIBR_PAR_PCIBR2_PCIBR2 |
|
||||||
|
MCF_PAD_PAR_PCIBR_PAR_PCIBR1_PCIBR1 |
|
||||||
|
MCF_PAD_PAR_PCIBR_PAR_PCIBR0_PCIBR0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* configure PSC3 pin assignment on GPIO module:
|
||||||
|
* /PSC3CTS as /PSC3PTS
|
||||||
|
* /PSC3RTS as /PSC3RTS
|
||||||
|
* PSC3RXD as PSC3RXD
|
||||||
|
* PSC3TXD as PSC3TXD
|
||||||
|
*/
|
||||||
|
|
||||||
|
MCF_PAD_PAR_PSC3 = MCF_PAD_PAR_PSC3_PAR_TXD3 | MCF_PAD_PAR_PSC3_PAR_RXD3;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Configure PSC1 pin assignment on GPIO module:
|
||||||
|
* - all pins configured for serial interface operation
|
||||||
|
*/
|
||||||
|
|
||||||
|
MCF_PAD_PAR_PSC1 = MCF_PAD_PAR_PSC1_PAR_CTS1_CTS |
|
||||||
|
MCF_PAD_PAR_PSC1_PAR_RTS1_RTS |
|
||||||
|
MCF_PAD_PAR_PSC1_PAR_RXD1 |
|
||||||
|
MCF_PAD_PAR_PSC1_PAR_TXD1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Configure PSC0 Pin Assignment on GPIO module:
|
||||||
|
* - all pins configured for serial interface operation
|
||||||
|
*/
|
||||||
|
|
||||||
|
MCF_PAD_PAR_PSC0 = MCF_PAD_PAR_PSC0_PAR_CTS0_CTS |
|
||||||
|
MCF_PAD_PAR_PSC0_PAR_RTS0_RTS |
|
||||||
|
MCF_PAD_PAR_PSC0_PAR_RXD0 |
|
||||||
|
MCF_PAD_PAR_PSC0_PAR_TXD0;
|
||||||
|
|
||||||
|
MCF_PAD_PAR_DSPI = 0b0001111111111111; /* DSPI NORMAL */
|
||||||
|
|
||||||
|
MCF_PAD_PAR_TIMER = 0b00101101; /* TIN3..2=#IRQ3..2;TOUT3..2=NORMAL */
|
||||||
|
|
||||||
|
// ALLE OUTPUTS NORMAL LOW
|
||||||
|
|
||||||
|
|
||||||
|
// ALLE DIR NORMAL INPUT = 0
|
||||||
|
MCF_GPIO_PDDR_FEC1L = 0b00011110; /* OUT: 4=LED,3=PRG_DQ0,2=#FPGA_CONFIG,1=PRG_CLK(FPGA) */
|
||||||
|
|
||||||
|
#define FPGA_STATUS (1 << 0)
|
||||||
|
#define FPGA_CLOCK (1 << 1)
|
||||||
|
#define FPGA_CONFIG (1 << 2)
|
||||||
|
#define FPGA_DATA0 (1 << 3)
|
||||||
|
#define FPGA_CONF_DONE (1 << 5)
|
||||||
|
|
||||||
|
/* pull FPGA config to low as early as possible */
|
||||||
|
MCF_GPIO_PODR_FEC1L &= ~FPGA_CLOCK; /* FPGA clock => low */
|
||||||
|
MCF_GPIO_PODR_FEC1L &= ~FPGA_CONFIG; /* FPGA config => low */
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* init serial
|
||||||
|
*/
|
||||||
|
void init_serial(void)
|
||||||
|
{
|
||||||
|
/* PSC0: SER1 */
|
||||||
|
MCF_PSC0_PSCSICR = 0; /* PSC control register: select UART mode */
|
||||||
|
MCF_PSC0_PSCCSR = 0xDD; /* use TX and RX baud rate from PSC timer */
|
||||||
|
MCF_PSC0_PSCCTUR = 0x00; /* =\ */
|
||||||
|
MCF_PSC0_PSCCTLR = 36; /* divide sys_clk by 36 => BAUD RATE = 115200 bps */
|
||||||
|
MCF_PSC0_PSCCR = 0x20; /* reset receiver and RxFIFO */
|
||||||
|
MCF_PSC0_PSCCR = 0x30; /* reset transmitter and TxFIFO */
|
||||||
|
MCF_PSC0_PSCCR = 0x40; /* reset all error status */
|
||||||
|
MCF_PSC0_PSCCR = 0x50; /* reset break change interrupt */
|
||||||
|
MCF_PSC0_PSCCR = 0x10; /* reset MR pointer */
|
||||||
|
MCF_PSC0_PSCIMR = 0x8700; /* enable input port change interrupt, enable delta break interrupt, */
|
||||||
|
/* enable receiver interrupt/request, enable transceiver interrupt/request */
|
||||||
|
|
||||||
|
MCF_PSC0_PSCACR = 0x03; /* enable state change of CTS */
|
||||||
|
MCF_PSC0_PSCMR1 = 0xb3; /* 8 bit, no parity */
|
||||||
|
MCF_PSC0_PSCMR2 = 0x07; /* 1 stop bit */
|
||||||
|
MCF_PSC0_PSCRFCR = 0x0F;
|
||||||
|
MCF_PSC0_PSCTFCR = 0x0F;
|
||||||
|
MCF_PSC0_PSCRFAR = 0x00F0;
|
||||||
|
MCF_PSC0_PSCTFAR = 0x00F0;
|
||||||
|
MCF_PSC0_PSCOPSET = 0x01;
|
||||||
|
MCF_PSC0_PSCCR = 0x05;
|
||||||
|
|
||||||
|
/* PSC3: PIC */
|
||||||
|
MCF_PSC3_PSCSICR = 0; // UART
|
||||||
|
MCF_PSC3_PSCCSR = 0xDD;
|
||||||
|
MCF_PSC3_PSCCTUR = 0x00;
|
||||||
|
MCF_PSC3_PSCCTLR = 36; // BAUD RATE = 115200
|
||||||
|
MCF_PSC3_PSCCR = 0x20;
|
||||||
|
MCF_PSC3_PSCCR = 0x30;
|
||||||
|
MCF_PSC3_PSCCR = 0x40;
|
||||||
|
MCF_PSC3_PSCCR = 0x50;
|
||||||
|
MCF_PSC3_PSCCR = 0x10;
|
||||||
|
MCF_PSC3_PSCIMR = 0x0200; // receiver interrupt enable
|
||||||
|
MCF_PSC3_PSCACR = 0x03;
|
||||||
|
MCF_PSC3_PSCMR1 = 0xb3;
|
||||||
|
MCF_PSC3_PSCMR2 = 0x07;
|
||||||
|
MCF_PSC3_PSCRFCR = 0x0F;
|
||||||
|
MCF_PSC3_PSCTFCR = 0x0F;
|
||||||
|
MCF_PSC3_PSCRFAR = 0x00F0;
|
||||||
|
MCF_PSC3_PSCTFAR = 0x00F0;
|
||||||
|
MCF_PSC3_PSCOPSET = 0x01;
|
||||||
|
MCF_PSC3_PSCCR = 0x05;
|
||||||
|
MCF_INTC_ICR32 = 0x3F; //MAXIMALE PRIORITY/**********/
|
||||||
|
|
||||||
|
xprintf("serial interfaces initialization: finished\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/********************************************************************/
|
||||||
|
/* Initialize DDR DIMMs on the EVB board */
|
||||||
|
/********************************************************************/
|
||||||
|
void init_ddram(void)
|
||||||
|
{
|
||||||
|
xprintf("SDRAM controller initialization: ");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check to see if the SDRAM has already been initialized
|
||||||
|
* by a run control tool
|
||||||
|
*/
|
||||||
|
if (!(MCF_SDRAMC_SDCR & MCF_SDRAMC_SDCR_REF)) {
|
||||||
|
/* Basic configuration and initialization */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SB_E (Bits 9-8): 10 <=> 7.6 mA (SDCKE)
|
||||||
|
* SB_C (Bits 7-6): 10 <=> 7.6 mA (SDRAM Clocks)
|
||||||
|
* SB_A (Bits 5-4): 10 <=> 7.6 mA (RAS, CAS, SDWE, SDADDR[12:0], and SDBA)
|
||||||
|
* SB_S (Bits 3-2): 10 <=> 7.6 mA (SDRDQS)
|
||||||
|
* SB_D (Bits 1-0): 10 <=> 7.6 mA (SDRDQS)
|
||||||
|
*
|
||||||
|
* -> lowest setting the Coldfire SDRAM controller allows
|
||||||
|
*/
|
||||||
|
MCF_SDRAMC_SDRAMDS = 0x000002AA;/* SDRAMDS configuration */
|
||||||
|
|
||||||
|
MCF_SDRAMC_CS0CFG = 0x0000001A; /* SDRAM CS0 configuration (128Mbytes 0000_0000 - 07FF_FFFF) */
|
||||||
|
MCF_SDRAMC_CS1CFG = 0x0800001A; /* SDRAM CS1 configuration (128Mbytes 0800_0000 - 0FFF_FFFF) */
|
||||||
|
MCF_SDRAMC_CS2CFG = 0x1000001A; /* SDRAM CS2 configuration (128Mbytes 1000_0000 - 07FF_FFFF) */
|
||||||
|
MCF_SDRAMC_CS3CFG = 0x1800001A; /* SDRAM CS3 configuration (128Mbytes 1800_0000 - 1FFF_FFFF) */
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
MCF_SDRAMC_SDCFG1 = MCF_SDRAMC_SDCFG1_WTLAT(3) /* Write latency */
|
||||||
|
| MCF_SDRAMC_SDCFG1_REF2ACT(8) /* Refresh to Active Delay */
|
||||||
|
| MCF_SDRAMC_SDCFG1_PRE2ACT(2) /* Precharge to Active Delay */
|
||||||
|
| MCF_SDRAMC_SDCFG1_ACT2RW(2) /* Active to Read/Write Delay */
|
||||||
|
| MCF_SDRAMC_SDCFG1_RDLAT(6) /* Read CAS latency */
|
||||||
|
| MCF_SDRAMC_SDCFG1_SWT2RD(3) /* Single Write to Read/Write/Precharge delay */
|
||||||
|
| MCF_SDRAMC_SDCFG1_SRD2RW(7); /* Single Read to Read/Write/Precharge delay */
|
||||||
|
|
||||||
|
MCF_SDRAMC_SDCFG2 = MCF_SDRAMC_SDCFG2_BL(7) /* Burst Length */
|
||||||
|
| MCF_SDRAMC_SDCFG2_BRD2WT(7) /* Burst Read to Write delay */
|
||||||
|
| MCF_SDRAMC_SDCFG2_BWT2RW(6) /* Burst Write to Read/Write/Precharge delay */
|
||||||
|
| MCF_SDRAMC_SDCFG2_BRD2PRE(4); /* Burst Read to Read/Precharge delay */
|
||||||
|
|
||||||
|
#ifdef _NOT_USED_
|
||||||
|
MCF_SDRAMC_SDCFG1 = 0x73622830; /* SDCFG1 */
|
||||||
|
MCF_SDRAMC_SDCFG2 = 0x46770000; /* SDCFG2 */
|
||||||
|
#endif /* _NOT_USED_ */
|
||||||
|
|
||||||
|
MCF_SDRAMC_SDCR = MCF_SDRAMC_SDCR_IPALL /* initiate Precharge All command */
|
||||||
|
| MCF_SDRAMC_SDCR_RCNT(13) /* Refresh Count (= (x + 1) * 64 */
|
||||||
|
| MCF_SDRAMC_SDCR_MUX(1) /* Muxing control */
|
||||||
|
| MCF_SDRAMC_SDCR_DDR
|
||||||
|
| MCF_SDRAMC_SDCR_CKE
|
||||||
|
| MCF_SDRAMC_SDCR_MODE_EN;
|
||||||
|
|
||||||
|
MCF_SDRAMC_SDMR = MCF_SDRAMC_SDMR_CMD /* Generate an LMR/LEMR command */
|
||||||
|
| MCF_SDRAMC_SDMR_AD(0) /* Address */
|
||||||
|
| MCF_SDRAMC_SDMR_BNKAD(1); /* LEMR */
|
||||||
|
MCF_SDRAMC_SDMR = MCF_SDRAMC_SDMR_CMD /* Generate an LMR/LEMR command */
|
||||||
|
| MCF_SDRAMC_SDMR_AD(0x123)
|
||||||
|
| MCF_SDRAMC_SDMR_BNKAD(0); /* LMR */
|
||||||
|
|
||||||
|
#ifdef _NOT_USED_
|
||||||
|
MCF_SDRAMC_SDCR = 0xE10D0002; /* SDCR + IPALL */
|
||||||
|
MCF_SDRAMC_SDMR = 0x40010000; /* SDMR (write to LEMR) */
|
||||||
|
MCF_SDRAMC_SDMR = 0x048D0000; /* SDRM (write to LMR) */
|
||||||
|
#endif /* _NOT_USED_ */
|
||||||
|
MCF_SDRAMC_SDCR = 0xE10D0002; /* SDCR + IPALL */
|
||||||
|
MCF_SDRAMC_SDCR = 0xE10D0004; /* SDCR + IREF (first refresh) */
|
||||||
|
MCF_SDRAMC_SDCR = 0xE10D0004; /* SDCR + IREF (second refresh) */
|
||||||
|
MCF_SDRAMC_SDMR = 0x008D0000; /* SDMR (write to LMR) */
|
||||||
|
MCF_SDRAMC_SDCR = 0x710D0F00; /* SDCR (lock SDMR and enable refresh) */
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xprintf("skipped. Already initialized (running from RAM)\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* initialize FlexBus chip select registers
|
||||||
|
*/
|
||||||
|
void init_fbcs()
|
||||||
|
{
|
||||||
|
xprintf("FlexBus chip select registers initialization: ");
|
||||||
|
|
||||||
|
/* Flash */
|
||||||
|
MCF_FBCS0_CSAR = 0xE0000000; /* flash base address */
|
||||||
|
MCF_FBCS0_CSCR = MCF_FBCS_CSCR_PS_16 |
|
||||||
|
MCF_FBCS_CSCR_WS(4)|
|
||||||
|
MCF_FBCS_CSCR_AA;
|
||||||
|
MCF_FBCS0_CSMR = MCF_FBCS_CSMR_BAM_8M |
|
||||||
|
MCF_FBCS_CSMR_V; /* 8 MByte on */
|
||||||
|
|
||||||
|
MCF_FBCS1_CSAR = 0xFFF00000; /* ATARI I/O ADRESS */
|
||||||
|
MCF_FBCS1_CSCR = MCF_FBCS_CSCR_PS_16 /* 16BIT PORT */
|
||||||
|
| MCF_FBCS_CSCR_WS(8) /* DEFAULT 8WS */
|
||||||
|
| MCF_FBCS_CSCR_AA; /* AA */
|
||||||
|
MCF_FBCS1_CSMR = MCF_FBCS_CSMR_BAM_1M | MCF_FBCS_CSMR_V;
|
||||||
|
|
||||||
|
MCF_FBCS2_CSAR = 0xF0000000; // NEUER I/O ADRESS-BEREICH
|
||||||
|
MCF_FBCS2_CSCR = MCF_FBCS_CSCR_PS_32 // 32BIT PORT
|
||||||
|
| MCF_FBCS_CSCR_WS(8) // DEFAULT 4WS
|
||||||
|
| MCF_FBCS_CSCR_AA; // AA
|
||||||
|
MCF_FBCS2_CSMR = (MCF_FBCS_CSMR_BAM_128M // F000'0000-F7FF'FFFF
|
||||||
|
| MCF_FBCS_CSMR_V);
|
||||||
|
|
||||||
|
MCF_FBCS3_CSAR = 0xF8000000; // NEUER I/O ADRESS-BEREICH
|
||||||
|
MCF_FBCS3_CSCR = MCF_FBCS_CSCR_PS_16 // 16BIT PORT
|
||||||
|
| MCF_FBCS_CSCR_AA; // AA
|
||||||
|
MCF_FBCS3_CSMR = (MCF_FBCS_CSMR_BAM_64M // F800'0000-FBFF'FFFF
|
||||||
|
| MCF_FBCS_CSMR_V);
|
||||||
|
|
||||||
|
MCF_FBCS4_CSAR = 0x40000000; // VIDEO RAM BEREICH, #FB_CS3 WIRD NICHT BENÜTZT, DECODE DIREKT AUF DEM FPGA
|
||||||
|
MCF_FBCS4_CSCR = MCF_FBCS_CSCR_PS_32 // 32BIT PORT
|
||||||
|
| MCF_FBCS_CSCR_BSTR // BURST READ ENABLE
|
||||||
|
| MCF_FBCS_CSCR_BSTW; // BURST WRITE ENABLE
|
||||||
|
MCF_FBCS4_CSMR = MCF_FBCS_CSMR_BAM_1G // 4000'0000-7FFF'FFFF
|
||||||
|
| MCF_FBCS_CSMR_V;
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void wait_pll(void)
|
||||||
|
{
|
||||||
|
uint32_t trgt = MCF_SLT0_SCNT - 100000;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
;
|
||||||
|
} while ((* (volatile int16_t *) 0xf0000800 < 0) && MCF_SLT0_SCNT > trgt);
|
||||||
|
}
|
||||||
|
|
||||||
|
static volatile uint8_t *pll_base = (volatile uint8_t *) 0xf0000600;
|
||||||
|
|
||||||
|
void init_pll(void)
|
||||||
|
{
|
||||||
|
xprintf("FPGA PLL initialization: ");
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
* (volatile uint16_t *) (pll_base + 0x48) = 27; /* loopfilter r */
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
* (volatile uint16_t *) (pll_base + 0x08) = 1; /* charge pump 1 */
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
* (volatile uint16_t *) (pll_base + 0x00) = 12; /* N counter high = 12 */
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
* (volatile uint16_t *) (pll_base + 0x40) = 12; /* N counter low = 12 */
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
* (volatile uint16_t *) (pll_base + 0x114) = 1; /* ck1 bypass */
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
* (volatile uint16_t *) (pll_base + 0x118) = 1; /* ck2 bypass */
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
* (volatile uint16_t *) (pll_base + 0x11c) = 1; /* ck3 bypass */
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
* (volatile uint16_t *) (pll_base + 0x10) = 1; /* ck0 high = 1 */
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
* (volatile uint16_t *) (pll_base + 0x50) = 1; /* ck0 low = 1 */
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
* (volatile uint16_t *) (pll_base + 0x144) = 1; /* M odd division */
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
* (volatile uint16_t *) (pll_base + 0x44) = 1; /* M low = 1 */
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
* (volatile uint16_t *) (pll_base + 0x04) = 145; /* M high = 145 = 146 MHz */
|
||||||
|
|
||||||
|
wait_pll();
|
||||||
|
|
||||||
|
* (volatile uint8_t *) 0xf0000800 = 0; /* set */
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* INIT VIDEO DDR RAM
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define NOP() __asm__ __volatile__("nop\n\t" : : : "memory")
|
||||||
|
|
||||||
|
void init_video_ddr(void) {
|
||||||
|
xprintf("init video RAM: ");
|
||||||
|
|
||||||
|
* (volatile uint16_t *) 0xf0000400 = 0xb; /* set cke = 1, cs=1, config = 1 */
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
_VRAM = 0x00050400; /* IPALL */
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
_VRAM = 0x00072000; /* load EMR pll on */
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
_VRAM = 0x00070122; /* load MR: reset pll, cl=2, burst=4lw */
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
_VRAM = 0x00050400; /* IPALL */
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
_VRAM = 0x00060000; /* auto refresh */
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
_VRAM = 0x00060000; /* auto refresh */
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
_VRAM = 0000070022; /* load MR dll on */
|
||||||
|
NOP();
|
||||||
|
|
||||||
|
* (uint32_t *) 0xf0000400 = 0x01070002; /* fifo on, refresh on, ddrcs und cke on, video dac on */
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define PCI_MEMORY_OFFSET (0x80000000)
|
||||||
|
#define PCI_MEMORY_SIZE (0x40000000)
|
||||||
|
#define PCI_IO_OFFSET (0xD0000000)
|
||||||
|
#define PCI_IO_SIZE (0x10000000)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* INIT PCI
|
||||||
|
*/
|
||||||
|
void init_PCI(void) {
|
||||||
|
xprintf("PCI BUS controller initialization: ");
|
||||||
|
|
||||||
|
MCF_PCIARB_PACR = MCF_PCIARB_PACR_INTMPRI
|
||||||
|
+ MCF_PCIARB_PACR_EXTMPRI(0x1F)
|
||||||
|
+ MCF_PCIARB_PACR_INTMINTEN
|
||||||
|
+ MCF_PCIARB_PACR_EXTMINTEN(0x1F);
|
||||||
|
|
||||||
|
// Setup burst parameters
|
||||||
|
MCF_PCI_PCICR1 = MCF_PCI_PCICR1_CACHELINESIZE(4) + MCF_PCI_PCICR1_LATTIMER(32);
|
||||||
|
MCF_PCI_PCICR2 = MCF_PCI_PCICR2_MINGNT(16) + MCF_PCI_PCICR2_MAXLAT(16);
|
||||||
|
|
||||||
|
// Turn on error signaling
|
||||||
|
MCF_PCI_PCIICR = MCF_PCI_PCIICR_TAE + MCF_PCI_PCIICR_TAE + MCF_PCI_PCIICR_REE + 32;
|
||||||
|
MCF_PCI_PCIGSCR |= MCF_PCI_PCIGSCR_SEE;
|
||||||
|
|
||||||
|
/* Configure Initiator Windows */
|
||||||
|
/* initiator window 0 base / translation adress register */
|
||||||
|
MCF_PCI_PCIIW0BTAR = (PCI_MEMORY_OFFSET + ((PCI_MEMORY_SIZE -1) >> 8)) & 0xffff0000;
|
||||||
|
|
||||||
|
/* initiator window 1 base / translation adress register */
|
||||||
|
MCF_PCI_PCIIW1BTAR = (PCI_IO_OFFSET + ((PCI_IO_SIZE - 1) >> 8)) & 0xffff0000;
|
||||||
|
|
||||||
|
/* initiator window 2 base / translation address register */
|
||||||
|
MCF_PCI_PCIIW2BTAR = 0L; /* not used */
|
||||||
|
|
||||||
|
/* initiator window configuration register */
|
||||||
|
MCF_PCI_PCIIWCR = MCF_PCI_PCIIWCR_WINCTRL0_MEMRDLINE + MCF_PCI_PCIIWCR_WINCTRL1_IO;
|
||||||
|
|
||||||
|
/* reset PCI devices */
|
||||||
|
MCF_PCI_PCIGSCR &= ~MCF_PCI_PCIGSCR_PR;
|
||||||
|
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* probe for UPC720101 (USB)
|
||||||
|
*/
|
||||||
|
void test_upd720101(void)
|
||||||
|
{
|
||||||
|
xprintf("UDP720101 USB controller initialization: ");
|
||||||
|
|
||||||
|
/* select UPD720101 AD17 */
|
||||||
|
MCF_PCI_PCICAR = MCF_PCI_PCICAR_E +
|
||||||
|
MCF_PCI_PCICAR_DEVNUM(17) +
|
||||||
|
MCF_PCI_PCICAR_FUNCNUM(0) +
|
||||||
|
MCF_PCI_PCICAR_DWORD(0);
|
||||||
|
|
||||||
|
if (* (uint32_t *) PCI_IO_OFFSET == 0x33103500)
|
||||||
|
{
|
||||||
|
MCF_PCI_PCICAR = MCF_PCI_PCICAR_E +
|
||||||
|
MCF_PCI_PCICAR_DEVNUM(17) +
|
||||||
|
MCF_PCI_PCICAR_FUNCNUM(0) +
|
||||||
|
MCF_PCI_PCICAR_DWORD(57);
|
||||||
|
|
||||||
|
//* (uint8_t *) PCI_IO_OFFSET = 0x20; // commented out (hangs currently)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MCF_PSC0_PSCTB_8BIT = 'NOT ';
|
||||||
|
|
||||||
|
MCF_PCI_PCICAR = MCF_PCI_PCICAR_DEVNUM(17) +
|
||||||
|
MCF_PCI_PCICAR_FUNCNUM(0) +
|
||||||
|
MCF_PCI_PCICAR_DWORD(57);
|
||||||
|
}
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool i2c_transfer_finished(void)
|
||||||
|
{
|
||||||
|
if (MCF_I2C_I2SR & MCF_I2C_I2SR_IIF)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void wait_i2c_transfer_finished(void)
|
||||||
|
{
|
||||||
|
waitfor(100000, i2c_transfer_finished); /* wait until interrupt bit has been set */
|
||||||
|
MCF_I2C_I2SR &= ~MCF_I2C_I2SR_IIF; /* clear interrupt bit (byte transfer finished */
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool i2c_bus_free(void)
|
||||||
|
{
|
||||||
|
return (MCF_I2C_I2SR & MCF_I2C_I2SR_IBB);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TFP410 (DVI) on
|
||||||
|
*/
|
||||||
|
void dvi_on(void) {
|
||||||
|
uint8_t receivedByte;
|
||||||
|
uint8_t dummyByte; /* only used for a dummy read */
|
||||||
|
int num_tries = 0;
|
||||||
|
|
||||||
|
xprintf("DVI digital video output initialization: ");
|
||||||
|
|
||||||
|
MCF_I2C_I2FDR = 0x3c; /* divide system clock by 1280: 100kHz standard */
|
||||||
|
|
||||||
|
do {
|
||||||
|
/* disable all i2c interrupt routing targets */
|
||||||
|
MCF_I2C_I2ICR = 0x0; //~(MCF_I2C_I2ICR_IE | MCF_I2C_I2ICR_RE | MCF_I2C_I2ICR_TE | MCF_I2C_I2ICR_BNBE);
|
||||||
|
|
||||||
|
/* disable i2c, disable i2c interrupts, slave, receive, i2c = acknowledge, no repeat start */
|
||||||
|
MCF_I2C_I2CR = 0x0;
|
||||||
|
|
||||||
|
/* repeat start, transmit acknowledge */
|
||||||
|
MCF_I2C_I2CR = MCF_I2C_I2CR_RSTA | MCF_I2C_I2CR_TXAK;
|
||||||
|
|
||||||
|
receivedByte = MCF_I2C_I2DR; /* read a byte */
|
||||||
|
MCF_I2C_I2SR = 0x0; /* clear status register */
|
||||||
|
MCF_I2C_I2CR = 0x0; /* disable i2c */
|
||||||
|
|
||||||
|
MCF_I2C_I2ICR = MCF_I2C_I2ICR_IE; /* route i2c interrupts to cpu */
|
||||||
|
/* i2c enable, master mode, transmit acknowledge */
|
||||||
|
MCF_I2C_I2CR = MCF_I2C_I2CR_IEN | MCF_I2C_I2CR_MSTA | MCF_I2C_I2CR_MTX;
|
||||||
|
|
||||||
|
MCF_I2C_I2DR = 0x7a; /* send data: address of TFP410 */
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
|
||||||
|
if (MCF_I2C_I2SR & MCF_I2C_I2SR_RXAK) /* next try if no acknowledge */
|
||||||
|
continue;
|
||||||
|
|
||||||
|
MCF_I2C_I2DR = 0x00; /* send data: SUB ADRESS 0 */
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
|
||||||
|
MCF_I2C_I2CR |= MCF_I2C_I2CR_RSTA; /* repeat start */
|
||||||
|
MCF_I2C_I2DR = 0x7b; /* begin read */
|
||||||
|
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
if (MCF_I2C_I2SR & MCF_I2C_I2SR_RXAK) /* next try if no acknowledge */
|
||||||
|
continue;
|
||||||
|
|
||||||
|
MCF_I2C_I2CR &= 0xef; //~MCF_I2C_I2CR_MTX; /* switch to receive mode */
|
||||||
|
dummyByte = MCF_I2C_I2DR; /* dummy read */
|
||||||
|
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
|
||||||
|
MCF_I2C_I2CR |= MCF_I2C_I2CR_TXAK; /* transmit acknowledge enable */
|
||||||
|
receivedByte = MCF_I2C_I2DR; /* read a byte */
|
||||||
|
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
|
||||||
|
MCF_I2C_I2CR = MCF_I2C_I2CR_IEN; /* stop */
|
||||||
|
|
||||||
|
dummyByte = MCF_I2C_I2DR; // dummy read
|
||||||
|
|
||||||
|
if (receivedByte != 0x4c)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
MCF_I2C_I2CR = 0x0; // stop
|
||||||
|
MCF_I2C_I2SR = 0x0; // clear sr
|
||||||
|
|
||||||
|
waitfor(10000, i2c_bus_free);
|
||||||
|
|
||||||
|
MCF_I2C_I2CR = 0xb0; // on tx master
|
||||||
|
MCF_I2C_I2DR = 0x7A;
|
||||||
|
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
|
||||||
|
if (MCF_I2C_I2SR & MCF_I2C_I2SR_RXAK)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
MCF_I2C_I2DR = 0x08; // SUB ADRESS 8
|
||||||
|
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
|
||||||
|
MCF_I2C_I2DR = 0xbf; // ctl1: power on, T:M:D:S: enable
|
||||||
|
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
|
||||||
|
MCF_I2C_I2CR = 0x80; // stop
|
||||||
|
dummyByte = MCF_I2C_I2DR; // dummy read
|
||||||
|
MCF_I2C_I2SR = 0x0; // clear sr
|
||||||
|
|
||||||
|
waitfor(10000, i2c_bus_free);
|
||||||
|
|
||||||
|
MCF_I2C_I2CR = 0xb0;
|
||||||
|
MCF_I2C_I2DR = 0x7A;
|
||||||
|
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
|
||||||
|
if (MCF_I2C_I2SR & MCF_I2C_I2SR_RXAK)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
MCF_I2C_I2DR = 0x08; // SUB ADRESS 8
|
||||||
|
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
|
||||||
|
MCF_I2C_I2CR |= 0x4; // repeat start
|
||||||
|
MCF_I2C_I2DR = 0x7b; // beginn read
|
||||||
|
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
|
||||||
|
if (MCF_I2C_I2SR & MCF_I2C_I2SR_RXAK)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
MCF_I2C_I2CR &= 0xef; // switch to rx
|
||||||
|
dummyByte = MCF_I2C_I2DR; // dummy read
|
||||||
|
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
MCF_I2C_I2CR |= 0x08; // txak=1
|
||||||
|
|
||||||
|
wait(50);
|
||||||
|
|
||||||
|
receivedByte = MCF_I2C_I2DR;
|
||||||
|
|
||||||
|
wait_i2c_transfer_finished();
|
||||||
|
|
||||||
|
MCF_I2C_I2CR = 0x80; // stop
|
||||||
|
|
||||||
|
dummyByte = MCF_I2C_I2DR; // dummy read
|
||||||
|
num_tries++;
|
||||||
|
} while ((receivedByte != 0xbf) && (num_tries < 10));
|
||||||
|
|
||||||
|
if (num_tries >= 10) {
|
||||||
|
xprintf("FAILED!\r\n");
|
||||||
|
} else {
|
||||||
|
xprintf("finished\r\n");
|
||||||
|
}
|
||||||
|
UNUSED(dummyByte);
|
||||||
|
// Avoid warning
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AC97
|
||||||
|
*/
|
||||||
|
void init_ac97(void) {
|
||||||
|
// PSC2: AC97 ----------
|
||||||
|
int i;
|
||||||
|
int zm;
|
||||||
|
int va;
|
||||||
|
int vb;
|
||||||
|
int vc;
|
||||||
|
|
||||||
|
xprintf("AC97 sound chip initialization: ");
|
||||||
|
MCF_PAD_PAR_PSC2 = MCF_PAD_PAR_PSC2_PAR_RTS2_RTS // PSC2=TX,RX BCLK,CTS->AC'97
|
||||||
|
| MCF_PAD_PAR_PSC2_PAR_CTS2_BCLK
|
||||||
|
| MCF_PAD_PAR_PSC2_PAR_TXD2
|
||||||
|
| MCF_PAD_PAR_PSC2_PAR_RXD2;
|
||||||
|
MCF_PSC2_PSCMR1 = 0x0;
|
||||||
|
MCF_PSC2_PSCMR2 = 0x0;
|
||||||
|
MCF_PSC2_PSCIMR = 0x0300;
|
||||||
|
MCF_PSC2_PSCSICR = 0x03; //AC97
|
||||||
|
MCF_PSC2_PSCRFCR = 0x0f000000;
|
||||||
|
MCF_PSC2_PSCTFCR = 0x0f000000;
|
||||||
|
MCF_PSC2_PSCRFAR = 0x00F0;
|
||||||
|
MCF_PSC2_PSCTFAR = 0x00F0;
|
||||||
|
|
||||||
|
for (zm = 0; zm < 100000; zm++) // wiederholen bis synchron
|
||||||
|
{
|
||||||
|
MCF_PSC2_PSCCR = 0x20;
|
||||||
|
MCF_PSC2_PSCCR = 0x30;
|
||||||
|
MCF_PSC2_PSCCR = 0x40;
|
||||||
|
MCF_PSC2_PSCCR = 0x05;
|
||||||
|
|
||||||
|
// MASTER VOLUME -0dB
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0xE0000000; //START SLOT1 + SLOT2, FIRST FRAME
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x02000000; //SLOT1:WR REG MASTER VOLUME adr 0x02
|
||||||
|
|
||||||
|
for (i = 2; i < 13; i++)
|
||||||
|
{
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x0; //SLOT2-12:WR REG ALLES 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// read register
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0xc0000000; //START SLOT1 + SLOT2, FIRST FRAME
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x82000000; //SLOT1:master volume
|
||||||
|
|
||||||
|
for (i = 2; i < 13; i++)
|
||||||
|
{
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x00000000; //SLOT2-12:RD REG ALLES 0
|
||||||
|
}
|
||||||
|
wait(50);
|
||||||
|
|
||||||
|
va = MCF_PSC2_PSCTB_AC97;
|
||||||
|
if ((va & 0x80000fff) == 0x80000800) {
|
||||||
|
vb = MCF_PSC2_PSCTB_AC97;
|
||||||
|
vc = MCF_PSC2_PSCTB_AC97;
|
||||||
|
|
||||||
|
/* FIXME: that looks more than suspicious (Fredi?) */
|
||||||
|
/* fixed with parentheses to avoid compiler warnings, but this looks still more than wrong to me */
|
||||||
|
if (((va & 0xE0000fff) == 0xE0000800) & (vb == 0x02000000) & (vc == 0x00000000)) {
|
||||||
|
goto livo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
uart_out_word(' NOT');
|
||||||
|
livo:
|
||||||
|
// AUX VOLUME ->-0dB
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0xE0000000; //START SLOT1 + SLOT2, FIRST FRAME
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x16000000; //SLOT1:WR REG AUX VOLUME adr 0x16
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x06060000; //SLOT1:VOLUME
|
||||||
|
for (i = 3; i < 13; i++) {
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x0; //SLOT2-12:WR REG ALLES 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// line in VOLUME +12dB
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0xE0000000; //START SLOT1 + SLOT2, FIRST FRAME
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x10000000; //SLOT1:WR REG MASTER VOLUME adr 0x02
|
||||||
|
for (i = 2; i < 13; i++) {
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x0; //SLOT2-12:WR REG ALLES 0
|
||||||
|
}
|
||||||
|
// cd in VOLUME 0dB
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0xE0000000; //START SLOT1 + SLOT2, FIRST FRAME
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x12000000; //SLOT1:WR REG MASTER VOLUME adr 0x02
|
||||||
|
for (i = 2; i < 13; i++) {
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x0; //SLOT2-12:WR REG ALLES 0
|
||||||
|
}
|
||||||
|
// mono out VOLUME 0dB
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0xE0000000; //START SLOT1 + SLOT2, FIRST FRAME
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x06000000; //SLOT1:WR REG MASTER VOLUME adr 0x02
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x00000000; //SLOT1:WR REG MASTER VOLUME adr 0x02
|
||||||
|
for (i = 3; i < 13; i++) {
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x0; //SLOT2-12:WR REG ALLES 0
|
||||||
|
}
|
||||||
|
MCF_PSC2_PSCTFCR |= MCF_PSC_PSCTFCR_WFR; //set EOF
|
||||||
|
MCF_PSC2_PSCTB_AC97 = 0x00000000; //last data
|
||||||
|
xprintf(" finished\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Symbols from the linker script */
|
||||||
|
|
||||||
|
extern uint8_t _STRAM_END[];
|
||||||
|
#define STRAM_END ((uint32_t)_STRAM_END)
|
||||||
|
|
||||||
|
extern uint8_t _FIRETOS[];
|
||||||
|
#define FIRETOS ((uint32_t)_FIRETOS) /* where FireTOS is stored in flash */
|
||||||
|
|
||||||
|
extern uint8_t _BAS_LMA[];
|
||||||
|
#define BAS_LMA ((uint32_t)_BAS_LMA) /* where the BaS is stored in flash */
|
||||||
|
|
||||||
|
extern uint8_t _BAS_IN_RAM[];
|
||||||
|
#define BAS_IN_RAM ((uint32_t)_BAS_IN_RAM) /* where the BaS is run in RAM */
|
||||||
|
|
||||||
|
extern uint8_t _BAS_SIZE[];
|
||||||
|
#define BAS_SIZE ((uint32_t)_BAS_SIZE) /* size of the BaS, in bytes */
|
||||||
|
|
||||||
|
void initialize_hardware(void) {
|
||||||
|
/* used in copy loop */
|
||||||
|
uint32_t *src; /* src address to read from flash */
|
||||||
|
uint32_t *end; /* end address to read from flash */
|
||||||
|
uint32_t *dst; /* destination address to copy to */
|
||||||
|
|
||||||
|
/* Test for FireTOS switch: DIP switch #5 up */
|
||||||
|
if (!(DIP_SWITCH & (1 << 6))) {
|
||||||
|
/* Minimal hardware initialization */
|
||||||
|
init_gpio();
|
||||||
|
init_serial();
|
||||||
|
init_slt();
|
||||||
|
init_fbcs();
|
||||||
|
init_ddram();
|
||||||
|
init_fpga();
|
||||||
|
/* FireTOS seems to have trouble to initialize the ST-RAM by itself, so... */
|
||||||
|
/* Validate ST RAM */
|
||||||
|
* (volatile uint32_t *) 0x42e = STRAM_END; /* phystop TOS system variable */
|
||||||
|
* (volatile uint32_t *) 0x420 = 0x752019f3; /* memvalid TOS system variable */
|
||||||
|
* (volatile uint32_t *) 0x43a = 0x237698aa; /* memval2 TOS system variable */
|
||||||
|
* (volatile uint32_t *) 0x51a = 0x5555aaaa; /* memval3 TOS system variable */
|
||||||
|
|
||||||
|
/* Jump into FireTOS */
|
||||||
|
typedef void void_func(void);
|
||||||
|
void_func* FireTOS = (void_func*)FIRETOS;
|
||||||
|
FireTOS(); // Should never return
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
init_gpio();
|
||||||
|
init_serial();
|
||||||
|
init_slt();
|
||||||
|
init_fbcs();
|
||||||
|
init_ddram();
|
||||||
|
init_PCI();
|
||||||
|
init_fpga();
|
||||||
|
init_pll();
|
||||||
|
init_video_ddr();
|
||||||
|
dvi_on();
|
||||||
|
test_upd720101();
|
||||||
|
//video_1280_1024();
|
||||||
|
init_ac97();
|
||||||
|
|
||||||
|
/* copy the BaS code contained in flash to its final location */
|
||||||
|
src = (uint32_t *)BAS_LMA;
|
||||||
|
end = (uint32_t *)(BAS_LMA + BAS_SIZE);
|
||||||
|
dst = (uint32_t *)BAS_IN_RAM;
|
||||||
|
|
||||||
|
/* The linker script will ensure that the Bas size
|
||||||
|
* is a multiple of the following.
|
||||||
|
*/
|
||||||
|
while (src < end)
|
||||||
|
{
|
||||||
|
*dst++ = *src++;
|
||||||
|
*dst++ = *src++;
|
||||||
|
*dst++ = *src++;
|
||||||
|
*dst++ = *src++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* we have copied a code area, so flush the caches */
|
||||||
|
flush_and_invalidate_caches();
|
||||||
|
|
||||||
|
/* jump into the BaS in RAM */
|
||||||
|
extern void BaS(void);
|
||||||
|
BaS();
|
||||||
|
}
|
||||||
17
i2cspi_BaS_gcc/sources/unicode.c
Normal file
17
i2cspi_BaS_gcc/sources/unicode.c
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include <ff.h>
|
||||||
|
|
||||||
|
#if _USE_LFN != 0
|
||||||
|
|
||||||
|
#if _CODE_PAGE == 932
|
||||||
|
#include "cc932.c"
|
||||||
|
#elif _CODE_PAGE == 936
|
||||||
|
#include "cc936.c"
|
||||||
|
#elif _CODE_PAGE == 949
|
||||||
|
#include "cc949.c"
|
||||||
|
#elif _CODE_PAGE == 950
|
||||||
|
#include "cc950.c"
|
||||||
|
#else
|
||||||
|
#include "ccsbcs.c"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
31
i2cspi_BaS_gcc/sources/wait.c
Normal file
31
i2cspi_BaS_gcc/sources/wait.c
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* wait.c
|
||||||
|
*
|
||||||
|
* Created on: 10.12.2012
|
||||||
|
* Author: mfro
|
||||||
|
*
|
||||||
|
* This file is part of BaS_gcc.
|
||||||
|
*
|
||||||
|
* BaS_gcc is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* BaS_gcc is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with BaS_gcc. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Copyright 2010 - 2012 F. Aschwanden
|
||||||
|
* Copyright 2011 - 2012 V. Riviere
|
||||||
|
* Copyright 2012 M. Froeschle
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <MCF5475.h>
|
||||||
|
|
||||||
|
#include <wait.h>
|
||||||
Reference in New Issue
Block a user