cirrus_legacy.h 530 B

123456789101112131415161718192021
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Some small helpers for older Cirrus Logic parts.
  4. *
  5. * Copyright (C) 2021 Cirrus Logic, Inc. and
  6. * Cirrus Logic International Semiconductor Ltd.
  7. */
  8. static inline int cirrus_read_device_id(struct regmap *regmap, unsigned int reg)
  9. {
  10. u8 devid[3];
  11. int ret;
  12. ret = regmap_bulk_read(regmap, reg, devid, ARRAY_SIZE(devid));
  13. if (ret < 0)
  14. return ret;
  15. return ((devid[0] & 0xFF) << 12) |
  16. ((devid[1] & 0xFF) << 4) |
  17. ((devid[2] & 0xF0) >> 4);
  18. }