Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(126)

Side by Side Diff: host/lib/crossystem.c

Issue 6531035: Fix WP polarity on Mario (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/vboot_reference.git@master
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 1 /* Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be 2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file. 3 * found in the LICENSE file.
4 */ 4 */
5 5
6 #include <stdio.h> 6 #include <stdio.h>
7 #include <string.h> 7 #include <string.h>
8 8
9 #include "host_common.h" 9 #include "host_common.h"
10 10
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 * 76 *
77 * Returns 1 if the bit is set, 0 if clear, or -1 if error. */ 77 * Returns 1 if the bit is set, 0 if clear, or -1 if error. */
78 int ReadFileBit(const char* filename, int bitmask) { 78 int ReadFileBit(const char* filename, int bitmask) {
79 int value = ReadFileInt(filename); 79 int value = ReadFileInt(filename);
80 if (value == -1) 80 if (value == -1)
81 return -1; 81 return -1;
82 else return (value & bitmask ? 1 : 0); 82 else return (value & bitmask ? 1 : 0);
83 } 83 }
84 84
85 85
86 /* Returns non-zero if the FWID starts with the specified string. */
Bill Richardson 2011/02/17 19:05:49 s/non-zero/true/ ?
87 static int FwidStartsWith(const char *start) {
88 char fwid[128];
89 if (!VbGetSystemPropertyString("fwid", fwid, sizeof(fwid)))
90 return 0;
91
92 return 0 == strncmp(fwid, start, strlen(start));
93 }
94
95
86 /* Read a GPIO of the specified signal type (see ACPI GPIO SignalType). 96 /* Read a GPIO of the specified signal type (see ACPI GPIO SignalType).
87 * 97 *
88 * Returns 1 if the signal is asserted, 0 if not asserted, or -1 if error. */ 98 * Returns 1 if the signal is asserted, 0 if not asserted, or -1 if error. */
89 int ReadGpio(int signal_type) { 99 int ReadGpio(int signal_type) {
90 char name[128]; 100 char name[128];
91 int index = 0; 101 int index = 0;
92 int gpio_type; 102 int gpio_type;
93 int active_high; 103 int active_high;
94 int controller_offset; 104 int controller_offset;
95 char controller_name[128]; 105 char controller_name[128];
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 158
149 /* Compare the GPIO value with the active value and return 1 if match. */ 159 /* Compare the GPIO value with the active value and return 1 if match. */
150 return (value == active_high ? 1 : 0); 160 return (value == active_high ? 1 : 0);
151 } 161 }
152 162
153 163
154 /* Read a system property integer. 164 /* Read a system property integer.
155 * 165 *
156 * Returns the property value, or -1 if error. */ 166 * Returns the property value, or -1 if error. */
157 int VbGetSystemPropertyInt(const char* name) { 167 int VbGetSystemPropertyInt(const char* name) {
168 int value = -1;
158 169
159 if (!strcasecmp(name,"devsw_cur")) { 170 if (!strcasecmp(name,"devsw_cur")) {
160 return ReadGpio(GPIO_SIGNAL_TYPE_DEV); 171 value = ReadGpio(GPIO_SIGNAL_TYPE_DEV);
161 } else if (!strcasecmp(name,"devsw_boot")) { 172 } else if (!strcasecmp(name,"devsw_boot")) {
162 return ReadFileBit(ACPI_CHSW_PATH, CHSW_DEV_BOOT); 173 value = ReadFileBit(ACPI_CHSW_PATH, CHSW_DEV_BOOT);
163 } else if (!strcasecmp(name,"recoverysw_cur")) { 174 } else if (!strcasecmp(name,"recoverysw_cur")) {
164 return ReadGpio(GPIO_SIGNAL_TYPE_RECOVERY); 175 value = ReadGpio(GPIO_SIGNAL_TYPE_RECOVERY);
165 } else if (!strcasecmp(name,"recoverysw_boot")) { 176 } else if (!strcasecmp(name,"recoverysw_boot")) {
166 return ReadFileBit(ACPI_CHSW_PATH, CHSW_RECOVERY_BOOT); 177 value = ReadFileBit(ACPI_CHSW_PATH, CHSW_RECOVERY_BOOT);
167 } else if (!strcasecmp(name,"recoverysw_ec_boot")) { 178 } else if (!strcasecmp(name,"recoverysw_ec_boot")) {
168 return ReadFileBit(ACPI_CHSW_PATH, CHSW_RECOVERY_EC_BOOT); 179 value = ReadFileBit(ACPI_CHSW_PATH, CHSW_RECOVERY_EC_BOOT);
169 } else if (!strcasecmp(name,"wpsw_cur")) { 180 } else if (!strcasecmp(name,"wpsw_cur")) {
170 return ReadGpio(GPIO_SIGNAL_TYPE_WP); 181 value = ReadGpio(GPIO_SIGNAL_TYPE_WP);
182 if (FwidStartsWith("Mario.") && -1 != value)
Bill Richardson 2011/02/17 19:05:49 reverse the order of this expression. you don't ha
183 value = 1 - value; /* Mario reports this backwards */
171 } else if (!strcasecmp(name,"wpsw_boot")) { 184 } else if (!strcasecmp(name,"wpsw_boot")) {
172 return ReadFileBit(ACPI_CHSW_PATH, CHSW_WP_BOOT); 185 value = ReadFileBit(ACPI_CHSW_PATH, CHSW_WP_BOOT);
173 } else 186 if (FwidStartsWith("Mario.") && -1 != value)
Bill Richardson 2011/02/17 19:05:49 ditto
174 return -1; 187 value = 1 - value; /* Mario reports this backwards */
188 }
175 189
176 /* TODO: remaining properties from spec */ 190 /* TODO: remaining properties from spec */
191
192 return value;
177 } 193 }
178 194
179 195
180 /* Read a system property string into a destination buffer of the specified 196 /* Read a system property string into a destination buffer of the specified
181 * size. 197 * size.
182 * 198 *
183 * Returns the passed buffer, or NULL if error. */ 199 * Returns the passed buffer, or NULL if error. */
184 const char* VbGetSystemPropertyString(const char* name, char* dest, int size) { 200 const char* VbGetSystemPropertyString(const char* name, char* dest, int size) {
185 201
186 if (!strcasecmp(name,"hwid")) { 202 if (!strcasecmp(name,"hwid")) {
(...skipping 20 matching lines...) Expand all
207 223
208 224
209 /* Set a system property string. 225 /* Set a system property string.
210 * 226 *
211 * Returns 0 if success, -1 if error. */ 227 * Returns 0 if success, -1 if error. */
212 int VbSetSystemPropertyString(const char* name, const char* value) { 228 int VbSetSystemPropertyString(const char* name, const char* value) {
213 229
214 /* TODO: support setting */ 230 /* TODO: support setting */
215 return -1; 231 return -1;
216 } 232 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698