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