linux/arch/arm/plat-spear/include/plat/padmux.h
<<
>>
Prefs
   1/*
   2 * arch/arm/plat-spear/include/plat/padmux.h
   3 *
   4 * SPEAr platform specific gpio pads muxing file
   5 *
   6 * Copyright (C) 2009 ST Microelectronics
   7 * Viresh Kumar<viresh.kumar@st.com>
   8 *
   9 * This file is licensed under the terms of the GNU General Public
  10 * License version 2. This program is licensed "as is" without any
  11 * warranty of any kind, whether express or implied.
  12 */
  13
  14#ifndef __PLAT_PADMUX_H
  15#define __PLAT_PADMUX_H
  16
  17#include <linux/types.h>
  18
  19/*
  20 * struct pmx_reg: configuration structure for mode reg and mux reg
  21 *
  22 * offset: offset of mode reg
  23 * mask: mask of mode reg
  24 */
  25struct pmx_reg {
  26        u32 offset;
  27        u32 mask;
  28};
  29
  30/*
  31 * struct pmx_dev_mode: configuration structure every group of modes of a device
  32 *
  33 * ids: all modes for this configuration
  34 * mask: mask for supported mode
  35 */
  36struct pmx_dev_mode {
  37        u32 ids;
  38        u32 mask;
  39};
  40
  41/*
  42 * struct pmx_mode: mode definition structure
  43 *
  44 * name: mode name
  45 * mask: mode mask
  46 */
  47struct pmx_mode {
  48        char *name;
  49        u32 id;
  50        u32 mask;
  51};
  52
  53/*
  54 * struct pmx_dev: device definition structure
  55 *
  56 * name: device name
  57 * modes: device configuration array for different modes supported
  58 * mode_count: size of modes array
  59 * is_active: is peripheral active/enabled
  60 * enb_on_reset: if 1, mask bits to be cleared in reg otherwise to be set in reg
  61 */
  62struct pmx_dev {
  63        char *name;
  64        struct pmx_dev_mode *modes;
  65        u8 mode_count;
  66        bool is_active;
  67        bool enb_on_reset;
  68};
  69
  70/*
  71 * struct pmx_driver: driver definition structure
  72 *
  73 * mode: mode to be set
  74 * devs: array of pointer to pmx devices
  75 * devs_count: ARRAY_SIZE of devs
  76 * base: base address of soc config registers
  77 * mode_reg: structure of mode config register
  78 * mux_reg: structure of device mux config register
  79 */
  80struct pmx_driver {
  81        struct pmx_mode *mode;
  82        struct pmx_dev **devs;
  83        u8 devs_count;
  84        u32 *base;
  85        struct pmx_reg mode_reg;
  86        struct pmx_reg mux_reg;
  87};
  88
  89/* pmx functions */
  90int pmx_register(struct pmx_driver *driver);
  91
  92#endif /* __PLAT_PADMUX_H */
  93