Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / u-boot / tools / bddb / defs.php
diff --git a/qemu/roms/u-boot/tools/bddb/defs.php b/qemu/roms/u-boot/tools/bddb/defs.php
new file mode 100644 (file)
index 0000000..0b50602
--- /dev/null
@@ -0,0 +1,710 @@
+<?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?>
+<?php
+       // (C) Copyright 2001
+       // Murray Jensen <Murray.Jensen@csiro.au>
+       // CSIRO Manufacturing Science and Technology, Preston Lab
+
+       // contains mysql user id and password - keep secret
+       require("config.php");
+
+       if (isset($_REQUEST['logout'])) {
+               Header("status: 401 Unauthorized");
+               Header("HTTP/1.0 401 Unauthorized");
+               Header("WWW-authenticate: basic realm=\"$bddb_label\"");
+
+               echo "<html><head><title>" .
+                       "Access to '$bddb_label' Denied" .
+                       "</title></head>\n";
+               echo "<body bgcolor=#ffffff><br></br><br></br><center><h1>" .
+                       "You must be an Authorised User " .
+                       "to access the '$bddb_label'" .
+                       "</h1>\n</center></body></html>\n";
+               exit;
+       }
+
+       // contents of the various enumerated types - if first item is
+       // empty ('') then the enum is allowed to be null (ie "not null"
+       // is not set on the column)
+
+       // all column names in the database table
+       $columns = array(
+               'serno','ethaddr','date','batch',
+               'type','rev','location','comments',
+               'sdram0','sdram1','sdram2','sdram3',
+               'flash0','flash1','flash2','flash3',
+               'zbt0','zbt1','zbt2','zbt3','zbt4','zbt5','zbt6','zbt7',
+               'zbt8','zbt9','zbta','zbtb','zbtc','zbtd','zbte','zbtf',
+               'xlxtyp0','xlxtyp1','xlxtyp2','xlxtyp3',
+               'xlxspd0','xlxspd1','xlxspd2','xlxspd3',
+               'xlxtmp0','xlxtmp1','xlxtmp2','xlxtmp3',
+               'xlxgrd0','xlxgrd1','xlxgrd2','xlxgrd3',
+               'cputyp','cpuspd','cpmspd','busspd',
+               'hstype','hschin','hschout'
+       );
+
+       // board type
+       $type_vals = array('IO','CLP','DSP','INPUT','ALT-INPUT','DISPLAY');
+
+       // Xilinx fpga types
+       $xlxtyp_vals = array('','XCV300E','XCV400E','XCV600E','XC2V2000','XC2V3000','XC2V4000','XC2V6000','XC2VP2','XC2VP4','XC2VP7','XC2VP20','XC2VP30','XC2VP50','XC4VFX20','XC4VFX40','XC4VFX60','XC4VFX100','XC4VFX140');
+
+       // Xilinx fpga speeds
+       $xlxspd_vals = array('','6','7','8','4','5','9','10','11','12');
+
+       // Xilinx fpga temperatures (commercial or industrial)
+       $xlxtmp_vals = array('','COM','IND');
+
+       // Xilinx fpga grades (normal or engineering sample)
+       $xlxgrd_vals = array('','NORMAL','ENGSAMP');
+
+       // CPU types
+       $cputyp_vals = array('','MPC8260(HIP3)','MPC8260A(HIP4)','MPC8280(HIP7)','MPC8560');
+
+       // CPU/BUS/CPM clock speeds 
+       $clk_vals = array('','33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ','233MHZ','266MHZ','300MHZ','333MHZ','366MHZ','400MHZ','433MHZ','466MHZ','500MHZ','533MHZ','566MHZ','600MHZ','633MHZ','666MHZ','700MHZ','733MHZ','766MHZ','800MHZ','833MHZ','866MHZ','900MHZ','933MHZ','966MHZ','1000MHZ','1033MHZ','1066MHZ','1100MHZ','1133MHZ','1166MHZ','1200MHZ','1233MHZ','1266MHZ','1300MHZ','1333MHZ');
+
+       // sdram sizes (nbits array is for eeprom config file)
+       $sdram_vals = array('','32M','64M','128M','256M','512M','1G','2G','4G');
+       $sdram_nbits = array(0,25,26,27,28,29,30,31,32);
+
+       // flash sizes (nbits array is for eeprom config file)
+       $flash_vals = array('','4M','8M','16M','32M','64M','128M','256M','512M','1G');
+       $flash_nbits = array(0,22,23,24,25,26,27,28,29,30);
+
+       // zbt ram sizes (nbits array is for write into eeprom config file)
+       $zbt_vals = array('','512K','1M','2M','4M','8M','16M');
+       $zbt_nbits = array(0,19,20,21,22,23,24);
+
+       // high-speed serial attributes
+       $hstype_vals = array('','AMCC-S2064A','Xilinx-Rockets');
+       $hschin_vals = array('0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16');
+       $hschout_vals = array('0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16');
+
+       // value filters - used when outputting html
+       function rev_filter($num) {
+               if ($num == 0)
+                       return "001";
+               else
+                       return sprintf("%03d", $num);
+       }
+
+       function text_filter($str) {
+               return urldecode($str);
+       }
+
+       mt_srand(time() | getmypid());
+
+       // set up MySQL connection
+       mysql_connect("", $mysql_user, $mysql_pw) || die("cannot connect");
+       mysql_select_db($mysql_db) || die("cannot select db");
+
+       // page header
+       function pg_head($title)
+       {
+               echo "<html>\n<head>\n";
+               echo "<link rel=stylesheet href=\"bddb.css\" type=\"text/css\" title=\"style sheet\"></link>\n";
+               echo "<title>$title</title>\n";
+               echo "</head>\n";
+               echo "<body>\n";
+               echo "<center><h1>$title</h1></center>\n";
+               echo "<hr></hr>\n";
+       }
+
+       // page footer
+       function pg_foot()
+       {
+               echo "<hr></hr>\n";
+               echo "<table width=\"100%\"><tr><td align=left>\n<address>" .
+                       "If you have any problems, email " .
+                       "<a href=\"mailto:Murray.Jensen@csiro.au\">" .
+                       "Murray Jensen" .
+                       "</a></address>\n" .
+                       "</td><td align=right>\n" .
+                       "<a href=\"index.php?logout=true\">logout</a>\n" .
+                       "</td></tr></table>\n";
+               echo "<p><small><i>Made with " .
+                   "<a href=\"http://kyber.dk/phpMyBuilder/\">" .
+                   "Kyber phpMyBuilder</a></i></small></p>\n";
+               echo "</body>\n";
+               echo "</html>\n";
+       }
+
+       // some support functions
+
+       if (!function_exists('array_search')) {
+
+               function array_search($needle, $haystack, $strict = false) {
+
+                       if (is_array($haystack) && count($haystack)) {
+
+                               $ntype = gettype($needle);
+
+                               foreach ($haystack as $key => $value) {
+
+                                       if ($value == $needle && (!$strict ||
+                                           gettype($value) == $ntype))
+                                               return $key;
+                               }
+                       }
+
+                       return false;
+               }
+       }
+
+       if (!function_exists('in_array')) {
+
+               function in_array($needle, $haystack, $strict = false) {
+
+                       if (is_array($haystack) && count($haystack)) {
+
+                               $ntype = gettype($needle);
+
+                               foreach ($haystack as $key => $value) {
+
+                                       if ($value == $needle && (!$strict ||
+                                           gettype($value) == $ntype))
+                                               return true;
+                               }
+                       }
+
+                       return false;
+               }
+       }
+
+       function key_in_array($key, $array) {
+               return in_array($key, array_keys($array), true);
+       }
+
+       function enum_to_index($name, $vals) {
+               $index = array_search($GLOBALS[$name], $vals);
+               if ($vals[0] != '')
+                       $index++;
+               return $index;
+       }
+
+       // fetch a value from an array - return empty string is not present
+       function get_key_value($key, $array) {
+               if (key_in_array($key, $array))
+                       return $array[$key];
+               else
+                       return '';
+       }
+
+       function fprintf() {
+               $n = func_num_args();
+               if ($n < 2)
+                       return FALSE;
+               $a = func_get_args();
+               $fp = array_shift($a);
+               $x = "\$s = sprintf";
+               $sep = '(';
+               foreach ($a as $z) {
+                       $x .= "$sep'$z'";
+                       $sep = ',';
+               }
+               $x .= ');';
+               eval($x);
+               $l = strlen($s);
+               $r = fwrite($fp, $s, $l);
+               if ($r != $l)
+                       return FALSE;
+               else
+                       return TRUE;
+       }
+
+       // functions to display (print) a database table and its columns
+
+       function begin_table($ncols) {
+               global $table_ncols;
+               $table_ncols = $ncols;
+               echo "<table align=center width=\"100%\""
+                       . " border=1 cellpadding=4 cols=$table_ncols>\n";
+       }
+
+       function begin_field($name, $span = 0) {
+               global $table_ncols;
+               echo "<tr valign=top>\n";
+               echo "\t<th align=center>$name</th>\n";
+               if ($span <= 0)
+                       $span = $table_ncols - 1;
+               if ($span > 1)
+                       echo "\t<td colspan=$span>\n";
+               else
+                       echo "\t<td>\n";
+       }
+
+       function cont_field($span = 1) {
+               echo "\t</td>\n";
+               if ($span > 1)
+                       echo "\t<td colspan=$span>\n";
+               else
+                       echo "\t<td>\n";
+       }
+
+       function end_field() {
+               echo "\t</td>\n";
+               echo "</tr>\n";
+       }
+
+       function end_table() {
+               echo "</table>\n";
+       }
+
+       function print_field($name, $array, $size = 0, $filt='') {
+
+               begin_field($name);
+
+               if (key_in_array($name, $array))
+                       $value = $array[$name];
+               else
+                       $value = '';
+
+               if ($filt != '')
+                       $value = $filt($value);
+
+               echo "\t\t<input name=$name value=\"$value\"";
+               if ($size > 0)
+                       echo " size=$size maxlength=$size";
+               echo "></input>\n";
+
+               end_field();
+       }
+
+       function print_field_multiline($name, $array, $cols, $rows, $filt='') {
+
+               begin_field($name);
+
+               if (key_in_array($name, $array))
+                       $value = $array[$name];
+               else
+                       $value = '';
+
+               if ($filt != '')
+                       $value = $filt($value);
+
+               echo "\t\t<textarea name=$name " .
+                       "cols=$cols rows=$rows wrap=off>\n";
+               echo "$value";
+               echo "</textarea>\n";
+
+               end_field();
+       }
+
+       // print a mysql ENUM as an html RADIO INPUT
+       function print_enum($name, $array, $vals, $def = -1) {
+
+               begin_field($name);
+
+               if (key_in_array($name, $array))
+                       $chk = array_search($array[$name], $vals, FALSE);
+               else
+                       $chk = $def;
+
+               $nval = count($vals);
+
+               for ($i = 0; $i < $nval; $i++) {
+
+                       $val = $vals[$i];
+                       if ($val == '')
+                               $pval = "none";
+                       else
+                               $pval = "$val";
+
+                       printf("\t\t<input type=radio name=$name"
+                               . " value=\"$val\"%s>$pval</input>\n",
+                               $i == $chk ? " checked" : "");
+               }
+
+               end_field();
+       }
+
+       // print a mysql ENUM as an html SELECT INPUT
+       function print_enum_select($name, $array, $vals, $def = -1) {
+
+               begin_field($name);
+
+               echo "\t\t<select name=$name>\n";
+
+               if (key_in_array($name, $array))
+                       $chk = array_search($array[$name], $vals, FALSE);
+               else
+                       $chk = $def;
+
+               $nval = count($vals);
+
+               for ($i = 0; $i < $nval; $i++) {
+
+                       $val = $vals[$i];
+                       if ($val == '')
+                               $pval = "none";
+                       else
+                               $pval = "$val";
+
+                       printf("\t\t\t<option " .
+                               "value=\"%s\"%s>%s</option>\n",
+                               $val, $i == $chk ? " selected" : "", $pval);
+               }
+
+               echo "\t\t</select>\n";
+
+               end_field();
+       }
+
+       // print a group of mysql ENUMs (e.g. name0,name1,...) as an html SELECT
+       function print_enum_multi($base, $array, $vals, $cnt, $defs, $grp = 0) {
+
+               global $table_ncols;
+
+               if ($grp <= 0)
+                       $grp = $cnt;
+               $ncell = $cnt / $grp;
+               $span = ($table_ncols - 1) / $ncell;
+
+               begin_field($base, $span);
+
+               $nval = count($vals);
+
+               for ($i = 0; $i < $cnt; $i++) {
+
+                       if ($i > 0 && ($i % $grp) == 0)
+                               cont_field($span);
+
+                       $name = sprintf("%s%x", $base, $i);
+
+                       echo "\t\t<select name=$name>\n";
+
+                       if (key_in_array($name, $array))
+                               $ai = array_search($array[$name], $vals, FALSE);
+                       else {
+                               if (key_in_array($i, $defs))
+                                       $ai = $defs[$i];
+                               else
+                                       $ai = 0;
+                       }
+
+                       for ($j = 0; $j < $nval; $j++) {
+
+                               $val = $vals[$j];
+                               if ($val == '')
+                                       $pval = "&nbsp;";
+                               else
+                                       $pval = "$val";
+
+                               printf("\t\t\t<option " .
+                                       "value=\"%s\"%s>%s</option>\n",
+                                       $val,
+                                       $j == $ai ? " selected" : "",
+                                       $pval);
+                       }
+
+                       echo "\t\t</select>\n";
+               }
+
+               end_field();
+       }
+
+       // functions to handle the form input
+
+       // fetch all the parts of an "enum_multi" into a string suitable
+       // for a MySQL query
+       function gather_enum_multi_query($base, $cnt) {
+
+               $retval = '';
+
+               for ($i = 0; $i < $cnt; $i++) {
+
+                       $name = sprintf("%s%x", $base, $i);
+
+                       if (isset($_REQUEST[$name])) {
+                               $retval .= sprintf(", %s='%s'",
+                                       $name, $_REQUEST[$name]);
+                       }
+               }
+
+               return $retval;
+       }
+
+       // fetch all the parts of an "enum_multi" into a string suitable
+       // for a display e.g. in an html table cell
+       function gather_enum_multi_print($base, $cnt, $array) {
+
+               $retval = '';
+
+               for ($i = 0; $i < $cnt; $i++) {
+
+                       $name = sprintf("%s%x", $base, $i);
+
+                       if ($array[$name] != '') {
+                               if ($retval != '')
+                                       $retval .= ',';
+                               $retval .= $array[$name];
+                       }
+               }
+
+               return $retval;
+       }
+
+       // fetch all the parts of an "enum_multi" into a string suitable
+       // for writing to the eeprom data file
+       function gather_enum_multi_write($base, $cnt, $vals, $xfrm = array()) {
+
+               $retval = '';
+
+               for ($i = 0; $i < $cnt; $i++) {
+
+                       $name = sprintf("%s%x", $base, $i);
+
+                       if ($GLOBALS[$name] != '') {
+                               if ($retval != '')
+                                       $retval .= ',';
+                               $index = enum_to_index($name, $vals);
+                               if ($xfrm != array())
+                                       $retval .= $xfrm[$index];
+                               else
+                                       $retval .= $index;
+                       }
+               }
+
+               return $retval;
+       }
+
+       // count how many parts of an "enum_multi" are actually set
+       function count_enum_multi($base, $cnt) {
+
+               $retval = 0;
+
+               for ($i = 0; $i < $cnt; $i++) {
+
+                       $name = sprintf("%s%x", $base, $i);
+
+                       if (isset($_REQUEST[$name]))
+                               $retval++;
+               }
+
+               return $retval;
+       }
+
+       // ethernet address functions
+
+       // generate a (possibly not unique) random vendor ethernet address
+       // (setting bit 6 in the ethernet address - motorola wise i.e. bit 0
+       // is the most significant bit - means it is not an assigned ethernet
+       // address - it is a "locally administered" address). Also, make sure
+       // it is NOT a multicast ethernet address (by setting bit 7 to 0).
+       // e.g. the first byte of all ethernet addresses generated here will
+       // have 2 in the bottom two bits (incidentally, these are the first
+       // two bits transmitted on the wire, since the octets in ethernet
+       // addresses are transmitted LSB first).
+
+       function gen_eth_addr($serno) {
+
+               $ethaddr_hgh = (mt_rand(0, 65535) & 0xfeff) | 0x0200;
+               $ethaddr_mid = mt_rand(0, 65535);
+               $ethaddr_low = mt_rand(0, 65535);
+
+               return sprintf("%02lx:%02lx:%02lx:%02lx:%02lx:%02lx",
+                       $ethaddr_hgh >> 8, $ethaddr_hgh & 0xff,
+                       $ethaddr_mid >> 8, $ethaddr_mid & 0xff,
+                       $ethaddr_low >> 8, $ethaddr_low & 0xff);
+       }
+
+       // check that an ethernet address is valid
+       function eth_addr_is_valid($ethaddr) {
+
+               $ethbytes = split(':', $ethaddr);
+
+               if (count($ethbytes) != 6)
+                       return FALSE;
+
+               for ($i = 0; $i < 6; $i++) {
+                       $ethbyte = $ethbytes[$i];
+                       if (!ereg('^[0-9a-f][0-9a-f]$', $ethbyte))
+                               return FALSE;
+               }
+
+               return TRUE;
+       }
+
+       // write a simple eeprom configuration file
+       function write_eeprom_cfg_file() {
+
+               global $sernos, $nsernos, $bddb_cfgdir, $numerrs, $cfgerrs;
+               global $date, $batch, $type_vals, $rev;
+               global $sdram_vals, $sdram_nbits;
+               global $flash_vals, $flash_nbits;
+               global $zbt_vals, $zbt_nbits;
+               global $xlxtyp_vals, $xlxspd_vals, $xlxtmp_vals, $xlxgrd_vals;
+               global $cputyp, $cputyp_vals, $clk_vals;
+               global $hstype, $hstype_vals, $hschin, $hschout;
+
+               $numerrs = 0;
+               $cfgerrs = array();
+
+               for ($i = 0; $i < $nsernos; $i++) {
+
+                       $serno = sprintf("%010d", $sernos[$i]);
+
+                       $wfp = @fopen($bddb_cfgdir . "/$serno.cfg", "w");
+                       if (!$wfp) {
+                               $cfgerrs[$i] = 'file create fail';
+                               $numerrs++;
+                               continue;
+                       }
+                       set_file_buffer($wfp, 0);
+
+                       if (!fprintf($wfp, "serno=%d\n", $sernos[$i])) {
+                               $cfgerrs[$i] = 'cfg wr fail (serno)';
+                               fclose($wfp);
+                               $numerrs++;
+                               continue;
+                       }
+
+                       if (!fprintf($wfp, "date=%s\n", $date)) {
+                               $cfgerrs[$i] = 'cfg wr fail (date)';
+                               fclose($wfp);
+                               $numerrs++;
+                               continue;
+                       }
+
+                       if ($batch != '') {
+                               if (!fprintf($wfp, "batch=%s\n", $batch)) {
+                                       $cfgerrs[$i] = 'cfg wr fail (batch)';
+                                       fclose($wfp);
+                                       $numerrs++;
+                                       continue;
+                               }
+                       }
+
+                       $typei = enum_to_index("type", $type_vals);
+                       if (!fprintf($wfp, "type=%d\n", $typei)) {
+                               $cfgerrs[$i] = 'cfg wr fail (type)';
+                               fclose($wfp);
+                               $numerrs++;
+                               continue;
+                       }
+
+                       if (!fprintf($wfp, "rev=%d\n", $rev)) {
+                               $cfgerrs[$i] = 'cfg wr fail (rev)';
+                               fclose($wfp);
+                               $numerrs++;
+                               continue;
+                       }
+
+                       $s = gather_enum_multi_write("sdram", 4,
+                               $sdram_vals, $sdram_nbits);
+                       if ($s != '') {
+                               $b = fprintf($wfp, "sdram=%s\n", $s);
+                               if (!$b) {
+                                       $cfgerrs[$i] = 'cfg wr fail (sdram)';
+                                       fclose($wfp);
+                                       $numerrs++;
+                                       continue;
+                               }
+                       }
+
+                       $s = gather_enum_multi_write("flash", 4,
+                               $flash_vals, $flash_nbits);
+                       if ($s != '') {
+                               $b = fprintf($wfp, "flash=%s\n", $s);
+                               if (!$b) {
+                                       $cfgerrs[$i] = 'cfg wr fail (flash)';
+                                       fclose($wfp);
+                                       $numerrs++;
+                                       continue;
+                               }
+                       }
+
+                       $s = gather_enum_multi_write("zbt", 16,
+                               $zbt_vals, $zbt_nbits);
+                       if ($s != '') {
+                               $b = fprintf($wfp, "zbt=%s\n", $s);
+                               if (!$b) {
+                                       $cfgerrs[$i] = 'cfg wr fail (zbt)';
+                                       fclose($wfp);
+                                       $numerrs++;
+                                       continue;
+                               }
+                       }
+
+                       $s = gather_enum_multi_write("xlxtyp", 4, $xlxtyp_vals);
+                       if ($s != '') {
+                               $b = fprintf($wfp, "xlxtyp=%s\n", $s);
+                               if (!$b) {
+                                       $cfgerrs[$i] = 'cfg wr fail (xlxtyp)';
+                                       fclose($wfp);
+                                       $numerrs++;
+                                       continue;
+                               }
+                       }
+
+                       $s = gather_enum_multi_write("xlxspd", 4, $xlxspd_vals);
+                       if ($s != '') {
+                               $b = fprintf($wfp, "xlxspd=%s\n", $s);
+                               if (!$b) {
+                                       $cfgerrs[$i] = 'cfg wr fail (xlxspd)';
+                                       fclose($wfp);
+                                       $numerrs++;
+                                       continue;
+                               }
+                       }
+
+                       $s = gather_enum_multi_write("xlxtmp", 4, $xlxtmp_vals);
+                       if ($s != '') {
+                               $b = fprintf($wfp, "xlxtmp=%s\n", $s);
+                               if (!$b) {
+                                       $cfgerrs[$i] = 'cfg wr fail (xlxtmp)';
+                                       fclose($wfp);
+                                       $numerrs++;
+                                       continue;
+                               }
+                       }
+
+                       $s = gather_enum_multi_write("xlxgrd", 4, $xlxgrd_vals);
+                       if ($s != '') {
+                               $b = fprintf($wfp, "xlxgrd=%s\n", $s);
+                               if (!$b) {
+                                       $cfgerrs[$i] = 'cfg wr fail (xlxgrd)';
+                                       fclose($wfp);
+                                       $numerrs++;
+                                       continue;
+                               }
+                       }
+
+                       if ($cputyp != '') {
+                               $cputypi = enum_to_index("cputyp",$cputyp_vals);
+                               $cpuspdi = enum_to_index("cpuspd", $clk_vals);
+                               $busspdi = enum_to_index("busspd", $clk_vals);
+                               $cpmspdi = enum_to_index("cpmspd", $clk_vals);
+                               $b = fprintf($wfp, "cputyp=%d\ncpuspd=%d\n" .
+                                       "busspd=%d\ncpmspd=%d\n",
+                                       $cputypi, $cpuspdi, $busspdi, $cpmspdi);
+                               if (!$b) {
+                                       $cfgerrs[$i] = 'cfg wr fail (cputyp)';
+                                       fclose($wfp);
+                                       $numerrs++;
+                                       continue;
+                               }
+                       }
+
+                       if ($hstype != '') {
+                               $hstypei = enum_to_index("hstype",$hstype_vals);
+                               $b = fprintf($wfp, "hstype=%d\n" .
+                                       "hschin=%s\nhschout=%s\n",
+                                       $hstypei, $hschin, $hschout);
+                               if (!$b) {
+                                       $cfgerrs[$i] = 'cfg wr fail (hstype)';
+                                       fclose($wfp);
+                                       $numerrs++;
+                                       continue;
+                               }
+                       }
+
+                       if (!fclose($wfp)) {
+                               $cfgerrs[$i] = 'file cls fail';
+                               $numerrs++;
+                       }
+               }
+
+               return $numerrs;
+       }
+?>