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

cyttsp4_i2c.c (1829B)


      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  Txx4xx parts.
      6 * Supported parts include:
      7 * TMA4XX
      8 * TMA1036
      9 *
     10 * Copyright (C) 2009, 2010, 2011 Cypress Semiconductor, Inc.
     11 * Copyright (C) 2012 Javier Martinez Canillas <javier@dowhile0.org>
     12 * Copyright (C) 2013 Cypress Semiconductor
     13 *
     14 * Contact Cypress Semiconductor at www.cypress.com <ttdrivers@cypress.com>
     15 */
     16
     17#include "cyttsp4_core.h"
     18
     19#include <linux/i2c.h>
     20#include <linux/input.h>
     21
     22#define CYTTSP4_I2C_DATA_SIZE	(3 * 256)
     23
     24static const struct cyttsp4_bus_ops cyttsp4_i2c_bus_ops = {
     25	.bustype	= BUS_I2C,
     26	.write		= cyttsp_i2c_write_block_data,
     27	.read           = cyttsp_i2c_read_block_data,
     28};
     29
     30static int cyttsp4_i2c_probe(struct i2c_client *client,
     31				      const struct i2c_device_id *id)
     32{
     33	struct cyttsp4 *ts;
     34
     35	if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
     36		dev_err(&client->dev, "I2C functionality not Supported\n");
     37		return -EIO;
     38	}
     39
     40	ts = cyttsp4_probe(&cyttsp4_i2c_bus_ops, &client->dev, client->irq,
     41			  CYTTSP4_I2C_DATA_SIZE);
     42
     43	return PTR_ERR_OR_ZERO(ts);
     44}
     45
     46static int cyttsp4_i2c_remove(struct i2c_client *client)
     47{
     48	struct cyttsp4 *ts = i2c_get_clientdata(client);
     49
     50	cyttsp4_remove(ts);
     51
     52	return 0;
     53}
     54
     55static const struct i2c_device_id cyttsp4_i2c_id[] = {
     56	{ CYTTSP4_I2C_NAME, 0 },
     57	{ }
     58};
     59MODULE_DEVICE_TABLE(i2c, cyttsp4_i2c_id);
     60
     61static struct i2c_driver cyttsp4_i2c_driver = {
     62	.driver = {
     63		.name	= CYTTSP4_I2C_NAME,
     64		.pm	= &cyttsp4_pm_ops,
     65	},
     66	.probe		= cyttsp4_i2c_probe,
     67	.remove		= cyttsp4_i2c_remove,
     68	.id_table	= cyttsp4_i2c_id,
     69};
     70
     71module_i2c_driver(cyttsp4_i2c_driver);
     72
     73MODULE_LICENSE("GPL");
     74MODULE_DESCRIPTION("Cypress TrueTouch(R) Standard Product (TTSP) I2C driver");
     75MODULE_AUTHOR("Cypress");