| /linux/arch/arm/mach-rpc/ |
| H A D | ecard.c | 58 ecard_t *ec; member 70 void (*init)(ecard_t *ec); 77 static void atomwide_3p_quirk(ecard_t *ec); 121 struct expansion_card *ec = req->ec; in ecard_task_reset() local 124 res = ec->slot_no == 8 in ecard_task_reset() 125 ? &ec->resource[ECARD_RES_MEMC] in ecard_task_reset() 126 : ec->easi in ecard_task_reset() 127 ? &ec->resource[ECARD_RES_EASI] in ecard_task_reset() 128 : &ec->resource[ECARD_RES_IOCSYNC]; in ecard_task_reset() 130 ecard_loader_reset(res->start, ec->loader); in ecard_task_reset() [all …]
|
| /linux/drivers/md/ |
| H A D | dm-ebs-target.c | 37 static inline sector_t __sector_to_block(struct ebs_c *ec, sector_t sector) in __sector_to_block() argument 39 return sector >> ec->block_shift; in __sector_to_block() 48 static inline unsigned int __nr_blocks(struct ebs_c *ec, struct bio *bio) in __nr_blocks() argument 50 sector_t end_sector = __block_mod(bio->bi_iter.bi_sector, ec->u_bs) + bio_sectors(bio); in __nr_blocks() 52 return __sector_to_block(ec, end_sector) + (__block_mod(end_sector, ec->u_bs) ? 1 : 0); in __nr_blocks() 65 static int __ebs_rw_bvec(struct ebs_c *ec, enum req_op op, struct bio_vec *bv, in __ebs_rw_bvec() argument 72 unsigned int buf_off = to_bytes(__block_mod(iter->bi_sector, ec->u_bs)); in __ebs_rw_bvec() 73 sector_t block = __sector_to_block(ec, iter->bi_sector); in __ebs_rw_bvec() 83 cur_len = min(dm_bufio_get_block_size(ec->bufio) - buf_off, bv_len); in __ebs_rw_bvec() 86 if (op == REQ_OP_READ || buf_off || bv_len < dm_bufio_get_block_size(ec->bufio)) in __ebs_rw_bvec() [all …]
|
| /linux/drivers/platform/chrome/wilco_ec/ |
| H A D | core.c | 7 * This is the entry point for the drivers that control the Wilco EC. 14 #include <linux/platform_data/wilco-ec.h> 19 #define DRV_NAME "wilco-ec" 40 struct wilco_ec_device *ec; in wilco_ec_probe() local 43 ec = devm_kzalloc(dev, sizeof(*ec), GFP_KERNEL); in wilco_ec_probe() 44 if (!ec) in wilco_ec_probe() 47 platform_set_drvdata(pdev, ec); in wilco_ec_probe() 48 ec->dev = dev; in wilco_ec_probe() 49 mutex_init(&ec->mailbox_lock); in wilco_ec_probe() 51 ec->data_size = sizeof(struct wilco_ec_response) + EC_MAILBOX_DATA_SIZE; in wilco_ec_probe() [all …]
|
| H A D | mailbox.c | 7 * The Wilco EC is similar to a typical ChromeOS embedded controller. 9 * protocol, but with some important differences. The EC firmware does 21 #include <linux/platform_data/wilco-ec.h> 32 /* Version of EC protocol */ 41 /* EC response flags */ 43 #define EC_CMDR_PENDING BIT(1) /* Write pending to EC */ 44 #define EC_CMDR_BUSY BIT(2) /* EC is busy processing a command */ 48 * wilco_ec_response_timed_out() - Wait for EC response. 49 * @ec: EC device. 51 * Return: true if EC timed out, false if EC did not time out. [all …]
|
| H A D | keyboard_leds.c | 7 * Since the EC will never change the backlight level of its own accord, 14 #include <linux/platform_data/wilco-ec.h> 22 struct wilco_ec_device *ec; member 33 * struct wilco_keyboard_leds_msg - Message to/from EC for keyboard LED control. 35 * @status: Set by EC to 0 on success, 0xFF on failure. 55 static int send_kbbl_msg(struct wilco_ec_device *ec, in send_kbbl_msg() argument 69 ret = wilco_ec_mailbox(ec, &msg); in send_kbbl_msg() 71 dev_err(ec->dev, in send_kbbl_msg() 79 static int set_kbbl(struct wilco_ec_device *ec, enum led_brightness brightness) in set_kbbl() argument 91 ret = send_kbbl_msg(ec, &request, &response); in set_kbbl() [all …]
|
| H A D | sysfs.c | 5 * Sysfs properties to view and modify EC-controlled features on Wilco devices. 8 * See Documentation/ABI/testing/sysfs-platform-wilco-ec for more information. 13 #include <linux/platform_data/wilco-ec.h> 46 u8 status; /* Set by EC to 0 on success, other value on failure */ 47 u8 val; /* When getting, set by EC to either 0 or 1 */ 73 struct wilco_ec_device *ec = dev_get_drvdata(dev); in boot_on_ac_store() local 94 ret = wilco_ec_mailbox(ec, &msg); in boot_on_ac_store() 105 struct wilco_ec_device *ec = dev_get_drvdata(dev); in get_info() local 118 ret = wilco_ec_mailbox(ec, &msg); in get_info() 157 static int send_usb_charge(struct wilco_ec_device *ec, in send_usb_charge() argument [all …]
|
| /linux/drivers/platform/olpc/ |
| H A D | olpc-ec.c | 19 #include <linux/olpc-ec.h> 42 /* Pending EC commands */ 49 * EC event mask to be applied during suspend (defining wakeup 55 * Running an EC command while suspending means we don't always finish 56 * the command before the machine suspends. This means that the EC 58 * of time (while the OS is asleep) the EC times out and restarts its 61 * the EC... and everyone's uphappy. 79 struct olpc_ec_priv *ec = container_of(w, struct olpc_ec_priv, worker); in olpc_ec_worker() local 84 spin_lock_irqsave(&ec->cmd_q_lock, flags); in olpc_ec_worker() 85 if (!list_empty(&ec->cmd_q)) { in olpc_ec_worker() [all …]
|
| /linux/drivers/mfd/ |
| H A D | cros_ec_dev.c | 20 #define DRV_NAME "cros-ec-dev" 74 { .name = "cros-ec-cec", }, 78 { .name = "cros-ec-gpio", }, 82 { .name = "cros-ec-rtc", }, 86 { .name = "cros-ec-sensorhub", }, 99 { .name = "cros-ec-wdt", } 103 { .name = "cros-ec-led", }, 157 { .name = "cros-ec-chardev", }, 158 { .name = "cros-ec-debugfs", }, 159 { .name = "cros-ec-hwmon", }, [all …]
|
| H A D | ntxec.c | 150 struct ntxec *ec; in ntxec_probe() local 156 ec = devm_kmalloc(&client->dev, sizeof(*ec), GFP_KERNEL); in ntxec_probe() 157 if (!ec) in ntxec_probe() 160 ec->dev = &client->dev; in ntxec_probe() 162 ec->regmap = devm_regmap_init_i2c(client, ®map_config); in ntxec_probe() 163 if (IS_ERR(ec->regmap)) { in ntxec_probe() 164 dev_err(ec->dev, "Failed to set up regmap for device\n"); in ntxec_probe() 165 return PTR_ERR(ec->regmap); in ntxec_probe() 169 res = regmap_read(ec->regmap, NTXEC_REG_VERSION, &version); in ntxec_probe() 171 dev_err(ec->dev, "Failed to read firmware version number\n"); in ntxec_probe() [all …]
|
| /linux/drivers/platform/chrome/ |
| H A D | cros_ec_sensorhub.c | 20 #define DRV_NAME "cros-ec-sensorhub" 56 struct cros_ec_dev *ec = sensorhub->ec; in cros_ec_sensorhub_register() local 71 ret = cros_ec_cmd_xfer_status(ec->ec_dev, msg); in cros_ec_sensorhub_register() 73 /* The EC is still busy initializing sensors. */ in cros_ec_sensorhub_register() 80 dev_err(dev, "no info for EC sensor %d : %d/%d\n", in cros_ec_sensorhub_register() 91 name = "cros-ec-accel"; in cros_ec_sensorhub_register() 94 name = "cros-ec-baro"; in cros_ec_sensorhub_register() 97 name = "cros-ec-gyro"; in cros_ec_sensorhub_register() 100 name = "cros-ec-mag"; in cros_ec_sensorhub_register() 103 name = "cros-ec-prox"; in cros_ec_sensorhub_register() [all …]
|
| H A D | cros_ec_debugfs.c | 2 // Debug logs for the ChromeOS EC 20 #define DRV_NAME "cros-ec-debugfs" 30 MODULE_PARM_DESC(log_poll_period_ms, "EC log polling period(ms)"); 36 * struct cros_ec_debugfs - EC debugging information. 38 * @ec: EC device this debugfs information belongs to 41 * @read_msg: preallocated EC command and buffer to read console log 43 * @log_poll_work: recurring task to poll EC for new console log data 46 * when EC panic 49 struct cros_ec_dev *ec; member 51 /* EC log */ [all …]
|
| H A D | cros_ec_proto.c | 2 // ChromeOS EC communication protocol helper functions 117 int (*xfer_fxn)(struct cros_ec_device *ec, struct cros_ec_command *msg); in cros_ec_xfer_command() 127 * the EC is trying to use protocol v2, on an underlying in cros_ec_xfer_command() 130 dev_err_once(ec_dev->dev, "missing EC transfer API, cannot send command\n"); in cros_ec_xfer_command() 154 /* Query the EC's status until it's no longer busy or we encounter an error. */ in cros_ec_wait_until_complete() 198 * This is used by all ChromeOS EC drivers to prepare the outgoing message 215 * @ec_dev: EC device. 218 * This is used by ChromeOS EC drivers to check the ec_msg->result for 249 * @ec_dev: EC device to call 322 * is not supported or EC is already in RW, so there is in cros_ec_rwsig_continue() [all …]
|
| H A D | cros_ec_lightbar.c | 21 #define DRV_NAME "cros-ec-lightbar" 98 static struct cros_ec_command *alloc_lightbar_cmd_msg(struct cros_ec_dev *ec) in alloc_lightbar_cmd_msg() argument 100 int len = max(ec->ec_dev->max_response, ec->ec_dev->max_request); in alloc_lightbar_cmd_msg() 108 msg->command = EC_CMD_LIGHTBAR_CMD + ec->cmd_offset; in alloc_lightbar_cmd_msg() 120 static int get_lightbar_version(struct cros_ec_dev *ec, in get_lightbar_version() argument 128 msg = alloc_lightbar_cmd_msg(ec); in get_lightbar_version() 136 ret = cros_ec_cmd_xfer_status(ec->ec_dev, msg); in get_lightbar_version() 175 struct cros_ec_dev *ec = to_cros_ec_dev(dev); in version_show() local 183 if (!get_lightbar_version(ec, &version, &flags)) in version_show() 195 struct cros_ec_dev *ec = to_cros_ec_dev(dev); in num_segments_show() local [all …]
|
| H A D | cros_ec_sysfs.c | 2 // Expose the ChromeOS EC through sysfs 21 #define DRV_NAME "cros-ec-sysfs" 59 struct cros_ec_dev *ec = to_cros_ec_dev(dev); in reboot_store() local 99 msg->command = EC_CMD_REBOOT_EC + ec->cmd_offset; in reboot_store() 102 ret = cros_ec_cmd_xfer_status(ec->ec_dev, msg); in reboot_store() 120 struct cros_ec_dev *ec = to_cros_ec_dev(dev); in version_show() local 128 msg->command = EC_CMD_GET_VERSION + ec->cmd_offset; in version_show() 131 ret = cros_ec_cmd_xfer_status(ec->ec_dev, msg); in version_show() 147 msg->command = EC_CMD_GET_BUILD_INFO + ec->cmd_offset; in version_show() 149 ret = cros_ec_cmd_xfer_status(ec->ec_dev, msg); in version_show() [all …]
|
| /linux/include/linux/platform_data/ |
| H A D | wilco-ec.h | 15 #define WILCO_EC_FLAG_NO_RESPONSE BIT(0) /* EC does not respond */ 31 * @data_buffer: Buffer used for EC communication. The same buffer 33 * @data_size: Size of the data buffer used for EC communication. 75 * @result: Result code from the EC. Non-zero indicates an error. 91 * @WILCO_EC_MSG_LEGACY: Legacy EC messages for standard EC behavior. 92 * @WILCO_EC_MSG_PROPERTY: Get/Set/Sync EC controlled NVRAM property. 93 * @WILCO_EC_MSG_TELEMETRY: Request telemetry data from the EC. 105 * @request_size: Number of bytes to send to the EC. 107 * @response_size: Number of bytes to read from EC. 121 * wilco_ec_mailbox() - Send request to the EC and receive the response. [all …]
|
| H A D | cros_ec_proto.h | 29 * The EC is unresponsive for a time after a reboot command. Add a 56 * EC panic is not covered by the standard (0-F) ACPI notify values. 57 * Arbitrarily choosing B0 to notify ec panic, which is in the 84-BF 63 * Command interface between EC and AP, for LPC, I2C and SPI interfaces. 80 * struct cros_ec_command - Information about a ChromeOS EC command. 84 * @insize: Max number of bytes to accept from the EC. 85 * @result: EC's response to the command (separate from communication failure). 86 * @data: Where to put the incoming data from EC and outgoing data to EC. 98 * struct cros_ec_device - Information about a ChromeOS EC device. 102 * @cmd_readmem: Direct read of the EC memory-mapped region, if supported. [all …]
|
| /linux/Documentation/ABI/testing/ |
| H A D | debugfs-cros-ec | 1 What: /sys/kernel/debug/<cros-ec-device>/console_log 5 If the EC supports the CONSOLE_READ command type, this file 6 can be used to grab the EC logs. The kernel polls for the log 10 What: /sys/kernel/debug/<cros-ec-device>/panicinfo 14 This file dumps the EC panic information from the previous 16 type is supported by the EC. 18 What: /sys/kernel/debug/<cros-ec-device>/pdinfo 27 What: /sys/kernel/debug/<cros-ec-device>/uptime 31 A u32 providing the time since EC booted in ms. This is 32 is used for synchronizing the AP host time with the EC [all …]
|
| /linux/drivers/ata/ |
| H A D | pata_icside.c | 64 struct expansion_card *ec; member 83 /* Prototype: pata_icside_irqenable_arcin_v5 (struct expansion_card *ec, int irqnr) 86 static void pata_icside_irqenable_arcin_v5 (struct expansion_card *ec, int irqnr) in pata_icside_irqenable_arcin_v5() argument 88 struct pata_icside_state *state = ec->irq_data; in pata_icside_irqenable_arcin_v5() 93 /* Prototype: pata_icside_irqdisable_arcin_v5 (struct expansion_card *ec, int irqnr) 96 static void pata_icside_irqdisable_arcin_v5 (struct expansion_card *ec, int irqnr) in pata_icside_irqdisable_arcin_v5() argument 98 struct pata_icside_state *state = ec->irq_data; in pata_icside_irqdisable_arcin_v5() 110 /* Prototype: pata_icside_irqenable_arcin_v6 (struct expansion_card *ec, int irqnr) 113 static void pata_icside_irqenable_arcin_v6 (struct expansion_card *ec, int irqnr) in pata_icside_irqenable_arcin_v6() argument 115 struct pata_icside_state *state = ec->irq_data; in pata_icside_irqenable_arcin_v6() [all …]
|
| /linux/drivers/scsi/arm/ |
| H A D | powertec.c | 62 struct expansion_card *ec; member 68 /* Prototype: void powertecscsi_irqenable(ec, irqnr) 70 * Params : ec - expansion card structure 74 powertecscsi_irqenable(struct expansion_card *ec, int irqnr) in powertecscsi_irqenable() argument 76 struct powertec_info *info = ec->irq_data; in powertecscsi_irqenable() 80 /* Prototype: void powertecscsi_irqdisable(ec, irqnr) 82 * Params : ec - expansion card structure 86 powertecscsi_irqdisable(struct expansion_card *ec, int irqnr) in powertecscsi_irqdisable() argument 88 struct powertec_info *info = ec->irq_data; in powertecscsi_irqdisable() 193 host->hostt->name, info->info.scsi.type, info->ec->slot_no, in powertecscsi_info() [all …]
|
| H A D | eesox.c | 74 struct expansion_card *ec; member 81 /* Prototype: void eesoxscsi_irqenable(ec, irqnr) 83 * Params : ec - expansion card structure 87 eesoxscsi_irqenable(struct expansion_card *ec, int irqnr) in eesoxscsi_irqenable() argument 89 struct eesoxscsi_info *info = (struct eesoxscsi_info *)ec->irq_data; in eesoxscsi_irqenable() 96 /* Prototype: void eesoxscsi_irqdisable(ec, irqnr) 98 * Params : ec - expansion card structure 102 eesoxscsi_irqdisable(struct expansion_card *ec, int irqnr) in eesoxscsi_irqdisable() argument 104 struct eesoxscsi_info *info = (struct eesoxscsi_info *)ec->irq_data; in eesoxscsi_irqdisable() 390 host->hostt->name, info->info.scsi.type, info->ec->slot_no, in eesoxscsi_info() [all …]
|
| /linux/drivers/iio/proximity/ |
| H A D | cros_ec_mkbp_proximity.c | 3 * Driver for cros-ec proximity sensor exposed through MKBP switch 26 struct cros_ec_device *ec; member 97 struct cros_ec_device *ec = data->ec; in cros_ec_mkbp_proximity_push_event() local 102 timestamp = ktime_to_ns(ec->last_event_time); in cros_ec_mkbp_proximity_push_event() 121 struct cros_ec_device *ec = _ec; in cros_ec_mkbp_proximity_notify() local 122 u8 event_type = ec->event_data.event_type & EC_MKBP_EVENT_TYPE_MASK; in cros_ec_mkbp_proximity_notify() 130 switches = &ec->event_data.data.switches; in cros_ec_mkbp_proximity_notify() 143 struct cros_ec_device *ec = data->ec; in cros_ec_mkbp_proximity_read_raw() local 146 return cros_ec_mkbp_proximity_query(ec, val); in cros_ec_mkbp_proximity_read_raw() 184 struct cros_ec_device *ec = data->ec; in cros_ec_mkbp_proximity_resume() local [all …]
|
| /linux/arch/x86/platform/olpc/ |
| H A D | olpc.c | 3 * Support for the OLPC DCON and OLPC EC access 19 #include <linux/olpc-ec.h> 32 /* the timeout that bugs in the EC might force us to actually use */ 39 printk(KERN_ERR "olpc-ec: invalid argument to " in olpc_ec_timeout_set() 42 printk(KERN_DEBUG "olpc-ec: using %d ms delay for EC commands.\n", in olpc_ec_timeout_set() 75 printk(KERN_WARNING "olpc-ec: %d: waited %u ms for IBF!\n", in __wait_on_ibf() 95 printk(KERN_WARNING "olpc-ec: %d: waited %u ms for OBF!\n", in __wait_on_obf() 103 * This allows the kernel to run Embedded Controller commands. The EC is 105 * available EC commands are here: 107 * OpenFirmware's source is available, the EC's is not. [all …]
|
| /linux/drivers/platform/arm64/ |
| H A D | qcom-hamoa-ec.c | 86 static int qcom_ec_read(struct qcom_ec *ec, u8 cmd, u8 resp_len, u8 *resp) in qcom_ec_read() argument 90 ret = i2c_smbus_read_i2c_block_data(ec->client, cmd, resp_len, resp); in qcom_ec_read() 105 * EC Device Firmware Version: 114 * | 0x01 | Test-version | Test-version of EC firmware | 116 * | 0x02 | Sub-version | Sub-version of EC firmware | 118 * | 0x03 | Main-version | Main-version of EC firmware | 125 struct qcom_ec *ec = i2c_get_clientdata(client); in qcom_ec_read_fw_version() local 126 struct qcom_ec_version *version = &ec->version; in qcom_ec_read_fw_version() 130 ret = qcom_ec_read(ec, EC_FW_VERSION_CMD, EC_FW_VERSION_RESP_LEN, resp); in qcom_ec_read_fw_version() 138 dev_dbg(dev, "EC Version %d.%d.%d\n", in qcom_ec_read_fw_version() [all …]
|
| /linux/drivers/i2c/busses/ |
| H A D | i2c-cros-ec-tunnel.c | 2 // Expose an I2C passthrough to the ChromeOS EC. 21 * @ec: Pointer to EC device 22 * @remote_bus: The EC bus number we tunnel to on the other side. 30 struct cros_ec_device *ec; member 61 * ec_i2c_construct_message - construct a message to go to the EC 64 * a format that the EC understands. 129 * ec_i2c_parse_response - Parse a response from the EC 131 * We'll take the EC's response and copy it back into msgs. 206 dev_err(dev, "Error constructing EC i2c message %d\n", result); in ec_i2c_xfer() 215 result = cros_ec_cmd_xfer_status(bus->ec, msg); in ec_i2c_xfer() [all …]
|
| /linux/drivers/power/supply/ |
| H A D | lenovo_yoga_c630_battery.c | 20 struct yoga_c630_ec *ec; member 73 struct yoga_c630_ec *ec = ecbat->ec; in yoga_c630_psy_update_bat_info() local 78 val = yoga_c630_ec_read8(ec, LENOVO_EC_BAT_PRESENT); in yoga_c630_psy_update_bat_info() 85 val = yoga_c630_ec_read8(ec, LENOVO_EC_BAT_ATTRIBUTES); in yoga_c630_psy_update_bat_info() 90 val = yoga_c630_ec_read16(ec, LENOVO_EC_BAT_DESIGN_CAPACITY); in yoga_c630_psy_update_bat_info() 96 * DSDT has delays after most of EC reads in these methods. in yoga_c630_psy_update_bat_info() 97 * Having no documentation for the EC we have to follow and sleep here. in yoga_c630_psy_update_bat_info() 101 val = yoga_c630_ec_read16(ec, LENOVO_EC_BAT_DESIGN_VOLTAGE); in yoga_c630_psy_update_bat_info() 108 val = yoga_c630_ec_read8(ec, LENOVO_EC_BAT_FULL_REGISTER); in yoga_c630_psy_update_bat_info() 111 val = yoga_c630_ec_read16(ec, in yoga_c630_psy_update_bat_info() [all …]
|