1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<HTML>
3<HEAD>
4<META http-equiv="Content-Type" content="text/html; charset=windows-1252">
5<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 7.0.1.0 for Windows">
6<META http-equiv="Content-Style-Type" content="text/css">
7<TITLE>PM_GetAmpGainLevel</TITLE>
8<LINK rel="stylesheet" href="../../css/nitro.css" type="text/css">
9</HEAD>
10<BODY>
11<H1 align="left">PM_GetAmpGainLevel <IMG src="../../image/TWL.gif" width="24" height="12" border="0" align="middle"></H1>
12<H2>Syntax</H2>
13<DL>
14  <DD>
15  <PRE><CODE>#include &lt;twl/spi.h&gt;</CODE></PRE>
16  <PRE><CODE>u32 PM_GetAmpGainLevel( u8* levelBuf );
17  </CODE></PRE>
18</DL>
19<H2>Arguments</H2>
20<TABLE border="1" width="100%">
21  <TBODY>
22    <TR>
23<TD width="13%"><EM><STRONG>levelBuf</STRONG></EM></TD>
24<TD width="87%">Buffer to store the obtained results for settings values that determine the amp gain.</TD>
25    </TR>
26  </TBODY>
27</TABLE>
28<H2>Return Values</H2>
29<P>If <CODE>PM_RESULT_SUCCESS</CODE>, the command was run successfully.</P>
30<P>If <CODE>PM_RESULT_BUSY</CODE>, the SPI was occupied by other processing and unable to process this function.</P>
31<H2>Description</H2>
32<P>Gets the current setting for the programmable amp gain.</P>
33<P>It saves a <CODE>u8</CODE> value in <SPAN class="argument">levelBuf</SPAN>. The values it can obtain are in the range of 0 to 119 (120 levels).
34</P>
35<TABLE border="1">
36  <TBODY>
37    <TR>
38<TH>Value Stored in <SPAN class="argument">levelBuf</SPAN></TH>
39<TH>Gain             </TH>
40    </TR>
41    <TR>
42      <TD> 0</TD>
43<TD> 10.5 dB</TD>
44    </TR>
45    <TR>
46      <TD> 1</TD>
47<TD> 11.0 dB</TD>
48    </TR>
49    <TR>
50      <TD> 2</TD>
51<TD> 11.5 dB</TD>
52    </TR>
53    <TR>
54      <TD> :</TD>
55      <TD> :</TD>
56    </TR>
57    <TR>
58<TD> n</TD>
59<TD>10.5 + (<I>n</I> x 0.5) dB</TD>
60    </TR>
61    <TR>
62      <TD> :</TD>
63      <TD> :</TD>
64    </TR>
65    <TR>
66      <TD> 119</TD>
67<TD> 70.0 dB</TD>
68    </TR>
69  </TBODY>
70</TABLE>
71<P>This function uses PXI to send a command to execute the operation in question on the ARM7 processor. Once it receives that command, the ARM7 executes it by manipulating the PMIC.</P>
72
73<P><BR> <BR> <B>About <CODE>PM_RESULT_BUSY</CODE></B></P>
74<P>The SPI is used for various other processes besides power management. If you call this function while another process is using it, this function sends a command to the ARM7. There, the SPI is determined to be BUSY, and <CODE>PM_RESULT_BUSY</CODE> is dispatched to the ARM9 without actually processing this function. Likewise, if you call this function while another PM process is running, that fact is determined on the ARM9, and this function returns <CODE>PM_RESULT_BUSY</CODE>. (In this case, the determination is made before notification is sent to the ARM7.)</P>
75<P>Accordingly, if you want to ensure that this function succeeds, make it loop until it succeeds as shown below. (This example does not take into account mistakes such as wrong arguments.)</P>
76<BLOCKQUOTE style="background-color:#ffffcc"><B>Example:</B><BR> <CODE>while( PM_GetAmpGainLevel( ... ) != PM_RESULT_SUCCESS )<BR> {<BR> }</CODE></BLOCKQUOTE>
77<P><BR> <BR> <B>Differences Between the <CODE>PM_GetAmpGain</A></CODE> and <A href="PM_GetAmpGainLevel.html"><CODE>PM_GetAmpGainLevel</CODE></A> Functions</B></P>
78<P>There are two types of functions to get the gain settings: <A href="PM_GetAmpGain.html"><CODE>PM_GetAmpGain</CODE></A> and <CODE>PM_GetAmpGainLevel</CODE> (this function). The former has existed since the old Nintendo DS system and can get four gain levels. (Four gain levels can be set, as well.) The latter function is explained in this reference page; it is new, has been added for the TWL system, and can get 120 gain levels.</P>
79<P>The <A href="PM_GetAmpGain.html"><CODE>PM_GetAmpGain</CODE></A> function can get four levels and is usable in any mode.</P>
80<P>The <CODE>PM_GetAmpGainLevel</CODE> function can get 120 levels and is usable only in TWL hybrid and TWL limited mode. The CODEC mode decides whether 120 levels are actually configured internally. The codec is configured with 120 levels when it is running in TWL mode (this should always be TWL mode).</P>
81<P>If 4 levels have been configured internally, this function gets a setting value that corresponds to 120 levels. On the other hand, if 120 levels have been configured internally and the <A href="PM_GetAmpGain.html"><CODE>PM_GetAmpGain</CODE></A> function attempts to get a 4-level value, the 120 levels are divided into 4 sections from which an approximate 4-level value is returned.</P>
82<P>The following table shows the 120-level values obtained from the <A href="PM_GetAmpGainLevel.html"><CODE>PM_GetAmpGainLevel</CODE></A> function when 4 levels are configured internally.
83</P>
84<TABLE border="1">
85  <TBODY>
86    <TR>
87<TH width="272"><B>Configured Value</B></TH>
88<TH width="466">Gain (120 Levels)         </TH>
89    </TR>
90    <TR>
91<TD width="272"><CODE>PM_AMPGAIN_20</CODE></TD>
92<TD width="466"> 31 (26.0 dB) </TD>
93    </TR>
94    <TR>
95<TD width="272"><CODE>PM_AMPGAIN_40</CODE></TD>
96<TD width="466"> 43 (32.0 dB)</TD>
97    </TR>
98    <TR>
99<TD width="272"><CODE>PM_AMPGAIN_80</CODE></TD>
100<TD width="466"> 55 (38.0 dB)</TD>
101    </TR>
102    <TR>
103<TD width="272"><CODE>PM_AMPGAIN_160</CODE></TD>
104<TD width="466"> 67 (44.0 dB)</TD>
105    </TR>
106  </TBODY>
107</TABLE>
108<P><BR>The values 31, 43, 55, and 67 are given the constant definitions <CODE>PM_AMPGAIN_LEVEL_DS0</CODE>, <CODE>PM_AMPGAIN_LEVEL_DS1</CODE>, <CODE>PM_AMPGAIN_LEVEL_DS2</CODE>, and <CODE>PM_AMPGAIN_LEVEL_DS3</CODE>, respectively.</P>
109<H2>Internal Operation</H2>
110<P>On NITRO hardware, reads the value of the PMIC register <CODE>PGA_GAIN</CODE>. On TWL hardware, reads the codec value.</P>
111<H2>See Also</H2>
112<P><A href="PM_Init.html"><CODE>PM_Init</CODE></A><BR> <A href="PM_SetAmpGain.html"><CODE>PM_SetAmpGainLevel*</CODE></A><BR> <A href="PM_GetAmpGain.html"><CODE>PM_GetAmpGain</CODE></A></P>
113<H2>Revision History</H2>
114<P>2009/06/03 Removed a description of the <CODE>PM_Init</CODE> function (because <CODE>OS_Init</CODE> is now required). <BR>2008/08/23 Mentioned <CODE>PM_RESULT_BUSY</CODE>. <BR>2008/05/01 Split off from <CODE>PM_GetAmpGain</CODE>.</P>
115
116<hr><p>CONFIDENTIAL</p></body>
117</HTML>