diff mbox series

ARM: davinci: dm365-evm: Add Fixed regulators needed for tlv320aic3101

Message ID 20190830102252.22488-1-peter.ujfalusi@ti.com (mailing list archive)
State Mainlined
Commit 9c76e8f65d2e73834fe1c83ed4394f3b4d485548
Headers show
Series ARM: davinci: dm365-evm: Add Fixed regulators needed for tlv320aic3101 | expand

Commit Message

Peter Ujfalusi Aug. 30, 2019, 10:22 a.m. UTC
The codec driver needs correct regulators in order to probe.
Both VCC_3V3 and VCC_1V8 is always on fixed regulators on the board.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
---
 arch/arm/mach-davinci/board-dm365-evm.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

Comments

Sekhar Nori Oct. 17, 2019, 11:09 a.m. UTC | #1
On 30/08/19 3:52 PM, Peter Ujfalusi wrote:
> The codec driver needs correct regulators in order to probe.
> Both VCC_3V3 and VCC_1V8 is always on fixed regulators on the board.
> 
> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

Applied for v5.4

Thanks,
Sekhar
Sekhar Nori Oct. 17, 2019, 1:49 p.m. UTC | #2
On 17/10/19 4:39 PM, Sekhar Nori wrote:
> On 30/08/19 3:52 PM, Peter Ujfalusi wrote:
>> The codec driver needs correct regulators in order to probe.
>> Both VCC_3V3 and VCC_1V8 is always on fixed regulators on the board.
>>
>> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> 
> Applied for v5.4

This is breaking boot on DM365 EVM.

Booting Linux on physical CPU 0x0                                               
Linux version 5.4.0-rc1-00001-g927d10a85791-dirty (a0875516@psplinux063) (gcc v9
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f                   
CPU: VIVT data cache, VIVT instruction cache                                    
Machine: DaVinci DM365 EVM                                                      
Memory policy: Data cache writethrough                                          
cma: Reserved 16 MiB at 0x86c00000                                              
DaVinci dm365_rev1.1 variant 0x0                                                
On node 0 totalpages: 32768                                                     
  DMA zone: 256 pages used for memmap                                           
  DMA zone: 0 pages reserved                                                    
  DMA zone: 32768 pages, LIFO batch:7                                           
pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768                                   
pcpu-alloc: [0] 0                                                               
Built 1 zonelists, mobility grouping on.  Total pages: 32512                    
Kernel command line: console=ttyS0,115200n8 root=/dev/nfs rw nfsroot=172.24.210p
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)          
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)            
mem auto-init: stack:off, heap alloc:off, heap free:off                         
Memory: 106776K/131072K available (4760K kernel code, 253K rwdata, 1160K rodata)
SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1                      
rcu: Preemptible hierarchical RCU implementation.                               
        Tasks RCU enabled.                                                      
rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.          
NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16                                 
random: get_random_bytes called from start_kernel+0x25c/0x440 with crng_init=0  
clocksource: timer0_1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79s
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns       
Console: colour dummy device 80x30                                              
Calibrating delay loop... 146.84 BogoMIPS (lpj=734208)                          
pid_max: default: 32768 minimum: 301                                            
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)             
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)        
CPU: Testing write buffer coherency: ok                                         
Setting up static identity map for 0x80008400 - 0x80008458                      
rcu: Hierarchical SRCU implementation.                                          
devtmpfs: initialized                                                           
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 191s
futex hash table entries: 256 (order: -1, 3072 bytes, linear)                   
pinctrl core: initialized pinctrl subsystem                                     
NET: Registered protocol family 16                                              
DMA: preallocated 256 KiB pool for atomic coherent allocations                  
mux: initialized INT_EDMA_CC                                                    
mux: Setting register INT_EDMA_CC                                               
mux:    INTMUX (0x00000018) = 0x00000000 -> 0x00000004                          
cpuidle: using governor menu                                                    
mux: initialized INT_EMAC_RXTHRESH                                              
mux: Setting register INT_EMAC_RXTHRESH                                         
mux:    INTMUX (0x00000018) = 0x00000004 -> 0x00004004                          
mux: initialized INT_EMAC_RXPULSE                                               
mux: Setting register INT_EMAC_RXPULSE                                          
mux:    INTMUX (0x00000018) = 0x00004004 -> 0x0000c004                          
mux: initialized INT_EMAC_TXPULSE                                               
mux: Setting register INT_EMAC_TXPULSE                                          
mux:    INTMUX (0x00000018) = 0x0000c004 -> 0x0001c004                          
mux: initialized INT_EMAC_MISCPULSE                                             
mux: Setting register INT_EMAC_MISCPULSE                                        
mux:    INTMUX (0x00000018) = 0x0001c004 -> 0x0003c004                          
EVM: tvp5146 SD video input                                                     
mux: initialized INT_PRTCSS                                                     
mux: Setting register INT_PRTCSS                                                
mux:    INTMUX (0x00000018) = 0x0003c004 -> 0x0003c404                          
mux: initialized SPI0_SCLK                                                      
mux: Setting register SPI0_SCLK                                                 
mux:    PINMUX3 (0x0000000c) = 0x015affff -> 0x115affff                         
mux: initialized SPI0_SDI                                                       
mux: Setting register SPI0_SDI                                                  
mux:    PINMUX3 (0x0000000c) = 0x115affff -> 0x155affff                         
mux: initialized SPI0_SDO                                                       
mux: Setting register SPI0_SDO                                                  
mux:    PINMUX3 (0x0000000c) = 0x155affff -> 0x175affff                         
mux: initialized SPI0_SDENA0                                                    
mux: Setting register SPI0_SDENA0                                               
mux:    PINMUX3 (0x0000000c) = 0x175affff -> 0x375affff                         
edma edma.0: Legacy memcpy is enabled, things might not work                    
edma edma.0: TI EDMA DMA engine driver                                          
8<--- cut here ---                                                              
Unable to handle kernel NULL pointer dereference at virtual address 000000c0    
pgd = (ptrval)                                                                  
[000000c0] *pgd=00000000                                                        
Internal error: Oops: 5 [#1] PREEMPT ARM                                        
Modules linked in:                                                              
CPU: 0 PID: 1 Comm: swapper Not tainted 5.4.0-rc1-00001-g927d10a85791-dirty #146
Hardware name: DaVinci DM365 EVM                                                
PC is at reg_fixed_voltage_probe+0x30/0x2ec                                     
LR is at reg_fixed_voltage_probe+0x2c/0x2ec                                     
pc : [<c02a9628>]    lr : [<c02a9624>]    psr: 60000053                         
sp : c6837de0  ip : 00000000  fp : c062cfd8                                     
r10: c05f44a8  r9 : 00000000  r8 : c68a24d0                                     
r7 : c0631008  r6 : c68a24e0  r5 : 00000000  r4 : c68a24e0                      
r3 : 00000000  r2 : c065a854  r1 : 00000000  r0 : 00000000                      
Flags: nZCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment none              
Control: 0005317f  Table: 80004000  DAC: 00000053                               
Process swapper (pid: 1, stack limit = 0x(ptrval))                              
Stack: (0xc6837de0 to 0xc6838000)                                               
7de0: c689be40 c0167044 00000000 c68f4720 c68f4660 c68f4660 c68f4720 c689be40   
7e00: c0575ca4 64d9cb0d 00000000 c68a24e0 00000000 c065a854 c065a854 00000000   
7e20: 00000000 c05f44a8 c062cfd8 c02e0a64 c68a24e0 c0688d00 00000000 c02dec54   
7e40: c68a24e0 c065a854 c065a854 c0631008 ffffe000 c061e828 c05f44a8 c02def44   
7e60: 00000000 ffffff08 ffff0a00 c68a24e0 00000000 c065a854 c0631008 ffffe000   
7e80: c061e828 c05f44a8 c062cfd8 c02df1f8 00000000 c065a854 c68a24e0 c02df258   
7ea0: c68337b0 c065a854 c02df200 c02dced4 c061e828 c681db90 c68337b0 64d9cb0d   
7ec0: c062cfd8 c065a854 c682af00 c065ea48 00000000 c02de070 c054f984 c0494cc0   
7ee0: c065a854 c065a854 c0631008 c060b098 00000000 c02dfb04 c066d5c0 c0631008   
7f00: c060b098 c000a624 0000007f c7fffea8 c05d00c4 00000000 c7fffee9 c00372e0   
7f20: c05cf6d8 c0549714 00000000 00000004 00000004 00000000 00000000 c7fffee2   
7f40: c7fffee5 64d9cb0d 00000000 0000007f c061e844 64d9cb0d 0000007f c061e848   
7f60: 00000005 c066d5c0 c066d5c0 c05f4e6c 00000004 00000004 00000000 c05f44a8   
7f80: 00000000 00000000 c04a71bc 00000000 00000000 00000000 00000000 00000000   
7fa0: 00000000 c04a71c4 00000000 c00090e0 00000000 00000000 00000000 00000000   
7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000   
7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000   
[<c02a9628>] (reg_fixed_voltage_probe) from [<c02e0a64>] (platform_drv_probe+0x)
[<c02e0a64>] (platform_drv_probe) from [<c02dec54>] (really_probe+0x1e0/0x34c)  
[<c02dec54>] (really_probe) from [<c02def44>] (driver_probe_device+0x5c/0x168)  
[<c02def44>] (driver_probe_device) from [<c02df1f8>] (device_driver_attach+0x58)
[<c02df1f8>] (device_driver_attach) from [<c02df258>] (__driver_attach+0x58/0xc)
[<c02df258>] (__driver_attach) from [<c02dced4>] (bus_for_each_dev+0x70/0xb4)   
[<c02dced4>] (bus_for_each_dev) from [<c02de070>] (bus_add_driver+0x194/0x1cc)  
[<c02de070>] (bus_add_driver) from [<c02dfb04>] (driver_register+0x74/0x108)    
[<c02dfb04>] (driver_register) from [<c000a624>] (do_one_initcall+0x6c/0x1d8)   
[<c000a624>] (do_one_initcall) from [<c05f4e6c>] (kernel_init_freeable+0x10c/0x)
[<c05f4e6c>] (kernel_init_freeable) from [<c04a71c4>] (kernel_init+0x8/0xec)    
[<c04a71c4>] (kernel_init) from [<c00090e0>] (ret_from_fork+0x14/0x34)          
Exception stack(0xc6837fb0 to 0xc6837ff8)                                       
7fa0:                                     00000000 00000000 00000000 00000000   
7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000   
7fe0: 00000000 00000000 00000000 00000000 00000013 00000000                     
Code: e5920018 e58d3024 eb02b71e e3a03000 (e59090c0)                            
---[ end trace 90e87368a248f7f6 ]---                                            
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b      

Thanks,
Sekhar
Peter Ujfalusi Oct. 21, 2019, 10:40 a.m. UTC | #3
On 17/10/2019 16.49, Sekhar Nori wrote:
> On 17/10/19 4:39 PM, Sekhar Nori wrote:
>> On 30/08/19 3:52 PM, Peter Ujfalusi wrote:
>>> The codec driver needs correct regulators in order to probe.
>>> Both VCC_3V3 and VCC_1V8 is always on fixed regulators on the board.
>>>
>>> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
>>
>> Applied for v5.4
> 
> This is breaking boot on DM365 EVM.
> 
> Booting Linux on physical CPU 0x0                                               
> Linux version 5.4.0-rc1-00001-g927d10a85791-dirty (a0875516@psplinux063) (gcc v9
> CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f                   
> CPU: VIVT data cache, VIVT instruction cache                                    
> Machine: DaVinci DM365 EVM                                                      
> Memory policy: Data cache writethrough                                          
> cma: Reserved 16 MiB at 0x86c00000                                              
> DaVinci dm365_rev1.1 variant 0x0                                                
> On node 0 totalpages: 32768                                                     
>   DMA zone: 256 pages used for memmap                                           
>   DMA zone: 0 pages reserved                                                    
>   DMA zone: 32768 pages, LIFO batch:7                                           
> pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768                                   
> pcpu-alloc: [0] 0                                                               
> Built 1 zonelists, mobility grouping on.  Total pages: 32512                    
> Kernel command line: console=ttyS0,115200n8 root=/dev/nfs rw nfsroot=172.24.210p
> Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)          
> Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)            
> mem auto-init: stack:off, heap alloc:off, heap free:off                         
> Memory: 106776K/131072K available (4760K kernel code, 253K rwdata, 1160K rodata)
> SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1                      
> rcu: Preemptible hierarchical RCU implementation.                               
>         Tasks RCU enabled.                                                      
> rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.          
> NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16                                 
> random: get_random_bytes called from start_kernel+0x25c/0x440 with crng_init=0  
> clocksource: timer0_1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79s
> sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns       
> Console: colour dummy device 80x30                                              
> Calibrating delay loop... 146.84 BogoMIPS (lpj=734208)                          
> pid_max: default: 32768 minimum: 301                                            
> Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)             
> Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)        
> CPU: Testing write buffer coherency: ok                                         
> Setting up static identity map for 0x80008400 - 0x80008458                      
> rcu: Hierarchical SRCU implementation.                                          
> devtmpfs: initialized                                                           
> clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 191s
> futex hash table entries: 256 (order: -1, 3072 bytes, linear)                   
> pinctrl core: initialized pinctrl subsystem                                     
> NET: Registered protocol family 16                                              
> DMA: preallocated 256 KiB pool for atomic coherent allocations                  
> mux: initialized INT_EDMA_CC                                                    
> mux: Setting register INT_EDMA_CC                                               
> mux:    INTMUX (0x00000018) = 0x00000000 -> 0x00000004                          
> cpuidle: using governor menu                                                    
> mux: initialized INT_EMAC_RXTHRESH                                              
> mux: Setting register INT_EMAC_RXTHRESH                                         
> mux:    INTMUX (0x00000018) = 0x00000004 -> 0x00004004                          
> mux: initialized INT_EMAC_RXPULSE                                               
> mux: Setting register INT_EMAC_RXPULSE                                          
> mux:    INTMUX (0x00000018) = 0x00004004 -> 0x0000c004                          
> mux: initialized INT_EMAC_TXPULSE                                               
> mux: Setting register INT_EMAC_TXPULSE                                          
> mux:    INTMUX (0x00000018) = 0x0000c004 -> 0x0001c004                          
> mux: initialized INT_EMAC_MISCPULSE                                             
> mux: Setting register INT_EMAC_MISCPULSE                                        
> mux:    INTMUX (0x00000018) = 0x0001c004 -> 0x0003c004                          
> EVM: tvp5146 SD video input                                                     
> mux: initialized INT_PRTCSS                                                     
> mux: Setting register INT_PRTCSS                                                
> mux:    INTMUX (0x00000018) = 0x0003c004 -> 0x0003c404                          
> mux: initialized SPI0_SCLK                                                      
> mux: Setting register SPI0_SCLK                                                 
> mux:    PINMUX3 (0x0000000c) = 0x015affff -> 0x115affff                         
> mux: initialized SPI0_SDI                                                       
> mux: Setting register SPI0_SDI                                                  
> mux:    PINMUX3 (0x0000000c) = 0x115affff -> 0x155affff                         
> mux: initialized SPI0_SDO                                                       
> mux: Setting register SPI0_SDO                                                  
> mux:    PINMUX3 (0x0000000c) = 0x155affff -> 0x175affff                         
> mux: initialized SPI0_SDENA0                                                    
> mux: Setting register SPI0_SDENA0                                               
> mux:    PINMUX3 (0x0000000c) = 0x175affff -> 0x375affff                         
> edma edma.0: Legacy memcpy is enabled, things might not work                    
> edma edma.0: TI EDMA DMA engine driver                                          
> 8<--- cut here ---                                                              
> Unable to handle kernel NULL pointer dereference at virtual address 000000c0    
> pgd = (ptrval)                                                                  
> [000000c0] *pgd=00000000                                                        
> Internal error: Oops: 5 [#1] PREEMPT ARM                                        
> Modules linked in:                                                              
> CPU: 0 PID: 1 Comm: swapper Not tainted 5.4.0-rc1-00001-g927d10a85791-dirty #146
> Hardware name: DaVinci DM365 EVM                                                
> PC is at reg_fixed_voltage_probe+0x30/0x2ec                                     
> LR is at reg_fixed_voltage_probe+0x2c/0x2ec                                     
> pc : [<c02a9628>]    lr : [<c02a9624>]    psr: 60000053                         
> sp : c6837de0  ip : 00000000  fp : c062cfd8                                     
> r10: c05f44a8  r9 : 00000000  r8 : c68a24d0                                     
> r7 : c0631008  r6 : c68a24e0  r5 : 00000000  r4 : c68a24e0                      
> r3 : 00000000  r2 : c065a854  r1 : 00000000  r0 : 00000000                      
> Flags: nZCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment none              
> Control: 0005317f  Table: 80004000  DAC: 00000053                               
> Process swapper (pid: 1, stack limit = 0x(ptrval))                              
> Stack: (0xc6837de0 to 0xc6838000)                                               
> 7de0: c689be40 c0167044 00000000 c68f4720 c68f4660 c68f4660 c68f4720 c689be40   
> 7e00: c0575ca4 64d9cb0d 00000000 c68a24e0 00000000 c065a854 c065a854 00000000   
> 7e20: 00000000 c05f44a8 c062cfd8 c02e0a64 c68a24e0 c0688d00 00000000 c02dec54   
> 7e40: c68a24e0 c065a854 c065a854 c0631008 ffffe000 c061e828 c05f44a8 c02def44   
> 7e60: 00000000 ffffff08 ffff0a00 c68a24e0 00000000 c065a854 c0631008 ffffe000   
> 7e80: c061e828 c05f44a8 c062cfd8 c02df1f8 00000000 c065a854 c68a24e0 c02df258   
> 7ea0: c68337b0 c065a854 c02df200 c02dced4 c061e828 c681db90 c68337b0 64d9cb0d   
> 7ec0: c062cfd8 c065a854 c682af00 c065ea48 00000000 c02de070 c054f984 c0494cc0   
> 7ee0: c065a854 c065a854 c0631008 c060b098 00000000 c02dfb04 c066d5c0 c0631008   
> 7f00: c060b098 c000a624 0000007f c7fffea8 c05d00c4 00000000 c7fffee9 c00372e0   
> 7f20: c05cf6d8 c0549714 00000000 00000004 00000004 00000000 00000000 c7fffee2   
> 7f40: c7fffee5 64d9cb0d 00000000 0000007f c061e844 64d9cb0d 0000007f c061e848   
> 7f60: 00000005 c066d5c0 c066d5c0 c05f4e6c 00000004 00000004 00000000 c05f44a8   
> 7f80: 00000000 00000000 c04a71bc 00000000 00000000 00000000 00000000 00000000   
> 7fa0: 00000000 c04a71c4 00000000 c00090e0 00000000 00000000 00000000 00000000   
> 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000   
> 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000   
> [<c02a9628>] (reg_fixed_voltage_probe) from [<c02e0a64>] (platform_drv_probe+0x)
> [<c02e0a64>] (platform_drv_probe) from [<c02dec54>] (really_probe+0x1e0/0x34c)  
> [<c02dec54>] (really_probe) from [<c02def44>] (driver_probe_device+0x5c/0x168)  
> [<c02def44>] (driver_probe_device) from [<c02df1f8>] (device_driver_attach+0x58)
> [<c02df1f8>] (device_driver_attach) from [<c02df258>] (__driver_attach+0x58/0xc)
> [<c02df258>] (__driver_attach) from [<c02dced4>] (bus_for_each_dev+0x70/0xb4)   
> [<c02dced4>] (bus_for_each_dev) from [<c02de070>] (bus_add_driver+0x194/0x1cc)  
> [<c02de070>] (bus_add_driver) from [<c02dfb04>] (driver_register+0x74/0x108)    
> [<c02dfb04>] (driver_register) from [<c000a624>] (do_one_initcall+0x6c/0x1d8)   
> [<c000a624>] (do_one_initcall) from [<c05f4e6c>] (kernel_init_freeable+0x10c/0x)
> [<c05f4e6c>] (kernel_init_freeable) from [<c04a71c4>] (kernel_init+0x8/0xec)    
> [<c04a71c4>] (kernel_init) from [<c00090e0>] (ret_from_fork+0x14/0x34)          
> Exception stack(0xc6837fb0 to 0xc6837ff8)                                       
> 7fa0:                                     00000000 00000000 00000000 00000000   
> 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000   
> 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000                     
> Code: e5920018 e58d3024 eb02b71e e3a03000 (e59090c0)                            
> ---[ end trace 90e87368a248f7f6 ]---                                            
> Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b      

Interesting.
Something has changed in regulators core which causes crash when not
booted with DT?

It did worked when I have sent the patches. I'll take a look what might
be the issue.

Same for the dma644x

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
Peter Ujfalusi Oct. 22, 2019, 7:42 a.m. UTC | #4
On 21/10/2019 13.40, Peter Ujfalusi wrote:
> 
> 
> On 17/10/2019 16.49, Sekhar Nori wrote:
>> On 17/10/19 4:39 PM, Sekhar Nori wrote:
>>> On 30/08/19 3:52 PM, Peter Ujfalusi wrote:
>>>> The codec driver needs correct regulators in order to probe.
>>>> Both VCC_3V3 and VCC_1V8 is always on fixed regulators on the board.
>>>>
>>>> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
>>>
>>> Applied for v5.4
>>
>> This is breaking boot on DM365 EVM.
>>
>> Booting Linux on physical CPU 0x0                                               
>> Linux version 5.4.0-rc1-00001-g927d10a85791-dirty (a0875516@psplinux063) (gcc v9
>> CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f                   
>> CPU: VIVT data cache, VIVT instruction cache                                    
>> Machine: DaVinci DM365 EVM                                                      
>> Memory policy: Data cache writethrough                                          
>> cma: Reserved 16 MiB at 0x86c00000                                              
>> DaVinci dm365_rev1.1 variant 0x0                                                
>> On node 0 totalpages: 32768                                                     
>>   DMA zone: 256 pages used for memmap                                           
>>   DMA zone: 0 pages reserved                                                    
>>   DMA zone: 32768 pages, LIFO batch:7                                           
>> pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768                                   
>> pcpu-alloc: [0] 0                                                               
>> Built 1 zonelists, mobility grouping on.  Total pages: 32512                    
>> Kernel command line: console=ttyS0,115200n8 root=/dev/nfs rw nfsroot=172.24.210p
>> Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)          
>> Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)            
>> mem auto-init: stack:off, heap alloc:off, heap free:off                         
>> Memory: 106776K/131072K available (4760K kernel code, 253K rwdata, 1160K rodata)
>> SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1                      
>> rcu: Preemptible hierarchical RCU implementation.                               
>>         Tasks RCU enabled.                                                      
>> rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.          
>> NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16                                 
>> random: get_random_bytes called from start_kernel+0x25c/0x440 with crng_init=0  
>> clocksource: timer0_1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79s
>> sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns       
>> Console: colour dummy device 80x30                                              
>> Calibrating delay loop... 146.84 BogoMIPS (lpj=734208)                          
>> pid_max: default: 32768 minimum: 301                                            
>> Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)             
>> Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)        
>> CPU: Testing write buffer coherency: ok                                         
>> Setting up static identity map for 0x80008400 - 0x80008458                      
>> rcu: Hierarchical SRCU implementation.                                          
>> devtmpfs: initialized                                                           
>> clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 191s
>> futex hash table entries: 256 (order: -1, 3072 bytes, linear)                   
>> pinctrl core: initialized pinctrl subsystem                                     
>> NET: Registered protocol family 16                                              
>> DMA: preallocated 256 KiB pool for atomic coherent allocations                  
>> mux: initialized INT_EDMA_CC                                                    
>> mux: Setting register INT_EDMA_CC                                               
>> mux:    INTMUX (0x00000018) = 0x00000000 -> 0x00000004                          
>> cpuidle: using governor menu                                                    
>> mux: initialized INT_EMAC_RXTHRESH                                              
>> mux: Setting register INT_EMAC_RXTHRESH                                         
>> mux:    INTMUX (0x00000018) = 0x00000004 -> 0x00004004                          
>> mux: initialized INT_EMAC_RXPULSE                                               
>> mux: Setting register INT_EMAC_RXPULSE                                          
>> mux:    INTMUX (0x00000018) = 0x00004004 -> 0x0000c004                          
>> mux: initialized INT_EMAC_TXPULSE                                               
>> mux: Setting register INT_EMAC_TXPULSE                                          
>> mux:    INTMUX (0x00000018) = 0x0000c004 -> 0x0001c004                          
>> mux: initialized INT_EMAC_MISCPULSE                                             
>> mux: Setting register INT_EMAC_MISCPULSE                                        
>> mux:    INTMUX (0x00000018) = 0x0001c004 -> 0x0003c004                          
>> EVM: tvp5146 SD video input                                                     
>> mux: initialized INT_PRTCSS                                                     
>> mux: Setting register INT_PRTCSS                                                
>> mux:    INTMUX (0x00000018) = 0x0003c004 -> 0x0003c404                          
>> mux: initialized SPI0_SCLK                                                      
>> mux: Setting register SPI0_SCLK                                                 
>> mux:    PINMUX3 (0x0000000c) = 0x015affff -> 0x115affff                         
>> mux: initialized SPI0_SDI                                                       
>> mux: Setting register SPI0_SDI                                                  
>> mux:    PINMUX3 (0x0000000c) = 0x115affff -> 0x155affff                         
>> mux: initialized SPI0_SDO                                                       
>> mux: Setting register SPI0_SDO                                                  
>> mux:    PINMUX3 (0x0000000c) = 0x155affff -> 0x175affff                         
>> mux: initialized SPI0_SDENA0                                                    
>> mux: Setting register SPI0_SDENA0                                               
>> mux:    PINMUX3 (0x0000000c) = 0x175affff -> 0x375affff                         
>> edma edma.0: Legacy memcpy is enabled, things might not work                    
>> edma edma.0: TI EDMA DMA engine driver                                          
>> 8<--- cut here ---                                                              
>> Unable to handle kernel NULL pointer dereference at virtual address 000000c0    
>> pgd = (ptrval)                                                                  
>> [000000c0] *pgd=00000000                                                        
>> Internal error: Oops: 5 [#1] PREEMPT ARM                                        
>> Modules linked in:                                                              
>> CPU: 0 PID: 1 Comm: swapper Not tainted 5.4.0-rc1-00001-g927d10a85791-dirty #146
>> Hardware name: DaVinci DM365 EVM                                                
>> PC is at reg_fixed_voltage_probe+0x30/0x2ec                                     
>> LR is at reg_fixed_voltage_probe+0x2c/0x2ec                                     
>> pc : [<c02a9628>]    lr : [<c02a9624>]    psr: 60000053                         
>> sp : c6837de0  ip : 00000000  fp : c062cfd8                                     
>> r10: c05f44a8  r9 : 00000000  r8 : c68a24d0                                     
>> r7 : c0631008  r6 : c68a24e0  r5 : 00000000  r4 : c68a24e0                      
>> r3 : 00000000  r2 : c065a854  r1 : 00000000  r0 : 00000000                      
>> Flags: nZCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment none              
>> Control: 0005317f  Table: 80004000  DAC: 00000053                               
>> Process swapper (pid: 1, stack limit = 0x(ptrval))                              
>> Stack: (0xc6837de0 to 0xc6838000)                                               
>> 7de0: c689be40 c0167044 00000000 c68f4720 c68f4660 c68f4660 c68f4720 c689be40   
>> 7e00: c0575ca4 64d9cb0d 00000000 c68a24e0 00000000 c065a854 c065a854 00000000   
>> 7e20: 00000000 c05f44a8 c062cfd8 c02e0a64 c68a24e0 c0688d00 00000000 c02dec54   
>> 7e40: c68a24e0 c065a854 c065a854 c0631008 ffffe000 c061e828 c05f44a8 c02def44   
>> 7e60: 00000000 ffffff08 ffff0a00 c68a24e0 00000000 c065a854 c0631008 ffffe000   
>> 7e80: c061e828 c05f44a8 c062cfd8 c02df1f8 00000000 c065a854 c68a24e0 c02df258   
>> 7ea0: c68337b0 c065a854 c02df200 c02dced4 c061e828 c681db90 c68337b0 64d9cb0d   
>> 7ec0: c062cfd8 c065a854 c682af00 c065ea48 00000000 c02de070 c054f984 c0494cc0   
>> 7ee0: c065a854 c065a854 c0631008 c060b098 00000000 c02dfb04 c066d5c0 c0631008   
>> 7f00: c060b098 c000a624 0000007f c7fffea8 c05d00c4 00000000 c7fffee9 c00372e0   
>> 7f20: c05cf6d8 c0549714 00000000 00000004 00000004 00000000 00000000 c7fffee2   
>> 7f40: c7fffee5 64d9cb0d 00000000 0000007f c061e844 64d9cb0d 0000007f c061e848   
>> 7f60: 00000005 c066d5c0 c066d5c0 c05f4e6c 00000004 00000004 00000000 c05f44a8   
>> 7f80: 00000000 00000000 c04a71bc 00000000 00000000 00000000 00000000 00000000   
>> 7fa0: 00000000 c04a71c4 00000000 c00090e0 00000000 00000000 00000000 00000000   
>> 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000   
>> 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000   
>> [<c02a9628>] (reg_fixed_voltage_probe) from [<c02e0a64>] (platform_drv_probe+0x)
>> [<c02e0a64>] (platform_drv_probe) from [<c02dec54>] (really_probe+0x1e0/0x34c)  
>> [<c02dec54>] (really_probe) from [<c02def44>] (driver_probe_device+0x5c/0x168)  
>> [<c02def44>] (driver_probe_device) from [<c02df1f8>] (device_driver_attach+0x58)
>> [<c02df1f8>] (device_driver_attach) from [<c02df258>] (__driver_attach+0x58/0xc)
>> [<c02df258>] (__driver_attach) from [<c02dced4>] (bus_for_each_dev+0x70/0xb4)   
>> [<c02dced4>] (bus_for_each_dev) from [<c02de070>] (bus_add_driver+0x194/0x1cc)  
>> [<c02de070>] (bus_add_driver) from [<c02dfb04>] (driver_register+0x74/0x108)    
>> [<c02dfb04>] (driver_register) from [<c000a624>] (do_one_initcall+0x6c/0x1d8)   
>> [<c000a624>] (do_one_initcall) from [<c05f4e6c>] (kernel_init_freeable+0x10c/0x)
>> [<c05f4e6c>] (kernel_init_freeable) from [<c04a71c4>] (kernel_init+0x8/0xec)    
>> [<c04a71c4>] (kernel_init) from [<c00090e0>] (ret_from_fork+0x14/0x34)          
>> Exception stack(0xc6837fb0 to 0xc6837ff8)                                       
>> 7fa0:                                     00000000 00000000 00000000 00000000   
>> 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000   
>> 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000                     
>> Code: e5920018 e58d3024 eb02b71e e3a03000 (e59090c0)                            
>> ---[ end trace 90e87368a248f7f6 ]---                                            
>> Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b      
> 
> Interesting.
> Something has changed in regulators core which causes crash when not
> booted with DT?
> 
> It did worked when I have sent the patches. I'll take a look what might
> be the issue.

can this be the fix: https://lkml.org/lkml/2019/9/21/199 ?

> 
> Same for the dma644x
> 
> - Péter
> 
> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
Sekhar Nori Jan. 13, 2020, 12:13 p.m. UTC | #5
On 22/10/19 1:12 PM, Peter Ujfalusi wrote:
> 
> 
> On 21/10/2019 13.40, Peter Ujfalusi wrote:
>>
>>
>> On 17/10/2019 16.49, Sekhar Nori wrote:
>>> On 17/10/19 4:39 PM, Sekhar Nori wrote:
>>>> On 30/08/19 3:52 PM, Peter Ujfalusi wrote:
>>>>> The codec driver needs correct regulators in order to probe.
>>>>> Both VCC_3V3 and VCC_1V8 is always on fixed regulators on the board.
>>>>>
>>>>> Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
>>>>
>>>> Applied for v5.4
>>>
>>> This is breaking boot on DM365 EVM.
>>>
>>> Booting Linux on physical CPU 0x0                                               
>>> Linux version 5.4.0-rc1-00001-g927d10a85791-dirty (a0875516@psplinux063) (gcc v9
>>> CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f                   
>>> CPU: VIVT data cache, VIVT instruction cache                                    
>>> Machine: DaVinci DM365 EVM                                                      
>>> Memory policy: Data cache writethrough                                          
>>> cma: Reserved 16 MiB at 0x86c00000                                              
>>> DaVinci dm365_rev1.1 variant 0x0                                                
>>> On node 0 totalpages: 32768                                                     
>>>   DMA zone: 256 pages used for memmap                                           
>>>   DMA zone: 0 pages reserved                                                    
>>>   DMA zone: 32768 pages, LIFO batch:7                                           
>>> pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768                                   
>>> pcpu-alloc: [0] 0                                                               
>>> Built 1 zonelists, mobility grouping on.  Total pages: 32512                    
>>> Kernel command line: console=ttyS0,115200n8 root=/dev/nfs rw nfsroot=172.24.210p
>>> Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear)          
>>> Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)            
>>> mem auto-init: stack:off, heap alloc:off, heap free:off                         
>>> Memory: 106776K/131072K available (4760K kernel code, 253K rwdata, 1160K rodata)
>>> SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1                      
>>> rcu: Preemptible hierarchical RCU implementation.                               
>>>         Tasks RCU enabled.                                                      
>>> rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.          
>>> NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16                                 
>>> random: get_random_bytes called from start_kernel+0x25c/0x440 with crng_init=0  
>>> clocksource: timer0_1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79s
>>> sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns       
>>> Console: colour dummy device 80x30                                              
>>> Calibrating delay loop... 146.84 BogoMIPS (lpj=734208)                          
>>> pid_max: default: 32768 minimum: 301                                            
>>> Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)             
>>> Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)        
>>> CPU: Testing write buffer coherency: ok                                         
>>> Setting up static identity map for 0x80008400 - 0x80008458                      
>>> rcu: Hierarchical SRCU implementation.                                          
>>> devtmpfs: initialized                                                           
>>> clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 191s
>>> futex hash table entries: 256 (order: -1, 3072 bytes, linear)                   
>>> pinctrl core: initialized pinctrl subsystem                                     
>>> NET: Registered protocol family 16                                              
>>> DMA: preallocated 256 KiB pool for atomic coherent allocations                  
>>> mux: initialized INT_EDMA_CC                                                    
>>> mux: Setting register INT_EDMA_CC                                               
>>> mux:    INTMUX (0x00000018) = 0x00000000 -> 0x00000004                          
>>> cpuidle: using governor menu                                                    
>>> mux: initialized INT_EMAC_RXTHRESH                                              
>>> mux: Setting register INT_EMAC_RXTHRESH                                         
>>> mux:    INTMUX (0x00000018) = 0x00000004 -> 0x00004004                          
>>> mux: initialized INT_EMAC_RXPULSE                                               
>>> mux: Setting register INT_EMAC_RXPULSE                                          
>>> mux:    INTMUX (0x00000018) = 0x00004004 -> 0x0000c004                          
>>> mux: initialized INT_EMAC_TXPULSE                                               
>>> mux: Setting register INT_EMAC_TXPULSE                                          
>>> mux:    INTMUX (0x00000018) = 0x0000c004 -> 0x0001c004                          
>>> mux: initialized INT_EMAC_MISCPULSE                                             
>>> mux: Setting register INT_EMAC_MISCPULSE                                        
>>> mux:    INTMUX (0x00000018) = 0x0001c004 -> 0x0003c004                          
>>> EVM: tvp5146 SD video input                                                     
>>> mux: initialized INT_PRTCSS                                                     
>>> mux: Setting register INT_PRTCSS                                                
>>> mux:    INTMUX (0x00000018) = 0x0003c004 -> 0x0003c404                          
>>> mux: initialized SPI0_SCLK                                                      
>>> mux: Setting register SPI0_SCLK                                                 
>>> mux:    PINMUX3 (0x0000000c) = 0x015affff -> 0x115affff                         
>>> mux: initialized SPI0_SDI                                                       
>>> mux: Setting register SPI0_SDI                                                  
>>> mux:    PINMUX3 (0x0000000c) = 0x115affff -> 0x155affff                         
>>> mux: initialized SPI0_SDO                                                       
>>> mux: Setting register SPI0_SDO                                                  
>>> mux:    PINMUX3 (0x0000000c) = 0x155affff -> 0x175affff                         
>>> mux: initialized SPI0_SDENA0                                                    
>>> mux: Setting register SPI0_SDENA0                                               
>>> mux:    PINMUX3 (0x0000000c) = 0x175affff -> 0x375affff                         
>>> edma edma.0: Legacy memcpy is enabled, things might not work                    
>>> edma edma.0: TI EDMA DMA engine driver                                          
>>> 8<--- cut here ---                                                              
>>> Unable to handle kernel NULL pointer dereference at virtual address 000000c0    
>>> pgd = (ptrval)                                                                  
>>> [000000c0] *pgd=00000000                                                        
>>> Internal error: Oops: 5 [#1] PREEMPT ARM                                        
>>> Modules linked in:                                                              
>>> CPU: 0 PID: 1 Comm: swapper Not tainted 5.4.0-rc1-00001-g927d10a85791-dirty #146
>>> Hardware name: DaVinci DM365 EVM                                                
>>> PC is at reg_fixed_voltage_probe+0x30/0x2ec                                     
>>> LR is at reg_fixed_voltage_probe+0x2c/0x2ec                                     
>>> pc : [<c02a9628>]    lr : [<c02a9624>]    psr: 60000053                         
>>> sp : c6837de0  ip : 00000000  fp : c062cfd8                                     
>>> r10: c05f44a8  r9 : 00000000  r8 : c68a24d0                                     
>>> r7 : c0631008  r6 : c68a24e0  r5 : 00000000  r4 : c68a24e0                      
>>> r3 : 00000000  r2 : c065a854  r1 : 00000000  r0 : 00000000                      
>>> Flags: nZCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment none              
>>> Control: 0005317f  Table: 80004000  DAC: 00000053                               
>>> Process swapper (pid: 1, stack limit = 0x(ptrval))                              
>>> Stack: (0xc6837de0 to 0xc6838000)                                               
>>> 7de0: c689be40 c0167044 00000000 c68f4720 c68f4660 c68f4660 c68f4720 c689be40   
>>> 7e00: c0575ca4 64d9cb0d 00000000 c68a24e0 00000000 c065a854 c065a854 00000000   
>>> 7e20: 00000000 c05f44a8 c062cfd8 c02e0a64 c68a24e0 c0688d00 00000000 c02dec54   
>>> 7e40: c68a24e0 c065a854 c065a854 c0631008 ffffe000 c061e828 c05f44a8 c02def44   
>>> 7e60: 00000000 ffffff08 ffff0a00 c68a24e0 00000000 c065a854 c0631008 ffffe000   
>>> 7e80: c061e828 c05f44a8 c062cfd8 c02df1f8 00000000 c065a854 c68a24e0 c02df258   
>>> 7ea0: c68337b0 c065a854 c02df200 c02dced4 c061e828 c681db90 c68337b0 64d9cb0d   
>>> 7ec0: c062cfd8 c065a854 c682af00 c065ea48 00000000 c02de070 c054f984 c0494cc0   
>>> 7ee0: c065a854 c065a854 c0631008 c060b098 00000000 c02dfb04 c066d5c0 c0631008   
>>> 7f00: c060b098 c000a624 0000007f c7fffea8 c05d00c4 00000000 c7fffee9 c00372e0   
>>> 7f20: c05cf6d8 c0549714 00000000 00000004 00000004 00000000 00000000 c7fffee2   
>>> 7f40: c7fffee5 64d9cb0d 00000000 0000007f c061e844 64d9cb0d 0000007f c061e848   
>>> 7f60: 00000005 c066d5c0 c066d5c0 c05f4e6c 00000004 00000004 00000000 c05f44a8   
>>> 7f80: 00000000 00000000 c04a71bc 00000000 00000000 00000000 00000000 00000000   
>>> 7fa0: 00000000 c04a71c4 00000000 c00090e0 00000000 00000000 00000000 00000000   
>>> 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000   
>>> 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000   
>>> [<c02a9628>] (reg_fixed_voltage_probe) from [<c02e0a64>] (platform_drv_probe+0x)
>>> [<c02e0a64>] (platform_drv_probe) from [<c02dec54>] (really_probe+0x1e0/0x34c)  
>>> [<c02dec54>] (really_probe) from [<c02def44>] (driver_probe_device+0x5c/0x168)  
>>> [<c02def44>] (driver_probe_device) from [<c02df1f8>] (device_driver_attach+0x58)
>>> [<c02df1f8>] (device_driver_attach) from [<c02df258>] (__driver_attach+0x58/0xc)
>>> [<c02df258>] (__driver_attach) from [<c02dced4>] (bus_for_each_dev+0x70/0xb4)   
>>> [<c02dced4>] (bus_for_each_dev) from [<c02de070>] (bus_add_driver+0x194/0x1cc)  
>>> [<c02de070>] (bus_add_driver) from [<c02dfb04>] (driver_register+0x74/0x108)    
>>> [<c02dfb04>] (driver_register) from [<c000a624>] (do_one_initcall+0x6c/0x1d8)   
>>> [<c000a624>] (do_one_initcall) from [<c05f4e6c>] (kernel_init_freeable+0x10c/0x)
>>> [<c05f4e6c>] (kernel_init_freeable) from [<c04a71c4>] (kernel_init+0x8/0xec)    
>>> [<c04a71c4>] (kernel_init) from [<c00090e0>] (ret_from_fork+0x14/0x34)          
>>> Exception stack(0xc6837fb0 to 0xc6837ff8)                                       
>>> 7fa0:                                     00000000 00000000 00000000 00000000   
>>> 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000   
>>> 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000                     
>>> Code: e5920018 e58d3024 eb02b71e e3a03000 (e59090c0)                            
>>> ---[ end trace 90e87368a248f7f6 ]---                                            
>>> Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b      
>>
>> Interesting.
>> Something has changed in regulators core which causes crash when not
>> booted with DT?
>>
>> It did worked when I have sent the patches. I'll take a look what might
>> be the issue.
> 
> can this be the fix: https://lkml.org/lkml/2019/9/21/199 ?

It seems like, and I confirm it works now! Queuing for v5.6

Thanks,
Sekhar
diff mbox series

Patch

diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c
index 150a36f333df..2328b15ac067 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -30,6 +30,8 @@ 
 #include <linux/spi/eeprom.h>
 #include <linux/v4l2-dv-timings.h>
 #include <linux/platform_data/ti-aemif.h>
+#include <linux/regulator/fixed.h>
+#include <linux/regulator/machine.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -245,6 +247,19 @@  static struct davinci_i2c_platform_data i2c_pdata = {
 	.bus_delay	= 0	/* usec */,
 };
 
+/* Fixed regulator support */
+static struct regulator_consumer_supply fixed_supplies_3_3v[] = {
+	/* Baseboard 3.3V: 5V -> TPS767D301 -> 3.3V */
+	REGULATOR_SUPPLY("AVDD", "1-0018"),
+	REGULATOR_SUPPLY("DRVDD", "1-0018"),
+	REGULATOR_SUPPLY("IOVDD", "1-0018"),
+};
+
+static struct regulator_consumer_supply fixed_supplies_1_8v[] = {
+	/* Baseboard 1.8V: 5V -> TPS767D301 -> 1.8V */
+	REGULATOR_SUPPLY("DVDD", "1-0018"),
+};
+
 static int dm365evm_keyscan_enable(struct device *dev)
 {
 	return davinci_cfg_reg(DM365_KEYSCAN);
@@ -800,6 +815,11 @@  static __init void dm365_evm_init(void)
 	if (ret)
 		pr_warn("%s: GPIO init failed: %d\n", __func__, ret);
 
+	regulator_register_always_on(0, "fixed-dummy", fixed_supplies_1_8v,
+				     ARRAY_SIZE(fixed_supplies_1_8v), 1800000);
+	regulator_register_always_on(1, "fixed-dummy", fixed_supplies_3_3v,
+				     ARRAY_SIZE(fixed_supplies_3_3v), 3300000);
+
 	nvmem_add_cell_table(&davinci_nvmem_cell_table);
 	nvmem_add_cell_lookups(&davinci_nvmem_cell_lookup, 1);