1*0d6140beSAndroid Build Coastguard Worker /* 2*0d6140beSAndroid Build Coastguard Worker * This file is part of the flashrom project. 3*0d6140beSAndroid Build Coastguard Worker * 4*0d6140beSAndroid Build Coastguard Worker * Copyright (C) 2009 Uwe Hermann <[email protected]> 5*0d6140beSAndroid Build Coastguard Worker * Copyright (C) 2009 Carl-Daniel Hailfinger 6*0d6140beSAndroid Build Coastguard Worker * Copyright (C) 2011-2014 Stefan Tauner 7*0d6140beSAndroid Build Coastguard Worker * 8*0d6140beSAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or modify 9*0d6140beSAndroid Build Coastguard Worker * it under the terms of the GNU General Public License as published by 10*0d6140beSAndroid Build Coastguard Worker * the Free Software Foundation; either version 2 of the License, or 11*0d6140beSAndroid Build Coastguard Worker * (at your option) any later version. 12*0d6140beSAndroid Build Coastguard Worker * 13*0d6140beSAndroid Build Coastguard Worker * This program is distributed in the hope that it will be useful, 14*0d6140beSAndroid Build Coastguard Worker * but WITHOUT ANY WARRANTY; without even the implied warranty of 15*0d6140beSAndroid Build Coastguard Worker * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16*0d6140beSAndroid Build Coastguard Worker * GNU General Public License for more details. 17*0d6140beSAndroid Build Coastguard Worker */ 18*0d6140beSAndroid Build Coastguard Worker 19*0d6140beSAndroid Build Coastguard Worker #include <stdlib.h> 20*0d6140beSAndroid Build Coastguard Worker #include <string.h> 21*0d6140beSAndroid Build Coastguard Worker #include "flash.h" 22*0d6140beSAndroid Build Coastguard Worker print_chip_support_status(const struct flashchip * chip)23*0d6140beSAndroid Build Coastguard Workervoid print_chip_support_status(const struct flashchip *chip) 24*0d6140beSAndroid Build Coastguard Worker { 25*0d6140beSAndroid Build Coastguard Worker if (chip->feature_bits & FEATURE_OTP) { 26*0d6140beSAndroid Build Coastguard Worker msg_cdbg("This chip may contain one-time programmable memory. flashrom cannot read\n" 27*0d6140beSAndroid Build Coastguard Worker "and may never be able to write it, hence it may not be able to completely\n" 28*0d6140beSAndroid Build Coastguard Worker "clone the contents of this chip (see man page for details).\n"); 29*0d6140beSAndroid Build Coastguard Worker } 30*0d6140beSAndroid Build Coastguard Worker 31*0d6140beSAndroid Build Coastguard Worker if ((chip->tested.erase == NA) && (chip->tested.write == NA)) { 32*0d6140beSAndroid Build Coastguard Worker msg_cdbg("This chip's main memory can not be erased/written by design.\n"); 33*0d6140beSAndroid Build Coastguard Worker } 34*0d6140beSAndroid Build Coastguard Worker 35*0d6140beSAndroid Build Coastguard Worker if ((chip->tested.probe == BAD) || (chip->tested.probe == NT) || 36*0d6140beSAndroid Build Coastguard Worker (chip->tested.read == BAD) || (chip->tested.read == NT) || 37*0d6140beSAndroid Build Coastguard Worker (chip->tested.erase == BAD) || (chip->tested.erase == NT) || 38*0d6140beSAndroid Build Coastguard Worker (chip->tested.write == BAD) || (chip->tested.write == NT) || 39*0d6140beSAndroid Build Coastguard Worker (chip->tested.wp == BAD) || (chip->tested.wp == NT)){ 40*0d6140beSAndroid Build Coastguard Worker msg_cinfo("===\n"); 41*0d6140beSAndroid Build Coastguard Worker if ((chip->tested.probe == BAD) || 42*0d6140beSAndroid Build Coastguard Worker (chip->tested.read == BAD) || 43*0d6140beSAndroid Build Coastguard Worker (chip->tested.erase == BAD) || 44*0d6140beSAndroid Build Coastguard Worker (chip->tested.write == BAD) || 45*0d6140beSAndroid Build Coastguard Worker (chip->tested.wp == BAD)) { 46*0d6140beSAndroid Build Coastguard Worker msg_cinfo("This flash part has status NOT WORKING for operations:"); 47*0d6140beSAndroid Build Coastguard Worker if (chip->tested.probe == BAD) 48*0d6140beSAndroid Build Coastguard Worker msg_cinfo(" PROBE"); 49*0d6140beSAndroid Build Coastguard Worker if (chip->tested.read == BAD) 50*0d6140beSAndroid Build Coastguard Worker msg_cinfo(" READ"); 51*0d6140beSAndroid Build Coastguard Worker if (chip->tested.erase == BAD) 52*0d6140beSAndroid Build Coastguard Worker msg_cinfo(" ERASE"); 53*0d6140beSAndroid Build Coastguard Worker if (chip->tested.write == BAD) 54*0d6140beSAndroid Build Coastguard Worker msg_cinfo(" WRITE"); 55*0d6140beSAndroid Build Coastguard Worker if (chip->tested.wp == BAD) 56*0d6140beSAndroid Build Coastguard Worker msg_cinfo(" WP"); 57*0d6140beSAndroid Build Coastguard Worker msg_cinfo("\n"); 58*0d6140beSAndroid Build Coastguard Worker } 59*0d6140beSAndroid Build Coastguard Worker if ((chip->tested.probe == NT) || 60*0d6140beSAndroid Build Coastguard Worker (chip->tested.read == NT) || 61*0d6140beSAndroid Build Coastguard Worker (chip->tested.erase == NT) || 62*0d6140beSAndroid Build Coastguard Worker (chip->tested.write == NT) || 63*0d6140beSAndroid Build Coastguard Worker (chip->tested.wp == NT)) { 64*0d6140beSAndroid Build Coastguard Worker msg_cinfo("This flash part has status UNTESTED for operations:"); 65*0d6140beSAndroid Build Coastguard Worker if (chip->tested.probe == NT) 66*0d6140beSAndroid Build Coastguard Worker msg_cinfo(" PROBE"); 67*0d6140beSAndroid Build Coastguard Worker if (chip->tested.read == NT) 68*0d6140beSAndroid Build Coastguard Worker msg_cinfo(" READ"); 69*0d6140beSAndroid Build Coastguard Worker if (chip->tested.erase == NT) 70*0d6140beSAndroid Build Coastguard Worker msg_cinfo(" ERASE"); 71*0d6140beSAndroid Build Coastguard Worker if (chip->tested.write == NT) 72*0d6140beSAndroid Build Coastguard Worker msg_cinfo(" WRITE"); 73*0d6140beSAndroid Build Coastguard Worker if (chip->tested.wp == NT) 74*0d6140beSAndroid Build Coastguard Worker msg_cinfo(" WP"); 75*0d6140beSAndroid Build Coastguard Worker msg_cinfo("\n"); 76*0d6140beSAndroid Build Coastguard Worker } 77*0d6140beSAndroid Build Coastguard Worker msg_cinfo("The test status of this chip may have been updated in the latest development\n" 78*0d6140beSAndroid Build Coastguard Worker "version of flashrom. If you are running the latest development version,\n" 79*0d6140beSAndroid Build Coastguard Worker "please email a report to [email protected] if any of the above operations\n" 80*0d6140beSAndroid Build Coastguard Worker "work correctly for you with this flash chip. Please include the flashrom log\n" 81*0d6140beSAndroid Build Coastguard Worker "file for all operations you tested (see the man page for details), and mention\n" 82*0d6140beSAndroid Build Coastguard Worker "which mainboard or programmer you tested in the subject line.\n" 83*0d6140beSAndroid Build Coastguard Worker "You can also try to follow the instructions here:\n" 84*0d6140beSAndroid Build Coastguard Worker "https://www.flashrom.org/contrib_howtos/how_to_mark_chip_tested.html\n" 85*0d6140beSAndroid Build Coastguard Worker "Thanks for your help!\n"); 86*0d6140beSAndroid Build Coastguard Worker } 87*0d6140beSAndroid Build Coastguard Worker } 88