blob: a0904ff3751d3c25b2e89579c65b64afcd55cb2a [file] [log] [blame]
/* 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 */