wcd-usbss-priv.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
  4. */
  5. #ifndef WCD_USBSS_PRIV_H
  6. #define WCD_USBSS_PRIV_H
  7. #include <linux/kernel.h>
  8. #include <linux/kobject.h>
  9. #include <linux/module.h>
  10. #include <linux/of.h>
  11. #include <linux/notifier.h>
  12. #include <linux/mutex.h>
  13. #include <linux/i2c.h>
  14. #include <linux/regmap.h>
  15. #include <linux/regulator/consumer.h>
  16. #include <linux/sched.h>
  17. #include <linux/soc/qcom/wcd939x-i2c.h>
  18. #include "wcd-usbss-registers.h"
  19. #define WCD_USBSS_SUPPLY_MAX 4
  20. struct wcd_usbss_ctxt {
  21. struct regmap *regmap;
  22. struct device *dev;
  23. struct i2c_client *client;
  24. struct notifier_block ucsi_nb;
  25. atomic_t usbc_mode;
  26. struct work_struct usbc_analog_work;
  27. struct blocking_notifier_head wcd_usbss_notifier;
  28. struct mutex notification_lock;
  29. struct regulator_bulk_data supplies[WCD_USBSS_SUPPLY_MAX];
  30. struct pinctrl *rst_pins;
  31. struct pinctrl_state *rst_pins_active;
  32. struct pinctrl_state *rst_pins_sleep;
  33. u8 prev_pg;
  34. bool prev_pg_valid;
  35. struct mutex io_lock;
  36. unsigned int cable_status;
  37. bool surge_enable;
  38. struct kobject *surge_kobject;
  39. struct task_struct *surge_thread;
  40. unsigned int surge_timer_period_ms;
  41. unsigned int cached_audio_pwr_mode;
  42. bool standby_enable;
  43. bool is_in_standby;
  44. struct mutex switch_update_lock;
  45. struct mutex runtime_env_counter_lock;
  46. unsigned int version;
  47. int wcd_standby_status;
  48. int runtime_env_counter;
  49. struct nvmem_cell *nvmem_cell;
  50. bool suspended;
  51. bool defer_writes;
  52. int req_state;
  53. };
  54. extern struct regmap *wcd_usbss_regmap_init(struct device *dev,
  55. const struct regmap_config *config);
  56. extern struct regmap_config wcd_usbss_regmap_config;
  57. extern const u8 wcd_usbss_reg_access[WCD_USBSS_NUM_REGISTERS];
  58. #endif /* WCD_USBSS_PRIV_H */