1ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus/*
2ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * include/media/smiapp/smiapp-regs.h
3ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus *
4ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * Generic driver for SMIA/SMIA++ compliant camera modules
5ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus *
6ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * Copyright (C) 2011--2012 Nokia Corporation
78c5dff905714446f8836b40a93bfeabd0aea8c82Sakari Ailus * Contact: Sakari Ailus <sakari.ailus@iki.fi>
8ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus *
9ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * This program is free software; you can redistribute it and/or
10ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * modify it under the terms of the GNU General Public License
11ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * version 2 as published by the Free Software Foundation.
12ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus *
13ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * This program is distributed in the hope that it will be useful, but
14ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * WITHOUT ANY WARRANTY; without even the implied warranty of
15ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * General Public License for more details.
17ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus *
18ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * You should have received a copy of the GNU General Public License
19ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * along with this program; if not, write to the Free Software
20ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus * 02110-1301 USA
22ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus *
23ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus */
24ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus
25ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus#ifndef SMIAPP_REGS_H
26ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus#define SMIAPP_REGS_H
27ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus
28ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus#include <linux/i2c.h>
29ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus#include <linux/types.h>
30ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus
31f5d65070d49f707a06bf00c147f02848659a6a0bSakari Ailus#define SMIAPP_REG_ADDR(reg)		((u16)reg)
32f5d65070d49f707a06bf00c147f02848659a6a0bSakari Ailus#define SMIAPP_REG_WIDTH(reg)		((u8)(reg >> 16))
33f5d65070d49f707a06bf00c147f02848659a6a0bSakari Ailus#define SMIAPP_REG_FLAGS(reg)		((u8)(reg >> 24))
34f5d65070d49f707a06bf00c147f02848659a6a0bSakari Ailus
35ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus/* Use upper 8 bits of the type field for flags */
366fcc7a528d5e23940af5acdfb1bae09088d7b662Sakari Ailus#define SMIAPP_REG_FLAG_FLOAT		(1 << 24)
37ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus
386fcc7a528d5e23940af5acdfb1bae09088d7b662Sakari Ailus#define SMIAPP_REG_8BIT			1
396fcc7a528d5e23940af5acdfb1bae09088d7b662Sakari Ailus#define SMIAPP_REG_16BIT		2
406fcc7a528d5e23940af5acdfb1bae09088d7b662Sakari Ailus#define SMIAPP_REG_32BIT		4
41ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus
421e73eea781bc302ba7f35da89d627bd355a7814aSakari Ailusstruct smiapp_sensor;
431e73eea781bc302ba7f35da89d627bd355a7814aSakari Ailus
446f7481b6685daf693e995e8653f6c8d27cfe5bfcSakari Ailusint smiapp_read_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 *val);
451e73eea781bc302ba7f35da89d627bd355a7814aSakari Ailusint smiapp_read(struct smiapp_sensor *sensor, u32 reg, u32 *val);
46ceb9e30e9f4a892997a61f1f5a30bc5b561c9e67Sakari Ailusint smiapp_read_8only(struct smiapp_sensor *sensor, u32 reg, u32 *val);
476f7481b6685daf693e995e8653f6c8d27cfe5bfcSakari Ailusint smiapp_write_no_quirk(struct smiapp_sensor *sensor, u32 reg, u32 val);
481e73eea781bc302ba7f35da89d627bd355a7814aSakari Ailusint smiapp_write(struct smiapp_sensor *sensor, u32 reg, u32 val);
49ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus
50ccfc97bdb5ae8b8edc55169ac6924e08449836acSakari Ailus#endif
51