162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * include/media/ccs/ccs-reg-access.h
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Generic driver for MIPI CCS/SMIA/SMIA++ compliant camera sensors
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Copyright (C) 2020 Intel Corporation
862306a36Sopenharmony_ci * Copyright (C) 2011--2012 Nokia Corporation
962306a36Sopenharmony_ci * Contact: Sakari Ailus <sakari.ailus@linux.intel.com>
1062306a36Sopenharmony_ci */
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#ifndef SMIAPP_REGS_H
1362306a36Sopenharmony_ci#define SMIAPP_REGS_H
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#include <linux/i2c.h>
1662306a36Sopenharmony_ci#include <linux/types.h>
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#include "ccs-regs.h"
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci#define CCS_REG_ADDR(reg)		((u16)reg)
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_cistruct ccs_sensor;
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciint ccs_read_addr_no_quirk(struct ccs_sensor *sensor, u32 reg, u32 *val);
2562306a36Sopenharmony_ciint ccs_read_addr(struct ccs_sensor *sensor, u32 reg, u32 *val);
2662306a36Sopenharmony_ciint ccs_read_addr_8only(struct ccs_sensor *sensor, u32 reg, u32 *val);
2762306a36Sopenharmony_ciint ccs_read_addr_noconv(struct ccs_sensor *sensor, u32 reg, u32 *val);
2862306a36Sopenharmony_ciint ccs_write_addr_no_quirk(struct ccs_sensor *sensor, u32 reg, u32 val);
2962306a36Sopenharmony_ciint ccs_write_addr(struct ccs_sensor *sensor, u32 reg, u32 val);
3062306a36Sopenharmony_ciint ccs_write_data_regs(struct ccs_sensor *sensor, struct ccs_reg *regs,
3162306a36Sopenharmony_ci			size_t num_regs);
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciunsigned int ccs_reg_width(u32 reg);
3462306a36Sopenharmony_ciu32 ccs_reg_conv(struct ccs_sensor *sensor, u32 reg, u32 val);
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci#define ccs_read(sensor, reg_name, val) \
3762306a36Sopenharmony_ci	ccs_read_addr(sensor, CCS_R_##reg_name, val)
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci#define ccs_write(sensor, reg_name, val) \
4062306a36Sopenharmony_ci	ccs_write_addr(sensor, CCS_R_##reg_name, val)
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci#endif
43