14ad7e9b0SAdrian Chadd /*- 2*f90f4b65SLandon J. Fuller * Copyright (c) 2015-2016 Landon Fuller <landonf@FreeBSD.org> 34ad7e9b0SAdrian Chadd * All rights reserved. 44ad7e9b0SAdrian Chadd * 54ad7e9b0SAdrian Chadd * Redistribution and use in source and binary forms, with or without 64ad7e9b0SAdrian Chadd * modification, are permitted provided that the following conditions 74ad7e9b0SAdrian Chadd * are met: 84ad7e9b0SAdrian Chadd * 1. Redistributions of source code must retain the above copyright 94ad7e9b0SAdrian Chadd * notice, this list of conditions and the following disclaimer, 104ad7e9b0SAdrian Chadd * without modification. 114ad7e9b0SAdrian Chadd * 2. Redistributions in binary form must reproduce at minimum a disclaimer 124ad7e9b0SAdrian Chadd * similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any 134ad7e9b0SAdrian Chadd * redistribution must be conditioned upon including a substantially 144ad7e9b0SAdrian Chadd * similar Disclaimer requirement for further binary redistribution. 154ad7e9b0SAdrian Chadd * 164ad7e9b0SAdrian Chadd * NO WARRANTY 174ad7e9b0SAdrian Chadd * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 184ad7e9b0SAdrian Chadd * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 194ad7e9b0SAdrian Chadd * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY 204ad7e9b0SAdrian Chadd * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 214ad7e9b0SAdrian Chadd * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, 224ad7e9b0SAdrian Chadd * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 234ad7e9b0SAdrian Chadd * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 244ad7e9b0SAdrian Chadd * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 254ad7e9b0SAdrian Chadd * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 264ad7e9b0SAdrian Chadd * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 274ad7e9b0SAdrian Chadd * THE POSSIBILITY OF SUCH DAMAGES. 284ad7e9b0SAdrian Chadd * 294ad7e9b0SAdrian Chadd * $FreeBSD$ 304ad7e9b0SAdrian Chadd */ 314ad7e9b0SAdrian Chadd 324ad7e9b0SAdrian Chadd #ifndef _BHND_BHNDVAR_H_ 334ad7e9b0SAdrian Chadd #define _BHND_BHNDVAR_H_ 344ad7e9b0SAdrian Chadd 354ad7e9b0SAdrian Chadd #include <sys/param.h> 364ad7e9b0SAdrian Chadd #include <sys/bus.h> 374ad7e9b0SAdrian Chadd #include <sys/malloc.h> 384ad7e9b0SAdrian Chadd 394ad7e9b0SAdrian Chadd #include "bhnd.h" 404ad7e9b0SAdrian Chadd 414ad7e9b0SAdrian Chadd /* 424ad7e9b0SAdrian Chadd * Definitions shared by bhnd(4) bus and bhndb(4) bridge driver implementations. 434ad7e9b0SAdrian Chadd */ 444ad7e9b0SAdrian Chadd 454ad7e9b0SAdrian Chadd MALLOC_DECLARE(M_BHND); 464ad7e9b0SAdrian Chadd DECLARE_CLASS(bhnd_driver); 474ad7e9b0SAdrian Chadd 48*f90f4b65SLandon J. Fuller struct bhnd_core_pmu_info; 494ad7e9b0SAdrian Chadd 504ad7e9b0SAdrian Chadd int bhnd_generic_attach(device_t dev); 514ad7e9b0SAdrian Chadd int bhnd_generic_detach(device_t dev); 524ad7e9b0SAdrian Chadd int bhnd_generic_shutdown(device_t dev); 534ad7e9b0SAdrian Chadd int bhnd_generic_resume(device_t dev); 544ad7e9b0SAdrian Chadd int bhnd_generic_suspend(device_t dev); 554ad7e9b0SAdrian Chadd 564ad7e9b0SAdrian Chadd int bhnd_generic_get_probe_order(device_t dev, 574ad7e9b0SAdrian Chadd device_t child); 584ad7e9b0SAdrian Chadd 59*f90f4b65SLandon J. Fuller int bhnd_generic_alloc_pmu(device_t dev, 60*f90f4b65SLandon J. Fuller device_t child); 61*f90f4b65SLandon J. Fuller int bhnd_generic_release_pmu(device_t dev, 62*f90f4b65SLandon J. Fuller device_t child); 63*f90f4b65SLandon J. Fuller int bhnd_generic_request_clock(device_t dev, 64*f90f4b65SLandon J. Fuller device_t child, bhnd_clock clock); 65*f90f4b65SLandon J. Fuller int bhnd_generic_enable_clocks(device_t dev, 66*f90f4b65SLandon J. Fuller device_t child, uint32_t clocks); 67*f90f4b65SLandon J. Fuller int bhnd_generic_request_ext_rsrc(device_t dev, 68*f90f4b65SLandon J. Fuller device_t child, u_int rsrc); 69*f90f4b65SLandon J. Fuller int bhnd_generic_release_ext_rsrc(device_t dev, 70*f90f4b65SLandon J. Fuller device_t child, u_int rsrc); 71*f90f4b65SLandon J. Fuller 724ad7e9b0SAdrian Chadd int bhnd_generic_print_child(device_t dev, 734ad7e9b0SAdrian Chadd device_t child); 744ad7e9b0SAdrian Chadd void bhnd_generic_probe_nomatch(device_t dev, 754ad7e9b0SAdrian Chadd device_t child); 764ad7e9b0SAdrian Chadd 77688fc8c0SLandon J. Fuller device_t bhnd_generic_add_child(device_t dev, u_int order, 78688fc8c0SLandon J. Fuller const char *name, int unit); 79*f90f4b65SLandon J. Fuller void bhnd_generic_child_added(device_t dev, device_t child); 80688fc8c0SLandon J. Fuller void bhnd_generic_child_deleted(device_t dev, 81688fc8c0SLandon J. Fuller device_t child); 824ad7e9b0SAdrian Chadd int bhnd_generic_suspend_child(device_t dev, 834ad7e9b0SAdrian Chadd device_t child); 844ad7e9b0SAdrian Chadd int bhnd_generic_resume_child(device_t dev, 854ad7e9b0SAdrian Chadd device_t child); 864ad7e9b0SAdrian Chadd 87fdedcd9fSLandon J. Fuller int bhnd_generic_get_nvram_var(device_t dev, 88fdedcd9fSLandon J. Fuller device_t child, const char *name, void *buf, 891728aef2SLandon J. Fuller size_t *size, bhnd_nvram_type type); 90fdedcd9fSLandon J. Fuller 91*f90f4b65SLandon J. Fuller 92*f90f4b65SLandon J. Fuller /** 93*f90f4b65SLandon J. Fuller * bhnd per-device info. Must be first member of all subclass 94*f90f4b65SLandon J. Fuller * devinfo structures. 95*f90f4b65SLandon J. Fuller */ 96*f90f4b65SLandon J. Fuller struct bhnd_devinfo { 97*f90f4b65SLandon J. Fuller struct bhnd_core_pmu_info *pmu_info; /**< PMU info, or NULL */ 98*f90f4b65SLandon J. Fuller }; 99*f90f4b65SLandon J. Fuller 100*f90f4b65SLandon J. Fuller /** 101*f90f4b65SLandon J. Fuller * bhnd driver instance state. Must be first member of all subclass 102*f90f4b65SLandon J. Fuller * softc structures. 103*f90f4b65SLandon J. Fuller */ 104*f90f4b65SLandon J. Fuller struct bhnd_softc { 105*f90f4b65SLandon J. Fuller device_t dev; /**< bus device */ 106*f90f4b65SLandon J. Fuller 107*f90f4b65SLandon J. Fuller bool attach_done; /**< true if initialization of 108*f90f4b65SLandon J. Fuller * all platform devices has 109*f90f4b65SLandon J. Fuller * been completed */ 110*f90f4b65SLandon J. Fuller device_t chipc_dev; /**< bhnd_chipc device */ 111*f90f4b65SLandon J. Fuller device_t nvram_dev; /**< bhnd_nvram device, if any */ 112*f90f4b65SLandon J. Fuller device_t pmu_dev; /**< bhnd_pmu device, if any */ 113*f90f4b65SLandon J. Fuller }; 114*f90f4b65SLandon J. Fuller 1154ad7e9b0SAdrian Chadd #endif /* _BHND_BHNDVAR_H_ */ 116