blob: 4799118ab6d094bf792e34eefd13b557b8539d33 [file] [log] [blame]
Amit Arora39f29542010-09-14 12:03:22 +05301/*******************************************************************************
2 * Copyright (C) 2010, Linaro
3 * Copyright (C) 2010, IBM Corporation
4 *
5 * This file is part of PowerDebug.
6 *
7 * All rights reserved. This program and the accompanying materials
8 * are made available under the terms of the Eclipse Public License v1.0
9 * which accompanies this distribution, and is available at
10 * http://www.eclipse.org/legal/epl-v10.html
11 *
12 * Contributors:
13 * Amit Arora <amit.arora@linaro.org> (IBM Corporation)
14 * - initial API and implementation
15 *******************************************************************************/
16
Amit Arorae9e16b02010-08-03 10:15:20 +053017#include <stdio.h>
18#include <stdlib.h>
19#include <unistd.h>
20#include <string.h>
21#include <dirent.h>
22#include <getopt.h>
23#include <errno.h>
Amit Arora47fd9182010-08-24 13:26:06 +053024#include <ncurses.h>
Amit Arorae9e16b02010-08-03 10:15:20 +053025
Amit Arorafefe8bf2010-08-05 13:31:20 +053026#define VERSION "1.0"
27
Amit Arorae9e16b02010-08-03 10:15:20 +053028#define VALUE_MAX 16
Amit Arorac93e0712010-10-07 13:51:53 +053029#define TOTAL_FEATURE_WINS 3 /* Regulator, Clock and Sensor (for now) */
Amit Arorac93e0712010-10-07 13:51:53 +053030enum {REGULATOR, CLOCK, SENSOR};
Amit Arorae9e16b02010-08-03 10:15:20 +053031
32struct regulator_info {
33 char name[NAME_MAX];
34 char state[VALUE_MAX];
35 char status[VALUE_MAX];
36 char type[VALUE_MAX];
37 char opmode[VALUE_MAX];
38 int microvolts;
Amit Arora83faf0e2010-08-05 12:27:42 +053039 int min_microvolts;
40 int max_microvolts;
Amit Arorae9e16b02010-08-03 10:15:20 +053041 int microamps;
Amit Arora83faf0e2010-08-05 12:27:42 +053042 int min_microamps;
43 int max_microamps;
44 int requested_microamps;
Amit Arorae9e16b02010-08-03 10:15:20 +053045 int num_users;
46} *regulators_info;
47
Amit Aroraed3e5652010-10-27 12:02:53 +053048extern char *win_names[TOTAL_FEATURE_WINS];
49extern int selectedwindow;
Amit Arora728e0c92010-09-14 12:06:09 +053050
Amit Arorae9e16b02010-08-03 10:15:20 +053051extern int numregulators;
Amit Arora47fd9182010-08-24 13:26:06 +053052extern int dump;
Amit Arora29cb7572010-10-05 17:40:29 +053053extern double ticktime;
Amit Arorae9e16b02010-08-03 10:15:20 +053054
55extern void usage(char **argv);
Amit Arorafefe8bf2010-08-05 13:31:20 +053056extern void version(void);
Amit Arorae9e16b02010-08-03 10:15:20 +053057extern void print_regulator_info(int verbose);
Amit Aroraac4e8652010-11-09 11:16:53 +053058extern void read_and_dump_clock_info(int verbose);
Amit Aroraf4fb8102010-11-30 13:55:50 +053059extern void read_and_dump_clock_info_one(char *clk);
Amit Aroraeb6cba92010-10-25 16:03:21 +053060extern void read_clock_info(char *clkpath);
Amit Arora6e774cd2010-10-28 11:31:24 +053061extern struct clock_info *read_clock_info_recur(char *clkpath, int level,
62 struct clock_info *parent);
Amit Aroraac4e8652010-11-09 11:16:53 +053063extern void dump_clock_info(struct clock_info *clk, int level, int bmp);
Amit Aroraeb6cba92010-10-25 16:03:21 +053064extern void insert_children(struct clock_info **parent, struct clock_info *clk);
Amit Arora3bd79162010-12-01 13:51:42 +053065extern void find_parents_for_clock(char *clkname, int complete);
Amit Arora24ed7d12010-09-14 12:12:58 +053066extern int read_and_print_clock_info(int verbose, int hrow, int selected);
Amit Aroraac4e8652010-11-09 11:16:53 +053067extern void print_clock_info(int verbose, int hrow, int selected);
Amit Arorae9e16b02010-08-03 10:15:20 +053068extern void get_sensor_info(char *path, char *name, char *sensor, int verbose);
Amit Aroradca56d02010-08-05 14:57:22 +053069extern void print_string_val(char *name, char *val);
Amit Arora04f97742010-11-16 11:28:57 +053070extern int init_clock_details(void);
Amit Aroraac4e8652010-11-09 11:16:53 +053071extern void print_clock_header(void);
Amit Arora728e0c92010-09-14 12:06:09 +053072extern void print_sensor_header(void);
Amit Aroraac4e8652010-11-09 11:16:53 +053073extern void print_one_clock(int line, char *str, int bold, int highlight);
Amit Aroraed3e5652010-10-27 12:02:53 +053074extern char *debugfs_locate_mpoint(void);
Amit Arora47fd9182010-08-24 13:26:06 +053075
76extern void init_curses(void);
77extern void fini_curses(void);
Amit Arorac93e0712010-10-07 13:51:53 +053078extern void killall_windows(int all);
Amit Arora47fd9182010-08-24 13:26:06 +053079extern void show_header(void);
80extern void create_windows(void);
Amit Arorac93e0712010-10-07 13:51:53 +053081extern void create_selectedwindow(void);
Amit Arora47fd9182010-08-24 13:26:06 +053082extern void show_regulator_info(int verbose);