mirror of
https://github.com/linux-msm/cdba.git
synced 2026-10-06 21:32:09 -07:00
The newly introduced support for QDL-based remote flashing of devices is powerful, but provides an easy way to alter shared boards in unwanted ways. Introduce an optional "qdl_access" entry to the device configuration, which allows to specify a list of entries each one defining a set of users and their accepted flash targets. A special target "all" can be used to give e.g. administrators unrestricted access to the flash. Signed-off-by: Bjorn Andersson <bjorn.andersson@oss.qualcomm.com>
139 lines
3.5 KiB
C
139 lines
3.5 KiB
C
#ifndef __DEVICE_H__
|
|
#define __DEVICE_H__
|
|
|
|
#include <termios.h>
|
|
#include "cdba.h"
|
|
#include "list.h"
|
|
|
|
struct cdb_assist;
|
|
struct edl;
|
|
struct fastboot;
|
|
struct fastboot_ops;
|
|
struct device;
|
|
struct device_parser;
|
|
|
|
struct control_ops {
|
|
void *(*parse_options)(struct device_parser *dp);
|
|
void *(*open)(struct device *dev);
|
|
void (*close)(struct device *dev);
|
|
int (*power)(struct device *dev, bool on);
|
|
void (*usb)(struct device *dev, bool on);
|
|
void (*key)(struct device *device, int key, bool asserted);
|
|
void (*status_enable)(struct device *dev);
|
|
};
|
|
|
|
struct console_ops {
|
|
void *(*open)(struct device *dev);
|
|
int (*write)(struct device *dev, const void *buf, size_t len);
|
|
|
|
void (*send_break)(struct device *dev);
|
|
};
|
|
|
|
struct device {
|
|
char *board;
|
|
char *control_dev;
|
|
void *control_options;
|
|
char *console_dev;
|
|
char *name;
|
|
char *serial;
|
|
char *description;
|
|
char *ppps_path;
|
|
char *ppps3_path;
|
|
struct list_head *users;
|
|
unsigned voltage;
|
|
bool tickle_mmc;
|
|
bool usb_always_on;
|
|
bool power_always_on;
|
|
struct edl *edl;
|
|
struct fastboot *fastboot;
|
|
unsigned int fastboot_key_timeout;
|
|
unsigned int power_key_press_ms;
|
|
int state;
|
|
enum power_on_mode power_on_mode;
|
|
bool has_power_key;
|
|
|
|
bool status_enabled;
|
|
|
|
void (*boot)(struct device *);
|
|
|
|
const struct control_ops *control_ops;
|
|
const struct console_ops *console_ops;
|
|
|
|
const char *set_active;
|
|
|
|
void *cdb;
|
|
void *console;
|
|
|
|
char *qdl_programmer;
|
|
char *qdl_serial;
|
|
char *qdl_storage;
|
|
struct list_head *qdl_access;
|
|
|
|
char *status_cmd;
|
|
|
|
struct list_head node;
|
|
};
|
|
|
|
struct device_user {
|
|
const char *username;
|
|
|
|
struct list_head node;
|
|
};
|
|
|
|
struct device_qdl_target {
|
|
const char *target;
|
|
|
|
struct list_head node;
|
|
};
|
|
|
|
struct device_qdl_user {
|
|
const char *username;
|
|
struct list_head targets;
|
|
|
|
struct list_head node;
|
|
};
|
|
|
|
void device_add(struct device *device);
|
|
|
|
struct device *device_open(const char *board,
|
|
const char *username);
|
|
void device_close(struct device *dev);
|
|
int device_power_on(struct device *device, enum power_on_mode mode);
|
|
int device_power_off(struct device *device);
|
|
void device_key(struct device *device, int key, bool asserted);
|
|
|
|
void device_status_enable(struct device *device);
|
|
void device_usb(struct device *device, bool on);
|
|
int device_write(struct device *device, const void *buf, size_t len);
|
|
|
|
void device_boot(struct device *device, const void *data, size_t len);
|
|
|
|
void device_edl_open(struct device *device, void (*edl_present)(bool present));
|
|
void device_fastboot_open(struct device *device,
|
|
struct fastboot_ops *fastboot_ops);
|
|
void device_fastboot_boot(struct device *device);
|
|
void device_fastboot_flash_reboot(struct device *device);
|
|
void device_send_break(struct device *device);
|
|
void device_list_devices(const char *username);
|
|
void device_info(const char *username, const void *data, size_t dlen);
|
|
void device_fastboot_continue(struct device *device);
|
|
bool device_is_running(struct device *device);
|
|
bool device_qdl_access_allowed(struct device *device,
|
|
const char *username,
|
|
const char *target);
|
|
|
|
extern const struct control_ops alpaca_ops;
|
|
extern const struct control_ops cdb_assist_ops;
|
|
extern const struct control_ops conmux_ops;
|
|
extern const struct control_ops ftdi_gpio_ops;
|
|
extern const struct control_ops local_gpio_ops;
|
|
extern const struct control_ops external_ops;
|
|
extern const struct control_ops qcomlt_dbg_ops;
|
|
extern const struct control_ops laurent_ops;
|
|
extern const struct control_ops pic32cx_ops;
|
|
|
|
extern const struct console_ops conmux_console_ops;
|
|
extern const struct console_ops console_ops;
|
|
|
|
#endif
|