/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
 * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
 */

#ifndef __LINUX_IRBLASTER_CONSUMER_H
#define __LINUX_IRBLASTER_CONSUMER_H

#include <linux/err.h>
#include <linux/mutex.h>
#include <linux/of.h>
#ifdef CONFIG_AMLOGIC_IRBLASTER_PROTOCOL
#include <linux/amlogic/irblaster_encoder.h>
#endif

struct irblaster_chip;

/* irblaster user APIs */
int irblaster_send(struct irblaster_chip *chip,
		   unsigned int *data,
		   unsigned int len);
int irblaster_set_freq(struct irblaster_chip *chip,
		       unsigned int freq);
unsigned int irblaster_get_freq(struct irblaster_chip *chip);
int irblaster_set_duty(struct irblaster_chip *chip, unsigned int duty);
unsigned int irblaster_get_duty(struct irblaster_chip *chip);
struct irblaster_chip *of_irblaster_get(struct device_node *np,
					const char *con_id);
struct irblaster_chip *devm_of_irblaster_get(struct device *dev,
					     struct device_node *np,
					     const char *con_id);
void irblaster_put(struct irblaster_chip *chip);

#ifdef CONFIG_AMLOGIC_IRBLASTER_PROTOCOL
int irblaster_send_key(struct irblaster_chip *chip,
		       unsigned int addr,
		       unsigned int commmand);
int irblaster_set_protocol(struct irblaster_chip *chip,
			   enum irblaster_protocol ir_protocol);
enum irblaster_protocol irblaster_get_protocol(struct irblaster_chip *chip);
#endif

#endif /* __LINUX_IRBLASTER_CONSUMER_H */
