Lines Matching refs:ec_lpc

87 	int (*read)(struct cros_ec_lpc *ec_lpc, unsigned int offset,
89 int (*write)(struct cros_ec_lpc *ec_lpc, unsigned int offset,
135 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
147 cros_ec_lpc_read_bytes(ec_lpc, offset, length, dest); in cros_ec_lpc_mec_read_bytes()
154 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
166 cros_ec_lpc_write_bytes(ec_lpc, offset, length, msg); in cros_ec_lpc_mec_write_bytes()
169 static int cros_ec_lpc_direct_read(struct cros_ec_lpc *ec_lpc, unsigned int offset, in cros_ec_lpc_direct_read() argument
177 return cros_ec_lpc_read_bytes(ec_lpc, offset, length, dest); in cros_ec_lpc_direct_read()
181 dest[i] = readb(ec_lpc->base + offset - EC_HOST_CMD_REGION0 + i); in cros_ec_lpc_direct_read()
189 static int cros_ec_lpc_direct_write(struct cros_ec_lpc *ec_lpc, unsigned int offset, in cros_ec_lpc_direct_write() argument
197 return cros_ec_lpc_write_bytes(ec_lpc, offset, length, msg); in cros_ec_lpc_direct_write()
201 writeb(msg[i], ec_lpc->base + offset - EC_HOST_CMD_REGION0 + i); in cros_ec_lpc_direct_write()
209 static int ec_response_timed_out(struct cros_ec_lpc *ec_lpc) in ec_response_timed_out() argument
217 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_CMD, 1, &data); in ec_response_timed_out()
231 struct cros_ec_lpc *ec_lpc = ec->priv; in cros_ec_pkt_xfer_lpc() local
242 ret = ec_lpc->write(ec_lpc, EC_LPC_ADDR_HOST_PACKET, ret, ec->dout); in cros_ec_pkt_xfer_lpc()
248 ret = ec_lpc->write(ec_lpc, EC_LPC_ADDR_HOST_CMD, 1, &sum); in cros_ec_pkt_xfer_lpc()
252 ret = ec_response_timed_out(ec_lpc); in cros_ec_pkt_xfer_lpc()
262 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_DATA, 1, &sum); in cros_ec_pkt_xfer_lpc()
272 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_PACKET, sizeof(response), in cros_ec_pkt_xfer_lpc()
289 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_PACKET + in cros_ec_pkt_xfer_lpc()
313 struct cros_ec_lpc *ec_lpc = ec->priv; in cros_ec_cmd_xfer_lpc() local
335 ret = ec_lpc->write(ec_lpc, EC_LPC_ADDR_HOST_PARAM, msg->outsize, in cros_ec_cmd_xfer_lpc()
343 ret = ec_lpc->write(ec_lpc, EC_LPC_ADDR_HOST_ARGS, sizeof(args), in cros_ec_cmd_xfer_lpc()
350 ret = ec_lpc->write(ec_lpc, EC_LPC_ADDR_HOST_CMD, 1, &sum); in cros_ec_cmd_xfer_lpc()
354 ret = ec_response_timed_out(ec_lpc); in cros_ec_cmd_xfer_lpc()
364 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_DATA, 1, &sum); in cros_ec_cmd_xfer_lpc()
373 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_ARGS, sizeof(args), (u8 *)&args); in cros_ec_cmd_xfer_lpc()
389 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_HOST_PARAM, args.data_size, in cros_ec_cmd_xfer_lpc()
414 struct cros_ec_lpc *ec_lpc = ec->priv; in cros_ec_lpc_readmem() local
425 ret = ec_lpc->read(ec_lpc, ec_lpc->mmio_memory_base + offset, bytes, s); in cros_ec_lpc_readmem()
433 ret = ec_lpc->read(ec_lpc, ec_lpc->mmio_memory_base + i, 1, s); in cros_ec_lpc_readmem()
499 struct cros_ec_lpc *ec_lpc = data; in cros_ec_lpc_resources() local
503 ec_lpc->mem32 = res->data.fixed_memory32; in cros_ec_lpc_resources()
517 struct cros_ec_lpc *ec_lpc; in cros_ec_lpc_probe() local
523 ec_lpc = devm_kzalloc(dev, sizeof(*ec_lpc), GFP_KERNEL); in cros_ec_lpc_probe()
524 if (!ec_lpc) in cros_ec_lpc_probe()
527 ec_lpc->mmio_memory_base = EC_LPC_ADDR_MEMMAP; in cros_ec_lpc_probe()
540 ec_lpc->mmio_memory_base = driver_data->quirk_mmio_memory_base; in cros_ec_lpc_probe()
568 cros_ec_lpc_resources, ec_lpc); in cros_ec_lpc_probe()
569 if (ACPI_SUCCESS(status) && ec_lpc->mem32.address_length) { in cros_ec_lpc_probe()
570 ec_lpc->base = devm_ioremap(dev, in cros_ec_lpc_probe()
571 ec_lpc->mem32.address, in cros_ec_lpc_probe()
572 ec_lpc->mem32.address_length); in cros_ec_lpc_probe()
573 if (!ec_lpc->base) in cros_ec_lpc_probe()
576 ec_lpc->read = cros_ec_lpc_direct_read; in cros_ec_lpc_probe()
577 ec_lpc->write = cros_ec_lpc_direct_write; in cros_ec_lpc_probe()
580 if (!ec_lpc->read) { in cros_ec_lpc_probe()
601 ec_lpc->read = cros_ec_lpc_mec_read_bytes; in cros_ec_lpc_probe()
602 ec_lpc->write = cros_ec_lpc_mec_write_bytes; in cros_ec_lpc_probe()
604 ret = ec_lpc->read(ec_lpc, EC_LPC_ADDR_MEMMAP + EC_MEMMAP_ID, 2, buf); in cros_ec_lpc_probe()
608 if (!devm_request_region(dev, ec_lpc->mmio_memory_base, EC_MEMMAP_SIZE, in cros_ec_lpc_probe()
615 ec_lpc->read = cros_ec_lpc_read_bytes; in cros_ec_lpc_probe()
616 ec_lpc->write = cros_ec_lpc_write_bytes; in cros_ec_lpc_probe()
617 ret = ec_lpc->read(ec_lpc, ec_lpc->mmio_memory_base + EC_MEMMAP_ID, 2, in cros_ec_lpc_probe()
653 ec_dev->priv = ec_lpc; in cros_ec_lpc_probe()