cmu.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * FILE NAME
  3.  * arch/mips/vr41xx/common/cmu.c
  4.  *
  5.  * BRIEF MODULE DESCRIPTION
  6.  * Clock Mask Unit routines for the NEC VR4100 series.
  7.  *
  8.  * Author: Yoichi Yuasa
  9.  *         yyuasa@mvista.com or source@mvista.com
  10.  *
  11.  * Copyright 2001,2002 MontaVista Software Inc.
  12.  *
  13.  *  This program is free software; you can redistribute it and/or modify it
  14.  *  under the terms of the GNU General Public License as published by the
  15.  *  Free Software Foundation; either version 2 of the License, or (at your
  16.  *  option) any later version.
  17.  *
  18.  *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
  19.  *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  20.  *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  21.  *  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  22.  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  23.  *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
  24.  *  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  25.  *  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
  26.  *  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
  27.  *  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  28.  *
  29.  *  You should have received a copy of the GNU General Public License along
  30.  *  with this program; if not, write to the Free Software Foundation, Inc.,
  31.  *  675 Mass Ave, Cambridge, MA 02139, USA.
  32.  */
  33. /*
  34.  * Changes:
  35.  *  MontaVista Software Inc. <yyuasa@mvista.com> or <source@mvista.com>
  36.  *  - Added support for NEC VR4111 and VR4121.
  37.  *
  38.  *  MontaVista Software Inc. <yyuasa@mvista.com> or <source@mvista.com>
  39.  *  - New creation, NEC VR4122 and VR4131 are supported.
  40.  */
  41. #include <linux/init.h>
  42. #include <linux/types.h>
  43. #include <asm/cpu.h>
  44. #include <asm/io.h>
  45. #define VR4111_CMUCLKMSK KSEG1ADDR(0x0b000060)
  46. #define VR4122_CMUCLKMSK KSEG1ADDR(0x0f000060)
  47. static u32 vr41xx_cmu_base;
  48. static u16 cmuclkmsk;
  49. #define write_cmu(mask) writew((mask), vr41xx_cmu_base)
  50. void vr41xx_clock_supply(u16 mask)
  51. {
  52. cmuclkmsk |= mask;
  53. write_cmu(cmuclkmsk);
  54. }
  55. void vr41xx_clock_mask(u16 mask)
  56. {
  57. cmuclkmsk &= ~mask;
  58. write_cmu(cmuclkmsk);
  59. }
  60. void __init vr41xx_cmu_init(u16 mask)
  61. {
  62. switch (mips_cpu.cputype) {
  63.         case CPU_VR4111:
  64.         case CPU_VR4121:
  65.                 vr41xx_cmu_base = VR4111_CMUCLKMSK;
  66.                 break;
  67.         case CPU_VR4122:
  68.         case CPU_VR4131:
  69.                 vr41xx_cmu_base = VR4122_CMUCLKMSK;
  70.                 break;
  71. default:
  72. panic("Unexpected CPU of NEC VR4100 series");
  73. break;
  74.         }
  75. cmuclkmsk = mask;
  76. }