Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:53

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /*
0004  * RTEMS support for MPC83xx
0005  *
0006  * This file contains the MPC83xx I2C driver declarations.
0007  */
0008 
0009 /*
0010  * Copyright (c) 2007 embedded brains GmbH & Co. KG
0011  *
0012  * Redistribution and use in source and binary forms, with or without
0013  * modification, are permitted provided that the following conditions
0014  * are met:
0015  * 1. Redistributions of source code must retain the above copyright
0016  *    notice, this list of conditions and the following disclaimer.
0017  * 2. Redistributions in binary form must reproduce the above copyright
0018  *    notice, this list of conditions and the following disclaimer in the
0019  *    documentation and/or other materials provided with the distribution.
0020  *
0021  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0022  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0023  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0024  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0025  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0026  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0027  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0028  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0029  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0030  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0031  * POSSIBILITY OF SUCH DAMAGE.
0032  */
0033 
0034 #ifndef _MPC83XX_I2CDRV_H
0035 #define _MPC83XX_I2CDRV_H
0036 
0037 #include <rtems/libi2c.h>
0038 #include <rtems/irq.h>
0039 
0040 #include <bsp.h>
0041 
0042 #ifdef LIBBSP_POWERPC_GEN83XX_BSP_H
0043   #include <mpc83xx/mpc83xx.h>
0044 #endif
0045 
0046 #ifdef __cplusplus
0047 extern "C" {
0048 #endif
0049 
0050 #ifdef LIBBSP_POWERPC_MPC55XXEVB_BSP_H
0051   typedef struct {
0052     volatile uint8_t i2cadr;
0053     volatile uint8_t i2cfdr;
0054     volatile uint8_t i2ccr;
0055     volatile uint8_t i2csr;
0056     volatile uint8_t i2cdr;
0057     volatile uint8_t i2cdfsrr;
0058   } m83xxI2CRegisters_t;
0059 #endif
0060 
0061 typedef struct mpc83xx_i2c_softc {
0062   m83xxI2CRegisters_t *reg_ptr;     /* ptr to HW registers             */
0063   int                  initialized; /* TRUE: module is initialized     */
0064   rtems_irq_number     irq_number;  /* IRQ number used for this module */
0065   uint32_t             base_frq;    /* input frq for baud rate divider */
0066   rtems_id             irq_sema_id; /* SEMA used for IRQ signalling    */
0067   void               (*probe)(struct mpc83xx_i2c_softc *self);
0068 } mpc83xx_i2c_softc_t ;
0069 
0070 typedef struct {
0071   rtems_libi2c_bus_t       bus_desc;
0072   struct mpc83xx_i2c_softc softc;
0073 } mpc83xx_i2c_desc_t;
0074 
0075 
0076 extern rtems_libi2c_bus_ops_t mpc83xx_i2c_ops;
0077 
0078 #ifdef __cplusplus
0079 }
0080 #endif
0081 
0082 
0083 #endif /* _MPC83XX_I2CDRV_H */