Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/include/linux/platform_data/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  huawei-gaokun-ec.h   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Huawei Matebook E Go Embedded Controller
 *
 * Copyright (C) 2024-2025 Pengyu Luo <mitltlatltl@gmail.com>
 */


#ifndef __HUAWEI_GAOKUN_EC_H__
#define __HUAWEI_GAOKUN_EC_H__

#define GAOKUN_UCSI_CCI_SIZE 4
#define GAOKUN_UCSI_MSGI_SIZE 16
#define GAOKUN_UCSI_READ_SIZE (GAOKUN_UCSI_CCI_SIZE + GAOKUN_UCSI_MSGI_SIZE)
#define GAOKUN_UCSI_WRITE_SIZE 24 /* 8B CTRL, 16B MSGO */

#define GAOKUN_UCSI_NO_PORT_UPDATE (-1)

#define GAOKUN_SMART_CHARGE_DATA_SIZE 4 /* mode, delay, start, end */

/* -------------------------------------------------------------------------- */

struct gaokun_ec;
struct gaokun_ucsi_reg;
struct notifier_block;

#define GAOKUN_MOD_NAME   "huawei_gaokun_ec"
#define GAOKUN_DEV_PSY   "psy"
#define GAOKUN_DEV_UCSI   "ucsi"

/* -------------------------------------------------------------------------- */
/* Common API */

int gaokun_ec_register_notify(struct gaokun_ec *ec,
         struct notifier_block *nb);
void gaokun_ec_unregister_notify(struct gaokun_ec *ec,
     struct notifier_block *nb);

int gaokun_ec_read(struct gaokun_ec *ec, const u8 *req,
     size_t resp_len, u8 *resp);
int gaokun_ec_write(struct gaokun_ec *ec, const u8 *req);
int gaokun_ec_read_byte(struct gaokun_ec *ec, const u8 *req, u8 *byte);

/* -------------------------------------------------------------------------- */
/* API for PSY */

int gaokun_ec_psy_multi_read(struct gaokun_ec *ec, u8 reg,
        size_t resp_len, u8 *resp);

static inline int gaokun_ec_psy_read_byte(struct gaokun_ec *ec,
       u8 reg, u8 *byte)
{
 return gaokun_ec_psy_multi_read(ec, reg, sizeof(*byte), byte);
}

static inline int gaokun_ec_psy_read_word(struct gaokun_ec *ec,
       u8 reg, u16 *word)
{
 return gaokun_ec_psy_multi_read(ec, reg, sizeof(*word), (u8 *)word);
}

int gaokun_ec_psy_get_smart_charge(struct gaokun_ec *ec,
       u8 resp[GAOKUN_SMART_CHARGE_DATA_SIZE]);
int gaokun_ec_psy_set_smart_charge(struct gaokun_ec *ec,
       const u8 req[GAOKUN_SMART_CHARGE_DATA_SIZE]);

int gaokun_ec_psy_get_smart_charge_enable(struct gaokun_ec *ec, bool *on);
int gaokun_ec_psy_set_smart_charge_enable(struct gaokun_ec *ec, bool on);

/* -------------------------------------------------------------------------- */
/* API for UCSI */

int gaokun_ec_ucsi_read(struct gaokun_ec *ec, u8 resp[GAOKUN_UCSI_READ_SIZE]);
int gaokun_ec_ucsi_write(struct gaokun_ec *ec,
    const u8 req[GAOKUN_UCSI_WRITE_SIZE]);

int gaokun_ec_ucsi_get_reg(struct gaokun_ec *ec, struct gaokun_ucsi_reg *ureg);
int gaokun_ec_ucsi_pan_ack(struct gaokun_ec *ec, int port_id);

#endif /* __HUAWEI_GAOKUN_EC_H__ */

Messung V0.5
C=91 H=99 G=94

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.