| /******************************************************************************** |
| * Marvell GPL License Option |
| * |
| * If you received this File from Marvell, you may opt to use, redistribute and/or |
| * modify this File in accordance with the terms and conditions of the General |
| * Public License Version 2, June 1991 (the "GPL License"), a copy of which is |
| * available along with the File in the license.txt file or by writing to the Free |
| * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or |
| * on the worldwide web at http://www.gnu.org/licenses/gpl.txt. |
| * |
| * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED |
| * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY |
| * DISCLAIMED. The GPL License provides additional details about this warranty |
| * disclaimer. |
| ******************************************************************************/ |
| |
| #include <memmap.h> |
| #include <global.h> |
| #include "io.h" |
| #include "pwm_driver.h" |
| #include "galois_speed.h" |
| |
| #define PWM_CHANNEL 2 |
| |
| struct duty_volt { |
| int duty; |
| int volt; |
| }; |
| |
| static struct duty_volt dv_table[] = |
| { |
| {25, 1025}, |
| {50, 1000}, |
| {63, 975}, |
| {80, 950}, |
| {-1, -1}, |
| }; |
| |
| |
| int pwm(int volt) |
| { |
| int pwm_freq; |
| struct duty_volt *p; |
| PWM_SETTINGS pwm_setting ; |
| |
| pwm_setting.En = 1; |
| pwm_setting.PreScale = 1 ; |
| pwm_setting.Polarity = 0 ; |
| p = dv_table; |
| while(p->duty != -1) { |
| if(p->volt == volt) |
| break; |
| p++; |
| } |
| if(p->duty == -1) |
| return -1; |
| pwm_freq = GaloisGetFrequency(SOC_FREQ_CFG); |
| pwm_setting.Duty = pwm_freq*p->duty/100; |
| pwm_setting.Tcnt= pwm_freq; |
| |
| pwm_write_settings(PWM_CHANNEL, &pwm_setting) ; |
| pwm_on_off(PWM_CHANNEL, &pwm_setting, 1) ; |
| |
| return 0; |
| } |