1*97fb5e8dSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2ce44bf5bSDavid Brown /* Copyright (C) 2010 Google, Inc.
3ce44bf5bSDavid Brown * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
4ce44bf5bSDavid Brown * Author: Dima Zavin <[email protected]>
5ce44bf5bSDavid Brown */
6ce44bf5bSDavid Brown
7ce44bf5bSDavid Brown #ifndef _LINUX_SSBI_H
8ce44bf5bSDavid Brown #define _LINUX_SSBI_H
9ce44bf5bSDavid Brown
10ce44bf5bSDavid Brown #include <linux/types.h>
11ce44bf5bSDavid Brown
125eec14ccSStephen Boyd int ssbi_write(struct device *dev, u16 addr, const u8 *buf, int len);
13ce44bf5bSDavid Brown int ssbi_read(struct device *dev, u16 addr, u8 *buf, int len);
14bae911a0SStephen Boyd
15559c04f6SStephen Boyd static inline int
ssbi_reg_read(void * context,unsigned int reg,unsigned int * val)16559c04f6SStephen Boyd ssbi_reg_read(void *context, unsigned int reg, unsigned int *val)
17559c04f6SStephen Boyd {
18559c04f6SStephen Boyd int ret;
19559c04f6SStephen Boyd u8 v;
20559c04f6SStephen Boyd
21559c04f6SStephen Boyd ret = ssbi_read(context, reg, &v, 1);
22559c04f6SStephen Boyd if (!ret)
23559c04f6SStephen Boyd *val = v;
24559c04f6SStephen Boyd
25559c04f6SStephen Boyd return ret;
26559c04f6SStephen Boyd }
27559c04f6SStephen Boyd
28559c04f6SStephen Boyd static inline int
ssbi_reg_write(void * context,unsigned int reg,unsigned int val)29559c04f6SStephen Boyd ssbi_reg_write(void *context, unsigned int reg, unsigned int val)
30559c04f6SStephen Boyd {
31559c04f6SStephen Boyd u8 v = val;
32559c04f6SStephen Boyd return ssbi_write(context, reg, &v, 1);
33559c04f6SStephen Boyd }
34559c04f6SStephen Boyd
35ce44bf5bSDavid Brown #endif
36