blob: 319a61aecb803002570d9ce1354b68ad8c5f7ce0 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Copyright 2023 Google LLC
* Written by Simon Glass <sjg@chromium.org>
*/
#ifndef __CEDIT_H
#define __CEDIT_H
#include <stdbool.h>
#include <dm/ofnode_decl.h>
#include <linux/types.h>
struct abuf;
struct expo;
struct expo_action;
struct scene;
struct udevice;
struct video_priv;
struct udevice;
enum {
/* size increment for writing FDT */
CEDIT_SIZE_INC = 1024,
};
/* Name of the cedit node in the devicetree */
#define CEDIT_NODE_NAME "cedit-values"
extern struct expo *cur_exp;
/**
* cedit_arange() - Arrange objects in a configuration-editor scene
*
* @exp: Expo to update
* @vid_priv: Private info of the video device
* @scene_id: scene ID to arrange
* Returns: 0 if OK, -ve on error
*/
int cedit_arange(struct expo *exp, struct video_priv *vid_priv, uint scene_id);
/**
* cedit_run() - Run a configuration editor
*
* This accepts input until the user quits with Escape
*
* @exp: Expo to use
* Returns: 0 if OK, -ve on error
*/
int cedit_run(struct expo *exp);
/**
* cedit_prepare() - Prepare to run a cedit
*
* Set up the video device, select the first scene and highlight the first item.
* This ensures that all menus have a selected item.
*
* @exp: Expo to use
* @dev: Video device to use
* @scnp: Set to the first scene
* Return: scene ID of first scene if OK, -ve on error
*/
int cedit_prepare(struct expo *exp, struct udevice *vid_dev,
struct scene **scnp);
/**
* cedit_do_action() - Process an action on a cedit
*
* @exp: Expo to use
* @scn: Current scene
* @vid_priv: Private data for the video device
* @act: Action to process
* Return: 0 on success, -EAGAIN if there was no action taken
*/
int cedit_do_action(struct expo *exp, struct scene *scn,
struct video_priv *vid_priv, struct expo_action *act);
/**
* cedit_write_settings() - Write settings in FDT format
*
* Sets up an FDT with the settings
*
* @exp: Expo to write settings from
* @buf: Returns abuf containing the settings FDT (inited by this function)
* Return: 0 if OK, -ve on error
*/
int cedit_write_settings(struct expo *exp, struct abuf *buf);
/**
* cedit_read_settings() - Read settings in FDT format
*
* Read an FDT with the settings
*
* @exp: Expo to read settings into
* @tree: Tree to read from
* Return: 0 if OK, -ve on error
*/
int cedit_read_settings(struct expo *exp, oftree tree);
/**
* cedit_write_settings_env() - Write settings to envrionment variables
*
* @exp: Expo to write settings from
* @verbose: true to print each var as it is set
* Return: 0 if OK, -ve on error
*/
int cedit_write_settings_env(struct expo *exp, bool verbose);
/*
* cedit_read_settings_env() - Read settings from the environment
*
* @exp: Expo to read settings into
* @verbose: true to print each var before it is read
*/
int cedit_read_settings_env(struct expo *exp, bool verbose);
/**
* cedit_write_settings_cmos() - Write settings to CMOS RAM
*
* Write settings to the defined places in CMOS RAM
*
* @exp: Expo to write settings from
* @dev: UCLASS_RTC device containing space for this information
* Returns 0 if OK, -ve on error
* @verbose: true to print a summary at the end
*/
int cedit_write_settings_cmos(struct expo *exp, struct udevice *dev,
bool verbose);
/**
* cedit_read_settings_cmos() - Read settings from CMOS RAM
*
* Read settings from the defined places in CMO RAM
*
* @exp: Expo to read settings into
* @dev: RTC device to read settings from
* @verbose: true to print a summary at the end
*/
int cedit_read_settings_cmos(struct expo *exp, struct udevice *dev,
bool verbose);
#endif /* __CEDIT_H */