drm_sun_i2c.c revision 1450
1450N/A * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. 1450N/A * Permission is hereby granted, free of charge, to any person obtaining a 1450N/A * copy of this software and associated documentation files (the "Software"), 1450N/A * to deal in the Software without restriction, including without limitation 1450N/A * the rights to use, copy, modify, merge, publish, distribute, sublicense, 1450N/A * and/or sell copies of the Software, and to permit persons to whom the 1450N/A * Software is furnished to do so, subject to the following conditions: 1450N/A * The above copyright notice and this permission notice (including the next 1450N/A * paragraph) shall be included in all copies or substantial portions of the 1450N/A * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1450N/A * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1450N/A * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1450N/A * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1450N/A * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 1450N/A * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 1450N/A * DEALINGS IN THE SOFTWARE. 1450N/A * Copyright (c) 2012 Intel Corporation. All rights reserved. 1450N/A /* Other master keeps the clock low. */ \
1450N/A /* Clock Synchronization */ 1450N/A /* FIXME: Does ddi_get_lbolt() return negative 1450N/A /* Step 1: free the bus. */ 1450N/A /* Other master keeps the clock low. 1450N/A /* Step 3: free the clock. */ 1450N/A /* Stop() must be called after start() or any 1450N/A * transfer routines, which all free the clock 1450N/A /* Step 1: Free the data */ 1450N/A /* Step 2: Hold the clock */ 1450N/A /* Step 3: (P) condition */ 1450N/A /* Other master keeps the data low. 1450N/A /* Write() must be called after start() or any 1450N/A * transfer routines, which all free the clock 1450N/A /* Step 2: hold the clock. */ 1450N/A /* Do arbitration: lose the bus. */ 1450N/A /* Do arbitration: someone performs (S) condition. */ 1450N/A /* Step 3: free the clock. */ 1450N/A /* Read() must be called after start() or any 1450N/A * transfer routines, which all free the clock 1450N/A /* Step 1: hold the clock. */ 1450N/A /* Step 2: read the data. */ 1450N/A /* Do arbitration: someone performs (S/Sr/P) condition. */ 1450N/A /* Step 3: free the clock */ 1450N/A /* Ack() must be called after start() or any 1450N/A * transfer routines, which all free the clock 1450N/A /* Step 1: free the data. */ 1450N/A /* Step 2: hold the clock. */ 1450N/A /* Step 3: free the clock */ 1450N/A /* Nak() must be called after start() or any 1450N/A * transfer routines, which all free the clock 1450N/A /* Step 1: hold the data. */ 1450N/A /* Step 2: hold the clock. */ 1450N/A /* Other master keeps the data low. */ 1450N/A /* Do arbitration: someone performs (S/Sr) condition. */ 1450N/A /* Step 3: free the clock */ 1450N/A /* Wack() must be called after start() or any 1450N/A * transfer routines, which all free the clock 1450N/A /* Step 1: hold the data. */ 1450N/A /* Step 2: hold the clock. */ 1450N/A /* Step 3: read the data. */ 1450N/A /* Step 4: free the clock */ 1450N/A /* FIXME: Does ddi_get_lbolt() return negative