xref: /freebsd/sys/dev/bhnd/bhndvar.h (revision fdedcd9f95e22a3e443cdd4b3df5d58de6ac6c28)
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