summaryrefslogtreecommitdiffstats
path: root/firmware/export/imx31l.h
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2008-12-27 19:18:50 +0000
committerMichael Sevakis <jethead71@rockbox.org>2008-12-27 19:18:50 +0000
commit1fea6f6b22af74e904d918fff4cebec345529f4b (patch)
tree1cdddb0ab125099b7439fd80984517d4a1880341 /firmware/export/imx31l.h
parentd6bae6c858413544ff0671910654f709d195e427 (diff)
downloadrockbox-1fea6f6b22af74e904d918fff4cebec345529f4b.tar.gz
rockbox-1fea6f6b22af74e904d918fff4cebec345529f4b.zip
Make si4700 tuner driver more sane with bit and field defines and entirely hide strange i2c interface from code with write/set/clear/masked functionality. On Gigabeat S use by-the-book busmode selection and GPIO lines. Implement some primitive station detection, debug registers in screen, and misc. changes to tie things together.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19600 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/export/imx31l.h')
-rwxr-xr-xfirmware/export/imx31l.h100
1 files changed, 55 insertions, 45 deletions
diff --git a/firmware/export/imx31l.h b/firmware/export/imx31l.h
index 6780a5a43f..5a964b8e2e 100755
--- a/firmware/export/imx31l.h
+++ b/firmware/export/imx31l.h
@@ -202,26 +202,33 @@
#define SW_MUX_CTL_GPIO1_0_GPIO1_1_GPIO1_2_GPIO1_3 IOMUXC_(0x14C)
#define SW_MUX_CTL_CAPTURE_COMPARE_WATCHDOG_RST_PWMO IOMUXC_(0x150)
-#define SW_MUX_OUT_EN_GPIO_DR 0x0
-#define SW_MUX_OUT_FUNCTIONAL 0x1
-#define SW_MUX_OUT_ALTERNATE_1 0x2
-#define SW_MUX_OUT_ALTERNATE_2 0x3
-#define SW_MUX_OUT_ALTERNATE_3 0x4
-#define SW_MUX_OUT_ALTERNATE_4 0x5
-#define SW_MUX_OUT_ALTERNATE_5 0x6
-#define SW_MUX_OUT_ALTERNATE_6 0x7
-
-#define SW_MUX_IN_NO_INPUTS 0x0
-#define SW_MUX_IN_GPIO_PSR_ISR 0x1
-#define SW_MUX_IN_FUNCTIONAL 0x2
-#define SW_MUX_IN_ALTERNATE_1 0x3
-#define SW_MUX_IN_ALTERNATE_2 0x4
-
+#define SW_MUX_OUT (0x7 << 4)
+#define SW_MUX_OUT_GPIO_DR (0x0 << 4)
+#define SW_MUX_OUT_FUNCTIONAL (0x1 << 4)
+#define SW_MUX_OUT_ALT1 (0x2 << 4)
+#define SW_MUX_OUT_ALT2 (0x3 << 4)
+#define SW_MUX_OUT_ALT3 (0x4 << 4)
+#define SW_MUX_OUT_ALT4 (0x5 << 4)
+#define SW_MUX_OUT_ALT5 (0x6 << 4)
+#define SW_MUX_OUT_ALT6 (0x7 << 4)
+
+#define SW_MUX_IN (0xf << 0)
+#define SW_MUX_IN_NO_INPUTS (0x0 << 0)
+#define SW_MUX_IN_GPIO_PSR_ISR (0x1 << 0)
+#define SW_MUX_IN_FUNCTIONAL (0x2 << 0)
+#define SW_MUX_IN_ALT1 (0x4 << 0)
+#define SW_MUX_IN_ALT2 (0x8 << 0)
+
+/* Masks for each signal field */
+#define SW_MUX_CTL_SIG1 (0x7f << 0)
+#define SW_MUX_CTL_SIG2 (0x7f << 8)
+#define SW_MUX_CTL_SIG3 (0x7f << 16)
+#define SW_MUX_CTL_SIG4 (0x7f << 24)
/* Shift above flags into one of the four fields in each register */
-#define SW_MUX_CTL_FLD_0(x) ((x) << 0)
-#define SW_MUX_CTL_FLD_1(x) ((x) << 8)
-#define SW_MUX_CTL_FLD_2(x) ((x) << 16)
-#define SW_MUX_CTL_FLD_3(x) ((x) << 24)
+#define SW_MUX_CTL_SIG1w(x) (((x) << 0) & SW_MUX_CTL_SIG1)
+#define SW_MUX_CTL_SIG2w(x) (((x) << 8) & SW_MUX_CTL_SIG2)
+#define SW_MUX_CTL_SIG3w(x) (((x) << 16) & SW_MUX_CTL_SIG3)
+#define SW_MUX_CTL_SIG4w(x) (((x) << 24) & SW_MUX_CTL_SIG4)
/* SW_PAD_CTL */
#define SW_PAD_CTL_TTM_PAD__X__X IOMUXC_(0x154)
@@ -336,36 +343,39 @@
#define SW_PAD_CTL_CAPTURE_COMPARE_WATCHDOG_RST IOMUXC_(0x308)
/* SW_PAD_CTL flags */
-#define SW_PAD_CTL_LOOPBACK (1 << 9)
-#define SW_PAD_CTL_DISABLE_PULL_UP_DOWN_AND_KEEPER (0 << 7)
-#if 0 /* Same as 0 */
-#define SW_PAD_CTL_DISABLE_PULL_UP_DOWN_AND_KEEPER (1 << 7)
-#endif
-#define SW_PAD_CTL_ENABLE_KEEPER (2 << 7)
-#define SW_PAD_CTL_ENABLE_PULL_UP_OR_PULL_DOWN (3 << 7)
-#define SW_PAD_CTL_100K_PULL_DOWN (0 << 5)
-#define SW_PAD_CTL_100K_PULL_UP (1 << 5)
+#define SW_PAD_CTL_LOOPBACK (0x1 << 9) /* Route output to input */
+/* Pullup, pulldown and keeper enable */
+#define SW_PAD_CTL_PUE_PKE (0x3 << 7)
+#define SW_PAD_CTL_PUE_PKE_DISABLE (0x0 << 7)
+#define SW_PAD_CTL_PUE_PKE_DISABLE_2 (0x1 << 7) /* Same as 0x0 */
+#define SW_PAD_CTL_PUE_PKE_KEEPER (0x2 << 7)
+#define SW_PAD_CTL_PUE_PKE_PULLUPDOWN (0x3 << 7) /* Enb. Pull up or down */
+/* Pullup/down resistance */
+#define SW_PAD_CTL_PUS (0x3 << 5)
+#define SW_PAD_CTL_PUS_DOWN_100K (0x0 << 5)
+#define SW_PAD_CTL_PUS_UP_100K (0x1 << 5)
#if 0 /* Completeness */
-#define SW_PAD_CTL_47K_PULL_UP (2 << 5) /* Not in IMX31/L */
-#define SW_PAD_CTL_22K_PULL_UP (3 << 5) /* Not in IMX31/L */
-#endif
-#define SW_PAD_CTL_IPP_HYS_STD (0 << 4)
-#define SW_PAD_CTL_IPP_HYS_SCHIMDT (1 << 4)
-#define SW_PAD_CTL_IPP_ODE_CMOS (0 << 3)
-#define SW_PAD_CTL_IPP_ODE_OPEN (1 << 3)
-#define SW_PAD_CTL_IPP_DSE_STD (0 << 1)
-#define SW_PAD_CTL_IPP_DSE_HIGH (1 << 1)
-#define SW_PAD_CTL_IPP_DSE_MAX (2 << 1)
-#if 0 /* Same as 2 */
-#define SW_PAD_CTL_IPP_DSE_MAX (3 << 1)
+#define SW_PAD_CTL_PUS_UP_47K (0x2 << 5) /* Not in IMX31/L */
+#define SW_PAD_CTL_PUS_UP_22K (0x3 << 5) /* Not in IMX31/L */
#endif
-#define SW_PAD_CTL_IPP_SRE_SLOW (0 << 0)
-#define SW_PAD_CTL_IPP_SRE_FAST (1 << 0)
+#define SW_PAD_CTL_HYS (0x1 << 4) /* Schmitt trigger input */
+#define SW_PAD_CTL_ODE (0x1 << 3) /* Open drain output 0=CMOS pushpull*/
+#define SW_PAD_CTL_DSE (0x3 << 1)
+#define SW_PAD_CTL_DSE_STD (0x0 << 1) /* Drive strength */
+#define SW_PAD_CTL_DSE_HIGH (0x1 << 1)
+#define SW_PAD_CTL_DSE_MAX (0x2 << 1)
+#define SW_PAD_CTL_DSE_MAX_2 (0x3 << 1) /* Same as 0x2 */
+#define SW_PAD_CTL_SRE (0x1 << 0) /* Slew rate, 1=fast */
+
+/* Masks for each IO field */
+#define SW_PAD_CTL_IO1 (0x3ff << 0)
+#define SW_PAD_CTL_IO2 (0x3ff << 10)
+#define SW_PAD_CTL_IO3 (0x3ff << 20)
/* Shift above flags into one of the three fields in each register */
-#define SW_PAD_CTL_FLD_0(x) ((x) << 0)
-#define SW_PAD_CTL_FLD_1(x) ((x) << 10)
-#define SW_PAD_CTL_FLD_2(x) ((x) << 20)
+#define SW_PAD_CTL_IO1w(x) (((x) << 0) & SW_PAD_CTL_IO1)
+#define SW_PAD_CTL_IO2w(x) (((x) << 10) & SW_PAD_CTL_IO2)
+#define SW_PAD_CTL_IO3w(x) (((x) << 20) & SW_PAD_CTL_IO3)
/* RNGA */
#define RNGA_CONTROL (*(REG32_PTR_T)(RNGA_BASE_ADDR+0x00))