hid-mcp2221.c (975f2d73a99f35b57ffa2ad7bff8562225cdcfcb) hid-mcp2221.c (d9786159d229cdc1f579f7cf3abf464efb453e40)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * MCP2221A - Microchip USB to I2C Host Protocol Bridge
4 *
5 * Copyright (c) 2020, Rishi Gupta <gupt21@gmail.com>
6 *
7 * Datasheet: https://ww1.microchip.com/downloads/en/DeviceDoc/20005565B.pdf
8 */

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

1137 init_completion(&mcp->wait_in_report);
1138 hid_set_drvdata(hdev, mcp);
1139 mcp->hdev = hdev;
1140
1141 ret = devm_add_action_or_reset(&hdev->dev, mcp2221_hid_unregister, hdev);
1142 if (ret)
1143 return ret;
1144
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * MCP2221A - Microchip USB to I2C Host Protocol Bridge
4 *
5 * Copyright (c) 2020, Rishi Gupta <gupt21@gmail.com>
6 *
7 * Datasheet: https://ww1.microchip.com/downloads/en/DeviceDoc/20005565B.pdf
8 */

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

1137 init_completion(&mcp->wait_in_report);
1138 hid_set_drvdata(hdev, mcp);
1139 mcp->hdev = hdev;
1140
1141 ret = devm_add_action_or_reset(&hdev->dev, mcp2221_hid_unregister, hdev);
1142 if (ret)
1143 return ret;
1144
1145 hid_device_io_start(hdev);
1146
1147 /* Set I2C bus clock diviser */
1148 if (i2c_clk_freq > 400)
1149 i2c_clk_freq = 400;
1150 if (i2c_clk_freq < 50)
1151 i2c_clk_freq = 50;
1152 mcp->cur_i2c_clk_div = (12000000 / (i2c_clk_freq * 1000)) - 3;
1153
1154 mcp->adapter.owner = THIS_MODULE;
1155 mcp->adapter.class = I2C_CLASS_HWMON;
1156 mcp->adapter.algo = &mcp_i2c_algo;
1157 mcp->adapter.retries = 1;
1158 mcp->adapter.dev.parent = &hdev->dev;
1145 /* Set I2C bus clock diviser */
1146 if (i2c_clk_freq > 400)
1147 i2c_clk_freq = 400;
1148 if (i2c_clk_freq < 50)
1149 i2c_clk_freq = 50;
1150 mcp->cur_i2c_clk_div = (12000000 / (i2c_clk_freq * 1000)) - 3;
1151
1152 mcp->adapter.owner = THIS_MODULE;
1153 mcp->adapter.class = I2C_CLASS_HWMON;
1154 mcp->adapter.algo = &mcp_i2c_algo;
1155 mcp->adapter.retries = 1;
1156 mcp->adapter.dev.parent = &hdev->dev;
1157 ACPI_COMPANION_SET(&mcp->adapter.dev, ACPI_COMPANION(hdev->dev.parent));
1159 snprintf(mcp->adapter.name, sizeof(mcp->adapter.name),
1160 "MCP2221 usb-i2c bridge");
1161
1158 snprintf(mcp->adapter.name, sizeof(mcp->adapter.name),
1159 "MCP2221 usb-i2c bridge");
1160
1162 i2c_set_adapdata(&mcp->adapter, mcp);
1163 ret = devm_i2c_add_adapter(&hdev->dev, &mcp->adapter);
1164 if (ret) {
1165 hid_err(hdev, "can't add usb-i2c adapter: %d\n", ret);
1166 return ret;
1167 }
1161 ret = devm_i2c_add_adapter(&hdev->dev, &mcp->adapter);
1162 if (ret) {
1163 hid_err(hdev, "can't add usb-i2c adapter: %d\n", ret);
1164 return ret;
1165 }
1166 i2c_set_adapdata(&mcp->adapter, mcp);
1168
1169#if IS_REACHABLE(CONFIG_GPIOLIB)
1170 /* Setup GPIO chip */
1171 mcp->gc = devm_kzalloc(&hdev->dev, sizeof(*mcp->gc), GFP_KERNEL);
1172 if (!mcp->gc)
1173 return -ENOMEM;
1174
1175 mcp->gc->label = "mcp2221_gpio";

--- 43 unchanged lines hidden ---
1167
1168#if IS_REACHABLE(CONFIG_GPIOLIB)
1169 /* Setup GPIO chip */
1170 mcp->gc = devm_kzalloc(&hdev->dev, sizeof(*mcp->gc), GFP_KERNEL);
1171 if (!mcp->gc)
1172 return -ENOMEM;
1173
1174 mcp->gc->label = "mcp2221_gpio";

--- 43 unchanged lines hidden ---