Commit c588de3d27e442687121379efc26b36d89ee953f
1 parent
d361be25
omap1: add OSC_12M_SEL UART register support (original patch from Jean-Christophe PLAGNIOL-VILLARD)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5905 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
17 additions
and
10 deletions
hw/omap1.c
| ... | ... | @@ -1966,6 +1966,7 @@ struct omap_uart_s { |
| 1966 | 1966 | uint8_t cfps; |
| 1967 | 1967 | uint8_t mdr[2]; |
| 1968 | 1968 | uint8_t scr; |
| 1969 | + uint8_t clksel; | |
| 1969 | 1970 | }; |
| 1970 | 1971 | |
| 1971 | 1972 | void omap_uart_reset(struct omap_uart_s *s) |
| ... | ... | @@ -1974,6 +1975,7 @@ void omap_uart_reset(struct omap_uart_s *s) |
| 1974 | 1975 | s->syscontrol = 0; |
| 1975 | 1976 | s->wkup = 0x3f; |
| 1976 | 1977 | s->cfps = 0x69; |
| 1978 | + s->clksel = 0; | |
| 1977 | 1979 | } |
| 1978 | 1980 | |
| 1979 | 1981 | struct omap_uart_s *omap_uart_init(target_phys_addr_t base, |
| ... | ... | @@ -2006,17 +2008,19 @@ static uint32_t omap_uart_read(void *opaque, target_phys_addr_t addr) |
| 2006 | 2008 | return s->scr; |
| 2007 | 2009 | case 0x44: /* SSR */ |
| 2008 | 2010 | return 0x0; |
| 2009 | - case 0x48: /* EBLR */ | |
| 2011 | + case 0x48: /* EBLR (OMAP2) */ | |
| 2010 | 2012 | return s->eblr; |
| 2013 | + case 0x4C: /* OSC_12M_SEL (OMAP1) */ | |
| 2014 | + return s->clksel; | |
| 2011 | 2015 | case 0x50: /* MVR */ |
| 2012 | 2016 | return 0x30; |
| 2013 | - case 0x54: /* SYSC */ | |
| 2017 | + case 0x54: /* SYSC (OMAP2) */ | |
| 2014 | 2018 | return s->syscontrol; |
| 2015 | - case 0x58: /* SYSS */ | |
| 2019 | + case 0x58: /* SYSS (OMAP2) */ | |
| 2016 | 2020 | return 1; |
| 2017 | - case 0x5c: /* WER */ | |
| 2021 | + case 0x5c: /* WER (OMAP2) */ | |
| 2018 | 2022 | return s->wkup; |
| 2019 | - case 0x60: /* CFPS */ | |
| 2023 | + case 0x60: /* CFPS (OMAP2) */ | |
| 2020 | 2024 | return s->cfps; |
| 2021 | 2025 | } |
| 2022 | 2026 | |
| ... | ... | @@ -2040,23 +2044,26 @@ static void omap_uart_write(void *opaque, target_phys_addr_t addr, |
| 2040 | 2044 | case 0x40: /* SCR */ |
| 2041 | 2045 | s->scr = value & 0xff; |
| 2042 | 2046 | break; |
| 2043 | - case 0x48: /* EBLR */ | |
| 2047 | + case 0x48: /* EBLR (OMAP2) */ | |
| 2044 | 2048 | s->eblr = value & 0xff; |
| 2045 | 2049 | break; |
| 2050 | + case 0x4C: /* OSC_12M_SEL (OMAP1) */ | |
| 2051 | + s->clksel = value & 1; | |
| 2052 | + break; | |
| 2046 | 2053 | case 0x44: /* SSR */ |
| 2047 | 2054 | case 0x50: /* MVR */ |
| 2048 | - case 0x58: /* SYSS */ | |
| 2055 | + case 0x58: /* SYSS (OMAP2) */ | |
| 2049 | 2056 | OMAP_RO_REG(addr); |
| 2050 | 2057 | break; |
| 2051 | - case 0x54: /* SYSC */ | |
| 2058 | + case 0x54: /* SYSC (OMAP2) */ | |
| 2052 | 2059 | s->syscontrol = value & 0x1d; |
| 2053 | 2060 | if (value & 2) |
| 2054 | 2061 | omap_uart_reset(s); |
| 2055 | 2062 | break; |
| 2056 | - case 0x5c: /* WER */ | |
| 2063 | + case 0x5c: /* WER (OMAP2) */ | |
| 2057 | 2064 | s->wkup = value & 0x7f; |
| 2058 | 2065 | break; |
| 2059 | - case 0x60: /* CFPS */ | |
| 2066 | + case 0x60: /* CFPS (OMAP2) */ | |
| 2060 | 2067 | s->cfps = value & 0xff; |
| 2061 | 2068 | break; |
| 2062 | 2069 | default: | ... | ... |