18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * include/media/smiapp/smiapp-regs.h
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Generic driver for SMIA/SMIA++ compliant camera modules
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci * Copyright (C) 2011--2012 Nokia Corporation
88c2ecf20Sopenharmony_ci * Contact: Sakari Ailus <sakari.ailus@iki.fi>
98c2ecf20Sopenharmony_ci */
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#ifndef SMIAPP_REGS_H
128c2ecf20Sopenharmony_ci#define SMIAPP_REGS_H
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#include <linux/i2c.h>
158c2ecf20Sopenharmony_ci#include <linux/types.h>
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci#define SMIAPP_REG_ADDR(reg)		((u16)reg)
188c2ecf20Sopenharmony_ci#define SMIAPP_REG_WIDTH(reg)		((u8)(reg >> 16))
198c2ecf20Sopenharmony_ci#define SMIAPP_REG_FLAGS(reg)		((u8)(reg >> 24))
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci/* Use upper 8 bits of the type field for flags */
228c2ecf20Sopenharmony_ci#define SMIAPP_REG_FLAG_FLOAT		(1 << 24)
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci#define SMIAPP_REG_8BIT			1
258c2ecf20Sopenharmony_ci#define SMIAPP_REG_16BIT		2
268c2ecf20Sopenharmony_ci#define SMIAPP_REG_32BIT		4
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_cistruct smiapp_sensor;
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ciint smiapp_read_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 *val);
318c2ecf20Sopenharmony_ciint smiapp_read(struct smiapp_sensor *sensor, u32 reg, u32 *val);
328c2ecf20Sopenharmony_ciint smiapp_read_8only(struct smiapp_sensor *sensor, u32 reg, u32 *val);
338c2ecf20Sopenharmony_ciint smiapp_write_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 val);
348c2ecf20Sopenharmony_ciint smiapp_write(struct smiapp_sensor *sensor, u32 reg, u32 val);
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci#endif
37