37 lines
1.2 KiB
C
37 lines
1.2 KiB
C
/*
|
|
* Copyright 2018 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.
|
|
*/
|
|
|
|
#ifndef __CHIP_G_ITE_SYNC_H
|
|
#define __CHIP_G_ITE_SYNC_H
|
|
|
|
#include "util.h"
|
|
|
|
/*
|
|
* Assembler function to generates ITE EC sync sequence, which requires two
|
|
* lines generating phase locked 200 KHz and 100 KHz clocks. This is achieved
|
|
* by directly togging two GPIOs.
|
|
*
|
|
* gpio_addr: address of the register to write to drive the GPIOs
|
|
* both_zero:
|
|
* one_zero:
|
|
* zero_one:
|
|
* both_one: values to write at gpio_addr to set the tow lines to these
|
|
* stattes
|
|
* half_period_ticks: number of interations of the tight loop to last for half
|
|
* the period of the higher frequency
|
|
* total_ticks_required: total ticks required to generate the sequence of the
|
|
* necessary duration.
|
|
*/
|
|
void ite_sync(volatile uint16_t *gpio_addr, uint16_t both_zero,
|
|
uint16_t one_zero, uint16_t zero_one, uint16_t both_one,
|
|
uint32_t half_period_ticks, uint32_t total_ticks_required);
|
|
|
|
|
|
/* Generate ITE SYNC sequence on the I2C interface controlling the EC. */
|
|
void generate_ite_sync(void);
|
|
|
|
#endif
|