blob: 6a69896afc6cd005a0716282b0cbd5bc76957ae8 [file] [log] [blame]
yu.dongc33b3072024-08-21 23:14:49 -07001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2005
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*****************************************************************************
37 *
38 * Filename:
39 * ---------
40 * divider_public.h
41 *
42 * Project:
43 * --------
44 * Maui_Software
45 *
46 * Description:
47 * ------------
48 * This file is for the public access for HW divider accelerator operation.
49 *
50 * Author:
51 * -------
52 * -------
53 *
54 *============================================================================
55 * HISTORY
56 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
57 *------------------------------------------------------------------------------
58 * removed!
59 * removed!
60 * removed!
61 *
62 * removed!
63 * removed!
64 * removed!
65 *
66 * removed!
67 * removed!
68 * removed!
69 *
70 * removed!
71 * removed!
72 * removed!
73 * removed!
74 * removed!
75 * removed!
76 * removed!
77 * removed!
78 * removed!
79 * removed!
80 * removed!
81 * removed!
82 * removed!
83 * removed!
84 * removed!
85 * removed!
86 *------------------------------------------------------------------------------
87 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
88 *============================================================================
89 ****************************************************************************/
90
91#ifndef DIVIDER_PUBLIC_H
92#define DIVIDER__PUBLIC_H
93
94#include "kal_general_types.h"
95
96#ifdef __HW_DIVIDER__
97
98#define DIV_CONTROL_SIGNED_QUOTIENT_NONCONST 0x60000011
99#define DIV_CONTROL_SIGNED_REMAINDER_NONCONST 0x80000011
100
101#define DIV_CONTROL_UNSIGNED_QUOTIENT_NONCONST 0x60000001
102#define DIV_CONTROL_UNSIGNED_REMAINDER_NONCONST 0x80000001
103
104#define DIVIDE(a, b) (Divider_ON_OFF(a, b, DIV_CONTROL_SIGNED_QUOTIENT_NONCONST))
105#define MODULO(a, b) (Divider_ON_OFF(a, b, DIV_CONTROL_SIGNED_REMAINDER_NONCONST))
106
107extern kal_uint32 Divider_ON_OFF(kal_uint32 divident, kal_uint32 divisor, kal_uint32 div_control);
108
109//; return kal_uint32: =Quotient if ((div_control>>27)==0x0C)
110//; =Remainder if ((div_control>>27)==0x10)
111//; For signed operation, if ((div_control & 0x00000010)==0x10), and input divident,
112//; divisor, return value are all signed.
113//; For unsigned operation, if ((div_control & 0x00000010)==0).
114//; div_control=0x60000011 for signed, non-const operation, return signed quotient.
115//; div_control=0x80000011 for signed, non-const operation, return signed remainder.
116//; div_control=0x60000001 for unsigned, non-const operation, return unsigned quotient.
117//; div_control=0x80000001 for unsigned, non-const operation, return unsigned remainder.
118
119#else
120
121#define DIVIDE( a, b ) ((a)/(b))
122#define MODULO( a, b ) ((a)%(b))
123
124#endif
125
126#endif
127