Files
OpenCellular/include/sha1.h
Alec Berg e913bc15b8 samus: add host commands for flashing zinger RW
This adds a new host commmand for sending RW updates to PD devices.
The host command has a variety of sub-commands for performing the
update, including: erase RW, reboot, write new hash, write flash.

To program zinger RW, you should send host commands in this order:
write new hash to all 0's
reboot (zinger boots into RO since RW hash doesn't match)
erase RW
write flash
write new hash to match contents of RW
reboot

This also adds an ectool command to write a new RW. Just pass it
the RW .flat or .bin file.

BUG=chrome-os-partner:31361
BRANCH=none
TEST=ectool --dev=1 --interface=lpc flashpd 0 0 zinger.RW.flat

Change-Id: Ia81615001b83ad7ee69b1af2bf1d7059177cde04
Signed-off-by: Alec Berg <alecaberg@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/213239
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2014-08-26 23:06:23 +00:00

37 lines
806 B
C

/* Copyright (c) 2014 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.
*/
/* SHA-1 functions */
#ifndef _SHA1_H
#define _SHA1_H
#include "common.h"
#ifdef HOST_TOOLS_BUILD
#include <string.h>
#define DIV_ROUND_UP(x, y) (((x) + ((y) - 1)) / (y))
#else
#include "util.h"
#endif
#define SHA1_DIGEST_SIZE 20
#define SHA1_BLOCK_SIZE 64
/* SHA-1 context */
struct sha1_ctx {
uint32_t count;
uint32_t state[5];
union {
uint8_t b[SHA1_BLOCK_SIZE];
uint32_t w[DIV_ROUND_UP(SHA1_BLOCK_SIZE, sizeof(uint32_t))];
} buf;
};
void sha1_init(struct sha1_ctx *ctx);
void sha1_update(struct sha1_ctx *ctx, const uint8_t *data, uint32_t len);
uint8_t *sha1_final(struct sha1_ctx *ctx);
#endif /* _SHA1_H */