cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cyttsp_i2c.c (1917B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * cyttsp_i2c.c
      4 * Cypress TrueTouch(TM) Standard Product (TTSP) I2C touchscreen driver.
      5 * For use with Cypress Txx3xx parts.
      6 * Supported parts include:
      7 * CY8CTST341
      8 * CY8CTMA340
      9 *
     10 * Copyright (C) 2009, 2010, 2011 Cypress Semiconductor, Inc.
     11 * Copyright (C) 2012 Javier Martinez Canillas <javier@dowhile0.org>
     12 *
     13 * Contact Cypress Semiconductor at www.cypress.com <ttdrivers@cypress.com>
     14 */
     15
     16#include "cyttsp_core.h"
     17
     18#include <linux/i2c.h>
     19#include <linux/input.h>
     20
     21#define CY_I2C_NAME		"cyttsp-i2c"
     22
     23#define CY_I2C_DATA_SIZE	128
     24
     25static const struct cyttsp_bus_ops cyttsp_i2c_bus_ops = {
     26	.bustype	= BUS_I2C,
     27	.write		= cyttsp_i2c_write_block_data,
     28	.read           = cyttsp_i2c_read_block_data,
     29};
     30
     31static int cyttsp_i2c_probe(struct i2c_client *client,
     32				      const struct i2c_device_id *id)
     33{
     34	struct cyttsp *ts;
     35
     36	if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
     37		dev_err(&client->dev, "I2C functionality not Supported\n");
     38		return -EIO;
     39	}
     40
     41	ts = cyttsp_probe(&cyttsp_i2c_bus_ops, &client->dev, client->irq,
     42			  CY_I2C_DATA_SIZE);
     43
     44	if (IS_ERR(ts))
     45		return PTR_ERR(ts);
     46
     47	i2c_set_clientdata(client, ts);
     48	return 0;
     49}
     50
     51static const struct i2c_device_id cyttsp_i2c_id[] = {
     52	{ CY_I2C_NAME, 0 },
     53	{ }
     54};
     55MODULE_DEVICE_TABLE(i2c, cyttsp_i2c_id);
     56
     57static const struct of_device_id cyttsp_of_i2c_match[] = {
     58	{ .compatible = "cypress,cy8ctma340", },
     59	{ .compatible = "cypress,cy8ctst341", },
     60	{ /* sentinel */ }
     61};
     62MODULE_DEVICE_TABLE(of, cyttsp_of_i2c_match);
     63
     64static struct i2c_driver cyttsp_i2c_driver = {
     65	.driver = {
     66		.name	= CY_I2C_NAME,
     67		.pm	= &cyttsp_pm_ops,
     68		.of_match_table = cyttsp_of_i2c_match,
     69	},
     70	.probe		= cyttsp_i2c_probe,
     71	.id_table	= cyttsp_i2c_id,
     72};
     73
     74module_i2c_driver(cyttsp_i2c_driver);
     75
     76MODULE_LICENSE("GPL");
     77MODULE_DESCRIPTION("Cypress TrueTouch(R) Standard Product (TTSP) I2C driver");
     78MODULE_AUTHOR("Cypress");