14ad7e9b0SAdrian Chadd /*- 24ad7e9b0SAdrian Chadd * Copyright (c) 2015 Landon Fuller <landon@landonf.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 484ad7e9b0SAdrian Chadd /** 49688fc8c0SLandon J. Fuller * bhnd per-device info. Must be first member of all subclass 50688fc8c0SLandon J. Fuller * devinfo structures. 51688fc8c0SLandon J. Fuller */ 52688fc8c0SLandon J. Fuller struct bhnd_devinfo { 53688fc8c0SLandon J. Fuller }; 54688fc8c0SLandon J. Fuller 55688fc8c0SLandon J. Fuller /** 564ad7e9b0SAdrian Chadd * bhnd driver instance state. Must be first member of all subclass 574ad7e9b0SAdrian Chadd * softc structures. 584ad7e9b0SAdrian Chadd */ 59*fdedcd9fSLandon J. Fuller struct bhnd_softc { 60*fdedcd9fSLandon J. Fuller device_t dev; /**< bus device */ 614ad7e9b0SAdrian Chadd 62*fdedcd9fSLandon J. Fuller bool attach_done; /**< true if initialization of all 63*fdedcd9fSLandon J. Fuller * platform devices has been 64*fdedcd9fSLandon J. Fuller * completed */ 65*fdedcd9fSLandon J. Fuller device_t chipc_dev; /**< bhnd_chipc device */ 66*fdedcd9fSLandon J. Fuller device_t nvram_dev; /**< bhnd_nvram device, if any */ 67*fdedcd9fSLandon J. Fuller device_t pmu_dev; /**< bhnd_pmu device, if any */ 68*fdedcd9fSLandon J. Fuller }; 694ad7e9b0SAdrian Chadd 704ad7e9b0SAdrian Chadd int bhnd_generic_attach(device_t dev); 714ad7e9b0SAdrian Chadd int bhnd_generic_detach(device_t dev); 724ad7e9b0SAdrian Chadd int bhnd_generic_shutdown(device_t dev); 734ad7e9b0SAdrian Chadd int bhnd_generic_resume(device_t dev); 744ad7e9b0SAdrian Chadd int bhnd_generic_suspend(device_t dev); 754ad7e9b0SAdrian Chadd 764ad7e9b0SAdrian Chadd int bhnd_generic_get_probe_order(device_t dev, 774ad7e9b0SAdrian Chadd device_t child); 784ad7e9b0SAdrian Chadd 794ad7e9b0SAdrian Chadd int bhnd_generic_print_child(device_t dev, 804ad7e9b0SAdrian Chadd device_t child); 814ad7e9b0SAdrian Chadd void bhnd_generic_probe_nomatch(device_t dev, 824ad7e9b0SAdrian Chadd device_t child); 834ad7e9b0SAdrian Chadd 84688fc8c0SLandon J. Fuller device_t bhnd_generic_add_child(device_t dev, u_int order, 85688fc8c0SLandon J. Fuller const char *name, int unit); 86688fc8c0SLandon J. Fuller void bhnd_generic_child_deleted(device_t dev, 87688fc8c0SLandon J. Fuller device_t child); 884ad7e9b0SAdrian Chadd int bhnd_generic_suspend_child(device_t dev, 894ad7e9b0SAdrian Chadd device_t child); 904ad7e9b0SAdrian Chadd int bhnd_generic_resume_child(device_t dev, 914ad7e9b0SAdrian Chadd device_t child); 924ad7e9b0SAdrian Chadd 93*fdedcd9fSLandon J. Fuller int bhnd_generic_get_nvram_var(device_t dev, 94*fdedcd9fSLandon J. Fuller device_t child, const char *name, void *buf, 95*fdedcd9fSLandon J. Fuller size_t *size); 96*fdedcd9fSLandon J. Fuller 974ad7e9b0SAdrian Chadd #endif /* _BHND_BHNDVAR_H_ */ 98