Lines Matching refs:ec_lpc

86 	int (*read)(struct cros_ec_lpc *ec_lpc, unsigned int offset,
88 int (*write)(struct cros_ec_lpc *ec_lpc, unsigned int offset,
134 static int cros_ec_lpc_mec_read_bytes(struct cros_ec_lpc *ec_lpc, unsigned int offset, in cros_ec_lpc_mec_read_bytes() argument
146 cros_ec_lpc_read_bytes(ec_lpc, offset, length, dest); in cros_ec_lpc_mec_read_bytes()
153 static int cros_ec_lpc_mec_write_bytes(struct cros_ec_lpc *ec_lpc, unsigned int offset, in cros_ec_lpc_mec_write_bytes() argument
165 cros_ec_lpc_write_bytes(ec_lpc, offset, length, msg); in cros_ec_lpc_mec_write_bytes()
168 static int cros_ec_lpc_direct_read(struct cros_ec_lpc *ec_lpc, unsigned int offset, in cros_ec_lpc_direct_read() argument
176 return cros_ec_lpc_read_bytes(ec_lpc, offset, length, dest); in cros_ec_lpc_direct_read()
180 dest[i] = readb(ec_lpc->base + offset - EC_HOST_CMD_REGION0 + i); in cros_ec_lpc_direct_read()
188 static int cros_ec_lpc_direct_write(struct cros_ec_lpc *ec_lpc, unsigned int offset, in cros_ec_lpc_direct_write() argument
196 return cros_ec_lpc_write_bytes(ec_lpc, offset, length, msg); in cros_ec_lpc_direct_write()
200 writeb(msg[i], ec_lpc->base + offset - EC_HOST_CMD_REGION0 + i); in cros_ec_lpc_direct_write()
208 static int ec_response_timed_out(struct cros_ec_lpc *ec_lpc) in ec_response_timed_out() argument
216 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_CMD, 1, &data); in ec_response_timed_out()
230 struct cros_ec_lpc *ec_lpc = ec->priv; in cros_ec_pkt_xfer_lpc() local
241 ret = ec_lpc->write(ec_lpc, EC_LPC_ADDR_HOST_PACKET, ret, ec->dout); in cros_ec_pkt_xfer_lpc()
247 ret = ec_lpc->write(ec_lpc, EC_LPC_ADDR_HOST_CMD, 1, &sum); in cros_ec_pkt_xfer_lpc()
251 ret = ec_response_timed_out(ec_lpc); in cros_ec_pkt_xfer_lpc()
261 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_DATA, 1, &sum); in cros_ec_pkt_xfer_lpc()
271 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_PACKET, sizeof(response), in cros_ec_pkt_xfer_lpc()
288 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_PACKET + in cros_ec_pkt_xfer_lpc()
312 struct cros_ec_lpc *ec_lpc = ec->priv; in cros_ec_cmd_xfer_lpc() local
334 ret = ec_lpc->write(ec_lpc, EC_LPC_ADDR_HOST_PARAM, msg->outsize, in cros_ec_cmd_xfer_lpc()
342 ret = ec_lpc->write(ec_lpc, EC_LPC_ADDR_HOST_ARGS, sizeof(args), in cros_ec_cmd_xfer_lpc()
349 ret = ec_lpc->write(ec_lpc, EC_LPC_ADDR_HOST_CMD, 1, &sum); in cros_ec_cmd_xfer_lpc()
353 ret = ec_response_timed_out(ec_lpc); in cros_ec_cmd_xfer_lpc()
363 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_DATA, 1, &sum); in cros_ec_cmd_xfer_lpc()
372 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_ARGS, sizeof(args), (u8 *)&args); in cros_ec_cmd_xfer_lpc()
388 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_PARAM, args.data_size, in cros_ec_cmd_xfer_lpc()
413 struct cros_ec_lpc *ec_lpc = ec->priv; in cros_ec_lpc_readmem() local
424 ret = ec_lpc->read(ec_lpc, ec_lpc->mmio_memory_base + offset, bytes, s); in cros_ec_lpc_readmem()
432 ret = ec_lpc->read(ec_lpc, ec_lpc->mmio_memory_base + i, 1, s); in cros_ec_lpc_readmem()
498 struct cros_ec_lpc *ec_lpc = data; in cros_ec_lpc_resources() local
502 ec_lpc->mem32 = res->data.fixed_memory32; in cros_ec_lpc_resources()
516 struct cros_ec_lpc *ec_lpc; in cros_ec_lpc_probe() local
522 ec_lpc = devm_kzalloc(dev, sizeof(*ec_lpc), GFP_KERNEL); in cros_ec_lpc_probe()
523 if (!ec_lpc) in cros_ec_lpc_probe()
526 ec_lpc->mmio_memory_base = EC_LPC_ADDR_MEMMAP; in cros_ec_lpc_probe()
536 ec_lpc->mmio_memory_base = driver_data->quirk_mmio_memory_base; in cros_ec_lpc_probe()
564 cros_ec_lpc_resources, ec_lpc); in cros_ec_lpc_probe()
565 if (ACPI_SUCCESS(status) && ec_lpc->mem32.address_length) { in cros_ec_lpc_probe()
566 ec_lpc->base = devm_ioremap(dev, in cros_ec_lpc_probe()
567 ec_lpc->mem32.address, in cros_ec_lpc_probe()
568 ec_lpc->mem32.address_length); in cros_ec_lpc_probe()
569 if (!ec_lpc->base) in cros_ec_lpc_probe()
572 ec_lpc->read = cros_ec_lpc_direct_read; in cros_ec_lpc_probe()
573 ec_lpc->write = cros_ec_lpc_direct_write; in cros_ec_lpc_probe()
576 if (!ec_lpc->read) { in cros_ec_lpc_probe()
597 ec_lpc->read = cros_ec_lpc_mec_read_bytes; in cros_ec_lpc_probe()
598 ec_lpc->write = cros_ec_lpc_mec_write_bytes; in cros_ec_lpc_probe()
600 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_MEMMAP + EC_MEMMAP_ID, 2, buf); in cros_ec_lpc_probe()
604 if (!devm_request_region(dev, ec_lpc->mmio_memory_base, EC_MEMMAP_SIZE, in cros_ec_lpc_probe()
611 ec_lpc->read = cros_ec_lpc_read_bytes; in cros_ec_lpc_probe()
612 ec_lpc->write = cros_ec_lpc_write_bytes; in cros_ec_lpc_probe()
613 ret = ec_lpc->read(ec_lpc, ec_lpc->mmio_memory_base + EC_MEMMAP_ID, 2, in cros_ec_lpc_probe()
649 ec_dev->priv = ec_lpc; in cros_ec_lpc_probe()