1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846 |
- /*++
- Copyright (c) 2015 Minoca Corp. All Rights Reserved
- Module Name:
- am335x.h
- Abstract:
- This header contains hardware definitions for the TI AM335x SoCs.
- Author:
- Evan Green 6-Jan-2015
- --*/
- //
- // ------------------------------------------------------------------- Includes
- //
- //
- // --------------------------------------------------------------------- Macros
- //
- #define AM335_PAD_GPMC_AD(_Index) (0x800 + ((_Index) * 4))
- #define AM335_PAD_GPMC_A(_Index) (0x840 + ((_Index) * 4))
- #define AM335_PAD_LCD_DATA(_Index) (0x8A0 + ((_Index) * 4))
- #define AM335_PAD_UART_RXD(_Index) (0x970 + ((_Index) * 0x10))
- #define AM335_PAD_UART_TXD(_Index) (0x974 + ((_Index) * 0x10))
- #define AM335_SOC_CONTROL_DDR_CMD_IO_CONTROL(_Index) (0x1404 + ((_Index) * 4))
- #define AM335_SOC_CONTROL_DDR_DATA_IO_CONTROL(_Index) (0x1440 + ((_Index) * 4))
- #define AM335_PAD_MUXCODE(_Code) (_Code)
- //
- // These macros access interrupt controller registers.
- //
- #define AM335_INTC_LINE_TO_INDEX(_Line) ((_Line) >> 5)
- #define AM335_INTC_LINE_TO_MASK(_Line) (1 << ((_Line) & 0x1F))
- #define AM335_INTC_MASK(_Index) (Am335IntcMask + ((_Index) * 0x20))
- #define AM335_INTC_MASK_CLEAR(_Index) (Am335IntcMaskClear + ((_Index) * 0x20))
- #define AM335_INTC_MASK_SET(_Index) (Am335IntcMaskSet + ((_Index) * 0x20))
- #define AM335_INTC_LINE(_Line) (Am335IntcLine + ((_Line) * 0x4))
- //
- // This macro fills in the bits of the raster timing 0 register given a number
- // of pixels per line (which is the horizontal resolution minus one).
- //
- #define AM335_LCD_RESOLUTION_X_TO_TIMING_0(_PixelsPerLine) \
- (((_PixelsPerLine) & 0x000003F0) | (((_PixelsPerLine) & 0x00000400) >> 7))
- //
- // These macros convert a vertical lines per panel to timing 1 and 2 values.
- // Lines per panel is the vertical resolution minus one.
- //
- #define AM335_LCD_RESOLUTION_Y_TO_TIMING_1(_LinesPerPanel) \
- ((_LinesPerPanel) & 0x000003FF)
- #define AM335_LCD_RESOLUTION_Y_TO_TIMING_2(_LinesPerPanel) \
- ((((_LinesPerPanel) & 0x00000400) >> 10) << \
- AM335_LCD_RASTER_TIMING_2_LINES_PER_PANEL_BIT_10_SHIFT)
- //
- // ---------------------------------------------------------------- Definitions
- //
- //
- // Define the number of timers in the SoC.
- //
- #define AM335X_TIMER_COUNT 8
- //
- // Define attributes of the timers.
- //
- #define AM335_TIMER_BIT_WIDTH 32
- #define AM335_TIMER_FREQUENCY_32KHZ 32768
- #define AM335_TIMER_CONTROLLER_SIZE 0x1000
- #define AM335_WATCHDOG_SIZE 0x1000
- //
- // Define the size of the interrupt controller register space.
- //
- #define AM335_INTC_CONTROLLER_SIZE 0x1000
- //
- // Define the number of unique interrupt priorities in the INTC controller.
- //
- #define AM335_INTC_PRIORITY_COUNT 63
- #define AM335_MAX_INTERRUPT_LINES (32 * 4)
- #define AM335_MAX_INTERRUPT_LINE_BLOCKS \
- AM335_INTC_LINE_TO_INDEX(AM335_MAX_INTERRUPT_LINES)
- //
- // Define the fixed 32.768kHz frequency floating around the SoC in various
- // locations.
- //
- #define AM335_32KHZ_FREQUENCY 32768
- //
- // Define the interrupt map.
- //
- #define AM335_IRQ_DMTIMER0 66
- #define AM335_IRQ_DMTIMER1 67
- #define AM335_IRQ_DMTIMER2 68
- #define AM335_IRQ_DMTIMER3 69
- #define AM335_IRQ_DMTIMER4 92
- #define AM335_IRQ_DMTIMER5 93
- #define AM335_IRQ_DMTIMER6 94
- #define AM335_IRQ_DMTIMER7 95
- //
- // Define peripheral bases.
- //
- #define AM335_OCMC_BASE 0x40300000
- #define AM335_PRCM_REGISTERS 0x44E00000
- #define AM335_DMTIMER0_BASE 0x44E05000
- #define AM335_GPIO_0_BASE 0x44E07000
- #define AM335_UART_0_BASE 0x44E09000
- #define AM335_UART_1_BASE 0x44E0A000
- #define AM335_I2C_0_BASE 0x44E0B000
- #define AM335_SOC_CONTROL_REGISTERS 0x44E10000
- #define AM335_DMTIMER1_BASE 0x44E31000
- #define AM335_WATCHDOG_BASE 0x44E35000
- #define AM335_RTC_BASE 0x44E3E000
- #define AM335_DMTIMER2_BASE 0x48040000
- #define AM335_DMTIMER3_BASE 0x48042000
- #define AM335_DMTIMER4_BASE 0x48044000
- #define AM335_DMTIMER5_BASE 0x48046000
- #define AM335_DMTIMER6_BASE 0x48048000
- #define AM335_DMTIMER7_BASE 0x4804A000
- #define AM335_GPIO_1_BASE 0x4804C000
- #define AM335_HSMMC_0_BASE 0x48060000
- #define AM335_GPIO_2_BASE 0x481AC000
- #define AM335_GPIO_3_BASE 0x481AE000
- #define AM335_HSMMC_1_BASE 0x481D8000
- #define AM335_INTC_BASE 0x48200000
- #define AM335_LCD_REGISTERS 0x4830E000
- #define AM335_EMIF_0_REGISTERS 0x4C000000
- #define AM335_CORTEX_M3_CODE_SIZE 0x4000
- #define AM335_CORTEX_M3_DATA_SIZE 0x2000
- #define AM335_MAILBOX_SIZE 0x1000
- #define AM335_RTC_SIZE 0x1000
- #define AM335_OCMC_SIZE 0x10000
- #define AM335_EMIF_SIZE 0x1000
- //
- // Define PRCM offsets.
- //
- #define AM335_PRCM_SIZE 0x2000
- #define AM335_CM_PER_OFFSET 0x0000
- #define AM335_CM_WAKEUP_OFFSET 0x0400
- #define AM335_CM_DPLL_OFFSET 0x0500
- #define AM335_CM_MPU_OFFSET 0x0600
- #define AM335_CM_DEVICE_OFFSET 0x0700
- #define AM335_CM_RTC_OFFSET 0x0800
- #define AM335_CM_GFX_OFFSET 0x0900
- #define AM335_CM_CEFUSE_OFFSET 0x0A00
- #define AM335_PRM_IRQ_OFFSET 0x0B00
- #define AM335_PRM_PER_OFFSET 0x0C00
- #define AM335_PRM_WAKEUP_OFFSET 0x0D00
- #define AM335_PRM_MPU_OFFSET 0x0E00
- #define AM335_PRM_DEVICE_OFFSET 0x0F00
- #define AM335_PRM_RTC_OFFSET 0x1000
- #define AM335_PRM_GFX_OFFSET 0x1100
- #define AM335_PRM_CEFUSE_OFFSET 0x1200
- #define AM335_CM_PER_REGISTERS (AM335_PRCM_REGISTERS + AM335_CM_PER_OFFSET)
- #define AM335_CM_WAKEUP_REGISTERS \
- (AM335_PRCM_REGISTERS + AM335_CM_WAKEUP_OFFSET)
- #define AM335_SOC_CM_DPLL_REGISTERS \
- (AM335_PRCM_REGISTERS + AM335_CM_DPLL_OFFSET)
- #define AM335_PRM_DEVICE_REGISTERS \
- (AM335_PRCM_REGISTERS + AM335_PRM_DEVICE_OFFSET)
- //
- // CM wakeup registers.
- //
- #define AM335_CM_WAKEUP_CLOCK_STATE_CONTROL 0x000
- #define AM335_CM_WAKEUP_CONTROL_CLOCK_CONTROL 0x004
- #define AM335_CM_WAKEUP_L4WKUP_CLOCK_CONTROL 0x00C
- #define AM335_CM_WAKEUP_TIMER0_CLOCK_CONTROL 0x10
- #define AM335_CM_WAKEUP_L3_AON_CLOCK_STATE_CONTROL 0x018
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_MPU 0x020
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_MPU 0x02C
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_DDR 0x034
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_DDR 0x040
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_DISP 0x048
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_DISP 0x054
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_CORE 0x05C
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_CORE 0x068
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_PER 0x070
- #define AM335_CM_WAKEUP_CLOCK_DCO_LDO_DPLL_PER 0x7C
- #define AM335_CM_WAKEUP_DIV_M4_DPLL_CORE 0x080
- #define AM335_CM_WAKEUP_DIV_M5_DPLL_CORE 0x084
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_MPU 0x088
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_PER 0x08C
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_CORE 0x090
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_DDR 0x094
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_DISP 0x098
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_PER 0x09C
- #define AM335_CM_WAKEUP_DIV_M2_DPLL_DDR 0x0A0
- #define AM335_CM_WAKEUP_DIV_M2_DPLL_DISP 0x0A4
- #define AM335_CM_WAKEUP_DIV_M2_DPLL_MPU 0x0A8
- #define AM335_CM_WAKEUP_DIV_M2_DPLL_PER 0x0AC
- #define AM335_CM_WAKEUP_UART0_CLOCK_CONTROL 0x0B4
- #define AM335_CM_WAKEUP_I2C0_CLOCK_CONTROL 0x0B8
- #define AM335_CM_WAKEUP_TIMER1_CLOCK_CONTROL 0x0C4
- #define AM335_CM_WAKEUP_L4WKUP_AON_CLOCK_STATE_CONTROL 0x0CC
- #define AM335_CM_WAKEUP_DIV_M6_DPLL_CORE 0x0D8
- //
- // CM wakeup clock state control register bits.
- //
- #define AM335_CM_WAKEUP_CLOCK_STATE_SOFTWARE_WAKEUP 0x00000002
- #define AM335_CM_WAKEUP_CLOCK_STATE_TRANSITION_MASK 0x00000003
- #define AM335_CM_WAKEUP_CLOCK_STATE_L4WAKEUP_ACTIVE 0x00000004
- #define AM335_CM_WAKEUP_CLOCK_STATE_I2C0_ACTIVE 0x00000800
- #define AM335_CM_WAKEUP_CLOCK_STATE_UART0_ACTIVE 0x00001000
- //
- // CM wakeup control clock control bits.
- //
- #define AM335_CM_WAKEUP_CONTROL_CLOCK_ENABLE 0x00000002
- #define AM335_CM_WAKEUP_CONTROL_CLOCK_MODE_MASK 0x00000003
- #define AM335_CM_WAKEUP_CONTROL_CLOCK_IDLE_STATE_FUNCTIONAL (0x0 << 16)
- #define AM335_CM_WAKEUP_CONTROL_CLOCK_IDLE_STATE_MASK (0x3 << 16)
- //
- // CM wakeup L4 wakeup clock control register bits.
- //
- #define AM335_CM_WAKEUP_L4WKUP_CLOCK_IDLE_STATE_FUNCTIONAL (0x0 << 16)
- #define AM335_CM_WAKEUP_L4WKUP_CLOCK_IDLE_STATE_MASK (0x3 << 16)
- //
- // CM wakeup L3 always on clock state register bits.
- //
- #define AM335_CM_WAKEUP_L3_AON_CLOCK_STATE_SOFTWARE_WAKEUP 0x00000002
- #define AM335_CM_WAKEUP_L3_AON_CLOCK_STATE_TRANSITION_MASK 0x00000003
- #define AM335_CM_WAKEUP_L3_AON_CLOCK_STATE_ACTIVE 0x00000008
- //
- // CM wakeup UART0 clock control register bits.
- //
- #define AM335_CM_WAKEUP_UART0_CONTROL_CLOCK_ENABLE 0x00000002
- #define AM335_CM_WAKEUP_UART0_CLOCK_MODE_MASK 0x00000003
- #define AM335_CM_WAKEUP_UART0_CLOCK_IDLE_STATE_FUNCTIONAL (0x0 << 16)
- #define AM335_CM_WAKEUP_UART0_CLOCK_IDLE_STATE_MASK (0x3 << 16)
- //
- // CM wakeup I2C0 clock control register bits.
- //
- #define AM335_CM_WAKEUP_I2C0_CONTROL_CLOCK_ENABLE 0x00000002
- #define AM335_CM_WAKEUP_I2C0_CLOCK_MODE_MASK 0x00000003
- #define AM335_CM_WAKEUP_I2C0_CLOCK_IDLE_STATE_FUNCTIONAL (0x0 << 16)
- #define AM335_CM_WAKEUP_I2C0_CLOCK_IDLE_STATE_MASK (0x3 << 16)
- //
- // CM wakeup L4 wakeup always on clock state register bits.
- //
- #define AM335_CM_WAKEUP_L4WKUP_AON_CLOCK_STATE_ACTIVE 0x00000004
- //
- // CM Wakeup DDR PLL clock mode register bits.
- //
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_DDR_ENABLE_MN_BYPASS 0x00000004
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_DDR_ENABLE 0x0000007
- //
- // CM Wakeup DDR PLL idle status register bits.
- //
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_DDR_MN_BYPASS 0x00000100
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_DDR_CLOCK 0x00000001
- //
- // CM Wakeup MPU PLL clock select register bits.
- //
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_DDR_DIV_MASK 0x0000007F
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_DDR_DIV_SHIFT 0
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_DDR_MULT_MASK 0x0007FF00
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_DDR_MULT_SHIFT 8
- //
- // CM Wakeup MPU PLL M2 divisor register bits.
- //
- #define AM335_CM_WAKEUP_DIV_M2_DPLL_DDR_CLOCK_OUT_MASK 0x0000001F
- //
- // CM Wakeup PER PLL clock mode register bits.
- //
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_PER_ENABLE_MN_BYPASS 0x00000004
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_PER_ENABLE 0x0000007
- //
- // CM Wakeup PER PLL idle status register bits.
- //
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_PER_MN_BYPASS 0x00000100
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_PER_CLOCK 0x00000001
- //
- // CM Wakeup PER PLL clock select register bits.
- //
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_PER_MULT_SHIFT 8
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_PER_DIV_SHIFT 0
- //
- // CM Wakeup PER PLL M2 divider register bits.
- //
- #define AM335_CM_WAKEUP_DIV_M2_DPLL_PER_CLOCK_OUT_DIV_MASK 0x0000007F
- #define AM335_CM_WAKEUP_DIV_M2_DPLL_PER_CLOCK_OUT_DIV_SHIFT 0
- //
- // CM Wakeup CORE PLL clock mode register bits.
- //
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_CORE_ENABLE_MN_BYPASS 0x00000004
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_CORE_ENABLE 0x0000007
- //
- // CM Wakeup CORE PLL idle status register bits.
- //
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_CORE_MN_BYPASS 0x00000100
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_CORE_CLOCK 0x00000001
- //
- // CM Wakeup CORE PLL clock select register bits.
- //
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_CORE_DIV_SHIFT 0
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_CORE_MULT_SHIFT 8
- //
- // CM Wakeup CORE PLL M4 divider register bits.
- //
- #define AM335_CM_WAKEUP_DIV_M4_DPLL_CORE_HSDIVIDER_CLOCK_OUT1_DIV_MASK \
- 0x0000001F
- #define AM335_CM_WAKEUP_DIV_M4_DPLL_CORE_HSDIVIDER_CLOCK_OUT1_DIV_SHIFT 0
- //
- // CM Wakeup CORE PLL M5 divider register bits.
- //
- #define AM335_CM_WAKEUP_DIV_M5_DPLL_CORE_HSDIVIDER_CLOCK_OUT2_DIV_MASK \
- 0x0000001F
- #define AM335_CM_WAKEUP_DIV_M5_DPLL_CORE_HSDIVIDER_CLOCK_OUT2_DIV_SHIFT 0
- //
- // CM Wakeup CORE PLL M6 divider register bits.
- //
- #define AM335_CM_WAKEUP_DIV_M6_DPLL_CORE_HSDIVIDER_CLOCK_OUT3_DIV_MASK \
- 0x0000001F
- #define AM335_CM_WAKEUP_DIV_M6_DPLL_CORE_HSDIVIDER_CLOCK_OUT3_DIV_SHIFT 0
- //
- // Define CM DPLL registers.
- //
- #define AM335_CM_DPLL_CLOCK_SELECT_TIMER7 0x04
- #define AM335_CM_DPLL_CLOCK_SELECT_TIMER2 0x08
- #define AM335_CM_DPLL_CLOCK_SELECT_TIMER3 0x0C
- #define AM335_CM_DPLL_CLOCK_SELECT_TIMER4 0x10
- #define AM335_CM_DPLL_CLOCK_SELECT_TIMER5 0x18
- #define AM335_CM_DPLL_CLOCK_SELECT_TIMER6 0x1C
- #define AM335_CM_DPLL_CLOCK_SELECT_TIMER1 0x28
- #define AM335_CM_DPLL_CLOCK_SELECT_LCD 0x34
- //
- // CM DPLL clock select timer register bits (any timer except 1).
- //
- #define AM335_CM_DPLL_CLOCK_SELECT_TIMER_MASK 0x00000003
- #define AM335_CM_DPLL_CLOCK_SELECT_TIMER_TCLKIN 0x0
- #define AM335_CM_DPLL_CLOCK_SELECT_TIMER_SYSTEM_CLOCK 0x1
- #define AM335_CM_DPLL_CLOCK_SELECT_TIMER_32KHZ 0x2
- #define AM335_CM_PER_TIMER2_CLOCK_ENABLE 0x00000002
- #define AM335_CM_WAKEUP_TIMER0_CLOCK_ENABLE 0x00000002
- //
- // CM Wakeup Timer1 PLL clock select register bits.
- //
- #define AM335_CM_DPLL_CLOCK_SELECT_TIMER1_32KHZ 0x00000001
- //
- // Define CM PER registers.
- //
- #define AM335_CM_PER_L4LS_CLOCK_STATE_CONTROL 0x000
- #define AM335_CM_PER_L3S_CLOCK_STATE_CONTROL 0x004
- #define AM335_CM_PER_L4FW_CLOCK_STATE_CONTROL 0x008
- #define AM335_CM_PER_L3_CLOCK_STATE_CONTROL 0x00C
- #define AM335_CM_PER_CPGMAC0_CLOCK_CONTROL 0x014
- #define AM335_CM_PER_LCD_CLOCK_CONTROL 0x018
- #define AM335_CM_PER_USB0_CLOCK_CONTROL 0x1C
- #define AM335_CM_PER_TPTC0_CLOCK_CONTROL 0x024
- #define AM335_CM_PER_EMIF_CLOCK_CONTROL 0x028
- #define AM335_CM_PER_MMC0_CLOCK_CONTROL 0x03C
- #define AM335_CM_PER_L4LS_CLOCK_CONTROL 0x060
- #define AM335_CM_PER_L4FW_CLOCK_CONTROL 0x064
- #define AM335_CM_PER_TIMER7_CLOCK_CONTROL 0x07C
- #define AM335_CM_PER_TIMER2_CLOCK_CONTROL 0x080
- #define AM335_CM_PER_TIMER3_CLOCK_CONTROL 0x084
- #define AM335_CM_PER_TIMER4_CLOCK_CONTROL 0x088
- #define AM335_CM_PER_GPIO1_CLOCK_CONTROL 0x0AC
- #define AM335_CM_PER_TPCC_CLOCK_CONTROL 0x0BC
- #define AM335_CM_PER_MMC1_CLOCK_CONTROL 0x0F4
- #define AM335_CM_PER_CPSW_CLOCK_STATE_CONTROL 0x144
- #define AM335_CM_PER_EMIF_FW_CLOCK_CONTROL 0x0D0
- #define AM335_CM_PER_L3_INSTR_CLOCK_CONTROL 0x0DC
- #define AM335_CM_PER_L3_CLOCK_CONTROL 0x0E0
- #define AM335_CM_PER_TIMER5_CLOCK_CONTROL 0x0EC
- #define AM335_CM_PER_TIMER6_CLOCK_CONTROL 0x0F0
- #define AM335_CM_PER_TPTC1_CLOCK_CONTROL 0x0FC
- #define AM335_CM_PER_TPTC2_CLOCK_CONTROL 0x100
- #define AM335_CM_PER_MAILBOX_CLOCK_CONTROL 0x110
- #define AM335_CM_PER_L4HS_CLOCK_CONTROL 0x120
- #define AM335_CM_PER_OCPWP_L3_CLOCK_STATE_CONTROL 0x12C
- //
- // CM Per MMC0 clock control register bits.
- //
- #define AM335_CM_PER_MMC0_CLOCK_ENABLE 0x00000002
- //
- // CM Per MMC0 clock control register bits.
- //
- #define AM335_CM_PER_MMC1_CLOCK_ENABLE 0x00000002
- //
- // L4LS clock state control register bits.
- //
- #define AM335_CM_PER_L4LS_CLOCK_STATE_ACTIVITY_GPIO1 (1 << 19)
- #define AM335_CM_PER_L4LS_CLOCK_STATE_SOFTWARE_WAKEUP 0x00000002
- //
- // L4FW clock state control register bits.
- //
- #define AM335_CM_PER_L4FW_CLOCK_STATE_SOFTWARE_WAKEUP 0x00000002
- //
- // TPTC0 clock control register bits.
- //
- #define AM335_CM_PER_TPTC0_CLOCK_ENABLE 0x00000002
- //
- // TPTC1 clock control register bits.
- //
- #define AM335_CM_PER_TPTC1_CLOCK_ENABLE 0x00000002
- //
- // TPTC2 clock control register bits.
- //
- #define AM335_CM_PER_TPTC2_CLOCK_ENABLE 0x00000002
- //
- // GPIO1 CM PER Clock control register bits.
- //
- #define AM335_CM_PER_GPIO1_CLOCK_ENABLE 0x2
- #define AM335_CM_PER_GPIO1_CLOCK_MODE_MASK 0x3
- #define AM335_CM_PER_GPIO1_CLOCK_IDLE_STATE_FUNCTIONAL (0x0 << 16)
- #define AM335_CM_PER_GPIO1_CLOCK_IDLE_STATE_MASK (0x3 << 16)
- #define AM335_CM_PER_GPIO1_CLOCK_FUNCTIONAL_CLOCK_ENABLE (1 << 18)
- //
- // TPCC CM PER Clock control register bits.
- //
- #define AM335_CM_PER_TPCC_CLOCK_ENABLE 0x2
- #define AM335_CM_PER_TPCC_CLOCK_MODE_MASK 0x3
- #define AM335_CM_PER_TPCC_CLOCK_IDLE_STATE_FUNCTIONAL (0x0 << 16)
- #define AM335_CM_PER_TPCC_CLOCK_IDLE_STATE_MASK (0x3 << 16)
- #define AM335_CM_PER_TPCC_CLOCK_FUNCTIONAL_CLOCK_ENABLE (1 << 18)
- //
- // L3 clock control register bits.
- //
- #define AM335_CM_PER_L3_CLOCK_ENABLE 0x00000002
- #define AM335_CM_PER_L3_CLOCK_MODE_MASK 0x00000003
- #define AM335_CM_PER_L3_CLOCK_IDLE_STATE_FUNCTIONAL (0x0 << 16)
- #define AM335_CM_PER_L3_CLOCK_IDLE_STATE_MASK (0x3 << 16)
- //
- // CM Per CPGMAC0 clock control register bits.
- //
- #define AM335_CM_PER_CPGMAC0_CLOCK_ENABLE 0x00000002
- #define AM335_CM_PER_CPGMAC0_CLOCK_IDLE_STATE_FUNCTIONAL 0x00000000
- #define AM335_CM_PER_CPGMAC0_CLOCK_IDLE_STATE_MASK 0x00030000
- //
- // L3 Instr clock control bits.
- //
- #define AM335_CM_PER_L3_INSTR_CLOCK_ENABLE 0x00000002
- #define AM335_CM_PER_L3_INSTR_CLOCK_MODE_MASK 0x00000003
- #define AM335_CM_PER_L3_INSTR_CLOCK_IDLE_STATE_FUNCTIONAL (0x0 << 16)
- #define AM335_CM_PER_L3_INSTR_CLOCK_IDLE_STATE_MASK (0x3 << 16)
- //
- // LCD clock control register bits.
- //
- #define AM335_CM_PER_LCD_CLOCK_ENABLE 0x00000002
- #define AM335_CM_PER_LCD_CLOCK_MODE_MASK 0x00000003
- //
- // USB0 clock control register bits.
- //
- #define AM335_CM_PER_USB0_CLOCK_ENABLE 0x00000002
- #define AM335_CM_PER_USB0_CLOCK_MODE_MASK 0x00000003
- //
- // Mailbox clock control register bits.
- //
- #define AM335_CM_PER_MAILBOX_CLOCK_ENABLE 0x00000002
- #define AM335_CM_PER_MAILBOX_CLOCK_MODE_MASK 0x00000003
- //
- // CM PER EMIF Fw clock control register bits.
- //
- #define AM335_CM_PER_EMIF_FW_CLOCK_MODE_MASK 0x00000003
- #define AM335_CM_PER_EMIF_FW_CLOCK_ENABLE 0x00000002
- //
- // CM PER EMIF Fw clock control register bits.
- //
- #define AM335_CM_PER_EMIF_CLOCK_MODE_MASK 0x00000003
- #define AM335_CM_PER_EMIF_CLOCK_ENABLE 0x00000002
- //
- // L3 clock state control register bits.
- //
- #define AM335_CM_PER_L3_CLOCK_STATE_SOFTWARE_WAKEUP 0x00000002
- #define AM335_CM_PER_L3_CLOCK_STATE_TRANSITION_MASK 0x00000003
- #define AM335_CM_PER_L3_CLOCK_STATE_EMIF_ACTIVE 0x00000004
- #define AM335_CM_PER_L3_CLOCK_STATE_ACTIVE 0x00000010
- //
- // OCPWP L3 clock state register bits.
- //
- #define AM335_CM_PER_OCPWP_L3_CLOCK_STATE_SOFTWARE_WAKEUP 0x00000002
- #define AM335_CM_PER_OCPWP_L3_CLOCK_STATE_TRANSITION_MASK 0x00000003
- #define AM335_CM_PER_OCPWP_L3_CLOCK_STATE_ACTIVE 0x00000010
- //
- // L3S clock state register bits.
- //
- #define AM335_CM_PER_L3S_CLOCK_STATE_SOFTWARE_WAKEUP 0x00000002
- #define AM335_CM_PER_L3S_CLOCK_STATE_TRANSITION_MASK 0x00000003
- #define AM335_CM_PER_L3S_CLOCK_STATE_ACTIVE 0x00000008
- //
- // L4LS clock control register bits.
- //
- #define AM335_CM_PER_L4LS_CLOCK_ENABLE 0x00000002
- #define AM335_CM_PER_L4LS_CLOCK_MODE_MASK 0x00000003
- #define AM335_CM_PER_L4LS_CLOCK_IDLE_STATE_FUNCTIONAL (0x0 << 16)
- #define AM335_CM_PER_L4LS_CLOCK_IDLE_STATE_MASK (0x3 << 16)
- //
- // L4FW clock control register bits.
- //
- #define AM335_CM_PER_L4FW_CLOCK_ENABLE 0x00000002
- #define AM335_CM_PER_L4FW_CLOCK_MODE_MASK 0x00000003
- #define AM335_CM_PER_L4FW_CLOCK_IDLE_STATE_FUNCTIONAL (0x0 << 16)
- #define AM335_CM_PER_L4FW_CLOCK_IDLE_STATE_MASK (0x3 << 16)
- //
- // CM Per CPSW clock state control register bits.
- //
- #define AM335_CM_PER_CPSW_CLOCK_STATE_SOFTWARE_WAKEUP 0x00000002
- #define AM335_CM_PER_CPSW_CLOCK_STATE_CPSW_125MHZ_GCLK 0x00000010
- //
- // L4HS clock control register bits.
- //
- #define AM335_CM_PER_L4HS_CLOCK_ENABLE 0x00000002
- #define AM335_CM_PER_L4HS_CLOCK_MODE_MASK 0x00000003
- #define AM335_CM_PER_L4HS_CLOCK_IDLE_STATE_FUNCTIONAL (0x0 << 16)
- #define AM335_CM_PER_L4HS_CLOCK_IDLE_STATE_MASK (0x3 << 16)
- //
- // CM Wakeup L4FW clock control register bits.
- //
- #define AM335_CM_WAKEUP_L4FW_CLOCK_ENABLE 0x00000002
- #define AM335_CM_WAKEUP_L4FW_CLOCK_MODE_MASK 0x00000003
- #define AM335_CM_WAKEUP_L4FW_CLOCK_IDLE_STATE_FUNCTIONAL (0x0 << 16)
- #define AM335_CM_WAKEUP_L4FW_CLOCK_IDLE_STATE_MASK (0x3 << 16)
- //
- // CM DPLL LCD clock select register bits.
- //
- #define AM335_CM_DPLL_CLOCK_SELECT_LCD_DISP_PLL_CLKOUT_M2 0x0
- #define AM335_CM_DPLL_CLOCK_SELECT_LCD_CORE_PLL_CLKOUT_M5 0x1
- #define AM335_CM_DPLL_CLOCK_SELECT_LCD_PER_PLL_CLKOUT_M2 0x2
- //
- // Define EMIF registers.
- //
- #define AM335_EMIF_SDRAM_CONFIG 0x08
- #define AM335_EMIF_SDRAM_REF_CONTROL 0x10
- #define AM335_EMIF_SDRAM_REF_CONTROL_SHADOW 0x14
- #define AM335_EMIF_SDRAM_TIM_1 0x18
- #define AM335_EMIF_SDRAM_TIM_1_SHADOW 0x1C
- #define AM335_EMIF_SDRAM_TIM_2 0x20
- #define AM335_EMIF_SDRAM_TIM_2_SHADOW 0x24
- #define AM335_EMIF_SDRAM_TIM_3 0x28
- #define AM335_EMIF_SDRAM_TIM_3_SHADOW 0x2C
- #define AM335_EMIF_ZQ_CONFIG 0xC8
- #define AM335_EMIF_DDR_PHY_CONTROL_1 0xE4
- #define AM335_EMIF_DDR_PHY_CONTROL_1_SHADOW 0xE8
- #define AM335_EMIF_DDR_PHY_CONTROL_2 0xEC
- //
- // DDR3 CKE control register definitions.
- //
- #define AM335_DDR3_CONTROL_DDR_CKE_CONTROL 0x00000001
- //
- // Define SoC control registers.
- //
- #define AM335_SOC_CONTROL_STATUS 0x0040
- #define AM335_SOC_CONTROL_SECURE_EMIF_SDRAM_CONFIG 0x0110
- #define AM335_SOC_CONTROL_DEVICE_ID 0x0600
- #define AM335_SOC_CONTROL_USB_CONTROL1 0x628
- #define AM335_SOC_CONTROL_MAC_ID0_LOW 0x0630
- #define AM335_SOC_CONTROL_MAC_ID0_HIGH 0x0634
- #define AM335_SOC_CONTROL_MAC_ID1_LOW 0x0638
- #define AM335_SOC_CONTROL_MAC_ID1_HIGH 0x063C
- #define AM335_SOC_CONTROL_GMII_SEL 0x650
- #define AM335_SOC_CONTROL_EFUSE_SMA 0x07FC
- #define AM335_SOC_CONTROL_CONF_GPMC_AD0 0x800
- #define AM335_SOC_CONTROL_CONF_GPMC_AD1 0x804
- #define AM335_SOC_CONTROL_CONF_GPMC_AD2 0x808
- #define AM335_SOC_CONTROL_CONF_GPMC_AD3 0x80C
- #define AM335_SOC_CONTROL_CONF_GPMC_AD4 0x810
- #define AM335_SOC_CONTROL_CONF_GPMC_AD5 0x814
- #define AM335_SOC_CONTROL_CONF_GPMC_AD6 0x818
- #define AM335_SOC_CONTROL_CONF_GPMC_AD7 0x81C
- #define AM335_SOC_CONTROL_CONF_GPMC_CSN1 0x880
- #define AM335_SOC_CONTROL_CONF_GPMC_CSN2 0x884
- #define AM335_SOC_CONTROL_CONF_LCD_VSYNC 0x8E0
- #define AM335_SOC_CONTROL_CONF_LCD_HSYNC 0x8E4
- #define AM335_SOC_CONTROL_CONF_LCD_PCLK 0x8E8
- #define AM335_SOC_CONTROL_CONF_LCD_AC_BIAS_EN 0x8EC
- #define AM335_SOC_CONTROL_CONF_MMC0_DAT3 0x8F0
- #define AM335_SOC_CONTROL_CONF_MMC0_DAT2 0x8F4
- #define AM335_SOC_CONTROL_CONF_MMC0_DAT1 0x8F8
- #define AM335_SOC_CONTROL_CONF_MMC0_DAT0 0x8FC
- #define AM335_SOC_CONTROL_CONF_MMC0_CLK 0x900
- #define AM335_SOC_CONTROL_CONF_MMC0_CMD 0x904
- #define AM335_SOC_CONTROL_CONF_MII1_COL 0x908
- #define AM335_SOC_CONTROL_CONF_MII1_CRS 0x90C
- #define AM335_SOC_CONTROL_CONF_MII1_RXERR 0x910
- #define AM335_SOC_CONTROL_CONF_MII1_TXEN 0x914
- #define AM335_SOC_CONTROL_CONF_MII1_RXDV 0x918
- #define AM335_SOC_CONTROL_CONF_MII1_TXD3 0x91C
- #define AM335_SOC_CONTROL_CONF_MII1_TXD2 0x920
- #define AM335_SOC_CONTROL_CONF_MII1_TXD1 0x924
- #define AM335_SOC_CONTROL_CONF_MII1_TXD0 0x928
- #define AM335_SOC_CONTROL_CONF_MII1_TXCLK 0x92C
- #define AM335_SOC_CONTROL_CONF_MII1_RXCLK 0x930
- #define AM335_SOC_CONTROL_CONF_MII1_RXD3 0x934
- #define AM335_SOC_CONTROL_CONF_MII1_RXD2 0x938
- #define AM335_SOC_CONTROL_CONF_MII1_RXD1 0x93C
- #define AM335_SOC_CONTROL_CONF_MII1_RXD0 0x940
- #define AM335_SOC_CONTROL_CONF_RMII1_REFCLK 0x944
- #define AM335_SOC_CONTROL_CONF_MDIO_DATA 0x948
- #define AM335_SOC_CONTROL_CONF_MDIO_CLK 0x94C
- #define AM335_SOC_CONTROL_CONF_SPI0_CS1 0x960
- #define AM335_SOC_CONTROL_I2C0_SDA 0x0988
- #define AM335_SOC_CONTROL_I2C0_SCL 0x098C
- #define AM335_SOC_CONTROL_CONF_XDMA_EVENT_INTR0 0x9B0
- #define AM335_SOC_CONTROL_VTP_CONTROL 0x0E0C
- #define AM335_SOC_CONTROL_DDR_IO_CONTROL 0x0E04
- #define AM335_SOC_CONTROL_DDR_CKE_CONTROL 0x131C
- //
- // Define SoC control status register bits.
- //
- #define AM335_SOC_STATUS_SYSBOOT0_MASK 0x000000FF
- //
- // Define USB0/1 control register bits.
- //
- #define AM335_SOC_USB_CONTROL_SESSION_END_DETECT 0x00100000
- #define AM335_SOC_USB_CONTROL_VBUS_DETECT 0x00080000
- #define AM335_SOC_USB_CONTROL_OTG_PHY_POWER_DOWN 0x00000002
- #define AM335_SOC_USB_CONTROL_CM_PHY_POWER_DOWN 0x00000001
- //
- // Define UART0 RXD pad control register bits.
- //
- #define AM335_SOC_CONTROL_UART0_RXD_PULLUP 0x00000010
- #define AM335_SOC_CONTROL_UART0_RXD_RX_ACTIVE 0x00000020
- //
- // Define UART0 TXD pad control register bits.
- //
- #define AM335_SOC_CONTROL_UART0_TXD_PULLUP 0x00000010
- //
- // Generic SoC control pad configuration register bits.
- //
- #define AM335_SOC_CONF_MUX_MMODE_SHIFT 0
- #define AM335_SOC_CONF_MUX_PUDEN_SHIFT 3
- #define AM335_SOC_CONF_MUX_PUTYPESEL_SHIFT 4
- #define AM335_SOC_CONF_MUX_RXACTIVE_SHIFT 5
- #define AM335_SOC_CONF_MUX_SLEWCTRL_SHIFT 6
- //
- // SoC control VTP control register bits (used for DDR initialization).
- //
- #define AM335_SOC_CONTROL_VTP_CONTROL_CLRZ 0x00000001
- #define AM335_SOC_CONTROL_VTP_CONTROL_READY 0x00000020
- #define AM335_SOC_CONTROL_VTP_CONTROL_ENABLE 0x00000040
- //
- // Define GPIO registers.
- //
- #define AM335_GPIO_CONFIGURATION 0x010
- #define AM335_GPIO_SYSTEM_STATUS 0x114
- #define AM335_GPIO_CONTROL 0x130
- #define AM335_GPIO_OUTPUT_ENABLE 0x134
- #define AM335_GPIO_CLEAR_DATA_OUT 0x190
- #define AM335_GPIO_SET_DATA_OUT 0x194
- //
- // Define GPIO system configuration register bits.
- //
- #define AM335_GPIO_CONFIGURATION_RESET_DONE 0x00000001
- #define AM335_GPIO_CONFIGURATION_SOFT_RESET 0x00000002
- //
- // Define GPIO control register bits.
- //
- #define AM335_GPIO_CONTROL_DISABLE_MODULE 0x00000001
- //
- // Define AM335 timer register bits.
- //
- //
- // Idle bits.
- //
- #define AM335_TIMER_IDLEMODE_NOIDLE 0x00000004
- #define AM335_TIMER_IDLEMODE_SMART 0x00000008
- //
- // Mode bits.
- //
- #define AM335_TIMER_STARTED 0x00000001
- #define AM335_TIMER_OVERFLOW_TRIGGER 0x00000400
- #define AM335_TIMER_OVERFLOW_AND_MATCH_TRIGGER 0x00000800
- #define AM335_TIMER_COMPARE_ENABLED 0x00000040
- #define AM335_TIMER_AUTORELOAD 0x00000002
- //
- // Interrupt enable bits.
- //
- #define AM335_TIMER_MATCH_INTERRUPT 0x00000001
- #define AM335_TIMER_OVERFLOW_INTERRUPT 0x00000002
- #define AM335_TIMER_INTERRUPT_MASK 0x7
- //
- // Define AM335 interrupt controller register bits.
- //
- //
- // Interrupt system configuration register bits.
- //
- #define AM335_INTC_SYSTEM_CONFIG_AUTO_IDLE 0x00000001
- #define AM335_INTC_SYSTEM_CONFIG_SOFT_RESET 0x00000002
- //
- // Interrupt system status register bits.
- //
- #define AM335_INTC_SYSTEM_STATUS_RESET_DONE 0x00000001
- //
- // Interrupt sorted IRQ/FIQ register bits.
- //
- #define AM335_INTC_SORTED_ACTIVE_MASK 0x0000007F
- #define AM335_INTC_SORTED_SPURIOUS 0x00000080
- //
- // Protection register bits.
- //
- #define AM335_INTC_PROTECTION_ENABLE 0x00000001
- //
- // Idle register bits.
- //
- #define AM335_INTC_IDLE_INPUT_AUTO_GATING 0x00000002
- //
- // Interrupt line register bits.
- //
- #define AM335_INTC_LINE_IRQ 0x00000000
- #define AM335_INTC_LINE_FIQ 0x00000001
- #define AM335_INTC_LINE_PRIORITY_SHIFT 2
- //
- // Interrupt control register bits.
- //
- #define AM335_INTC_CONTROL_NEW_IRQ_AGREEMENT 0x00000001
- #define AM335_INTC_CONTROL_NEW_FIQ_AGREEMENT 0x00000002
- //
- // Define PRM Device registers.
- //
- #define AM335_PRM_DEVICE_RESET_CONTROL 0x00
- //
- // Define PRM Device Reset Control register bits.
- //
- #define AM335_PRM_DEVICE_RESET_CONTROL_WARM_RESET 0x00000001
- #define AM335_PRM_DEVICE_RESET_CONTROL_COLD_RESET 0x00000002
- //
- // Define UART registers.
- //
- #define AM335_UART_RBR 0x00
- #define AM335_UART_THR 0x00
- #define AM335_UART_DLL 0x00
- #define AM335_UART_IER 0x04
- #define AM335_UART_DLM 0x04
- #define AM335_UART_FCR 0x08
- #define AM335_UART_IIR 0x08
- #define AM335_UART_LCR 0x0C
- #define AM335_UART_MCR 0x10
- #define AM335_UART_LSR 0x14
- #define AM335_UART_MSR 0x18
- #define AM335_UART_SCR 0x1C
- #define AM335_UART_MDR1 0x20
- #define AM335_UART_SYSTEM_CONTROL 0x54
- #define AM335_UART_SYSTEM_STATUS 0x58
- //
- // Define UART system control register bits.
- //
- #define AM335_UART_SYSTEM_CONTROL_RESET 0x00000002
- //
- // Define UART system status register bits.
- //
- #define AM335_UART_SYSTEM_STATUS_RESET_DONE 0x00000001
- //
- // SoC control definitions
- //
- #define AM335_SOC_CONTROL_SIZE 0x2000
- //
- // Define SoC control device ID register bits.
- //
- #define AM335_SOC_CONTROL_DEVICE_ID_REVISION_SHIFT 0x1C
- #define AM335_SOC_DEVICE_VERSION_1_0 0
- #define AM335_SOC_DEVICE_VERSION_2_0 1
- #define AM335_SOC_DEVICE_VERSION_2_1 2
- //
- // EFuse bit for OPP100 275MHz, 1.1v.
- //
- #define AM335_EFUSE_OPP100_275_MASK 0x00000001
- #define AM335_EFUSE_OPP100_275 0
- //
- // EFuse bit for OPP100 500MHz, 1.1v.
- //
- #define AM335_EFUSE_OPP100_500_MASK 0x00000002
- #define AM335_EFUSE_OPP100_500 1
- //
- // EFuse bit for OPP100 600MHz, 1.2v.
- //
- #define AM335_EFUSE_OPP120_600_MASK 0x00000004
- #define AM335_EFUSE_OPP120_600 2
- //
- // EFuse bit for OPP Turbo 720MHz, 1.26v.
- //
- #define AM335_EFUSE_OPPTB_720_MASK 0x00000008
- #define AM335_EFUSE_OPPTB_720 3
- //
- // EFuse bit for OPP50 300MHz, 1.1v.
- //
- #define AM335_EFUSE_OPP50_300_MASK 0x00000010
- #define AM335_EFUSE_OPP50_300 4
- //
- // EFuse bit for OPP100 300MHz, 1.1v.
- //
- #define AM335_EFUSE_OPP100_300_MASK 0x00000020
- #define AM335_EFUSE_OPP100_300 5
- //
- // EFuse bit for OPP100 600MHz, 1.1v.
- //
- #define AM335_EFUSE_OPP100_600_MASK 0x00000040
- #define AM335_EFUSE_OPP100_600 6
- //
- // EFuse bit for OPP120 700MHz, 1.2v.
- //
- #define AM335_EFUSE_OPP120_720_MASK 0x00000080
- #define AM335_EFUSE_OPP120_720 7
- //
- // EFuse bit for OPP Turbo 800MHz, 1.26v.
- //
- #define AM335_EFUSE_OPPTB_800_MASK 0x00000100
- #define AM335_EFUSE_OPPTB_800 8
- //
- // EFuse bit for OPP Turbo 1000MHz, 1.325v.
- //
- #define AM335_EFUSE_OPPNT_1000_MASK 0x00000200
- #define AM335_EFUSE_OPPNT_1000 9
- #define AM335_SOC_CONTROL_EFUSE_OPP_MASK 0x00001FFF
- #define AM335_EFUSE_OPP_MAX (AM335_EFUSE_OPPNT_1000 + 1)
- //
- // Define types of OPP.
- //
- #define AM335_OPP_NONE 0
- #define AM335_OPP50 1
- #define AM335_OPP100 2
- #define AM335_OPP120 3
- #define AM335_OPP_SR_TURBO 4
- #define AM335_OPP_NITRO 5
- //
- // MPU PLL configurations.
- //
- #define AM335_MPU_PLL_M_275MHZ 275
- #define AM335_MPU_PLL_M_300MHZ 300
- #define AM335_MPU_PLL_M_500MHZ 500
- #define AM335_MPU_PLL_M_600MHZ 600
- #define AM335_MPU_PLL_M_720MHZ 720
- #define AM335_MPU_PLL_M_800MHZ 800
- #define AM335_MPU_PLL_M_1000MHZ 1000
- //
- // Define PMIC voltage configurations.
- //
- #define AM335_PMIC_VOLTAGE_950MV TPS65217_DCDC_VOLTAGE_950MV
- #define AM335_PMIC_VOLTAGE_1100MV TPS65217_DCDC_VOLTAGE_1100MV
- #define AM335_PMIC_VOLTAGE_1200MV TPS65217_DCDC_VOLTAGE_1200MV
- #define AM335_PMIC_VOLTAGE_1260MV TPS65217_DCDC_VOLTAGE_1275MV
- #define AM335_PMIC_VOLTAGE_1325MV 0x11
- //
- // Define TPS65217 PMIC registers.
- //
- #define TPS65217_POWER_PATH 0x01
- #define TPS65217_STATUS 0x0A
- #define TPS65217_PASSWORD 0x0B
- #define TPS65217_PGOOD 0x0C
- #define TPS65217_DEFDCDC2 0x0F
- #define TPS65217_DEFSLEW 0x11
- #define TPS65217_DEFLS1 0x14
- #define TPS65217_DEFLS2 0x15
- //
- // Define PMIC power path register bits.
- //
- #define TPS65217_POWER_PATH_USB_INPUT_CURRENT_LIMIT_MASK 0x03
- #define TPS65217_POWER_PATH_USB_INPUT_CURRENT_LIMIT_100MA 0x00
- #define TPS65217_POWER_PATH_USB_INPUT_CURRENT_LIMIT_500MA 0x01
- #define TPS65217_POWER_PATH_USB_INPUT_CURRENT_LIMIT_1300MA 0x02
- #define TPS65217_POWER_PATH_USB_INPUT_CURRENT_LIMIT_1800MA 0x03
- #define TPS65217_DCDC_VOLTAGE_1275MV 0x0F
- #define TPS65217_DCDC_VOLTAGE_1200MV 0x0C
- #define TPS65217_DCDC_VOLTAGE_1100MV 0x08
- #define TPS65217_DCDC_VOLTAGE_950MV 0x02
- #define TPS65217_PROTECTION_NONE 0
- #define TPS65217_PROTECTION_LEVEL_1 1
- #define TPS65217_PROTECTION_LEVEL_2 2
- #define TPS65217_PASSWORD_UNLOCK 0x7D
- #define TPS65217_DCDC_GO 0x80
- #define TPS65217_LDO_VOLTAGE_OUT_1_8 0x06
- #define TPS65217_LDO_VOLTAGE_OUT_3_3 0x1F
- #define TPS65217_LDO_MASK 0x1F
- //
- // Define DDR PHY control registers.
- //
- #define AM335_DDR_PHY_REGISTERS (AM335_SOC_CONTROL_REGISTERS + 0x2000)
- #define AM335_DDR_CMD0_SLAVE_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x01C)
- #define AM335_DDR_CMD0_SLAVE_FORCE_0 (AM335_DDR_PHY_REGISTERS + 0x020)
- #define AM335_DDR_CMD0_SLAVE_DELAY_0 (AM335_DDR_PHY_REGISTERS + 0x024)
- #define AM335_DDR_CMD0_LOCK_DIFF_0 (AM335_DDR_PHY_REGISTERS + 0x028)
- #define AM335_DDR_CMD0_INVERT_CLKOUT_0 (AM335_DDR_PHY_REGISTERS + 0x02C)
- #define AM335_DDR_CMD1_SLAVE_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x050)
- #define AM335_DDR_CMD1_SLAVE_FORCE_0 (AM335_DDR_PHY_REGISTERS + 0x054)
- #define AM335_DDR_CMD1_SLAVE_DELAY_0 (AM335_DDR_PHY_REGISTERS + 0x058)
- #define AM335_DDR_CMD1_LOCK_DIFF_0 (AM335_DDR_PHY_REGISTERS + 0x5C)
- #define AM335_DDR_CMD1_INVERT_CLKOUT_0 (AM335_DDR_PHY_REGISTERS + 0x060)
- #define AM335_DDR_CMD2_SLAVE_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x084)
- #define AM335_DDR_CMD2_SLAVE_FORCE_0 (AM335_DDR_PHY_REGISTERS + 0x088)
- #define AM335_DDR_CMD2_SLAVE_DELAY_0 (AM335_DDR_PHY_REGISTERS + 0x08C)
- #define AM335_DDR_CMD2_LOCK_DIFF_0 (AM335_DDR_PHY_REGISTERS + 0x090)
- #define AM335_DDR_CMD2_INVERT_CLKOUT_0 (AM335_DDR_PHY_REGISTERS + 0x094)
- #define AM335_DDR_DATA0_RD_DQS_SLAVE_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x0C8)
- #define AM335_DDR_DATA0_RD_DQS_SLAVE_RATIO_1 (AM335_DDR_PHY_REGISTERS + 0x0CC)
- #define AM335_DDR_DATA0_WR_DQS_SLAVE_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x0DC)
- #define AM335_DDR_DATA0_WR_DQS_SLAVE_RATIO_1 (AM335_DDR_PHY_REGISTERS + 0x0E0)
- #define AM335_DDR_DATA0_WRLVL_INIT_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x0F0)
- #define AM335_DDR_DATA0_WRLVL_INIT_RATIO_1 (AM335_DDR_PHY_REGISTERS + 0x0F4)
- #define AM335_DDR_DATA0_GATELVL_INIT_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x0FC)
- #define AM335_DDR_DATA0_GATELVL_INIT_RATIO_1 (AM335_DDR_PHY_REGISTERS + 0x100)
- #define AM335_DDR_DATA0_FIFO_WE_SLAVE_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x108)
- #define AM335_DDR_DATA0_FIFO_WE_SLAVE_RATIO_1 (AM335_DDR_PHY_REGISTERS + 0x10C)
- #define AM335_DDR_DATA0_WR_DATA_SLAVE_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x120)
- #define AM335_DDR_DATA0_WR_DATA_SLAVE_RATIO_1 (AM335_DDR_PHY_REGISTERS + 0x124)
- #define AM335_DDR_DATA0_USE_RANK0_DELAYS_0 (AM335_DDR_PHY_REGISTERS + 0x134)
- #define AM335_DDR_DATA0_LOCK_DIFF_0 (AM335_DDR_PHY_REGISTERS + 0x138)
- #define AM335_DDR_DATA1_RD_DQS_SLAVE_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x16C)
- #define AM335_DDR_DATA1_RD_DQS_SLAVE_RATIO_1 (AM335_DDR_PHY_REGISTERS + 0x170)
- #define AM335_DDR_DATA1_WR_DQS_SLAVE_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x180)
- #define AM335_DDR_DATA1_WR_DQS_SLAVE_RATIO_1 (AM335_DDR_PHY_REGISTERS + 0x184)
- #define AM335_DDR_DATA1_WRLVL_INIT_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x194)
- #define AM335_DDR_DATA1_WRLVL_INIT_RATIO_1 (AM335_DDR_PHY_REGISTERS + 0x198)
- #define AM335_DDR_DATA1_GATELVL_INIT_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x1A0)
- #define AM335_DDR_DATA1_GATELVL_INIT_RATIO_1 (AM335_DDR_PHY_REGISTERS + 0x1A4)
- #define AM335_DDR_DATA1_FIFO_WE_SLAVE_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x1AC)
- #define AM335_DDR_DATA1_FIFO_WE_SLAVE_RATIO_1 (AM335_DDR_PHY_REGISTERS + 0x1B0)
- #define AM335_DDR_DATA1_WR_DATA_SLAVE_RATIO_0 (AM335_DDR_PHY_REGISTERS + 0x1C4)
- #define AM335_DDR_DATA1_WR_DATA_SLAVE_RATIO_1 (AM335_DDR_PHY_REGISTERS + 0x1C8)
- #define AM335_DDR_DATA1_USE_RANK0_DELAYS_0 (AM335_DDR_PHY_REGISTERS + 0x1D8)
- #define AM335_DDR_DATA1_LOCK_DIFF_0 (AM335_DDR_PHY_REGISTERS + 0x1DC)
- //
- // Define DDR3 parameters. These are specific to the BeagleBone Black, and
- // there needs to be a different set for the BeagleBone (white).
- //
- #define AM335_DDR3_CMD0_SLAVE_RATIO_0 0x80
- #define AM335_DDR3_CMD0_INVERT_CLKOUT_0 0x0
- #define AM335_DDR3_CMD1_SLAVE_RATIO_0 0x80
- #define AM335_DDR3_CMD1_INVERT_CLKOUT_0 0x0
- #define AM335_DDR3_CMD2_SLAVE_RATIO_0 0x80
- #define AM335_DDR3_CMD2_INVERT_CLKOUT_0 0x0
- #define AM335_DDR3_DATA0_RD_DQS_SLAVE_RATIO_0 0x38
- #define AM335_DDR3_DATA0_WR_DQS_SLAVE_RATIO_0 0x44
- #define AM335_DDR3_DATA0_FIFO_WE_SLAVE_RATIO_0 0x94
- #define AM335_DDR3_DATA0_WR_DATA_SLAVE_RATIO_0 0x7D
- #define AM335_DDR3_DATA0_RD_DQS_SLAVE_RATIO_1 0x38
- #define AM335_DDR3_DATA0_WR_DQS_SLAVE_RATIO_1 0x44
- #define AM335_DDR3_DATA0_FIFO_WE_SLAVE_RATIO_1 0x94
- #define AM335_DDR3_DATA0_WR_DATA_SLAVE_RATIO_1 0x7D
- #define AM335_DDR3_CONTROL_DDR_CMD_IOCTRL_0 0x18B
- #define AM335_DDR3_CONTROL_DDR_CMD_IOCTRL_1 0x18B
- #define AM335_DDR3_CONTROL_DDR_CMD_IOCTRL_2 0x18B
- #define AM335_DDR3_CONTROL_DDR_DATA_IOCTRL_0 0x18B
- #define AM335_DDR3_CONTROL_DDR_DATA_IOCTRL_1 0x18B
- #define AM335_DDR3_CONTROL_DDR_IO_CTRL 0xEFFFFFFF
- #define AM335_DDR3_EMIF_DDR_PHY_CTRL_1 0x06
- #define AM335_DDR3_EMIF_DDR_PHY_CTRL_1_DY_PWRDN 0x00100000
- #define AM335_DDR3_EMIF_DDR_PHY_CTRL_1_SHDW 0x06
- #define AM335_DDR3_EMIF_DDR_PHY_CTRL_1_SHDW_DY_PWRDN 0x00100000
- #define AM335_DDR3_EMIF_DDR_PHY_CTRL_2 0x06
- #define AM335_DDR3_EMIF_SDRAM_TIM_1 0x0AAAD4DB
- #define AM335_DDR3_EMIF_SDRAM_TIM_1_SHDW 0x0AAAD4DB
- #define AM335_DDR3_EMIF_SDRAM_TIM_2 0x266B7FDA
- #define AM335_DDR3_EMIF_SDRAM_TIM_2_SHDW 0x266B7FDA
- #define AM335_DDR3_EMIF_SDRAM_TIM_3 0x501F867F
- #define AM335_DDR3_EMIF_SDRAM_TIM_3_SHDW 0x501F867F
- #define AM335_DDR3_EMIF_SDRAM_REF_CTRL_VAL1 0x00000C30
- #define AM335_DDR3_EMIF_SDRAM_REF_CTRL_SHDW_VAL1 0x00000C30
- #define AM335_DDR3_EMIF_ZQ_CONFIG_VAL 0x50074BE4
- //
- // Termination = 1 RZQ / 4
- // Dynamic ODT = 2 RZQ / 2
- // SDRAM Drive = 0 RZQ / 6
- // CWL = 0 CAS write latency of 5
- // CL = 2 CAS latency of 5
- // Row Size = 7 16 row bits
- // Page Size = 2 10 column bits
- //
- #define AM335_DDR3_EMIF_SDRAM_CONFIG 0x61C04BB2
- //
- // CM Wakeup MPU PLL clock mode register bits.
- //
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_MPU_ENABLE_MN_BYPASS 0x00000004
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_MPU_ENABLE 0x00000007
- //
- // CM Wakeup MPU PLL idle status register bits.
- //
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_MPU_CLOCK 0x00000001
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_MPU_MN_BYPASS 0x00000100
- //
- // CM Wakeup MPU PLL clock select register bits.
- //
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_MPU_DIV_MASK 0x0000007F
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_MPU_DIV_SHIFT 0
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_MPU_MULT_MASK 0x0007FF00
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_MPU_MULT_SHIFT 8
- //
- // CM Wakeup MPU PLL M2 divisor register bits.
- //
- #define AM335_CM_WAKEUP_DIV_M2_DPLL_MPU_CLOCK_OUT_MASK 0x0000001F
- //
- // CM Wakeup Display PLL clock mode register bits.
- //
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_DISP_ENABLE_MN_BYPASS 0x00000004
- #define AM335_CM_WAKEUP_CLOCK_MODE_DPLL_DISP_ENABLE 0x0000007
- //
- // CM Wakeup DCO LDO Peripheral DPLL register bits.
- //
- #define AM335_CM_WAKEUP_DCO_LDO_PER_DPLL_GATE_CONTROL 0x00000100
- //
- // CM Wakeup Display PLL idle status register bits.
- //
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_DISP_MN_BYPASS 0x00000100
- #define AM335_CM_WAKEUP_IDLE_STATUS_DPLL_DISP_CLOCK 0x00000001
- //
- // CM Wakeup Display PLL clock select register bits.
- //
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_DISP_DIV_MASK 0x0000007F
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_DISP_DIV_SHIFT 0
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_DISP_MULT_MASK 0x0007FF00
- #define AM335_CM_WAKEUP_CLOCK_SELECT_DPLL_DISP_MULT_SHIFT 8
- //
- // CM Wakeup Display PLL M2 divider register bits.
- //
- #define AM335_CM_WAKEUP_DIV_M2_DPLL_DISP_CLOCK_OUT_MASK 0x0000001F
- //
- // Hardcoded PLL values.
- //
- #define AM335_MPU_PLL_N 23
- #define AM335_MPU_PLL_M2 1
- #define AM335_CORE_PLL_M 1000
- #define AM335_CORE_PLL_N 23
- #define AM335_CORE_PLL_HSDIVIDER_M4 10
- #define AM335_CORE_PLL_HSDIVIDER_M5 8
- #define AM335_CORE_PLL_HSDIVIDER_M6 4
- #define AM335_PER_PLL_M 960
- #define AM335_PER_PLL_N 23
- #define AM335_PER_PLL_M2 5
- #define AM335_DDR_PLL_M_DDR2 266
- #define AM335_DDR_PLL_M_DDR3 303
- #define AM335_DDR_PLL_N 23
- #define AM335_DDR_PLL_M2 1
- #define AM335_DISP_PLL_M 25
- #define AM335_DISP_PLL_N 2
- #define AM335_DISP_PLL_M2 1
- //
- // Define PRM wake up reset control register bits.
- //
- #define AM335_RM_WAKEUP_RESET_CONTROL_RESET_CORTEX_M3 (1 << 3)
- //
- // Define SOC Control M3 TXEV End of interrupt bits.
- //
- #define AM335_CONTROL_M3_TXEV_EOI_ENABLE 0x00000000
- #define AM335_CONTROL_M3_TXEV_EOI 0x00000001
- //
- // Define the size of the entire USB subsystem region.
- //
- #define AM335_USB_REGION_SIZE 0x8000
- //
- // Define register offsets within the USB subsystem.
- //
- #define AM3_USB_USBSS_OFFSET 0x0000
- #define AM3_USB_USB0_OFFSET 0x1000
- #define AM3_USB_USB0_PHY_OFFSET 0x1300
- #define AM3_USB_USB0_CORE_OFFSET 0x1400
- #define AM3_USB_USB1_OFFSET 0x1800
- #define AM3_USB_USB1_PHY_OFFSET 0x1B00
- #define AM3_USB_USB1_CORE_OFFSET 0x1C00
- #define AM3_USB_CPPI_DMA_OFFSET 0x2000
- #define AM3_USB_CPPI_DMA_SCHEDULER_OFFSET 0x3000
- //
- // USBSS sysconfig register bits
- //
- #define AM335_USBSS_SYSCONFIG_SOFT_RESET 0x00000001
- //
- // Define EMIF power control registers.
- //
- #define AM335_EMIF_POWER_CONTROL_SELF_REFRESH_64 (0x3 << 4)
- #define AM335_EMIF_POWER_CONTROL_SELF_REFRESH_8192 (0xA << 4)
- #define AM335_EMIF_POWER_CONTROL_CLOCK_STOP (0x1 << 8)
- #define AM335_EMIF_POWER_CONTROL_SELF_REFRESH (0x2 << 8)
- #define AM335_EMIF_POWER_CONTROL_POWER_DOWN (0x4 << 8)
- //
- // LCD controller registers.
- //
- #define AM335_LCD_CONTROL 0x04
- #define AM335_LCD_STATUS 0x08
- #define AM335_LCD_LIDD_CONTROL 0x0C
- #define AM335_LCD_LIDD_CS0_CONF 0x10
- #define AM335_LCD_LIDD_CS0_ADDR 0x14
- #define AM335_LCD_LIDD_CS0_DATA 0x18
- #define AM335_LCD_LIDD_CS1_CONF 0x1C
- #define AM335_LCD_LIDD_CS1_ADDR 0x20
- #define AM335_LCD_LIDD_CS1_DATA 0x24
- #define AM335_LCD_RASTER_CONTROL 0x28
- #define AM335_LCD_RASTER_TIMING_0 0x2C
- #define AM335_LCD_RASTER_TIMING_1 0x30
- #define AM335_LCD_RASTER_TIMING_2 0x34
- #define AM335_LCD_SUBPANEL 0x38
- #define AM335_LCD_SUBPANEL2 0x3C
- #define AM335_LCD_DMA_CONTROL 0x40
- #define AM335_LCD_FB0_BASE 0x44
- #define AM335_LCD_FB0_CEILING 0x48
- #define AM335_LCD_FB1_BASE 0x4C
- #define AM335_LCD_FB1_CEILING 0x50
- #define AM335_LCD_SYSTEM_CONFIG 0x54
- #define AM335_LCD_IRQSTATUS_RAW 0x58
- #define AM335_LCD_IRQSTATUS 0x5C
- #define AM335_LCD_IRQENABLE_SET 0x60
- #define AM335_LCD_IRQENABLE_CLEAR 0x64
- #define AM335_LCD_IRQEOI_VECTOR 0x68
- #define AM335_LCD_CLOCK_ENABLE 0x6C
- #define AM335_LCD_CLOCK_RESET 0x70
- //
- // LCD clock enable register bits.
- //
- #define AM335_LCD_CLOCK_ENABLE_CORE 0x00000001
- #define AM335_LCD_CLOCK_ENABLE_LIDD 0x00000002
- #define AM335_LCD_CLOCK_ENABLE_DMA 0x00000004
- //
- // LCD raster control register bits.
- //
- #define AM335_LCD_RASTER_CONTROL_ENABLE 0x00000001
- #define AM335_LCD_RASTER_CONTROL_TFT 0x00000080
- #define AM335_LCD_RASTER_CONTROL_FIFO_DMA_DELAY_MASK 0x000FF000
- #define AM335_LCD_RASTER_CONTROL_FIFO_DMA_DELAY_SHIFT 12
- #define AM335_LCD_RASTER_CONTROL_PALETTE_LOAD_MASK 0x00300000
- #define AM335_LCD_RASTER_CONTROL_PALETTE_LOAD_DATA_ONLY 0x00200000
- #define AM335_LCD_RASTER_CONTROL_TFT24 0x02000000
- #define AM335_LCD_RASTER_CONTROL_TFT24_UNPACKED 0x04000000
- //
- // LCD control register bits.
- //
- #define AM335_LCD_CONTROL_RASTER_MODE 0x00000001
- #define AM335_LCD_CONTROL_DIVISOR_SHIFT 8
- //
- // LCD DMA control register bits.
- //
- #define AM335_LCD_DMA_BURST_SIZE_16 (0x4 << 4)
- #define AM335_LCD_DMA_FIFO_THRESHOLD_8 (0x0 << 8)
- //
- // General LCD timing definitions.
- //
- #define AM335_LCD_RASTER_TIMING_PORCH_LOW_MASK 0xFF
- #define AM335_LCD_RASTER_TIMING_PORCH_HIGH_SHIFT 8
- #define AM335_LCD_RASTER_TIMING_PORCH_HIGH_MASK 0x3
- #define AM335_LCD_RASTER_TIMING_HSYNC_HIGH_SHIFT 6
- #define AM335_LCD_RASTER_TIMING_HSYNC_HIGH_MASK 0xF
- //
- // LCD timing 0 register bits.
- //
- #define AM335_LCD_RASTER_TIMING_0_HSYNC_SHIFT 10
- #define AM335_LCD_RASTER_TIMING_0_HORIZONTAL_FRONT_PORCH_SHIFT 16
- #define AM335_LCD_RASTER_TIMING_0_HORIZONTAL_BACK_PORCH_SHIFT 24
- #define AM335_LCD_RASTER_TIMING_0_HSYNC_MASK 0x3F
- //
- // LCD timing 1 register bits.
- //
- #define AM335_LCD_RASTER_TIMING_1_VSYNC_SHIFT 10
- #define AM335_LCD_RASTER_TIMING_1_VERTICAL_FRONT_PORCH_SHIFT 16
- #define AM335_LCD_RASTER_TIMING_1_VERTICAL_BACK_PORCH_SHIFT 24
- //
- // LCD Raster timing 2 register bits.
- //
- #define AM335_LCD_RASTER_TIMING_2_INVERT_VERTICAL_SYNC 0x00100000
- #define AM335_LCD_RASTER_TIMING_2_INVERT_HORIZONTAL_SYNC 0x00200000
- #define AM335_LCD_RASTER_TIMING_2_SYNC_CONTROL 0x02000000
- #define AM335_LCD_RASTER_TIMING_2_AC_BIAS_FREQUENCY_SHIFT 8
- #define AM335_LCD_RASTER_TIMING_2_LINES_PER_PANEL_BIT_10_SHIFT 26
- #define AM335_LCD_RASTER_TIMING_2_LINES_PER_PANEL_BIT_10 0x04000000
- #define AM335_LCD_RASTER_TIMING_2_HORIZONTAL_FRONT_PORCH_HIGH_SHIFT 0
- #define AM335_LCD_RASTER_TIMING_2_HORIZONTAL_BACK_PORCH_HIGH_SHIFT 4
- #define AM335_LCD_RASTER_TIMING_2_HORIZONTAL_SYNC_HIGH_SHIFT 27
- //
- // LCD system configuration register bits.
- //
- #define AM335_LCD_SYSTEM_CONFIG_STANDBY_SMART (0x2 << 4)
- #define AM335_LCD_SYSTEM_CONFIG_IDLE_SMART (0x2 << 2)
- //
- // LCD clock reset register bits.
- //
- #define AM335_LCD_CLOCK_RESET_MAIN 0x00000008
- //
- // Define Ethernet PORT register offsets.
- //
- #define AM335_CPSW_PORT_REGISTERS 0x4A100100
- #define AM335_CPSW_PORT1_SOURCE_ADDRESS_LOW 0x120
- #define AM335_CPSW_PORT1_SOURCE_ADDRESS_HIGH 0x124
- #define AM335_CPSW_PORT2_SOURCE_ADDRESS_LOW 0x220
- #define AM335_CPSW_PORT2_SOURCE_ADDRESS_HIGH 0x224
- //
- // Define RTC control register bits.
- //
- #define AM335_RTC_CONTROL_RUN 0x00000001
- #define AM335_RTC_CONTROL_ROUND_30S 0x00000002
- #define AM335_RTC_CONTROL_AUTO_COMPENSATION 0x00000004
- #define AM335_RTC_CONTROL_12_HOUR_MODE 0x00000008
- #define AM335_RTC_CONTROL_TEST_MODE 0x00000010
- #define AM335_RTC_CONTROL_SET_32_MOUNTER 0x00000020
- #define AM335_RTC_CONTROL_RTC_DISABLE 0x00000040
- //
- // Define RTC status register bits.
- //
- #define AM335_RTC_STATUS_BUSY 0x00000001
- #define AM335_RTC_STATUS_RUN 0x00000002
- #define AM335_RTC_STATUS_SECOND_EVENT 0x00000004
- #define AM335_RTC_STATUS_MINUTE_EVENT 0x00000008
- #define AM335_RTC_STATUS_HOUR_EVENT 0x00000010
- #define AM335_RTC_STATUS_DAY_EVENT 0x00000020
- #define AM335_RTC_STATUS_ALARM 0x00000040
- #define AM335_RTC_STATUS_ALARM2 0x00000080
- //
- // Define RTC interrupt enable bits.
- //
- #define AM335_RTC_INTERRUPT_EVERY_SECOND 0x0
- #define AM335_RTC_INTERRUPT_EVERY_MINUTE 0x1
- #define AM335_RTC_INTERRUPT_EVERY_HOUR 0x2
- #define AM335_RTC_INTERRUPT_EVERY_DAY 0x3
- #define AM335_RTC_INTERRUPT_EVERY_MASK 0x3
- #define AM335_RTC_INTERRUPT_TIMER 0x00000004
- #define AM335_RTC_INTERRUPT_ALARM 0x00000008
- #define AM335_RTC_INTERRUPT_ALARM2 0x00000010
- #define AM335_RTC_HOURS_PM 0x80
- //
- // Define RTC system configuration register bits.
- //
- #define AM335_RTC_SYS_CONFIG_IDLE_MODE_FORCE_IDLE 0x0
- #define AM335_RTC_SYS_CONFIG_IDLE_MODE_NO_IDLE 0x1
- #define AM335_RTC_SYS_CONFIG_IDLE_MODE_SMART 0x2
- #define AM335_RTC_SYS_CONFIG_IDLE_MODE_SMART_WAKEUP 0x3
- //
- // Define the kick values to write to enable write access to the RTC.
- //
- #define AM335_RTC_KICK0_KEY 0x83E70B13
- #define AM335_RTC_KICK1_KEY 0x95A4F1E0
- //
- // Define RTC oscillator register bits.
- //
- #define AM335_RTC_OSCILLATOR_SW1 0x00000001
- #define AM335_RTC_OSCILLATOR_SW2 0x00000002
- #define AM335_RTC_OSCILLATOR_EXTERNAL_RESISTOR 0x00000004
- #define AM335_RTC_OSCILLATOR_SOURCE_EXTERNAL 0x00000008
- #define AM335_RTC_OSCILLATOR_DISABLE_OSCILLATOR 0x00000010
- #define AM335_RTC_OSCILLATOR_ENABLE 0x00000040
- #define AM335_WATCHDOG_FREQUENCY 32768
- //
- // Define the number of 32kHz clock ticks per interrupt. A value of 512 creates
- // a timer rate of 15.625ms, or about 64 interrupts per second.
- //
- #define BEAGLEBONE_TIMER_TICK_COUNT 512
- //
- // Idle bits.
- //
- #define AM335_TIMER_IDLEMODE_NOIDLE 0x00000004
- #define AM335_TIMER_IDLEMODE_SMART 0x00000008
- //
- // Mode bits.
- //
- #define AM335_TIMER_STARTED 0x00000001
- #define AM335_TIMER_OVERFLOW_TRIGGER 0x00000400
- #define AM335_TIMER_OVERFLOW_AND_MATCH_TRIGGER 0x00000800
- #define AM335_TIMER_COMPARE_ENABLED 0x00000040
- #define AM335_TIMER_AUTORELOAD 0x00000002
- //
- // Interrupt enable bits.
- //
- #define AM335_TIMER_MATCH_INTERRUPT 0x00000001
- #define AM335_TIMER_OVERFLOW_INTERRUPT 0x00000002
- #define AM335_TIMER_INTERRUPT_MASK 0x7
- //
- // Define the two step sequence needed for disabling or enabling the watchdog
- // timer.
- //
- #define AM335_WATCHDOG_DISABLE1 0x0000AAAA
- #define AM335_WATCHDOG_DISABLE2 0x00005555
- #define AM335_WATCHDOG_ENABLE1 0x0000BBBB
- #define AM335_WATCHDOG_ENABLE2 0x00004444
- #define AM335_WATCHDOG_INTERRUPT_OVERFLOW 0x00000001
- #define AM335_WATCHDOG_INTERRUPT_DELAY 0x00000002
- //
- // I2C system status register bits.
- //
- #define AM335_I2C_SYSTEM_STATUS_RESET_DONE 0x00000001
- //
- // Define the I2C slave address of the TPS65217 PMIC.
- //
- #define AM335_TPS65217_I2C_ADDRESS 0x24
- //
- // Define I2C control register bits.
- //
- #define AM335_I2C_CONTROL_START (1 << 0)
- #define AM335_I2C_CONTROL_STOP (1 << 1)
- #define AM335_I2C_CONTROL_EXPAND_OWN_ADDRESS_3 (1 << 4)
- #define AM335_I2C_CONTROL_EXPAND_OWN_ADDRESS_2 (1 << 5)
- #define AM335_I2C_CONTROL_EXPAND_OWN_ADDRESS_1 (1 << 6)
- #define AM335_I2C_CONTROL_EXPAND_OWN_ADDRESS_0 (1 << 7)
- #define AM335_I2C_CONTROL_EXPAND_SLAVE_ADDRESS (1 << 8)
- #define AM335_I2C_CONTROL_TRANSMIT (1 << 9)
- #define AM335_I2C_CONTROL_MASTER (1 << 10)
- #define AM335_I2C_CONTROL_START_BYTE_MODE (1 << 11)
- #define AM335_I2C_CONTROL_ENABLE (1 << 15)
- //
- // I2C system control register bits.
- //
- #define AM335_I2C_SYSTEM_CONTROL_AUTO_IDLE 0x00000001
- #define AM335_I2C_SYSTEM_CONTROL_SOFT_RESET 0x00000002
- //
- // Define I2C buffer (FIFO) control bits.
- //
- #define AM335_I2C_BUFFER_TX_THRESHOLD_SHIFT 0
- #define AM335_I2C_BUFFER_TX_FIFO_CLEAR (1 << 6)
- #define AM335_I2C_BUFFER_TX_DMA_ENABLE (1 << 7)
- #define AM335_I2C_BUFFER_RX_THRESHOLD_SHIFT 8
- #define AM335_I2C_BUFFER_RX_FIFO_CLEAR (1 << 14)
- #define AM335_I2C_BUFFER_RX_DMA_ENABLE (1 << 15)
- //
- // Define buffer status register bits.
- //
- #define AM335_I2C_BUFFER_STATUS_TX_MASK (0x3F << 0)
- #define AM335_I2C_BUFFER_STATUS_TX_SHIFT 0
- #define AM335_I2C_BUFFER_STATUS_RX_MASK (0x3F << 8)
- #define AM335_I2C_BUFFER_STATUS_RX_SHIFT 8
- #define AM335_I2C_BUFFER_STATUS_DEPTH_8 (0x0 << 14)
- #define AM335_I2C_BUFFER_STATUS_DEPTH_16 (0x1 << 14)
- #define AM335_I2C_BUFFER_STATUS_DEPTH_32 (0x2 << 14)
- #define AM335_I2C_BUFFER_STATUS_DEPTH_64 (0x3 << 14)
- #define AM335_I2C_BUFFER_STATUS_DEPTH_MASK (0x3 << 14)
- #define AM335_I2C_MAX_FIFO_DEPTH 64
- //
- // Define I2C interrupt status/enable register bits.
- //
- #define AM335_I2C_INTERRUPT_ARBITRATION_LOST 0x00000001
- #define AM335_I2C_INTERRUPT_NACK 0x00000002
- #define AM335_I2C_INTERRUPT_ACCESS_READY 0x00000004
- #define AM335_I2C_INTERRUPT_RX_READY 0x00000008
- #define AM335_I2C_INTERRUPT_TX_READY 0x00000010
- #define AM335_I2C_INTERRUPT_GENERAL_CALL 0x00000020
- #define AM335_I2C_INTERRUPT_START 0x00000040
- #define AM335_I2C_INTERRUPT_ACCESS_ERROR 0x00000080
- #define AM335_I2C_INTERRUPT_BUS_FREE 0x00000100
- #define AM335_I2C_INTERRUPT_ADDRESS_RECOGNIZED 0x00000200
- #define AM335_I2C_INTERRUPT_TX_UNDERFLOW 0x00000400
- #define AM335_I2C_INTERRUPT_RX_OVERFLOW 0x00000800
- #define AM335_I2C_INTERRUPT_BUS_BUSY 0x00001000
- #define AM335_I2C_INTERRUPT_RX_DRAIN 0x00002000
- #define AM335_I2C_INTERRUPT_TX_DRAIN 0x00004000
- #define AM335_I2C_INTERRUPT_ERROR_MASK \
- (AM335_I2C_INTERRUPT_ACCESS_ERROR | AM335_I2C_INTERRUPT_RX_OVERFLOW)
- #define AM335_I2C_INTERRUPT_DEFAULT_MASK \
- (AM335_I2C_INTERRUPT_NACK | AM335_I2C_INTERRUPT_ACCESS_ERROR)
- #define AM335_I2C_INTERRUPT_STATUS_MASK 0x000007FF
- //
- // Define internal I2C parameters (recommended convention).
- //
- #define AM335_I2C_SYSTEM_CLOCK_SPEED 48000000
- #define AM335_I2C_INTERNAL_CLOCK_SPEED 12000000
- #define AM335_I2C_OUTPUT_CLOCK_SPEED 100000
- //
- // ------------------------------------------------------ Data Type Definitions
- //
- //
- // Define the DM timer register offsets.
- //
- typedef enum _AM335_DM_TIMER_REGISTER {
- Am335TimerId = 0x00,
- Am335TimerOcpConfig = 0x10,
- Am335TimerEndOfInterrupt = 0x14,
- Am335TimerRawInterruptStatus = 0x24,
- Am335TimerInterruptStatus = 0x28,
- Am335TimerInterruptEnableSet = 0x2C,
- Am335TimerInterruptEnableClear = 0x30,
- Am335TimerInterruptWakeEnable = 0x34,
- Am335TimerControl = 0x38,
- Am335TimerCount = 0x3C,
- Am335TimerLoad = 0x40,
- Am335TimerTrigger = 0x44,
- Am335TimerWritePosting = 0x48,
- Am335TimerMatch = 0x4C,
- Am335TimerCapture1 = 0x50,
- Am335TimerSynchronousInterfaceControl = 0x54,
- Am335TimerCapture2 = 0x58
- } AM335_DM_TIMER_REGISTER, *PAM335_DM_TIMER_REGISTER;
- //
- // Define INTC register offsets.
- //
- typedef enum _AM335_INTC_REGISTER {
- Am335IntcRevision = 0x000,
- Am335IntcSystemConfig = 0x010,
- Am335IntcSystemStatus = 0x014,
- Am335IntcSortedIrq = 0x040,
- Am335IntcSortedFiq = 0x044,
- Am335IntcControl = 0x048,
- Am335IntcProtection = 0x04C,
- Am335IntcIdle = 0x050,
- Am335IntcIrqPriority = 0x060,
- Am335IntcFiqPriority = 0x064,
- Am335IntcThreshold = 0x068,
- Am335IntcMask = 0x084,
- Am335IntcMaskClear = 0x088,
- Am335IntcMaskSet = 0x08C,
- Am335IntcLine = 0x100,
- } AM335_INTC_REGISTER, *PAM335_INTC_REGISTER;
- //
- // Define the watchdog timer registers, offsets in bytes.
- //
- typedef enum _AM335_WATCHDOG_REGISTER {
- Am335WatchdogRevision = 0x00,
- Am335WatchdogInterfaceConfiguration = 0x10,
- Am335WatchdogInterfaceStatus = 0x14,
- Am335WatchdogInterruptStatus = 0x18,
- Am335WatchdogInterruptEnable = 0x1C,
- Am335WatchdogWakeEventEnable = 0x20,
- Am335WatchdogPrescaler = 0x24,
- Am335WatchdogCurrentCount = 0x28,
- Am335WatchdogLoadCount = 0x2C,
- Am335WatchdogTrigger = 0x30,
- Am335WatchdogWritePostStatus = 0x34,
- Am335WatchdogDelay = 0x44,
- Am335WatchdogStartStop = 0x48,
- Am335WatchdogRawInterruptStatus = 0x54,
- Am335WatchdogInterruptEnableSet = 0x5C,
- Am335WatchdogInterruptEnableClear = 0x60,
- Am335WatchdogWakeEnable = 0x64
- } AM335_WATCHDOG_REGISTER, *PAM335_WATCHDOG_REGISTER;
- typedef enum _AM335_RTC_REGISTER {
- Am335RtcSeconds = 0x00,
- Am335RtcMinutes = 0x04,
- Am335RtcHours = 0x08,
- Am335RtcDays = 0x0C,
- Am335RtcMonths = 0x10,
- Am335RtcYears = 0x14,
- Am335RtcWeekdays = 0x18,
- Am335RtcAlarmSeconds = 0x20,
- Am335RtcAlarmMinutes = 0x24,
- Am335RtcAlarmHours = 0x28,
- Am335RtcAlarmDays = 0x2C,
- Am335RtcAlarmMonths = 0x30,
- Am335RtcAlarmYears = 0x34,
- Am335RtcControl = 0x40,
- Am335RtcStatus = 0x44,
- Am335RtcInterruptEnable = 0x48,
- Am335RtcCompensationLow = 0x4C,
- Am335RtcCompensationHigh = 0x50,
- Am335RtcOscillator = 0x54,
- Am335RtcScratch0 = 0x60,
- Am335RtcScratch1 = 0x64,
- Am335RtcScratch2 = 0x68,
- Am335RtcKick0 = 0x6C,
- Am335RtcKick1 = 0x70,
- Am335RtcRevision = 0x74,
- Am335RtcSysConfig = 0x78,
- Am335RtcWakeEnable = 0x7C,
- Am335RtcAlarm2Seconds = 0x80,
- Am335RtcAlarm2Minutes = 0x84,
- Am335RtcAlarm2Hours = 0x88,
- Am335RtcAlarm2Days = 0x8C,
- Am335RtcAlarm2Months = 0x90,
- Am335RtcAlarm2Years = 0x94,
- Am335RtcPmic = 0x98,
- Am335RtcDebounce = 0x9C
- } AM335_RTC_REGISTER, *PAM335_RTC_REGISTER;
- typedef enum _AM335_I2C_REGISTER {
- Am3I2cRevisionLow = 0x00,
- Am3I2cRevisionHigh = 0x04,
- Am3I2cSysControl = 0x10,
- Am3I2cInterruptStatusRaw = 0x24,
- Am3I2cInterruptStatus = 0x28,
- Am3I2cInterruptEnableSet = 0x2C,
- Am3I2cInterruptEnableClear = 0x30,
- Am3I2cWakeEnable = 0x34,
- Am3I2cDmaRxEnableSet = 0x38,
- Am3I2cDmaTxEnableSet = 0x3C,
- Am3I2cDmaRxEnableClear = 0x40,
- Am3I2cDmaTxEnableClear = 0x44,
- Am3I2cDmaRxWakeEnable = 0x48,
- Am3I2cDmaTxWakeEnable = 0x4C,
- Am3I2cSysStatus = 0x90,
- Am3I2cBuffer = 0x94,
- Am3I2cCount = 0x98,
- Am3I2cData = 0x9C,
- Am3I2cControl = 0xA4,
- Am3I2cOwnAddress = 0xA8,
- Am3I2cSlaveAddress = 0xAC,
- Am3I2cPrescale = 0xB0,
- Am3I2cSclLowTime = 0xB4,
- Am3I2cSclHighTime = 0xB8,
- Am3I2cSysTest = 0xBC,
- Am3I2cBufferStatus = 0xC0,
- Am3I2cOwnAddress1 = 0xC4,
- Am3I2cOwnAddress2 = 0xC8,
- Am3I2cOwnAddress3 = 0xCC,
- Am3I2cActiveOwnAddress = 0xD0,
- Am3I2cClockBlock = 0xD4,
- } AM335_I2C_REGISTER, *PAM335_I2C_REGISTER;
- //
- // -------------------------------------------------------------------- Globals
- //
- //
- // -------------------------------------------------------- Function Prototypes
- //
|