mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-30 02:20:48 +00:00
This is tidier than every board defining its own module_id enum, and encourages standard naming of modules. A subsequent CL will do more cleanup (standardizing on MODULE_LED instead of MODULE_POWER_LED and MODULE_LED_KIRBY), but it's easier to do that as a separate CL than part of this one. BUG=chrome-os-partner:18343 BRANCH=none TEST=build all platforms; pass unit tests Change-Id: If0fcef284fb3aa2fa145bc9ff3d1f3f2d25a2e47 Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/174382 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
113 lines
3.1 KiB
C
113 lines
3.1 KiB
C
/* Copyright (c) 2013 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.
|
|
*/
|
|
|
|
/* common.h - Common includes for Chrome EC */
|
|
|
|
#ifndef __CROS_EC_COMMON_H
|
|
#define __CROS_EC_COMMON_H
|
|
|
|
#include <stdint.h>
|
|
|
|
/*
|
|
* Macros to concatenate 2 - 4 tokens together to form a single token.
|
|
* Multiple levels of nesting are required to convince the preprocessor to
|
|
* expand currently-defined tokens before concatenation.
|
|
*
|
|
* For example, if you have
|
|
* #define FOO 1
|
|
* #define BAR1 42
|
|
* Then
|
|
* #define BAZ CONCAT2(BAR, FOO)
|
|
* Will evaluate to BAR1, which then evaluates to 42.
|
|
*/
|
|
#define CONCAT_STAGE_1(w, x, y, z) w ## x ## y ## z
|
|
#define CONCAT2(w, x) CONCAT_STAGE_1(w, x, , )
|
|
#define CONCAT3(w, x, y) CONCAT_STAGE_1(w, x, y, )
|
|
#define CONCAT4(w, x, y, z) CONCAT_STAGE_1(w, x, y, z)
|
|
|
|
/* Macros to access registers */
|
|
#define REG32(addr) (*(volatile uint32_t *)(addr))
|
|
#define REG16(addr) (*(volatile uint16_t *)(addr))
|
|
|
|
/*
|
|
* Define __aligned(n) and __packed if someone hasn't beat us to it. Linux
|
|
* kernel style checking prefers these over __attribute__((packed)) and
|
|
* __attribute__((aligned(n))).
|
|
*/
|
|
#ifndef __aligned
|
|
#define __aligned(n) __attribute__((aligned(n)))
|
|
#endif
|
|
|
|
#ifndef __packed
|
|
#define __packed __attribute__((packed))
|
|
#endif
|
|
|
|
/* There isn't really a better place for this */
|
|
#define C_TO_K(temp_c) ((temp_c) + 273)
|
|
#define K_TO_C(temp_c) ((temp_c) - 273)
|
|
#define CELSIUS_TO_DECI_KELVIN(temp_c) ((temp_c) * 10 + 2731)
|
|
#define DECI_KELVIN_TO_CELSIUS(temp_dk) ((temp_dk - 2731) / 10)
|
|
|
|
/* Include top-level configuration file */
|
|
#include "config.h"
|
|
|
|
/* Canonical list of module IDs */
|
|
#include "module_id.h"
|
|
|
|
/* List of common error codes that can be returned */
|
|
enum ec_error_list {
|
|
/* Success - no error */
|
|
EC_SUCCESS = 0,
|
|
/* Unknown error */
|
|
EC_ERROR_UNKNOWN = 1,
|
|
/* Function not implemented yet */
|
|
EC_ERROR_UNIMPLEMENTED = 2,
|
|
/* Overflow error; too much input provided. */
|
|
EC_ERROR_OVERFLOW = 3,
|
|
/* Timeout */
|
|
EC_ERROR_TIMEOUT = 4,
|
|
/* Invalid argument */
|
|
EC_ERROR_INVAL = 5,
|
|
/* Already in use, or not ready yet */
|
|
EC_ERROR_BUSY = 6,
|
|
/* Access denied */
|
|
EC_ERROR_ACCESS_DENIED = 7,
|
|
/* Failed because component does not have power */
|
|
EC_ERROR_NOT_POWERED = 8,
|
|
/* Failed because component is not calibrated */
|
|
EC_ERROR_NOT_CALIBRATED = 9,
|
|
/* Invalid console command param (PARAMn means parameter n is bad) */
|
|
EC_ERROR_PARAM1 = 11,
|
|
EC_ERROR_PARAM2 = 12,
|
|
EC_ERROR_PARAM3 = 13,
|
|
EC_ERROR_PARAM4 = 14,
|
|
EC_ERROR_PARAM5 = 15,
|
|
EC_ERROR_PARAM6 = 16,
|
|
EC_ERROR_PARAM7 = 17,
|
|
EC_ERROR_PARAM8 = 18,
|
|
EC_ERROR_PARAM9 = 19,
|
|
EC_ERROR_PARAM_COUNT = 20, /* Wrong number of params */
|
|
|
|
/* Module-internal error codes may use this range. */
|
|
EC_ERROR_INTERNAL_FIRST = 0x10000,
|
|
EC_ERROR_INTERNAL_LAST = 0x1FFFF
|
|
};
|
|
|
|
/*
|
|
* Define test_mockable and test_mockable_static for mocking
|
|
* functions.
|
|
*/
|
|
#ifdef TEST_BUILD
|
|
#define test_mockable __attribute__((weak))
|
|
#define test_mockable_static __attribute__((weak))
|
|
#define test_export_static
|
|
#else
|
|
#define test_mockable
|
|
#define test_mockable_static static
|
|
#define test_export_static static
|
|
#endif
|
|
|
|
#endif /* __CROS_EC_COMMON_H */
|