Files
OpenCellular/include/clock.h
Randall Spangler 3c708cb802 Enable PLL only briefly during ADC init
It was previously only enabled for 1500us during boot, but in a way
that triggered a needless round of notifications to other modules.
This is cleaner.

This also fixes adc_init() not initializing the task IDs to wake when
interrupts come in, and removes some unneeded code from other init
functions.

BUG=chrome-os-partner:12472
TEST=boot system and run adc command.  Should still provide reasonable data.

Change-Id: I9ae5857d988c727caf5d53f551a2f12b30974c0f
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/29806
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
2012-08-09 14:38:16 -07:00

56 lines
1.3 KiB
C

/* 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.
*/
/* Clocks and power management settings */
#ifndef __CROS_EC_CLOCK_H
#define __CROS_EC_CLOCK_H
#include "common.h"
/**
* Set the CPU clocks and PLLs.
*/
int clock_init(void);
/**
* Return the current clock frequency in Hz.
*/
int clock_get_freq(void);
/**
* Enable or disable the PLL.
*
* @param enable Enable PLL if non-zero; disable if zero.
* @param notify Notify other modules of the PLL change. This should
* be 1 unless you're briefly turning on the PLL to work
* around a chip errata at init time.
*/
int clock_enable_pll(int enable, int notify);
/**
* Wait for a number of clock cycles.
*
* Simple busy waiting for use before clocks/timers are initialized.
*
* @param cycles Number of cycles to wait.
*/
void clock_wait_cycles(uint32_t cycles);
/* Low power modes for idle API */
enum {
SLEEP_MASK_AP_RUN = (1 << 0), /* the main CPU is running */
SLEEP_MASK_UART = (1 << 1), /* UART communication on-going */
SLEEP_MASK_I2C = (1 << 2), /* I2C master communication on-going */
SLEEP_MASK_FORCE = (1 << 31), /* Force disabling low power modes */
};
void enable_sleep(uint32_t mask);
void disable_sleep(uint32_t mask);
#endif /* __CROS_EC_CLOCK_H */