summaryrefslogtreecommitdiff
path: root/firmware/target/arm
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm')
-rw-r--r--firmware/target/arm/imx233/creative-zen/backlight-zen.c6
-rw-r--r--firmware/target/arm/imx233/creative-zen/button-target.h6
-rw-r--r--firmware/target/arm/imx233/creative-zen/button-zen.c16
-rw-r--r--firmware/target/arm/imx233/creative-zen/power-zen.c12
-rw-r--r--firmware/target/arm/imx233/emi-imx233.c2
-rw-r--r--firmware/target/arm/imx233/power-imx233.c4
-rw-r--r--firmware/target/arm/imx233/power-imx233.h9
-rw-r--r--firmware/target/arm/imx233/powermgmt-imx233.c2
8 files changed, 53 insertions, 4 deletions
diff --git a/firmware/target/arm/imx233/creative-zen/backlight-zen.c b/firmware/target/arm/imx233/creative-zen/backlight-zen.c
index 0d223b52e9..74e1e91a49 100644
--- a/firmware/target/arm/imx233/creative-zen/backlight-zen.c
+++ b/firmware/target/arm/imx233/creative-zen/backlight-zen.c
@@ -29,6 +29,9 @@
29 29
30void _backlight_set_brightness(int level) 30void _backlight_set_brightness(int level)
31{ 31{
32#ifdef CREATIVE_ZENV
33 lcd_set_contrast(level);
34#else
32 unsigned val = (level + 200) * level / 1000; 35 unsigned val = (level + 200) * level / 1000;
33 if(level != 0) 36 if(level != 0)
34 { 37 {
@@ -39,14 +42,17 @@ void _backlight_set_brightness(int level)
39 } 42 }
40 else 43 else
41 imx233_pinctrl_set_gpio(1, 12, false); 44 imx233_pinctrl_set_gpio(1, 12, false);
45#endif
42} 46}
43 47
44bool _backlight_init(void) 48bool _backlight_init(void)
45{ 49{
50#ifndef CREATIVE_ZENV
46 imx233_pinctrl_acquire(1, 12, "backlight_enable"); 51 imx233_pinctrl_acquire(1, 12, "backlight_enable");
47 imx233_pinctrl_set_function(1, 12, PINCTRL_FUNCTION_GPIO); 52 imx233_pinctrl_set_function(1, 12, PINCTRL_FUNCTION_GPIO);
48 imx233_pinctrl_enable_gpio(1, 12, true); 53 imx233_pinctrl_enable_gpio(1, 12, true);
49 imx233_uartdbg_init(BAUD_38400); 54 imx233_uartdbg_init(BAUD_38400);
55#endif
50 return true; 56 return true;
51} 57}
52 58
diff --git a/firmware/target/arm/imx233/creative-zen/button-target.h b/firmware/target/arm/imx233/creative-zen/button-target.h
index cddff4d9cc..7974ae42ad 100644
--- a/firmware/target/arm/imx233/creative-zen/button-target.h
+++ b/firmware/target/arm/imx233/creative-zen/button-target.h
@@ -47,8 +47,12 @@ bool button_debug_screen(void);
47#define BUTTON_TOPLEFT 0x00001000 47#define BUTTON_TOPLEFT 0x00001000
48#define BUTTON_TOPRIGHT 0x00002000 48#define BUTTON_TOPRIGHT 0x00002000
49#endif 49#endif
50#ifdef CREATIVE_ZENV
51#define BUTTON_VOL_UP 0x00004000
52#define BUTTON_VOL_DOWN 0x00008000
53#endif
50 54
51#define BUTTON_MAIN 0x00003fff 55#define BUTTON_MAIN 0x0000ffff
52 56
53/* Software power-off */ 57/* Software power-off */
54#define POWEROFF_BUTTON BUTTON_POWER 58#define POWEROFF_BUTTON BUTTON_POWER
diff --git a/firmware/target/arm/imx233/creative-zen/button-zen.c b/firmware/target/arm/imx233/creative-zen/button-zen.c
index 1997f91357..8f20961a57 100644
--- a/firmware/target/arm/imx233/creative-zen/button-zen.c
+++ b/firmware/target/arm/imx233/creative-zen/button-zen.c
@@ -57,6 +57,20 @@ struct imx233_button_lradc_mapping_t imx233_button_lradc_mapping[] =
57 {2945, BUTTON_PLAYPAUSE}, 57 {2945, BUTTON_PLAYPAUSE},
58 {3400, 0}, 58 {3400, 0},
59 {0, IMX233_BUTTON_LRADC_END}, 59 {0, IMX233_BUTTON_LRADC_END},
60#elif defined(CREATIVE_ZENV)
61 {190, IMX233_BUTTON_LRADC_HOLD},
62 {250, BUTTON_PLAYPAUSE},
63 {530, BUTTON_BACK},
64 {785, BUTTON_VOL_UP},
65 {1040, BUTTON_VOL_DOWN},
66 {1295, BUTTON_MENU},
67 {1540, BUTTON_UP},
68 {1800, BUTTON_SELECT},
69 {2070, BUTTON_LEFT},
70 {2315, BUTTON_RIGHT},
71 {2550, BUTTON_DOWN},
72 {3450, 0},
73 {0, IMX233_BUTTON_LRADC_END},
60#elif defined(CREATIVE_ZENMOZAIC) 74#elif defined(CREATIVE_ZENMOZAIC)
61 {0, IMX233_BUTTON_LRADC_HOLD}, 75 {0, IMX233_BUTTON_LRADC_HOLD},
62 {200, BUTTON_MENU}, 76 {200, BUTTON_MENU},
@@ -100,7 +114,7 @@ bool headphones_inserted(void)
100int button_read_device(void) 114int button_read_device(void)
101{ 115{
102 int btn = 0; 116 int btn = 0;
103 if(BF_RD(POWER_STS, PSWITCH) == 1) 117 if(imx233_power_read_pswitch() == 1)
104 btn |= BUTTON_POWER; 118 btn |= BUTTON_POWER;
105 return imx233_button_lradc_read(btn); 119 return imx233_button_lradc_read(btn);
106} 120}
diff --git a/firmware/target/arm/imx233/creative-zen/power-zen.c b/firmware/target/arm/imx233/creative-zen/power-zen.c
index 2c68325432..c1ad5989c0 100644
--- a/firmware/target/arm/imx233/creative-zen/power-zen.c
+++ b/firmware/target/arm/imx233/creative-zen/power-zen.c
@@ -58,4 +58,14 @@ bool tuner_power(bool enable)
58bool tuner_powered(void) 58bool tuner_powered(void)
59{ 59{
60 return tuner_enable; 60 return tuner_enable;
61} \ No newline at end of file 61}
62
63void ide_power_enable(bool on)
64{
65 (void) on;
66}
67
68bool ide_powered(void)
69{
70 return true;
71}
diff --git a/firmware/target/arm/imx233/emi-imx233.c b/firmware/target/arm/imx233/emi-imx233.c
index 1ae6e22f48..259ada0e94 100644
--- a/firmware/target/arm/imx233/emi-imx233.c
+++ b/firmware/target/arm/imx233/emi-imx233.c
@@ -196,11 +196,13 @@ struct imx233_emi_info_t imx233_emi_get_info(void)
196{ 196{
197 struct imx233_emi_info_t info; 197 struct imx233_emi_info_t info;
198 memset(&info, 0, sizeof(info)); 198 memset(&info, 0, sizeof(info));
199#if IMX233_SUBTARGET >= 3700
199 info.rows = 13 - BF_RD(DRAM_CTL10, ADDR_PINS); 200 info.rows = 13 - BF_RD(DRAM_CTL10, ADDR_PINS);
200 info.columns = 12 - BF_RD(DRAM_CTL11, COLUMN_SIZE); 201 info.columns = 12 - BF_RD(DRAM_CTL11, COLUMN_SIZE);
201 info.cas = BF_RD(DRAM_CTL13, CASLAT_LIN); 202 info.cas = BF_RD(DRAM_CTL13, CASLAT_LIN);
202 info.banks = 4; 203 info.banks = 4;
203 info.chips = __builtin_popcount(BF_RD(DRAM_CTL14, CS_MAP)); 204 info.chips = __builtin_popcount(BF_RD(DRAM_CTL14, CS_MAP));
204 info.size = 2 * (1 << (info.rows + info.columns)) * info.chips * info.banks; 205 info.size = 2 * (1 << (info.rows + info.columns)) * info.chips * info.banks;
206#endif
205 return info; 207 return info;
206} \ No newline at end of file 208} \ No newline at end of file
diff --git a/firmware/target/arm/imx233/power-imx233.c b/firmware/target/arm/imx233/power-imx233.c
index b0e614afe7..af333dea59 100644
--- a/firmware/target/arm/imx233/power-imx233.c
+++ b/firmware/target/arm/imx233/power-imx233.c
@@ -124,7 +124,9 @@ void INT_VDD5V(void)
124 124
125void imx233_power_init(void) 125void imx233_power_init(void)
126{ 126{
127#if IMX233_SUBTARGET >= 3700
127 BF_CLR(POWER_MINPWR, HALF_FETS); 128 BF_CLR(POWER_MINPWR, HALF_FETS);
129#endif
128 /* setup vbusvalid parameters: set threshold to 4v and power up comparators */ 130 /* setup vbusvalid parameters: set threshold to 4v and power up comparators */
129 BF_CLR(POWER_5VCTRL, VBUSVALID_TRSH); 131 BF_CLR(POWER_5VCTRL, VBUSVALID_TRSH);
130 BF_SETV(POWER_5VCTRL, VBUSVALID_TRSH, 1); 132 BF_SETV(POWER_5VCTRL, VBUSVALID_TRSH, 1);
@@ -155,8 +157,10 @@ void imx233_power_init(void)
155 BF_SET(POWER_CTRL, POLARITY_VDD5V_GT_VDDIO); 157 BF_SET(POWER_CTRL, POLARITY_VDD5V_GT_VDDIO);
156 BF_SET(POWER_CTRL, ENIRQ_VDD5V_GT_VDDIO); 158 BF_SET(POWER_CTRL, ENIRQ_VDD5V_GT_VDDIO);
157 /* make the vbusvalid detection way is not enabled */ 159 /* make the vbusvalid detection way is not enabled */
160#if IMX233_SUBTARGET >= 3700
158 BF_CLR(POWER_CTRL, ENIRQ_VBUS_VALID); 161 BF_CLR(POWER_CTRL, ENIRQ_VBUS_VALID);
159#endif 162#endif
163#endif
160 /* the VDD5V IRQ is shared by several sources, disable them */ 164 /* the VDD5V IRQ is shared by several sources, disable them */
161#if IMX233_SUBTARGET >= 3700 165#if IMX233_SUBTARGET >= 3700
162 BF_CLR(POWER_CTRL, ENIRQ_PSWITCH); 166 BF_CLR(POWER_CTRL, ENIRQ_PSWITCH);
diff --git a/firmware/target/arm/imx233/power-imx233.h b/firmware/target/arm/imx233/power-imx233.h
index 59ffcd37a2..9888bebe1f 100644
--- a/firmware/target/arm/imx233/power-imx233.h
+++ b/firmware/target/arm/imx233/power-imx233.h
@@ -119,6 +119,15 @@ static inline void imx233_power_set_dcdc_freq(bool pll, unsigned freq)
119} 119}
120#endif 120#endif
121 121
122static inline unsigned imx233_power_read_pswitch(void)
123{
124#if IMX233_SUBTARGET >= 3700
125 return BF_RD(POWER_STS, PSWITCH);
126#else
127 return BF_RD(DIGCTL_STATUS, PSWITCH);
128#endif
129}
130
122#if IMX233_SUBTARGET < 3700 131#if IMX233_SUBTARGET < 3700
123/* return -1 on error */ 132/* return -1 on error */
124int imx233_power_sense_die_temperature(int *min, int *max); 133int imx233_power_sense_die_temperature(int *min, int *max);
diff --git a/firmware/target/arm/imx233/powermgmt-imx233.c b/firmware/target/arm/imx233/powermgmt-imx233.c
index 9819406974..895c91dda2 100644
--- a/firmware/target/arm/imx233/powermgmt-imx233.c
+++ b/firmware/target/arm/imx233/powermgmt-imx233.c
@@ -48,9 +48,9 @@ void imx233_powermgmt_init(void)
48{ 48{
49 imx233_power_set_charge_current(IMX233_CHARGE_CURRENT); 49 imx233_power_set_charge_current(IMX233_CHARGE_CURRENT);
50 imx233_power_set_stop_current(IMX233_STOP_CURRENT); 50 imx233_power_set_stop_current(IMX233_STOP_CURRENT);
51#if IMX233_SUBTARGET >= 3700
51 /* assume that adc_init was called and battery monitoring via LRADC setup */ 52 /* assume that adc_init was called and battery monitoring via LRADC setup */
52 BF_WR(POWER_BATTMONITOR, EN_BATADJ, 1); 53 BF_WR(POWER_BATTMONITOR, EN_BATADJ, 1);
53#if IMX233_SUBTARGET >= 3700
54 /* setup linear regulator offsets to 25 mV below to prevent contention between 54 /* setup linear regulator offsets to 25 mV below to prevent contention between
55 * linear regulators and DCDC */ 55 * linear regulators and DCDC */
56 BF_WR(POWER_VDDDCTRL, LINREG_OFFSET, 2); 56 BF_WR(POWER_VDDDCTRL, LINREG_OFFSET, 2);