]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BeagleBoardPkg/Tools/generate_image.c
edk2: Remove packages moved to edk2-platforms
[mirror_edk2.git] / BeagleBoardPkg / Tools / generate_image.c
diff --git a/BeagleBoardPkg/Tools/generate_image.c b/BeagleBoardPkg/Tools/generate_image.c
deleted file mode 100644 (file)
index fd93a0b..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-/** @file\r
- The data structures in this code come from:\r
- OMAP35x Applications Processor Technical Reference Manual chapter 25\r
- OMAP34xx Multimedia Device Technical Reference Manual chapter 26.4.8.\r
-\r
- You should use the OMAP35x manual when possible. Some things, like SectionKey,\r
- are not defined in the OMAP35x manual and you have to use the OMAP34xx manual\r
- to find the data.\r
-\r
-  Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>\r
-\r
-  SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-#include <errno.h>\r
-#include <sys/types.h>\r
-#include <sys/stat.h>\r
-\r
-\r
-\r
-//TOC structure as defined by OMAP35XX TRM.\r
-typedef struct {\r
-  unsigned int  Start;\r
-  unsigned int  Size;\r
-  unsigned int  Reserved1;\r
-  unsigned int  Reserved2;\r
-  unsigned int  Reserved3;\r
-  unsigned char Filename[12];\r
-} TOC_DATA;\r
-\r
-//NOTE: OMAP3430 TRM has CHSETTINGS and CHRAM structures.\r
-typedef struct {\r
-  unsigned int   SectionKey;\r
-  unsigned char  Valid;\r
-  unsigned char  Version;\r
-  unsigned short Reserved;\r
-  unsigned int   Flags;\r
-  unsigned int   PRM_CLKSRC_CTRL;\r
-  unsigned int   PRM_CLKSEL;\r
-  unsigned int   CM_CLKSEL1_EMU;\r
-  unsigned int   CM_CLKSEL_CORE;\r
-  unsigned int   CM_CLKSEL_WKUP;\r
-  unsigned int   CM_CLKEN_PLL_DPLL3;\r
-  unsigned int   CM_AUTOIDLE_PLL_DPLL3;\r
-  unsigned int   CM_CLKSEL1_PLL;\r
-  unsigned int   CM_CLKEN_PLL_DPLL4;\r
-  unsigned int   CM_AUTOIDLE_PLL_DPLL4;\r
-  unsigned int   CM_CLKSEL2_PLL;\r
-  unsigned int   CM_CLKSEL3_PLL;\r
-  unsigned int   CM_CLKEN_PLL_MPU;\r
-  unsigned int   CM_AUTOIDLE_PLL_MPU;\r
-  unsigned int   CM_CLKSEL1_PLL_MPU;\r
-  unsigned int   CM_CLKSEL2_PLL_MPU;\r
-  unsigned int   CM_CLKSTCTRL_MPU;\r
-} CHSETTINGS_DATA;\r
-\r
-typedef struct {\r
-  unsigned int   SectionKey;\r
-  unsigned char  Valid;\r
-  unsigned char  Reserved1;\r
-  unsigned char  Reserved2;\r
-  unsigned char  Reserved3;\r
-  unsigned short SDRC_SYSCONFIG_LSB;\r
-  unsigned short SDRC_CS_CFG_LSB;\r
-  unsigned short SDRC_SHARING_LSB;\r
-  unsigned short SDRC_ERR_TYPE_LSB;\r
-  unsigned int   SDRC_DLLA_CTRL;\r
-  unsigned short Reserved4;\r
-  unsigned short Reserved5;\r
-  unsigned int   SDRC_POWER;\r
-  unsigned short MEMORY_TYPE_CS0;\r
-  unsigned short Reserved6;\r
-  unsigned int   SDRC_MCFG_0;\r
-  unsigned short SDRC_MR_0_LSB;\r
-  unsigned short SDRC_EMR1_0_LSB;\r
-  unsigned short SDRC_EMR2_0_LSB;\r
-  unsigned short SDRC_EMR3_0_LSB;\r
-  unsigned int   SDRC_ACTIM_CTRLA_0;\r
-  unsigned int   SDRC_ACTIM_CTRLB_0;\r
-  unsigned int   SDRC_RFRCTRL_0;\r
-  unsigned short MEMORY_TYPE_CS1;\r
-  unsigned short Reserved7;\r
-  unsigned int   SDRC_MCFG_1;\r
-  unsigned short SDRC_MR_1_LSB;\r
-  unsigned short SDRC_EMR1_1_LSB;\r
-  unsigned short SDRC_EMR2_1_LSB;\r
-  unsigned short SDRC_EMR3_1_LSB;\r
-  unsigned int   SDRC_ACTIM_CTRLA_1;\r
-  unsigned int   SDRC_ACTIM_CTRLB_1;\r
-  unsigned int   SDRC_RFRCTRL_1;\r
-  unsigned int   Reserved8;\r
-  unsigned short Flags;\r
-  unsigned short Reserved9;\r
-} CHRAM_DATA;\r
-\r
-#define CHSETTINGS_START      0xA0\r
-#define CHSETTINGS_SIZE       0x50\r
-#define CHRAM_START           0xF0\r
-#define CHRAM_SIZE            0x5C\r
-#define CLOSING_TOC_ITEM_SIZE 4\r
-\r
-unsigned char gConfigurationHeader[512];\r
-unsigned int  gImageExecutionAddress;\r
-char          *gInputImageFile = NULL;\r
-char          *gOutputImageFile = NULL;\r
-char          *gDataFile = NULL;\r
-\r
-static\r
-void\r
-PrintUsage (\r
-  void\r
-  )\r
-{\r
-  printf("Usage..\n");\r
-}\r
-\r
-static\r
-void\r
-PopulateCHSETTINGSData (\r
-  FILE            *DataFile,\r
-  CHSETTINGS_DATA *CHSETTINGSData\r
-  )\r
-{\r
-  unsigned int Value;\r
-\r
-  CHSETTINGSData->SectionKey            = 0xC0C0C0C1;\r
-  CHSETTINGSData->Valid                 = 0x1;\r
-  CHSETTINGSData->Version               = 0x1;\r
-  CHSETTINGSData->Reserved              = 0x00;\r
-  CHSETTINGSData->Flags                 = 0x050001FD;\r
-\r
-  //General clock settings.\r
-  fscanf(DataFile, "PRM_CLKSRC_CTRL=0x%08x\n", &Value);\r
-  CHSETTINGSData->PRM_CLKSRC_CTRL = Value;\r
-  fscanf(DataFile, "PRM_CLKSEL=0x%08x\n", &Value);\r
-  CHSETTINGSData->PRM_CLKSEL = Value;\r
-  fscanf(DataFile, "CM_CLKSEL1_EMU=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_CLKSEL1_EMU = Value;\r
-\r
-  //Clock configuration\r
-  fscanf(DataFile, "CM_CLKSEL_CORE=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_CLKSEL_CORE = Value;\r
-  fscanf(DataFile, "CM_CLKSEL_WKUP=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_CLKSEL_WKUP = Value;\r
-\r
-  //DPLL3 (Core) settings\r
-  fscanf(DataFile, "CM_CLKEN_PLL_DPLL3=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_CLKEN_PLL_DPLL3 = Value;\r
-  fscanf(DataFile, "CM_AUTOIDLE_PLL_DPLL3=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_AUTOIDLE_PLL_DPLL3 = Value;\r
-  fscanf(DataFile, "CM_CLKSEL1_PLL=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_CLKSEL1_PLL = Value;\r
-\r
-  //DPLL4 (Peripheral) settings\r
-  fscanf(DataFile, "CM_CLKEN_PLL_DPLL4=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_CLKEN_PLL_DPLL4 = Value;\r
-  fscanf(DataFile, "CM_AUTOIDLE_PLL_DPLL4=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_AUTOIDLE_PLL_DPLL4 = Value;\r
-  fscanf(DataFile, "CM_CLKSEL2_PLL=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_CLKSEL2_PLL = Value;\r
-  fscanf(DataFile, "CM_CLKSEL3_PLL=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_CLKSEL3_PLL = Value;\r
-\r
-  //DPLL1 (MPU) settings\r
-  fscanf(DataFile, "CM_CLKEN_PLL_MPU=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_CLKEN_PLL_MPU = Value;\r
-  fscanf(DataFile, "CM_AUTOIDLE_PLL_MPU=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_AUTOIDLE_PLL_MPU = Value;\r
-  fscanf(DataFile, "CM_CLKSEL1_PLL_MPU=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_CLKSEL1_PLL_MPU = Value;\r
-  fscanf(DataFile, "CM_CLKSEL2_PLL_MPU=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_CLKSEL2_PLL_MPU = Value;\r
-  fscanf(DataFile, "CM_CLKSTCTRL_MPU=0x%08x\n", &Value);\r
-  CHSETTINGSData->CM_CLKSTCTRL_MPU = Value;\r
-}\r
-\r
-static\r
-void\r
-PopulateCHRAMData (\r
-  FILE       *DataFile,\r
-  CHRAM_DATA *CHRAMData\r
-  )\r
-{\r
-  unsigned int Value;\r
-\r
-  CHRAMData->SectionKey         = 0xC0C0C0C2;\r
-  CHRAMData->Valid              = 0x1;\r
-\r
-  fscanf(DataFile, "SDRC_SYSCONFIG_LSB=0x%04x\n", &Value);\r
-  CHRAMData->SDRC_SYSCONFIG_LSB = Value;\r
-  fscanf(DataFile, "SDRC_CS_CFG_LSB=0x%04x\n", &Value);\r
-  CHRAMData->SDRC_CS_CFG_LSB    = Value;\r
-  fscanf(DataFile, "SDRC_SHARING_LSB=0x%04x\n", &Value);\r
-  CHRAMData->SDRC_SHARING_LSB   = Value;\r
-  fscanf(DataFile, "SDRC_ERR_TYPE_LSB=0x%04x\n", &Value);\r
-  CHRAMData->SDRC_ERR_TYPE_LSB  = Value;\r
-  fscanf(DataFile, "SDRC_DLLA_CTRL=0x%08x\n", &Value);\r
-  CHRAMData->SDRC_DLLA_CTRL     = Value;\r
-  fscanf(DataFile, "SDRC_POWER=0x%08x\n", &Value);\r
-  CHRAMData->SDRC_POWER         = Value;\r
-  fscanf(DataFile, "MEMORY_TYPE_CS0=0x%04x\n", &Value);\r
-  CHRAMData->MEMORY_TYPE_CS0    = Value;\r
-  fscanf(DataFile, "SDRC_MCFG_0=0x%08x\n", &Value);\r
-  CHRAMData->SDRC_MCFG_0        = Value;\r
-  fscanf(DataFile, "SDRC_MR_0_LSB=0x%04x\n", &Value);\r
-  CHRAMData->SDRC_MR_0_LSB      = Value;\r
-  fscanf(DataFile, "SDRC_EMR1_0_LSB=0x%04x\n", &Value);\r
-  CHRAMData->SDRC_EMR1_0_LSB    = Value;\r
-  fscanf(DataFile, "SDRC_EMR2_0_LSB=0x%04x\n", &Value);\r
-  CHRAMData->SDRC_EMR2_0_LSB    = Value;\r
-  fscanf(DataFile, "SDRC_EMR3_0_LSB=0x%04x\n", &Value);\r
-  CHRAMData->SDRC_EMR3_0_LSB    = Value;\r
-  fscanf(DataFile, "SDRC_ACTIM_CTRLA_0=0x%08x\n", &Value);\r
-  CHRAMData->SDRC_ACTIM_CTRLA_0 = Value;\r
-  fscanf(DataFile, "SDRC_ACTIM_CTRLB_0=0x%08x\n", &Value);\r
-  CHRAMData->SDRC_ACTIM_CTRLB_0 = Value;\r
-  fscanf(DataFile, "SDRC_RFRCTRL_0=0x%08x\n", &Value);\r
-  CHRAMData->SDRC_RFRCTRL_0     = Value;\r
-  fscanf(DataFile, "MEMORY_TYPE_CS1=0x%04x\n", &Value);\r
-  CHRAMData->MEMORY_TYPE_CS1    = Value;\r
-  fscanf(DataFile, "SDRC_MCFG_1=0x%08x\n", &Value);\r
-  CHRAMData->SDRC_MCFG_1        = Value;\r
-  fscanf(DataFile, "SDRC_MR_1_LSB=0x%04x\n", &Value);\r
-  CHRAMData->SDRC_MR_1_LSB      = Value;\r
-  fscanf(DataFile, "SDRC_EMR1_1_LSB=0x%04x\n", &Value);\r
-  CHRAMData->SDRC_EMR1_1_LSB    = Value;\r
-  fscanf(DataFile, "SDRC_EMR2_1_LSB=0x%04x\n", &Value);\r
-  CHRAMData->SDRC_EMR2_1_LSB    = Value;\r
-  fscanf(DataFile, "SDRC_EMR3_1_LSB=0x%04x\n", &Value);\r
-  CHRAMData->SDRC_EMR3_1_LSB    = Value;\r
-  fscanf(DataFile, "SDRC_ACTIM_CTRLA_1=0x%08x\n", &Value);\r
-  CHRAMData->SDRC_ACTIM_CTRLA_1 = Value;\r
-  fscanf(DataFile, "SDRC_ACTIM_CTRLB_1=0x%08x\n", &Value);\r
-  CHRAMData->SDRC_ACTIM_CTRLB_1 = Value;\r
-  fscanf(DataFile, "SDRC_RFRCTRL_1=0x%08x\n", &Value);\r
-  CHRAMData->SDRC_RFRCTRL_1     = Value;\r
-\r
-  CHRAMData->Flags              = 0x0003;\r
-}\r
-\r
-static\r
-void\r
-PrepareConfigurationHeader (\r
-  void\r
-  )\r
-{\r
-  TOC_DATA        Toc;\r
-  CHSETTINGS_DATA CHSETTINGSData;\r
-  CHRAM_DATA      CHRAMData;\r
-  unsigned int    ConfigurationHdrOffset = 0;\r
-  FILE            *DataFile;\r
-\r
-  // Open data file\r
-  DataFile = fopen(gDataFile, "rb");\r
-  if (DataFile == NULL) {\r
-    fprintf(stderr, "Can't open data file %s.\n", gDataFile);\r
-    exit(1);\r
-  }\r
-\r
-  //Initialize configuration header.\r
-  memset(gConfigurationHeader, 0x00, sizeof(gConfigurationHeader));\r
-\r
-  //CHSETTINGS TOC\r
-  memset(&Toc, 0x00, sizeof(TOC_DATA));\r
-  Toc.Start = CHSETTINGS_START;\r
-  Toc.Size = CHSETTINGS_SIZE;\r
-  strcpy((char *)Toc.Filename, (const char *)"CHSETTINGS");\r
-  memcpy(gConfigurationHeader + ConfigurationHdrOffset, &Toc, sizeof(TOC_DATA));\r
-\r
-  //Populate CHSETTINGS Data\r
-  memset(&CHSETTINGSData, 0x00, sizeof(CHSETTINGS_DATA));\r
-  PopulateCHSETTINGSData(DataFile, &CHSETTINGSData);\r
-  memcpy(gConfigurationHeader + Toc.Start, &CHSETTINGSData, Toc.Size);\r
-\r
-  //Adjust ConfigurationHdrOffset to point to next TOC\r
-  ConfigurationHdrOffset += sizeof(TOC_DATA);\r
-\r
-  //CHRAM TOC\r
-  memset(&Toc, 0x00, sizeof(TOC_DATA));\r
-  Toc.Start = CHRAM_START;\r
-  Toc.Size = CHRAM_SIZE;\r
-  strcpy((char *)Toc.Filename, (const char *)"CHRAM");\r
-  memcpy(gConfigurationHeader + ConfigurationHdrOffset, &Toc, sizeof(TOC_DATA));\r
-\r
-  //Populate CHRAM Data\r
-  memset(&CHRAMData, 0x00, sizeof(CHRAM_DATA));\r
-  PopulateCHRAMData(DataFile, &CHRAMData);\r
-  memcpy(gConfigurationHeader + Toc.Start, &CHRAMData, Toc.Size);\r
-\r
-  //Adjust ConfigurationHdrOffset to point to next TOC\r
-  ConfigurationHdrOffset += sizeof(TOC_DATA);\r
-\r
-  //Closing TOC item\r
-  memset(gConfigurationHeader + ConfigurationHdrOffset, 0xFF, CLOSING_TOC_ITEM_SIZE);\r
-  ConfigurationHdrOffset += CLOSING_TOC_ITEM_SIZE;\r
-\r
-  // Close data file\r
-  fclose(DataFile);\r
-}\r
-\r
-static\r
-void\r
-ConstructImage (\r
-  void\r
-  )\r
-{\r
-  FILE         *InputFile;\r
-  FILE         *OutputFile;\r
-  unsigned int InputImageFileSize;\r
-  struct       stat FileStat;\r
-  char         Ch;\r
-  unsigned int i;\r
-\r
-  InputFile = fopen(gInputImageFile, "rb");\r
-  if (InputFile == NULL) {\r
-    fprintf(stderr, "Can't open input file.\n");\r
-    exit(0);\r
-  }\r
-\r
-  // Get the size of the input image.\r
-  fstat(fileno(InputFile), &FileStat);\r
-  InputImageFileSize = FileStat.st_size;\r
-\r
-  OutputFile = fopen(gOutputImageFile, "wb");\r
-  if (OutputFile == NULL) {\r
-    fprintf(stderr, "Can't open output file %s.\n", gOutputImageFile);\r
-    exit(0);\r
-  }\r
-\r
-  // Write Configuration header\r
-  fwrite(gConfigurationHeader, 1, sizeof(gConfigurationHeader), OutputFile);\r
-\r
-  // Write image header (Input image size, execution address)\r
-  fwrite(&InputImageFileSize, 1, 4, OutputFile);\r
-  fwrite(&gImageExecutionAddress, 1, 4, OutputFile);\r
-\r
-  // Copy input image to the output file.\r
-  for (i = 0; i < InputImageFileSize; i++) {\r
-    fread(&Ch, 1, 1, InputFile);\r
-    fwrite(&Ch, 1, 1, OutputFile);\r
-  }\r
-\r
-  fclose(InputFile);\r
-  fclose(OutputFile);\r
-}\r
-\r
-\r
-int\r
-main (\r
-  int    argc,\r
-  char** argv\r
-  )\r
-{\r
-  char          Ch;\r
-  unsigned char *ptr;\r
-  int           i;\r
-  int           TwoArg;\r
-\r
-  if (argc == 1) {\r
-    PrintUsage ();\r
-    exit(1);\r
-  }\r
-\r
-  for (i=1; i < argc; i++) {\r
-    if (argv[i][0] == '-') {\r
-      // TwoArg TRUE -E 0x123, FALSE -E0x1234\r
-      TwoArg = (argv[i][2] != ' ');\r
-      switch (argv[i][1]) {\r
-        case 'E': /* Image execution address */\r
-          gImageExecutionAddress = strtoul (TwoArg ? argv[i+1] : &argv[i][2], (char **)&ptr, 16);\r
-          break;\r
-\r
-        case 'I': /* Input image file */\r
-          gInputImageFile = TwoArg ? argv[i+1] : &argv[i][2];\r
-          break;\r
-\r
-        case 'O': /* Output image file */\r
-          gOutputImageFile = TwoArg ? argv[i+1] : &argv[i][2];\r
-          break;\r
-\r
-        case 'D': /* Data file */\r
-          gDataFile = TwoArg ? argv[i+1] : &argv[i][2];\r
-          break;\r
-\r
-        default:\r
-          abort ();\r
-      }\r
-    }\r
-  }\r
-\r
-\r
-  //Prepare configuration header\r
-  PrepareConfigurationHeader ();\r
-\r
-  //Build image with configuration header + image header + image\r
-  ConstructImage ();\r
-\r
-  return 0;\r
-}\r