aqt1000-core.c 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /* Copyright (c) 2011-2018, The Linux Foundation. All rights reserved.
  3. */
  4. #include <linux/kernel.h>
  5. #include <linux/module.h>
  6. #include <linux/of_device.h>
  7. #include <linux/of.h>
  8. #include <linux/of_irq.h>
  9. #include <linux/slab.h>
  10. #include <linux/ratelimit.h>
  11. #include <linux/mfd/core.h>
  12. #include <linux/delay.h>
  13. #include <linux/gpio.h>
  14. #include <linux/debugfs.h>
  15. #include <linux/i2c.h>
  16. #include <linux/regmap.h>
  17. #include <linux/gpio.h>
  18. #include <linux/of_gpio.h>
  19. #include <linux/pm_runtime.h>
  20. #include <sound/soc.h>
  21. #include <asoc/msm-cdc-pinctrl.h>
  22. #include <asoc/msm-cdc-supply.h>
  23. #include "aqt1000-registers.h"
  24. #include "aqt1000-internal.h"
  25. #include "aqt1000.h"
  26. #include "aqt1000-utils.h"
  27. #include "aqt1000-irq.h"
  28. static int aqt1000_bringup(struct aqt1000 *aqt)
  29. {
  30. struct aqt1000_pdata *pdata;
  31. u8 clk_div = 0, mclk = 1;
  32. if (!aqt->regmap) {
  33. dev_err(aqt->dev, "%s: aqt regmap is NULL\n", __func__);
  34. return -EINVAL;
  35. }
  36. /* Bringup register write sequence */
  37. regmap_update_bits(aqt->regmap, AQT1000_BUCK_5V_CTRL_CCL_1, 0xF0, 0xF0);
  38. regmap_update_bits(aqt->regmap, AQT1000_BIAS_CCOMP_FINE_ADJ,
  39. 0xF0, 0x90);
  40. regmap_update_bits(aqt->regmap, AQT1000_ANA_BIAS, 0x80, 0x80);
  41. regmap_update_bits(aqt->regmap, AQT1000_ANA_BIAS, 0x40, 0x40);
  42. /* Added 1msec sleep as per HW requirement */
  43. usleep_range(1000, 1010);
  44. regmap_update_bits(aqt->regmap, AQT1000_ANA_BIAS, 0x40, 0x00);
  45. clk_div = 0x04; /* Assumption is CLK DIV 2 */
  46. pdata = dev_get_platdata(aqt->dev);
  47. if (pdata) {
  48. if (pdata->mclk_rate == AQT1000_CLK_12P288MHZ)
  49. mclk = 0;
  50. clk_div = (((pdata->ext_clk_rate / pdata->mclk_rate) >> 1)
  51. << 2);
  52. }
  53. regmap_update_bits(aqt->regmap, AQT1000_CHIP_CFG0_CLK_CFG_MCLK,
  54. 0x03, mclk);
  55. regmap_update_bits(aqt->regmap, AQT1000_CLK_SYS_MCLK1_PRG,
  56. 0x0C, clk_div);
  57. /* Source clock enable */
  58. regmap_update_bits(aqt->regmap, AQT1000_CLK_SYS_MCLK1_PRG, 0x02, 0x02);
  59. /* Ungate the source clock */
  60. regmap_update_bits(aqt->regmap, AQT1000_CLK_SYS_MCLK1_PRG, 0x10, 0x10);
  61. /* Set the I2S_HS_CLK reference to CLK DIV 2 */
  62. regmap_update_bits(aqt->regmap, AQT1000_CLK_SYS_MCLK2_I2S_HS_CLK_PRG,
  63. 0x60, 0x20);
  64. /* Set the PLL preset to CLK9P6M_IN_12P288M_OUT */
  65. regmap_update_bits(aqt->regmap, AQT1000_CLK_SYS_PLL_PRESET, 0x0F, 0x02);
  66. /* Enable clock PLL */
  67. regmap_update_bits(aqt->regmap, AQT1000_CLK_SYS_PLL_ENABLES,
  68. 0x01, 0x01);
  69. /* Add 100usec delay as per HW requirement */
  70. usleep_range(100, 110);
  71. /* Set AQT to I2S Master */
  72. regmap_update_bits(aqt->regmap, AQT1000_I2S_I2S_0_CTL, 0x02, 0x02);
  73. /* Enable I2S HS clock */
  74. regmap_update_bits(aqt->regmap, AQT1000_CLK_SYS_MCLK2_I2S_HS_CLK_PRG,
  75. 0x01, 0x01);
  76. regmap_update_bits(aqt->regmap, AQT1000_CHIP_CFG0_CLK_CFG_MCLK,
  77. 0x04, 0x00);
  78. /* Add 100usec delay as per HW requirement */
  79. usleep_range(100, 110);
  80. regmap_update_bits(aqt->regmap, AQT1000_CDC_CLK_RST_CTRL_MCLK_CONTROL,
  81. 0x01, 0x01);
  82. regmap_update_bits(aqt->regmap, AQT1000_CDC_CLK_RST_CTRL_FS_CNT_CONTROL,
  83. 0x01, 0x01);
  84. regmap_update_bits(aqt->regmap, AQT1000_CHIP_CFG0_CLK_CTL_CDC_DIG,
  85. 0x01, 0x01);
  86. /* Codec digital reset */
  87. regmap_update_bits(aqt->regmap, AQT1000_CHIP_CFG0_RST_CTL, 0x01, 0x01);
  88. /* Add 100usec delay as per HW requirement */
  89. usleep_range(100, 110);
  90. return 0;
  91. }
  92. static int aqt1000_device_init(struct aqt1000 *aqt)
  93. {
  94. int ret = 0;
  95. mutex_init(&aqt->io_lock);
  96. mutex_init(&aqt->xfer_lock);
  97. mutex_init(&aqt->cdc_bg_clk_lock);
  98. mutex_init(&aqt->master_bias_lock);
  99. ret = aqt1000_bringup(aqt);
  100. if (ret) {
  101. ret = -EPROBE_DEFER;
  102. goto done;
  103. }
  104. ret = aqt_irq_init(aqt);
  105. if (ret)
  106. goto done;
  107. return ret;
  108. done:
  109. mutex_destroy(&aqt->io_lock);
  110. mutex_destroy(&aqt->xfer_lock);
  111. mutex_destroy(&aqt->cdc_bg_clk_lock);
  112. mutex_destroy(&aqt->master_bias_lock);
  113. return ret;
  114. }
  115. static int aqt1000_i2c_write(struct aqt1000 *aqt1000, unsigned short reg,
  116. void *val, int bytes)
  117. {
  118. struct i2c_msg *msg;
  119. int ret = 0;
  120. u8 reg_addr = 0;
  121. u8 data[bytes + 1];
  122. struct aqt1000_i2c *aqt1000_i2c;
  123. u8 *value = (u8 *)val;
  124. aqt1000_i2c = &aqt1000->i2c_dev;
  125. if (aqt1000_i2c == NULL || aqt1000_i2c->client == NULL) {
  126. pr_err("%s: Failed to get device info\n", __func__);
  127. return -ENODEV;
  128. }
  129. reg_addr = (u8)reg;
  130. msg = &aqt1000_i2c->xfer_msg[0];
  131. msg->addr = aqt1000_i2c->client->addr;
  132. msg->len = bytes + 1;
  133. msg->flags = 0;
  134. data[0] = reg;
  135. data[1] = *value;
  136. msg->buf = data;
  137. ret = i2c_transfer(aqt1000_i2c->client->adapter,
  138. aqt1000_i2c->xfer_msg, 1);
  139. /* Try again if the write fails */
  140. if (ret != 1) {
  141. ret = i2c_transfer(aqt1000_i2c->client->adapter,
  142. aqt1000_i2c->xfer_msg, 1);
  143. if (ret != 1) {
  144. dev_err(aqt1000->dev,
  145. "%s: I2C write failed, reg: 0x%x ret: %d\n",
  146. __func__, reg, ret);
  147. return ret;
  148. }
  149. }
  150. dev_dbg(aqt1000->dev, "%s: write success register = %x val = %x\n",
  151. __func__, reg, data[1]);
  152. return 0;
  153. }
  154. static int aqt1000_i2c_read(struct aqt1000 *aqt1000, unsigned short reg,
  155. void *dst, int bytes)
  156. {
  157. struct i2c_msg *msg;
  158. int ret = 0;
  159. u8 reg_addr = 0;
  160. struct aqt1000_i2c *aqt1000_i2c;
  161. u8 i = 0;
  162. unsigned char *dest = (unsigned char *)dst;
  163. aqt1000_i2c = &aqt1000->i2c_dev;
  164. if (aqt1000_i2c == NULL || aqt1000_i2c->client == NULL) {
  165. pr_err("%s: Failed to get device info\n", __func__);
  166. return -ENODEV;
  167. }
  168. for (i = 0; i < bytes; i++) {
  169. reg_addr = (u8)reg++;
  170. msg = &aqt1000_i2c->xfer_msg[0];
  171. msg->addr = aqt1000_i2c->client->addr;
  172. msg->len = 1;
  173. msg->flags = 0;
  174. msg->buf = &reg_addr;
  175. msg = &aqt1000_i2c->xfer_msg[1];
  176. msg->addr = aqt1000_i2c->client->addr;
  177. msg->len = 1;
  178. msg->flags = I2C_M_RD;
  179. msg->buf = dest++;
  180. ret = i2c_transfer(aqt1000_i2c->client->adapter,
  181. aqt1000_i2c->xfer_msg, 2);
  182. /* Try again if read fails first time */
  183. if (ret != 2) {
  184. ret = i2c_transfer(aqt1000_i2c->client->adapter,
  185. aqt1000_i2c->xfer_msg, 2);
  186. if (ret != 2) {
  187. dev_err(aqt1000->dev,
  188. "%s: I2C read failed, reg: 0x%x\n",
  189. __func__, reg);
  190. return ret;
  191. }
  192. }
  193. }
  194. return 0;
  195. }
  196. static int aqt1000_reset(struct device *dev)
  197. {
  198. struct aqt1000 *aqt1000;
  199. int rc = 0;
  200. if (!dev)
  201. return -ENODEV;
  202. aqt1000 = dev_get_drvdata(dev);
  203. if (!aqt1000)
  204. return -EINVAL;
  205. if (!aqt1000->aqt_rst_np) {
  206. dev_err(dev, "%s: reset gpio device node not specified\n",
  207. __func__);
  208. return -EINVAL;
  209. }
  210. if (!msm_cdc_pinctrl_get_state(aqt1000->aqt_rst_np)) {
  211. rc = msm_cdc_pinctrl_select_sleep_state(aqt1000->aqt_rst_np);
  212. if (rc) {
  213. dev_err(dev, "%s: aqt sleep state request fail!\n",
  214. __func__);
  215. return rc;
  216. }
  217. /* 20ms sleep required after pulling the reset gpio to LOW */
  218. msleep(20);
  219. rc = msm_cdc_pinctrl_select_active_state(aqt1000->aqt_rst_np);
  220. if (rc) {
  221. dev_err(dev,
  222. "%s: aqt active state request fail, ret: %d\n",
  223. __func__, rc);
  224. return rc;
  225. }
  226. /* 20ms sleep required after pulling the reset gpio to HIGH */
  227. msleep(20);
  228. }
  229. return rc;
  230. }
  231. static int aqt1000_read_of_property_u32(struct device *dev, const char *name,
  232. u32 *val)
  233. {
  234. int rc = 0;
  235. rc = of_property_read_u32(dev->of_node, name, val);
  236. if (rc)
  237. dev_err(dev, "%s: Looking up %s property in node %s failed",
  238. __func__, name, dev->of_node->full_name);
  239. return rc;
  240. }
  241. static void aqt1000_dt_parse_micbias_info(struct device *dev,
  242. struct aqt1000_micbias_setting *mb)
  243. {
  244. u32 prop_val;
  245. int rc;
  246. if (of_find_property(dev->of_node, "qcom,cdc-micbias-ldoh-v", NULL)) {
  247. rc = aqt1000_read_of_property_u32(dev,
  248. "qcom,cdc-micbias-ldoh-v",
  249. &prop_val);
  250. if (!rc)
  251. mb->ldoh_v = (u8)prop_val;
  252. }
  253. /* MB1 */
  254. if (of_find_property(dev->of_node, "qcom,cdc-micbias-cfilt1-mv",
  255. NULL)) {
  256. rc = aqt1000_read_of_property_u32(dev,
  257. "qcom,cdc-micbias-cfilt1-mv",
  258. &prop_val);
  259. if (!rc)
  260. mb->cfilt1_mv = prop_val;
  261. rc = aqt1000_read_of_property_u32(dev,
  262. "qcom,cdc-micbias1-cfilt-sel",
  263. &prop_val);
  264. if (!rc)
  265. mb->bias1_cfilt_sel = (u8)prop_val;
  266. } else if (of_find_property(dev->of_node, "qcom,cdc-micbias1-mv",
  267. NULL)) {
  268. rc = aqt1000_read_of_property_u32(dev,
  269. "qcom,cdc-micbias1-mv",
  270. &prop_val);
  271. if (!rc)
  272. mb->micb1_mv = prop_val;
  273. } else {
  274. dev_info(dev, "%s: Micbias1 DT property not found\n",
  275. __func__);
  276. }
  277. /* Print micbias info */
  278. dev_dbg(dev, "%s: ldoh_v %u cfilt1_mv %u micb1_mv %u \n", __func__,
  279. (u32)mb->ldoh_v, (u32)mb->cfilt1_mv, (u32)mb->micb1_mv);
  280. }
  281. static struct aqt1000_pdata *aqt1000_populate_dt_data(struct device *dev)
  282. {
  283. struct aqt1000_pdata *pdata;
  284. u32 prop_val;
  285. if (!dev || !dev->of_node)
  286. return NULL;
  287. pdata = devm_kzalloc(dev, sizeof(struct aqt1000_pdata),
  288. GFP_KERNEL);
  289. if (!pdata)
  290. return NULL;
  291. /* Parse power supplies */
  292. msm_cdc_get_power_supplies(dev, &pdata->regulator,
  293. &pdata->num_supplies);
  294. if (!pdata->regulator || (pdata->num_supplies <= 0)) {
  295. dev_err(dev, "%s: no power supplies defined for codec\n",
  296. __func__);
  297. goto err_power_sup;
  298. }
  299. /* Parse micbias info */
  300. aqt1000_dt_parse_micbias_info(dev, &pdata->micbias);
  301. pdata->aqt_rst_np = of_parse_phandle(dev->of_node,
  302. "qcom,aqt-rst-gpio-node", 0);
  303. if (!pdata->aqt_rst_np) {
  304. dev_err(dev, "%s: Looking up %s property in node %s failed\n",
  305. __func__, "qcom,aqt-rst-gpio-node",
  306. dev->of_node->full_name);
  307. goto err_parse_dt_prop;
  308. }
  309. if (!(aqt1000_read_of_property_u32(dev, "qcom,cdc-ext-clk-rate",
  310. &prop_val)))
  311. pdata->ext_clk_rate = prop_val;
  312. if (pdata->ext_clk_rate != AQT1000_CLK_24P576MHZ &&
  313. pdata->ext_clk_rate != AQT1000_CLK_19P2MHZ &&
  314. pdata->ext_clk_rate != AQT1000_CLK_12P288MHZ) {
  315. /* Use the default ext_clk_rate if the DT value is wrong */
  316. pdata->ext_clk_rate = AQT1000_CLK_9P6MHZ;
  317. }
  318. prop_val = 0;
  319. if (!(aqt1000_read_of_property_u32(dev, "qcom,cdc-mclk-clk-rate",
  320. &prop_val)))
  321. pdata->mclk_rate = prop_val;
  322. if (pdata->mclk_rate != AQT1000_CLK_9P6MHZ &&
  323. pdata->mclk_rate != AQT1000_CLK_12P288MHZ) {
  324. dev_err(dev, "%s: Invalid mclk_rate = %u\n", __func__,
  325. pdata->mclk_rate);
  326. goto err_parse_dt_prop;
  327. }
  328. if (pdata->ext_clk_rate % pdata->mclk_rate) {
  329. dev_err(dev,
  330. "%s: Invalid clock group, ext_clk = %d mclk = %d\n",
  331. __func__, pdata->ext_clk_rate, pdata->mclk_rate);
  332. goto err_parse_dt_prop;
  333. }
  334. pdata->irq_gpio = of_get_named_gpio(dev->of_node,
  335. "qcom,gpio-connect", 0);
  336. if (!gpio_is_valid(pdata->irq_gpio)) {
  337. dev_err(dev, "%s: TLMM connect gpio not found\n", __func__);
  338. goto err_parse_dt_prop;
  339. }
  340. return pdata;
  341. err_parse_dt_prop:
  342. devm_kfree(dev, pdata->regulator);
  343. pdata->regulator = NULL;
  344. pdata->num_supplies = 0;
  345. err_power_sup:
  346. devm_kfree(dev, pdata);
  347. return NULL;
  348. }
  349. static int aqt1000_bringdown(struct device *dev)
  350. {
  351. /* No sequence for teardown */
  352. return 0;
  353. }
  354. static void aqt1000_device_exit(struct aqt1000 *aqt)
  355. {
  356. aqt_irq_exit(aqt);
  357. aqt1000_bringdown(aqt->dev);
  358. mutex_destroy(&aqt->io_lock);
  359. mutex_destroy(&aqt->xfer_lock);
  360. mutex_destroy(&aqt->cdc_bg_clk_lock);
  361. mutex_destroy(&aqt->master_bias_lock);
  362. }
  363. static int aqt1000_i2c_probe(struct i2c_client *client,
  364. const struct i2c_device_id *id)
  365. {
  366. struct aqt1000 *aqt1000 = NULL;
  367. struct aqt1000_pdata *pdata = NULL;
  368. int ret = 0;
  369. pdata = aqt1000_populate_dt_data(&client->dev);
  370. if (!pdata) {
  371. dev_err(&client->dev,
  372. "%s: Fail to obtain pdata from device tree\n",
  373. __func__);
  374. ret = -EINVAL;
  375. goto fail;
  376. }
  377. client->dev.platform_data = pdata;
  378. aqt1000 = devm_kzalloc(&client->dev, sizeof(struct aqt1000),
  379. GFP_KERNEL);
  380. if (!aqt1000) {
  381. ret = -ENOMEM;
  382. goto fail;
  383. }
  384. aqt1000->regmap = aqt1000_regmap_init(&client->dev,
  385. &aqt1000_regmap_config);
  386. if (IS_ERR(aqt1000->regmap)) {
  387. ret = PTR_ERR(aqt1000->regmap);
  388. dev_err(&client->dev,
  389. "%s: Failed to init register map: %d\n",
  390. __func__, ret);
  391. goto fail;
  392. }
  393. aqt1000->aqt_rst_np = pdata->aqt_rst_np;
  394. if (!aqt1000->aqt_rst_np) {
  395. dev_err(&client->dev, "%s: pinctrl not used for rst_n\n",
  396. __func__);
  397. ret = -EINVAL;
  398. goto fail;
  399. }
  400. if (i2c_check_functionality(client->adapter,
  401. I2C_FUNC_I2C) == 0) {
  402. dev_dbg(&client->dev, "%s: can't talk I2C?\n", __func__);
  403. ret = -EIO;
  404. goto fail;
  405. }
  406. dev_set_drvdata(&client->dev, aqt1000);
  407. aqt1000->dev = &client->dev;
  408. aqt1000->dev_up = true;
  409. aqt1000->mclk_rate = pdata->mclk_rate;
  410. aqt1000->irq = client->irq;
  411. aqt1000->num_of_supplies = pdata->num_supplies;
  412. ret = msm_cdc_init_supplies(aqt1000->dev, &aqt1000->supplies,
  413. pdata->regulator,
  414. pdata->num_supplies);
  415. if (!aqt1000->supplies) {
  416. dev_err(aqt1000->dev, "%s: Cannot init aqt supplies\n",
  417. __func__);
  418. goto err_codec;
  419. }
  420. ret = msm_cdc_enable_static_supplies(aqt1000->dev,
  421. aqt1000->supplies,
  422. pdata->regulator,
  423. pdata->num_supplies);
  424. if (ret) {
  425. dev_err(aqt1000->dev, "%s: aqt static supply enable failed!\n",
  426. __func__);
  427. goto err_codec;
  428. }
  429. /* 5 usec sleep is needed as per HW requirement */
  430. usleep_range(5, 10);
  431. ret = aqt1000_reset(aqt1000->dev);
  432. if (ret) {
  433. dev_err(aqt1000->dev, "%s: Codec reset failed\n", __func__);
  434. goto err_supplies;
  435. }
  436. aqt1000->i2c_dev.client = client;
  437. aqt1000->read_dev = aqt1000_i2c_read;
  438. aqt1000->write_dev = aqt1000_i2c_write;
  439. ret = aqt1000_device_init(aqt1000);
  440. if (ret) {
  441. pr_err("%s: error, initializing device failed (%d)\n",
  442. __func__, ret);
  443. goto err_supplies;
  444. }
  445. pm_runtime_set_active(aqt1000->dev);
  446. pm_runtime_enable(aqt1000->dev);
  447. ret = aqt_register_codec(&client->dev);
  448. if (ret) {
  449. dev_err(aqt1000->dev, "%s: Codec registration failed\n",
  450. __func__);
  451. goto err_cdc_register;
  452. }
  453. return ret;
  454. err_cdc_register:
  455. pm_runtime_disable(aqt1000->dev);
  456. aqt1000_device_exit(aqt1000);
  457. err_supplies:
  458. msm_cdc_release_supplies(aqt1000->dev, aqt1000->supplies,
  459. pdata->regulator,
  460. pdata->num_supplies);
  461. pdata->regulator = NULL;
  462. pdata->num_supplies = 0;
  463. err_codec:
  464. devm_kfree(&client->dev, aqt1000);
  465. dev_set_drvdata(&client->dev, NULL);
  466. fail:
  467. return ret;
  468. }
  469. static int aqt1000_i2c_remove(struct i2c_client *client)
  470. {
  471. struct aqt1000 *aqt;
  472. struct aqt1000_pdata *pdata = client->dev.platform_data;
  473. aqt = dev_get_drvdata(&client->dev);
  474. pm_runtime_disable(aqt->dev);
  475. msm_cdc_release_supplies(aqt->dev, aqt->supplies,
  476. pdata->regulator,
  477. pdata->num_supplies);
  478. aqt1000_device_exit(aqt);
  479. dev_set_drvdata(&client->dev, NULL);
  480. return 0;
  481. }
  482. #ifdef CONFIG_PM
  483. static int aqt1000_runtime_resume(struct device *dev)
  484. {
  485. dev_dbg(dev, "%s system resume\n", __func__);
  486. return 0;
  487. }
  488. static int aqt1000_runtime_suspend(struct device *dev)
  489. {
  490. dev_dbg(dev, "%s system suspend\n", __func__);
  491. return 0;
  492. }
  493. #endif
  494. #ifdef CONFIG_PM_SLEEP
  495. static int aqt1000_i2c_resume(struct device *dev)
  496. {
  497. pr_debug("%s system resume\n", __func__);
  498. return 0;
  499. }
  500. static int aqt1000_i2c_suspend(struct device *dev)
  501. {
  502. pr_debug("%s system suspend\n", __func__);
  503. return 0;
  504. }
  505. #endif
  506. static struct i2c_device_id aqt1000_id_table[] = {
  507. {"aqt1000-i2c", 0},
  508. {}
  509. };
  510. MODULE_DEVICE_TABLE(i2c, aqt1000_id_table);
  511. static const struct dev_pm_ops aqt1000_i2c_pm_ops = {
  512. SET_RUNTIME_PM_OPS(aqt1000_runtime_suspend,
  513. aqt1000_runtime_resume, NULL)
  514. SET_SYSTEM_SLEEP_PM_OPS(aqt1000_i2c_suspend,
  515. aqt1000_i2c_resume)
  516. };
  517. static const struct of_device_id aqt_match_table[] = {
  518. {.compatible = "qcom,aqt1000-i2c-codec"},
  519. {}
  520. };
  521. MODULE_DEVICE_TABLE(of, aqt_match_table);
  522. static struct i2c_driver aqt1000_i2c_driver = {
  523. .driver = {
  524. .owner = THIS_MODULE,
  525. .name = "aqt1000-i2c-codec",
  526. #ifdef CONFIG_PM_SLEEP
  527. .pm = &aqt1000_i2c_pm_ops,
  528. #endif
  529. .of_match_table = aqt_match_table,
  530. },
  531. .id_table = aqt1000_id_table,
  532. .probe = aqt1000_i2c_probe,
  533. .remove = aqt1000_i2c_remove,
  534. };
  535. static int __init aqt1000_init(void)
  536. {
  537. return i2c_add_driver(&aqt1000_i2c_driver);
  538. }
  539. module_init(aqt1000_init);
  540. static void __exit aqt1000_exit(void)
  541. {
  542. i2c_del_driver(&aqt1000_i2c_driver);
  543. }
  544. module_exit(aqt1000_exit);
  545. MODULE_DESCRIPTION("AQT1000 Codec driver");
  546. MODULE_LICENSE("GPL v2");