| /* Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| /* Embed firmware version number in the binary */ |
| |
| #include <stdint.h> |
| #include "common.h" |
| #include "ec_version.h" |
| #include "version.h" |
| |
| const struct version_struct __keep version_data |
| __attribute__((section(".rodata.ver"))) = { |
| CROS_EC_VERSION_COOKIE1, |
| CROS_EC_VERSION32, |
| CROS_EC_VERSION_COOKIE2 |
| }; |
| |
| const char build_info[] __keep __attribute__((section(".rodata.buildinfo"))) = |
| CROS_EC_VERSION " " DATE " " BUILDER; |
| |
| uint32_t ver_get_numcommits(void) |
| { |
| int i; |
| int numperiods = 0; |
| uint32_t ret = 0; |
| |
| /* |
| * Version string is formatted like: |
| * name_major.branch.numcommits-hash[dirty] |
| * we want to return the numcommits as an int. |
| */ |
| for (i = 0; i < 32; i++) { |
| if (version_data.version[i] == '.') { |
| numperiods++; |
| if (numperiods == 2) |
| break; |
| } |
| } |
| |
| i++; |
| for (; i < 32; i++) { |
| if (version_data.version[i] == '-') |
| break; |
| ret *= 10; |
| ret += version_data.version[i] - '0'; |
| } |
| |
| return (i == 32 ? 0 : ret); |
| } |
| |