xref: /freebsd/sys/dev/qcom_tlmm/qcom_tlmm_ipq4018_hw.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
14abe6533SAdrian Chadd /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
34abe6533SAdrian Chadd  *
44abe6533SAdrian Chadd  * Copyright (c) 2021 Adrian Chadd <adrian@FreeBSD.org>.
54abe6533SAdrian Chadd  *
64abe6533SAdrian Chadd  * Redistribution and use in source and binary forms, with or without
74abe6533SAdrian Chadd  * modification, are permitted provided that the following conditions
84abe6533SAdrian Chadd  * are met:
94abe6533SAdrian Chadd  * 1. Redistributions of source code must retain the above copyright
104abe6533SAdrian Chadd  *    notice unmodified, this list of conditions, and the following
114abe6533SAdrian Chadd  *    disclaimer.
124abe6533SAdrian Chadd  * 2. Redistributions in binary form must reproduce the above copyright
134abe6533SAdrian Chadd  *    notice, this list of conditions and the following disclaimer in the
144abe6533SAdrian Chadd  *    documentation and/or other materials provided with the distribution.
154abe6533SAdrian Chadd  *
164abe6533SAdrian Chadd  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
174abe6533SAdrian Chadd  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
184abe6533SAdrian Chadd  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
194abe6533SAdrian Chadd  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
204abe6533SAdrian Chadd  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
214abe6533SAdrian Chadd  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
224abe6533SAdrian Chadd  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
234abe6533SAdrian Chadd  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
244abe6533SAdrian Chadd  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
254abe6533SAdrian Chadd  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
264abe6533SAdrian Chadd  * SUCH DAMAGE.
274abe6533SAdrian Chadd  *
284abe6533SAdrian Chadd  */
294abe6533SAdrian Chadd 
304abe6533SAdrian Chadd #ifndef	__QCOM_TLMM_IPQ4018_HW_H__
314abe6533SAdrian Chadd #define	__QCOM_TLMM_IPQ4018_HW_H__
324abe6533SAdrian Chadd 
334abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_set_function(
344abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, int pin, int function);
354abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_get_function(
364abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, int pin, int *function);
374abe6533SAdrian Chadd 
384abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_set_oe_output(
394abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, int pin);
404abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_set_oe_input(
414abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, int pin);
424abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_get_oe_state(
434abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, int pin, bool *is_output);
444abe6533SAdrian Chadd 
454abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_set_output_value(
464abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc,
474abe6533SAdrian Chadd 	    uint32_t pin, unsigned int value);
484abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_get_output_value(
494abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc,
504abe6533SAdrian Chadd 	    uint32_t pin, unsigned int *val);
514abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_get_input_value(
524abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc,
534abe6533SAdrian Chadd 	    uint32_t pin, unsigned int *val);
544abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_toggle_output_value(
554abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc,
564abe6533SAdrian Chadd 	    uint32_t pin);
574abe6533SAdrian Chadd 
584abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_set_pupd_config(
594abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, uint32_t pin,
604abe6533SAdrian Chadd 	    qcom_tlmm_pin_pupd_config_t pupd);
614abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_get_pupd_config(
624abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, uint32_t pin,
634abe6533SAdrian Chadd 	    qcom_tlmm_pin_pupd_config_t *pupd);
644abe6533SAdrian Chadd 
654abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_set_drive_strength(
664abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, uint32_t pin,
674abe6533SAdrian Chadd 	    uint8_t drv);
684abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_get_drive_strength(
694abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, uint32_t pin,
704abe6533SAdrian Chadd 	    uint8_t *drv);
714abe6533SAdrian Chadd 
724abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_set_vm(
734abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, uint32_t pin,
744abe6533SAdrian Chadd 	    bool enable);
754abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_get_vm(
764abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, uint32_t pin,
774abe6533SAdrian Chadd 	    bool *enable);
784abe6533SAdrian Chadd 
794abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_set_open_drain(
804abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, uint32_t pin,
814abe6533SAdrian Chadd 	    bool enable);
824abe6533SAdrian Chadd extern	int qcom_tlmm_ipq4018_hw_pin_get_open_drain(
834abe6533SAdrian Chadd 	    struct qcom_tlmm_softc *sc, uint32_t pin,
844abe6533SAdrian Chadd 	    bool *enable);
854abe6533SAdrian Chadd 
864abe6533SAdrian Chadd #endif	/* __QCOM_TLMM_IPQ4018_HW_H__ */
87