1*6b6d6c44SIan Lepore /*- 2*6b6d6c44SIan Lepore * Copyright (c) 2014 Ian Lepore <ian@freebsd.org> 3*6b6d6c44SIan Lepore * All rights reserved. 4*6b6d6c44SIan Lepore * 5*6b6d6c44SIan Lepore * Redistribution and use in source and binary forms, with or without 6*6b6d6c44SIan Lepore * modification, are permitted provided that the following conditions 7*6b6d6c44SIan Lepore * are met: 8*6b6d6c44SIan Lepore * 1. Redistributions of source code must retain the above copyright 9*6b6d6c44SIan Lepore * notice, this list of conditions and the following disclaimer. 10*6b6d6c44SIan Lepore * 2. Redistributions in binary form must reproduce the above copyright 11*6b6d6c44SIan Lepore * notice, this list of conditions and the following disclaimer in the 12*6b6d6c44SIan Lepore * documentation and/or other materials provided with the distribution. 13*6b6d6c44SIan Lepore * 14*6b6d6c44SIan Lepore * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15*6b6d6c44SIan Lepore * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16*6b6d6c44SIan Lepore * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17*6b6d6c44SIan Lepore * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 18*6b6d6c44SIan Lepore * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19*6b6d6c44SIan Lepore * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20*6b6d6c44SIan Lepore * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21*6b6d6c44SIan Lepore * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22*6b6d6c44SIan Lepore * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23*6b6d6c44SIan Lepore * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24*6b6d6c44SIan Lepore */ 25*6b6d6c44SIan Lepore 26*6b6d6c44SIan Lepore #ifndef DEV_FDT_CLOCK_H 27*6b6d6c44SIan Lepore #define DEV_FDT_CLOCK_H 28*6b6d6c44SIan Lepore 29*6b6d6c44SIan Lepore #include "fdt_clock_if.h" 30*6b6d6c44SIan Lepore 31*6b6d6c44SIan Lepore /* 32*6b6d6c44SIan Lepore * Get info about the Nth clock listed in consumer's "clocks" property. 33*6b6d6c44SIan Lepore * 34*6b6d6c44SIan Lepore * Returns 0 on success, ENXIO if clock #n not found. 35*6b6d6c44SIan Lepore */ 36*6b6d6c44SIan Lepore int fdt_clock_get_info(device_t consumer, int n, struct fdt_clock_info *info); 37*6b6d6c44SIan Lepore 38*6b6d6c44SIan Lepore /* 39*6b6d6c44SIan Lepore * Look up "clocks" property in consumer's fdt data and enable or disable all 40*6b6d6c44SIan Lepore * configured clocks. 41*6b6d6c44SIan Lepore */ 42*6b6d6c44SIan Lepore int fdt_clock_enable_all(device_t consumer); 43*6b6d6c44SIan Lepore int fdt_clock_disable_all(device_t consumer); 44*6b6d6c44SIan Lepore 45*6b6d6c44SIan Lepore /* 46*6b6d6c44SIan Lepore * [Un]register the given device instance as a driver that implements the 47*6b6d6c44SIan Lepore * fdt_clock interface. 48*6b6d6c44SIan Lepore */ 49*6b6d6c44SIan Lepore void fdt_clock_register_provider(device_t provider); 50*6b6d6c44SIan Lepore void fdt_clock_unregister_provider(device_t provider); 51*6b6d6c44SIan Lepore 52*6b6d6c44SIan Lepore #endif /* DEV_FDT_CLOCK_H */ 53*6b6d6c44SIan Lepore 54