i2c.h (6364180582b769b8fb8fba83511748af3b2c9efd) i2c.h (83276e1f952d720c23092ea17e95c03fef8476b7)
1/*-
2 * Copyright (c) 2021 Beckhoff Automation GmbH & Co. KG
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.

--- 32 unchanged lines hidden (view full) ---

41
42/* No need for us */
43#define I2C_FUNC_I2C 0
44#define I2C_FUNC_SMBUS_EMUL 0
45#define I2C_FUNC_SMBUS_READ_BLOCK_DATA 0
46#define I2C_FUNC_SMBUS_BLOCK_PROC_CALL 0
47#define I2C_FUNC_10BIT_ADDR 0
48
1/*-
2 * Copyright (c) 2021 Beckhoff Automation GmbH & Co. KG
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.

--- 32 unchanged lines hidden (view full) ---

41
42/* No need for us */
43#define I2C_FUNC_I2C 0
44#define I2C_FUNC_SMBUS_EMUL 0
45#define I2C_FUNC_SMBUS_READ_BLOCK_DATA 0
46#define I2C_FUNC_SMBUS_BLOCK_PROC_CALL 0
47#define I2C_FUNC_10BIT_ADDR 0
48
49#define I2C_CLASS_HWMON 0x1
49#define I2C_CLASS_DDC 0x8
50#define I2C_CLASS_SPD 0x80
51
52struct i2c_adapter {
53 struct module *owner;
54 unsigned int class;
55
56 char name[I2C_MAX_ADAPTER_NAME_LENGTH];
57 struct device dev;
58
59 const struct i2c_lock_operations *lock_ops;
60 const struct i2c_algorithm *algo;
50#define I2C_CLASS_DDC 0x8
51#define I2C_CLASS_SPD 0x80
52
53struct i2c_adapter {
54 struct module *owner;
55 unsigned int class;
56
57 char name[I2C_MAX_ADAPTER_NAME_LENGTH];
58 struct device dev;
59
60 const struct i2c_lock_operations *lock_ops;
61 const struct i2c_algorithm *algo;
62 const struct i2c_adapter_quirks *quirks;
61 void *algo_data;
62
63 int retries;
64 void *data;
65};
66
67struct i2c_msg {
68 uint16_t addr;

--- 8 unchanged lines hidden (view full) ---

77};
78
79struct i2c_lock_operations {
80 void (*lock_bus)(struct i2c_adapter *, unsigned int);
81 int (*trylock_bus)(struct i2c_adapter *, unsigned int);
82 void (*unlock_bus)(struct i2c_adapter *, unsigned int);
83};
84
63 void *algo_data;
64
65 int retries;
66 void *data;
67};
68
69struct i2c_msg {
70 uint16_t addr;

--- 8 unchanged lines hidden (view full) ---

79};
80
81struct i2c_lock_operations {
82 void (*lock_bus)(struct i2c_adapter *, unsigned int);
83 int (*trylock_bus)(struct i2c_adapter *, unsigned int);
84 void (*unlock_bus)(struct i2c_adapter *, unsigned int);
85};
86
87struct i2c_adapter_quirks {
88 uint64_t flags;
89 int max_num_msgs;
90 uint16_t max_write_len;
91 uint16_t max_read_len;
92 uint16_t max_comb_1st_msg_len;
93 uint16_t max_comb_2nd_msg_len;
94};
95
96#define I2C_AQ_COMB BIT(0)
97#define I2C_AQ_COMB_WRITE_FIRST BIT(1)
98#define I2C_AQ_COMB_READ_SECOND BIT(2)
99#define I2C_AQ_COMB_SAME_ADDR BIT(3)
100#define I2C_AQ_COMB_WRITE_THEN_READ \
101 (I2C_AQ_COMB | I2C_AQ_COMB_WRITE_FIRST | \
102 I2C_AQ_COMB_READ_SECOND | I2C_AQ_COMB_SAME_ADDR)
103#define I2C_AQ_NO_CLK_STRETCH BIT(4)
104#define I2C_AQ_NO_ZERO_LEN_READ BIT(5)
105#define I2C_AQ_NO_ZERO_LEN_WRITE BIT(6)
106#define I2C_AQ_NO_ZERO_LEN \
107 (I2C_AQ_NO_ZERO_LEN_READ | I2C_AQ_NO_ZERO_LEN_WRITE)
108#define I2C_AQ_NO_REP_START BIT(7)
109
85int lkpi_i2c_add_adapter(struct i2c_adapter *adapter);
86int lkpi_i2c_del_adapter(struct i2c_adapter *adapter);
87
88int lkpi_i2cbb_transfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, int nmsgs);
89
90#define i2c_add_adapter(adapter) lkpi_i2c_add_adapter(adapter)
91#define i2c_del_adapter(adapter) lkpi_i2c_del_adapter(adapter)
92

--- 60 unchanged lines hidden ---
110int lkpi_i2c_add_adapter(struct i2c_adapter *adapter);
111int lkpi_i2c_del_adapter(struct i2c_adapter *adapter);
112
113int lkpi_i2cbb_transfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, int nmsgs);
114
115#define i2c_add_adapter(adapter) lkpi_i2c_add_adapter(adapter)
116#define i2c_del_adapter(adapter) lkpi_i2c_del_adapter(adapter)
117

--- 60 unchanged lines hidden ---