Skip to contentSkip to conversation

SMDKV210 support issue in kernel 3.8 (dma-pl330 and HDMI failed)

DISCUSSION Lonsn 4 participants 15 messages Feb 22, 2013 – Feb 28, 2013

Subsystems (4)
lore
Share & tools
lore

Lonsn

author
#0 lore raw

Hi,
I have tested the kernel 3.8 with a SMDKV210 like board. But I failed with dma-pl330 and HDMI driver. For dma-pl330, kernel print:
dma-pl330 dma-pl330.0: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.0 failed with error -22
dma-pl330 dma-pl330.1: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.1 failed with error -22

For HDMI driver,
I have added the following HDMI related code to arch/arm/mach-s5pv210/mach-smdkv210.c:
/* I2C module and id for HDMIPHY */

static struct i2c_board_info hdmiphy_info = {
        I2C_BOARD_INFO("hdmiphy-s5pv210", 0x38),
};
       i2c_register_board_info(2, smdkv210_i2c_devs2,
                        ARRAY_SIZE(smdkv210_i2c_devs2));

        s5p_i2c_hdmiphy_set_platdata(NULL);
        s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);

        s3c_ide_set_platdata(&smdkv210_ide_pdata);

then kernel print:
s5p-hdmi s5pv210-hdmi: hdmiphy adapter request failed s5p-hdmi s5pv210-hdmi: probe failed
Samsung TV Mixer driver, (c) 2010-2011 Samsung Electronics Co., Ltd.

s5p-mixer s5p-mixer: probe start
s5p-mixer s5p-mixer: resources acquired s5p-mixer s5p-mixer: module s5p-hdmi provides no subdev! s5p-mixer s5p-mixer: module s5p-sdo provides no subdev! s5p-mixer s5p-mixer: failed to register any output s5p-mixer s5p-mixer: probe failed

Can anybody help me on how to config the HDMI output function in linux kernel 3.8? I mainly want to do video hardware decode using s5pv210 MFC and then display with HDMI.

Thanks!

The followings are full kernel boot info:
Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Booting Linux on physical CPU 0x0
Linux version 3.8.0-dirty (lonsn@lonsn-laptop) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) ) #14 PREEMPT Thu Feb 21 21:21:41 CST 2013
CPU: ARMv7 Processor [412fc082] revision 2 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: SMDKV210
Memory policy: ECC disabled, Data cache writeback
CPU S5PV210/S5PC110 (id 0x43110220)
S3C24XX Clocks, Copyright 2004 Simtec Electronics
S5PV210: PLL settings, A=1000000000, M=667000000, E=80000000 V=54000000
S5PV210: ARMCLK=1000000000, HCLKM=200000000, HCLKD=166750000
HCLKP=133400000, PCLKM=100000000, PCLKD=83375000, PCLKP=66700000
sclk_dmc: source is sclk_a2m (0), rate is 200000000
sclk_onenand: source is hclk_dsys (1), rate is 166750000
sclk_fimc: source is ext_xtal (0), rate is 24000000
sclk_fimc: source is ext_xtal (0), rate is 24000000
sclk_fimc: source is ext_xtal (0), rate is 24000000
sclk_cam0: source is ext_xtal (0), rate is 24000000
sclk_cam1: source is ext_xtal (0), rate is 24000000
sclk_fimd: source is ext_xtal (0), rate is 24000000
sclk_mfc: source is sclk_a2m (0), rate is 200000000
sclk_g2d: source is sclk_a2m (0), rate is 200000000
sclk_g3d: source is sclk_a2m (0), rate is 200000000
sclk_csis: source is ext_xtal (0), rate is 24000000
sclk_pwi: source is ext_xtal (0), rate is 24000000
sclk_pwm: source is ext_xtal (0), rate is 24000000
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 128016
Kernel command line: console=ttySAC2,115200 init=/linuxrc root=/dev/nfs ip=192.168.2.20:192.168.2.200:192.168.2.1:255.255.255.0:L210::off nfsroot=192.168.2.200:/home/lonsn/work/s5pv210/nfs,v3 rw rootwait enable_wait_mode=off PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
__ex_table already sorted, skipping sort
Memory: 256MB 48MB 200MB = 504MB total
Memory: 506400k/514592k available, 9696k reserved, 0K highmem
Virtual kernel memory layout:

    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    vmalloc : 0xb0800000 - 0xff000000   (1256 MB)
    lowmem  : 0x80000000 - 0xb0000000   ( 768 MB)
    modules : 0x7f000000 - 0x80000000   (  16 MB)
      .text : 0x80008000 - 0x80466414   (4474 kB)
      .init : 0x80467000 - 0x80487884   ( 131 kB)
      .data : 0x80488000 - 0x804c3760   ( 238 kB)
       .bss : 0x804c3760 - 0x804faa48   ( 221 kB)

SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 NR_IRQS:208
VIC @f6000000: id 0x00041192, vendor 0x41
VIC @f6010000: id 0x00041192, vendor 0x41
VIC @f6020000: id 0x00041192, vendor 0x41
VIC @f6030000: id 0x00041192, vendor 0x41
sched_clock: 32 bits at 33MHz, resolution 29ns, wraps every 128784ms
Console: colour dummy device 80x30
Calibrating delay loop... 663.55 BogoMIPS (lpj=1658880)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
Setting up static identity map for 0x2034e1a8 - 0x2034e200
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
S3C Power Management, Copyright 2004 Simtec Electronics
S5PV210: Initializing architecture
bio: create slab <bio-0> at 0
SCSI subsystem initialized
s3c-i2c s3c2440-i2c.0: slave address 0x10
s3c-i2c s3c2440-i2c.0: bus frequency set to 65 KHz
s3c-i2c s3c2440-i2c.0: i2c-0: S3C I2C adapter
s3c-i2c s3c2440-i2c.1: slave address 0x10
s3c-i2c s3c2440-i2c.1: bus frequency set to 65 KHz
s3c-i2c s3c2440-i2c.1: i2c-1: S3C I2C adapter
s3c-i2c s3c2440-i2c.2: slave address 0x10
s3c-i2c s3c2440-i2c.2: bus frequency set to 65 KHz
s3c-i2c s3c2440-i2c.2: i2c-2: S3C I2C adapter
Linux video capture interface: v2.00
Advanced Linux Sound Architecture Driver Initialized.
Switching to clocksource s5p_clocksource_timer
NET: Registered protocol family 2
TCP established hash table entries: 4096 (order: 3, 32768 bytes) TCP bind hash table entries: 4096 (order: 4, 81920 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP: reno registered
UDP hash table entries: 256 (order: 1, 12288 bytes)
UDP-Lite hash table entries: 256 (order: 1, 12288 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
NFS: Registering the id_resolver key type
Key type id_resolver registered
Key type id_legacy registered
ROMFS MTD (C) 2007 Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
s3c-fb s5pv210-fb: window 0: fb
dma-pl330 dma-pl330.0: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.0 failed with error -22
dma-pl330 dma-pl330.1: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.1 failed with error -22
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled s5pv210-uart.0: ttySAC0 at MMIO 0xe2900000 (irq = 74) is a S3C6400/10 s5pv210-uart.1: ttySAC1 at MMIO 0xe2900400 (irq = 75) is a S3C6400/10 s5pv210-uart.2: ttySAC2 at MMIO 0xe2900800 (irq = 76) is a S3C6400/10 console [ttySAC2] enabled
s5pv210-uart.3: ttySAC3 at MMIO 0xe2900c00 (irq = 77) is a S3C6400/10
brd: module loaded
loop: module loaded
dm9000 Ethernet Driver, V1.31
eth0: dm9000a at b09da300,b09dc30c IRQ 41 MAC: 00:09:c0:ff:ec:48 (platform data)
mousedev: PS/2 mouse device common for all mice
i2c /dev entries driver
m2m-testdev m2m-testdev.0: mem2mem-testdevDevice registered as /dev/video0 s5p-jpeg s5p-jpeg.0: encoder device registered as /dev/video1 s5p-jpeg s5p-jpeg.0: decoder device registered as /dev/video2 s5p-jpeg s5p-jpeg.0: Samsung S5P JPEG codec
s5p-mfc s5p-mfc: decoder registered as /dev/video3
s5p-mfc s5p-mfc: encoder registered as /dev/video4
s5p-hdmi s5pv210-hdmi: hdmiphy adapter request failed
s5p-hdmi s5pv210-hdmi: probe failed
Samsung TV Mixer driver, (c) 2010-2011 Samsung Electronics Co., Ltd.

s5p-mixer s5p-mixer: probe start
s5p-mixer s5p-mixer: resources acquired
s5p-mixer s5p-mixer: module s5p-hdmi provides no subdev!
s5p-mixer s5p-mixer: module s5p-sdo provides no subdev!
s5p-mixer s5p-mixer: failed to register any output
s5p-mixer s5p-mixer: probe failed
samsung-ac97 samsung-ac97: ac97 failed to get ac97_clock
soc-audio soc-audio: ASoC: machine SMDK WM9713 should use snd_soc_register_card() soc-audio soc-audio: ASoC: CPU DAI samsung-ac97 not registered platform soc-audio: Driver soc-audio requests probe deferral
TCP: cubic registered
NET: Registered protocol family 17
Key type dns_resolver registered
VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 2
soc-audio: probe of soc-audio failed with error -22
dm9000 dm9000 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
IP-Config: Complete:

     device=eth0, hwaddr=00:09:c0:ff:ec:48, ipaddr=192.168.2.20, 
mask=255.255.255.0, gw=192.168.2.1
     host=L210, domain=, nis-domain=(none)
     bootserver=192.168.2.200, rootserver=192.168.2.200, rootpath=

ALSA device list:
No soundcards found.
VFS: Mounted root (nfs filesystem) on device 0:9. Freeing init memory: 128K
Failed to execute /linuxrc. Attempting defaults...
init: ureadahead main process (1031) terminated with status 5

Last login: Thu Jan 1 00:00:16 UTC 1970 on tty1
root@linaro-developer:~#

author
#1 lore raw

Now I checked HDMI failed at:
drivers/media/platform/s5p-tv/hdmi_drv.c: 912 line

	adapter = i2c_get_adapter(pdata->hdmiphy_bus);
	if (adapter == NULL) {
		dev_err(dev, "hdmiphy adapter request failed\n");
		ret = -ENXIO;
		goto fail_vdev;
	}

Since pdata->hdmiphy_bus is 3, why i2c_get_adapter failed?

Thanks.

Quoted 204 lines

Hi,
I have tested the kernel 3.8 with a SMDKV210 like board. But I failed with dma-pl330 and HDMI driver.
For dma-pl330, kernel print:
dma-pl330 dma-pl330.0: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.0 failed with error -22 dma-pl330 dma-pl330.1: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.1 failed with error -22

For HDMI driver,
I have added the following HDMI related code to
arch/arm/mach-s5pv210/mach-smdkv210.c:
/* I2C module and id for HDMIPHY */

static struct i2c_board_info hdmiphy_info = {
         I2C_BOARD_INFO("hdmiphy-s5pv210", 0x38),
};
        i2c_register_board_info(2, smdkv210_i2c_devs2,
                         ARRAY_SIZE(smdkv210_i2c_devs2));

         s5p_i2c_hdmiphy_set_platdata(NULL);
         s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);

         s3c_ide_set_platdata(&smdkv210_ide_pdata);

then kernel print:
s5p-hdmi s5pv210-hdmi: hdmiphy adapter request failed s5p-hdmi s5pv210-hdmi: probe failed
Samsung TV Mixer driver, (c) 2010-2011 Samsung Electronics Co., Ltd.

s5p-mixer s5p-mixer: probe start
s5p-mixer s5p-mixer: resources acquired s5p-mixer s5p-mixer: module s5p-hdmi provides no subdev! s5p-mixer s5p-mixer: module s5p-sdo provides no subdev! s5p-mixer s5p-mixer: failed to register any output s5p-mixer s5p-mixer: probe failed

Can anybody help me on how to config the HDMI output function in linux kernel 3.8? I mainly want to do video hardware decode using s5pv210 MFC and then display with HDMI.

Thanks!

The followings are full kernel boot info:
Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Booting Linux on physical CPU 0x0
Linux version 3.8.0-dirty (lonsn@lonsn-laptop) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) ) #14 PREEMPT Thu Feb 21 21:21:41 CST 2013
CPU: ARMv7 Processor [412fc082] revision 2 (ARMv7), cr=10c53c7d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine: SMDKV210
Memory policy: ECC disabled, Data cache writeback
CPU S5PV210/S5PC110 (id 0x43110220)
S3C24XX Clocks, Copyright 2004 Simtec Electronics
S5PV210: PLL settings, A=1000000000, M=667000000, E=80000000 V=54000000
S5PV210: ARMCLK=1000000000, HCLKM=200000000, HCLKD=166750000 HCLKP=133400000, PCLKM=100000000, PCLKD=83375000, PCLKP=66700000
sclk_dmc: source is sclk_a2m (0), rate is 200000000
sclk_onenand: source is hclk_dsys (1), rate is 166750000
sclk_fimc: source is ext_xtal (0), rate is 24000000
sclk_fimc: source is ext_xtal (0), rate is 24000000
sclk_fimc: source is ext_xtal (0), rate is 24000000
sclk_cam0: source is ext_xtal (0), rate is 24000000
sclk_cam1: source is ext_xtal (0), rate is 24000000
sclk_fimd: source is ext_xtal (0), rate is 24000000
sclk_mfc: source is sclk_a2m (0), rate is 200000000
sclk_g2d: source is sclk_a2m (0), rate is 200000000
sclk_g3d: source is sclk_a2m (0), rate is 200000000
sclk_csis: source is ext_xtal (0), rate is 24000000
sclk_pwi: source is ext_xtal (0), rate is 24000000
sclk_pwm: source is ext_xtal (0), rate is 24000000
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 128016 Kernel command line: console=ttySAC2,115200 init=/linuxrc root=/dev/nfs ip=192.168.2.20:192.168.2.200:192.168.2.1:255.255.255.0:L210::off nfsroot=192.168.2.200:/home/lonsn/work/s5pv210/nfs,v3 rw rootwait enable_wait_mode=off
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) __ex_table already sorted, skipping sort
Memory: 256MB 48MB 200MB = 504MB total
Memory: 506400k/514592k available, 9696k reserved, 0K highmem Virtual kernel memory layout:

     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
     vmalloc : 0xb0800000 - 0xff000000   (1256 MB)
     lowmem  : 0x80000000 - 0xb0000000   ( 768 MB)
     modules : 0x7f000000 - 0x80000000   (  16 MB)
       .text : 0x80008000 - 0x80466414   (4474 kB)
       .init : 0x80467000 - 0x80487884   ( 131 kB)
       .data : 0x80488000 - 0x804c3760   ( 238 kB)
        .bss : 0x804c3760 - 0x804faa48   ( 221 kB)

SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 NR_IRQS:208
VIC @f6000000: id 0x00041192, vendor 0x41
VIC @f6010000: id 0x00041192, vendor 0x41
VIC @f6020000: id 0x00041192, vendor 0x41
VIC @f6030000: id 0x00041192, vendor 0x41
sched_clock: 32 bits at 33MHz, resolution 29ns, wraps every 128784ms
Console: colour dummy device 80x30
Calibrating delay loop... 663.55 BogoMIPS (lpj=1658880)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
Setting up static identity map for 0x2034e1a8 - 0x2034e200
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations S3C Power Management, Copyright 2004 Simtec Electronics
S5PV210: Initializing architecture
bio: create slab <bio-0> at 0
SCSI subsystem initialized
s3c-i2c s3c2440-i2c.0: slave address 0x10
s3c-i2c s3c2440-i2c.0: bus frequency set to 65 KHz
s3c-i2c s3c2440-i2c.0: i2c-0: S3C I2C adapter
s3c-i2c s3c2440-i2c.1: slave address 0x10
s3c-i2c s3c2440-i2c.1: bus frequency set to 65 KHz
s3c-i2c s3c2440-i2c.1: i2c-1: S3C I2C adapter
s3c-i2c s3c2440-i2c.2: slave address 0x10
s3c-i2c s3c2440-i2c.2: bus frequency set to 65 KHz
s3c-i2c s3c2440-i2c.2: i2c-2: S3C I2C adapter
Linux video capture interface: v2.00
Advanced Linux Sound Architecture Driver Initialized. Switching to clocksource s5p_clocksource_timer
NET: Registered protocol family 2
TCP established hash table entries: 4096 (order: 3, 32768 bytes) TCP bind hash table entries: 4096 (order: 4, 81920 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
TCP: reno registered
UDP hash table entries: 256 (order: 1, 12288 bytes)
UDP-Lite hash table entries: 256 (order: 1, 12288 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
NFS: Registering the id_resolver key type
Key type id_resolver registered
Key type id_legacy registered
ROMFS MTD (C) 2007 Red Hat, Inc.
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
s3c-fb s5pv210-fb: window 0: fb
dma-pl330 dma-pl330.0: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.0 failed with error -22 dma-pl330 dma-pl330.1: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.1 failed with error -22
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled s5pv210-uart.0: ttySAC0 at MMIO 0xe2900000 (irq = 74) is a S3C6400/10 s5pv210-uart.1: ttySAC1 at MMIO 0xe2900400 (irq = 75) is a S3C6400/10 s5pv210-uart.2: ttySAC2 at MMIO 0xe2900800 (irq = 76) is a S3C6400/10 console [ttySAC2] enabled
s5pv210-uart.3: ttySAC3 at MMIO 0xe2900c00 (irq = 77) is a S3C6400/10
brd: module loaded
loop: module loaded
dm9000 Ethernet Driver, V1.31
eth0: dm9000a at b09da300,b09dc30c IRQ 41 MAC: 00:09:c0:ff:ec:48 (platform data)
mousedev: PS/2 mouse device common for all mice
i2c /dev entries driver
m2m-testdev m2m-testdev.0: mem2mem-testdevDevice registered as /dev/video0 s5p-jpeg s5p-jpeg.0: encoder device registered as /dev/video1 s5p-jpeg s5p-jpeg.0: decoder device registered as /dev/video2 s5p-jpeg s5p-jpeg.0: Samsung S5P JPEG codec
s5p-mfc s5p-mfc: decoder registered as /dev/video3
s5p-mfc s5p-mfc: encoder registered as /dev/video4
s5p-hdmi s5pv210-hdmi: hdmiphy adapter request failed
s5p-hdmi s5pv210-hdmi: probe failed
Samsung TV Mixer driver, (c) 2010-2011 Samsung Electronics Co., Ltd.

s5p-mixer s5p-mixer: probe start
s5p-mixer s5p-mixer: resources acquired
s5p-mixer s5p-mixer: module s5p-hdmi provides no subdev! s5p-mixer s5p-mixer: module s5p-sdo provides no subdev! s5p-mixer s5p-mixer: failed to register any output
s5p-mixer s5p-mixer: probe failed
samsung-ac97 samsung-ac97: ac97 failed to get ac97_clock soc-audio soc-audio: ASoC: machine SMDK WM9713 should use snd_soc_register_card()
soc-audio soc-audio: ASoC: CPU DAI samsung-ac97 not registered platform soc-audio: Driver soc-audio requests probe deferral
TCP: cubic registered
NET: Registered protocol family 17
Key type dns_resolver registered
VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 2
soc-audio: probe of soc-audio failed with error -22
dm9000 dm9000 eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
IP-Config: Complete:

      device=eth0, hwaddr=00:09:c0:ff:ec:48, ipaddr=192.168.2.20,
mask=255.255.255.0, gw=192.168.2.1
      host=L210, domain=, nis-domain=(none)
      bootserver=192.168.2.200, rootserver=192.168.2.200, rootpath=

ALSA device list:
No soundcards found.
VFS: Mounted root (nfs filesystem) on device 0:9. Freeing init memory: 128K
Failed to execute /linuxrc. Attempting defaults...
init: ureadahead main process (1031) terminated with status 5

Last login: Thu Jan 1 00:00:16 UTC 1970 on tty1
root@linaro-developer:~#

#2 lore raw

Hi Lonsn,

Quoted 9 lines · Lonsn

Now I checked HDMI failed at:
drivers/media/platform/s5p-tv/hdmi_drv.c: 912 line

     adapter = i2c_get_adapter(pdata->hdmiphy_bus);
     if (adapter == NULL) {
         dev_err(dev, "hdmiphy adapter request failed\n");
         ret = -ENXIO;
         goto fail_vdev;
     }

Since pdata->hdmiphy_bus is 3, why i2c_get_adapter failed?

Do you have I2C3 bus controller device added to the list of devices registered in the init_machine() callback, i.e. &s3c_device_i2c3 entry in smdkv210_devices[] array ?

You can refer to arch/arm/mach-exynos/mach-universal_c210.c board file for how a complete setup for the HDMI driver should look like. It's for Exynos4210 SoCs but it should not be much different from what you need for S5PV210.

--

Regards,
Sylwester

#3 lore raw
Quoted 13 lines · Sylwester Nawrocki

Hi Lonsn,

Quoted 9 lines · Lonsn

Now I checked HDMI failed at:
drivers/media/platform/s5p-tv/hdmi_drv.c: 912 line adapter = i2c_get_adapter(pdata->hdmiphy_bus);
if (adapter == NULL) {
dev_err(dev, "hdmiphy adapter request failed\n"); ret = -ENXIO;
goto fail_vdev;
}
Since pdata->hdmiphy_bus is 3, why i2c_get_adapter failed?

Quoted 8 lines

Do you have I2C3 bus controller device added to the list of devices registered in the init_machine() callback, i.e. &s3c_device_i2c3 entry in smdkv210_devices[] array ?

You can refer to arch/arm/mach-exynos/mach-universal_c210.c board file for how a complete setup for the HDMI driver should look like. It's for Exynos4210 SoCs but it should not be much different from what you need for S5PV210.

To build the kernel with s3c_device_i2c3 S3C_DEV_I2C3 and S5PV210_SETUP_I2C3 need to be selected in Kconfig, e.g.

arch/arm/mach-s5pv210/Kconfig +2 -0
index 92ad72f..51ce100 100644
@@ -151,12 +151,14 @@ config MACH_SMDKV210
        select S3C_DEV_HSMMC3
        select S3C_DEV_I2C1
        select S3C_DEV_I2C2
+       select S3C_DEV_I2C3
        select S3C_DEV_RTC
        select S3C_DEV_USB_HSOTG
        select S3C_DEV_WDT
        select S5PV210_SETUP_FB_24BPP
        select S5PV210_SETUP_I2C1
        select S5PV210_SETUP_I2C2
+       select S5PV210_SETUP_I2C3
        select S5PV210_SETUP_IDE
        select S5PV210_SETUP_KEYPAD
        select S5PV210_SETUP_SDHCI
author
#4 lore raw
Quoted 36 lines · Sylwester Nawrocki
Quoted 13 lines

Hi Lonsn,

Quoted 9 lines · Lonsn

Now I checked HDMI failed at:
drivers/media/platform/s5p-tv/hdmi_drv.c: 912 line adapter = i2c_get_adapter(pdata->hdmiphy_bus);
if (adapter == NULL) {
dev_err(dev, "hdmiphy adapter request failed\n"); ret = -ENXIO;
goto fail_vdev;
}
Since pdata->hdmiphy_bus is 3, why i2c_get_adapter failed?

Quoted 8 lines

Do you have I2C3 bus controller device added to the list of devices registered in the init_machine() callback, i.e. &s3c_device_i2c3 entry in smdkv210_devices[] array ?

You can refer to arch/arm/mach-exynos/mach-universal_c210.c board file for how a complete setup for the HDMI driver should look like. It's for Exynos4210 SoCs but it should not be much different from what you need for S5PV210.

To build the kernel with s3c_device_i2c3 S3C_DEV_I2C3 and S5PV210_SETUP_I2C3
need to be selected in Kconfig, e.g.

arch/arm/mach-s5pv210/Kconfig +1 -0
index 92ad72f..51ce100 100644
@@ -151,12 +151,14 @@ config MACH_SMDKV210
         select S3C_DEV_HSMMC3
         select S3C_DEV_I2C1
         select S3C_DEV_I2C2
+       select S3C_DEV_I2C3

arch/arm/mach-s5pv210/Kconfig config MACH_SMDKV210 · line 164

Quoted 10 lines
arch/arm/mach-s5pv210/Kconfig +1 -0
         select S3C_DEV_RTC
         select S3C_DEV_USB_HSOTG
         select S3C_DEV_WDT
         select S5PV210_SETUP_FB_24BPP
         select S5PV210_SETUP_I2C1
         select S5PV210_SETUP_I2C2
+       select S5PV210_SETUP_I2C3
         select S5PV210_SETUP_IDE
         select S5PV210_SETUP_KEYPAD
         select S5PV210_SETUP_SDHCI

Sylwester, thank you very much for your suggestions! Now HDMI phy has been detected after I add HDMI phy i2c bus in arch/arm/mach-s5pv210/Kconfig:
config MACH_SMDKV210

        bool "SMDKV210"
        select CPU_S5PV210
        select S3C_DEV_FB
        select S3C_DEV_HSMMC
        select S3C_DEV_HSMMC1
        select S3C_DEV_HSMMC2
        select S3C_DEV_HSMMC3
        select S3C_DEV_I2C1
        select S3C_DEV_I2C2

+ select S5P_DEV_I2C_HDMIPHY
select S3C_DEV_RTC
select S3C_DEV_USB_HSOTG
and arch/arm/mach-s5pv210/mach-smdkv210.c:

static struct platform_device *smdkv210_devices[] __initdata = {
	&s3c_device_adc,
	&s3c_device_cfcon,
	&s3c_device_fb,
	&s3c_device_hsmmc0,
	&s3c_device_hsmmc1,
	&s3c_device_hsmmc2,
	&s3c_device_hsmmc3,
	&s3c_device_i2c0,
	&s3c_device_i2c1,
	&s3c_device_i2c2,
+	&s5p_device_i2c_hdmiphy,
	&s3c_device_rtc,
	&s3c_device_ts,
	&s3c_device_usb_hsotg,
	&s3c_device_wdt,
	&s5p_device_fimc0,
	&s5p_device_fimc1,
	&s5p_device_fimc2,
	&s5p_device_fimc_md,
	&s5p_device_jpeg,
	&s5p_device_mfc,
	&s5p_device_mfc_l,
	&s5p_device_mfc_r,
	&s5pv210_device_ac97,
	&s5pv210_device_iis0,
	&s5pv210_device_spdif,
	&samsung_asoc_idma,
	&samsung_device_keypad,
	&smdkv210_dm9000,
//	&smdkv210_lcd_lte480wv,
	&s5p_device_hdmi,
	&s5p_device_mixer,
};

Now kernel prints the following HDMI related:
m2m-testdev m2m-testdev.0: mem2mem-testdevDevice registered as /dev/video0 s5p-jpeg s5p-jpeg.0: encoder device registered as /dev/video1 s5p-jpeg s5p-jpeg.0: decoder device registered as /dev/video2 s5p-jpeg s5p-jpeg.0: Samsung S5P JPEG codec
s5p-mfc s5p-mfc: decoder registered as /dev/video3
s5p-mfc s5p-mfc: encoder registered as /dev/video4
s5p-hdmi s5pv210-hdmi: probe start
s5p-hdmi s5pv210-hdmi: HDMI resource init
s5p-hdmiphy 3-0038: probe successful
s5p-hdmi s5pv210-hdmi: probe successful
Samsung TV Mixer driver, (c) 2010-2011 Samsung Electronics Co., Ltd.

s5p-mixer s5p-mixer: probe start
s5p-mixer s5p-mixer: resources acquired
s5p-mixer s5p-mixer: added output 'S5P HDMI connector' from module 's5p-hdmi' s5p-mixer s5p-mixer: module s5p-sdo provides no subdev!
s5p-mixer s5p-mixer: registered layer graph0 as /dev/video5 s5p-mixer s5p-mixer: registered layer graph1 as /dev/video6 s5p-mixer s5p-mixer: registered layer video0 as /dev/video7 s5p-mixer s5p-mixer: probe successful

How can I test the HDMI output whether it's OK? Which /dev/video is real HDMI output? I have used http://git.infradead.org/users/kmpark/public-apps hdmi test program buf failed:

root@linaro-developer:/opt# ./tvdemo /dev/video7 720 480 0 0
ERROR(main.c:80) : VIDIOC_S_FMT failed: Invalid argument
Aborted
root@linaro-developer:/opt#
Maybe I still miss some configuration in mach-smdkv210.c.
author
#5 lore raw
Quoted 125 lines · Lonsn
Quoted 37 lines · Sylwester Nawrocki
Quoted 13 lines

Hi Lonsn,

Quoted 9 lines · Lonsn

Now I checked HDMI failed at:
drivers/media/platform/s5p-tv/hdmi_drv.c: 912 line adapter = i2c_get_adapter(pdata->hdmiphy_bus);
if (adapter == NULL) {
dev_err(dev, "hdmiphy adapter request failed\n"); ret = -ENXIO;
goto fail_vdev;
}
Since pdata->hdmiphy_bus is 3, why i2c_get_adapter failed?

Quoted 8 lines

Do you have I2C3 bus controller device added to the list of devices registered in the init_machine() callback, i.e. &s3c_device_i2c3 entry in smdkv210_devices[] array ?

You can refer to arch/arm/mach-exynos/mach-universal_c210.c board file for how a complete setup for the HDMI driver should look like. It's for Exynos4210 SoCs but it should not be much different from what you need for S5PV210.

To build the kernel with s3c_device_i2c3 S3C_DEV_I2C3 and S5PV210_SETUP_I2C3
need to be selected in Kconfig, e.g.

arch/arm/mach-s5pv210/Kconfig +1 -0
index 92ad72f..51ce100 100644
@@ -151,12 +151,14 @@ config MACH_SMDKV210
         select S3C_DEV_HSMMC3
         select S3C_DEV_I2C1
         select S3C_DEV_I2C2
+       select S3C_DEV_I2C3

arch/arm/mach-s5pv210/Kconfig config MACH_SMDKV210 · line 164

Quoted 10 lines
arch/arm/mach-s5pv210/Kconfig +1 -0
         select S3C_DEV_RTC
         select S3C_DEV_USB_HSOTG
         select S3C_DEV_WDT
         select S5PV210_SETUP_FB_24BPP
         select S5PV210_SETUP_I2C1
         select S5PV210_SETUP_I2C2
+       select S5PV210_SETUP_I2C3
         select S5PV210_SETUP_IDE
         select S5PV210_SETUP_KEYPAD
         select S5PV210_SETUP_SDHCI

Sylwester, thank you very much for your suggestions! Now HDMI phy has been detected after I add HDMI phy i2c bus in arch/arm/mach-s5pv210/Kconfig:
config MACH_SMDKV210

         bool "SMDKV210"
         select CPU_S5PV210
         select S3C_DEV_FB
         select S3C_DEV_HSMMC
         select S3C_DEV_HSMMC1
         select S3C_DEV_HSMMC2
         select S3C_DEV_HSMMC3
         select S3C_DEV_I2C1
         select S3C_DEV_I2C2

+ select S5P_DEV_I2C_HDMIPHY
select S3C_DEV_RTC
select S3C_DEV_USB_HSOTG
and arch/arm/mach-s5pv210/mach-smdkv210.c:

static struct platform_device *smdkv210_devices[] __initdata = {
     &s3c_device_adc,
     &s3c_device_cfcon,
     &s3c_device_fb,
     &s3c_device_hsmmc0,
     &s3c_device_hsmmc1,
     &s3c_device_hsmmc2,
     &s3c_device_hsmmc3,
     &s3c_device_i2c0,
     &s3c_device_i2c1,
     &s3c_device_i2c2,
+    &s5p_device_i2c_hdmiphy,
     &s3c_device_rtc,
     &s3c_device_ts,
     &s3c_device_usb_hsotg,
     &s3c_device_wdt,
     &s5p_device_fimc0,
     &s5p_device_fimc1,
     &s5p_device_fimc2,
     &s5p_device_fimc_md,
     &s5p_device_jpeg,
     &s5p_device_mfc,
     &s5p_device_mfc_l,
     &s5p_device_mfc_r,
     &s5pv210_device_ac97,
     &s5pv210_device_iis0,
     &s5pv210_device_spdif,
     &samsung_asoc_idma,
     &samsung_device_keypad,
     &smdkv210_dm9000,
//    &smdkv210_lcd_lte480wv,
     &s5p_device_hdmi,
     &s5p_device_mixer,
};

Now kernel prints the following HDMI related:
m2m-testdev m2m-testdev.0: mem2mem-testdevDevice registered as /dev/video0 s5p-jpeg s5p-jpeg.0: encoder device registered as /dev/video1 s5p-jpeg s5p-jpeg.0: decoder device registered as /dev/video2 s5p-jpeg s5p-jpeg.0: Samsung S5P JPEG codec
s5p-mfc s5p-mfc: decoder registered as /dev/video3
s5p-mfc s5p-mfc: encoder registered as /dev/video4
s5p-hdmi s5pv210-hdmi: probe start
s5p-hdmi s5pv210-hdmi: HDMI resource init
s5p-hdmiphy 3-0038: probe successful
s5p-hdmi s5pv210-hdmi: probe successful
Samsung TV Mixer driver, (c) 2010-2011 Samsung Electronics Co., Ltd.

s5p-mixer s5p-mixer: probe start
s5p-mixer s5p-mixer: resources acquired
s5p-mixer s5p-mixer: added output 'S5P HDMI connector' from module 's5p-hdmi'
s5p-mixer s5p-mixer: module s5p-sdo provides no subdev! s5p-mixer s5p-mixer: registered layer graph0 as /dev/video5 s5p-mixer s5p-mixer: registered layer graph1 as /dev/video6 s5p-mixer s5p-mixer: registered layer video0 as /dev/video7 s5p-mixer s5p-mixer: probe successful

How can I test the HDMI output whether it's OK? Which /dev/video is real HDMI output? I have used
http://git.infradead.org/users/kmpark/public-apps hdmi test program buf failed:

Quoted 7 lines
root@linaro-developer:/opt# ./tvdemo /dev/video7 720 480 0 0
ERROR(main.c:80) : VIDIOC_S_FMT failed: Invalid argument
Aborted
root@linaro-developer:/opt#
Maybe I still miss some configuration in mach-smdkv210.c.

The kernel print when run tvdemo:

root@linaro-developer:/opt# ./tvdemo /dev/video7 720 480 0 0
ERROR(main.c:80) : VIDIOC_S_FMT failed: Invalid argument
Aborted
root@linaro-developer:/opt# dmesg
s5p-mixer s5p-mixer: mxr_video_open:762
s5p-mixer s5p-mixer: resume - start
s5p-mixer s5p-mixer: resume - finished
s5p-hdmi s5pv210-hdmi: hdmi_g_mbus_fmt
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (65536, 65536)
s5p-mixer s5p-mixer: mxr_s_fmt:322
s5p-mixer s5p-mixer: not recognized fourcc: 34524742
s5p-mixer s5p-mixer: mxr_video_release:842
s5p-mixer s5p-mixer: suspend - start
s5p-mixer s5p-mixer: suspend - finished
root@linaro-developer:/opt#
#6 lore raw
Quoted 3 lines · Lonsn
Quoted 2 lines · Lonsn
Quoted 2 lines · Sylwester Nawrocki
Quoted 1 line · Lonsn

[...]

Quoted 24 lines
Quoted 24 lines

Now kernel prints the following HDMI related:
m2m-testdev m2m-testdev.0: mem2mem-testdevDevice registered as /dev/video0
s5p-jpeg s5p-jpeg.0: encoder device registered as /dev/video1 s5p-jpeg s5p-jpeg.0: decoder device registered as /dev/video2 s5p-jpeg s5p-jpeg.0: Samsung S5P JPEG codec
s5p-mfc s5p-mfc: decoder registered as /dev/video3 s5p-mfc s5p-mfc: encoder registered as /dev/video4 s5p-hdmi s5pv210-hdmi: probe start
s5p-hdmi s5pv210-hdmi: HDMI resource init
s5p-hdmiphy 3-0038: probe successful
s5p-hdmi s5pv210-hdmi: probe successful
Samsung TV Mixer driver, (c) 2010-2011 Samsung Electronics Co., Ltd.

s5p-mixer s5p-mixer: probe start
s5p-mixer s5p-mixer: resources acquired
s5p-mixer s5p-mixer: added output 'S5P HDMI connector' from module 's5p-hdmi'
s5p-mixer s5p-mixer: module s5p-sdo provides no subdev! s5p-mixer s5p-mixer: registered layer graph0 as /dev/video5 s5p-mixer s5p-mixer: registered layer graph1 as /dev/video6 s5p-mixer s5p-mixer: registered layer video0 as /dev/video7 s5p-mixer s5p-mixer: probe successful

Quoted 6 lines
Quoted 6 lines

How can I test the HDMI output whether it's OK? Which /dev/video is real HDMI output? I have used
http://git.infradead.org/users/kmpark/public-apps hdmi test program buf failed:

root@linaro-developer:/opt# ./tvdemo /dev/video7 720 480 0 0
ERROR(main.c:80) : VIDIOC_S_FMT failed: Invalid argument

It failed because you've opened device node of the Video Processor, which supports only NV12/21(MT) formats. I believe the v4l2-hdmi-example application, which renders some simple test images, needs to be run with one the graphics layer video nodes as an argument. Doesn't it work when you try on /dev/video5 or /dev/video6 ?

Quoted 2 lines
Quoted 2 lines

root@linaro-developer:/opt#
Maybe I still miss some configuration in mach-smdkv210.c.

I don't think so, it all looks more or less OK now :)

Quoted 17 lines

The kernel print when run tvdemo:

root@linaro-developer:/opt# ./tvdemo /dev/video7 720 480 0 0
ERROR(main.c:80) : VIDIOC_S_FMT failed: Invalid argument
Aborted
root@linaro-developer:/opt# dmesg
s5p-mixer s5p-mixer: mxr_video_open:762
s5p-mixer s5p-mixer: resume - start
s5p-mixer s5p-mixer: resume - finished
s5p-hdmi s5pv210-hdmi: hdmi_g_mbus_fmt
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: src.full_size = (720, 480)
Quoted 8 lines
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (65536, 65536)
s5p-mixer s5p-mixer: mxr_s_fmt:322
s5p-mixer s5p-mixer: not recognized fourcc: 34524742

Yes, it must definitely be incorrect video node. Only the graph0/1 devices support RGB.

Regards,
Sylwester

author
#7 lore raw
Quoted 36 lines · Sylwester Nawrocki
Quoted 3 lines · Lonsn
Quoted 2 lines · Lonsn
Quoted 2 lines · Sylwester Nawrocki
Quoted 1 line · Lonsn

[...]

Quoted 24 lines
Quoted 24 lines

Now kernel prints the following HDMI related:
m2m-testdev m2m-testdev.0: mem2mem-testdevDevice registered as /dev/video0
s5p-jpeg s5p-jpeg.0: encoder device registered as /dev/video1 s5p-jpeg s5p-jpeg.0: decoder device registered as /dev/video2 s5p-jpeg s5p-jpeg.0: Samsung S5P JPEG codec
s5p-mfc s5p-mfc: decoder registered as /dev/video3 s5p-mfc s5p-mfc: encoder registered as /dev/video4 s5p-hdmi s5pv210-hdmi: probe start
s5p-hdmi s5pv210-hdmi: HDMI resource init
s5p-hdmiphy 3-0038: probe successful
s5p-hdmi s5pv210-hdmi: probe successful
Samsung TV Mixer driver, (c) 2010-2011 Samsung Electronics Co., Ltd.

s5p-mixer s5p-mixer: probe start
s5p-mixer s5p-mixer: resources acquired
s5p-mixer s5p-mixer: added output 'S5P HDMI connector' from module 's5p-hdmi'
s5p-mixer s5p-mixer: module s5p-sdo provides no subdev! s5p-mixer s5p-mixer: registered layer graph0 as /dev/video5 s5p-mixer s5p-mixer: registered layer graph1 as /dev/video6 s5p-mixer s5p-mixer: registered layer video0 as /dev/video7 s5p-mixer s5p-mixer: probe successful

Quoted 6 lines
Quoted 6 lines

How can I test the HDMI output whether it's OK? Which /dev/video is real HDMI output? I have used
http://git.infradead.org/users/kmpark/public-apps hdmi test program buf failed:

root@linaro-developer:/opt# ./tvdemo /dev/video7 720 480 0 0
ERROR(main.c:80) : VIDIOC_S_FMT failed: Invalid argument
Quoted 7 lines

It failed because you've opened device node of the Video Processor, which supports only NV12/21(MT) formats. I believe the v4l2-hdmi-example application, which renders some simple test images, needs to be run with one
the graphics layer video nodes as an argument. Doesn't it work when you try
on /dev/video5 or /dev/video6 ?

I have tested /dev/video5 and /dev/video6, the same output as following:

root@linaro-developer:/opt# ./tvdemo /dev/video5 720 480 0 0
start
ERROR(main.c:256) : VIDIOC_DQBUF failed: Invalid argument
Aborted
root@linaro-developer:/opt# dmesg
s5p-mixer s5p-mixer: mxr_video_open:762
s5p-mixer s5p-mixer: resume - start
s5p-mixer s5p-mixer: resume - finished
s5p-hdmi s5pv210-hdmi: hdmi_g_mbus_fmt
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: mxr_s_fmt:322
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: mxr_g_fmt:301
s5p-mixer s5p-mixer: mxr_g_fmt:301
s5p-mixer s5p-mixer: mxr_reqbufs:672
s5p-mixer s5p-mixer: queue_setup
s5p-mixer s5p-mixer: fmt = ARGB8888
s5p-mixer s5p-mixer: size[0] = 00151800
s5p-mixer s5p-mixer: mxr_querybuf:680
s5p-mixer s5p-mixer: mxr_video_mmap:829
s5p-mixer s5p-mixer: mxr_querybuf:680
s5p-mixer s5p-mixer: mxr_video_mmap:829
s5p-mixer s5p-mixer: mxr_querybuf:680
s5p-mixer s5p-mixer: mxr_video_mmap:829
s5p-mixer s5p-mixer: mxr_s_selection: rect: 720x480@0,0
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: mxr_qbuf:688(0)
s5p-mixer s5p-mixer: mxr_qbuf:688(1)
s5p-mixer s5p-mixer: mxr_qbuf:688(2)
s5p-mixer s5p-mixer: mxr_streamon:713
s5p-mixer s5p-mixer: queuing buffer
s5p-mixer s5p-mixer: queuing buffer
s5p-mixer s5p-mixer: queuing buffer
s5p-mixer s5p-mixer: start_streaming
s5p-mixer s5p-mixer: mxr_output_get(1)
s5p-hdmi s5pv210-hdmi: hdmi_runtime_resume
s5p-hdmi s5pv210-hdmi: poweron succeed
s5p-hdmi s5pv210-hdmi: hdmi_g_mbus_fmt
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: mxr_streamer_get(1)
s5p-hdmi s5pv210-hdmi: hdmi_g_mbus_fmt
s5p-hdmi s5pv210-hdmi: hdmi_s_stream(1)
s5p-hdmi s5pv210-hdmi: hdmi_streamon
s5p-hdmi s5pv210-hdmi: hdmi_conf_apply
s5p-hdmiphy 3-0038: s_dv_preset(preset = 1)
s5p-tv (hdmi_drv): unplugged
s5p-hdmiphy 3-0038: s_stream(1)
s5p-hdmi s5pv210-hdmi: streamon: ---- CONTROL REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamon:HDMI_INTC_FLAG = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_INTC_CON = 0000004c
s5p-hdmi s5pv210-hdmi: streamon:HDMI_HPD_STATUS = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_PHY_RSTOUT = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_PHY_VPLL = 0000008c
s5p-hdmi s5pv210-hdmi: streamon:HDMI_PHY_CMU = 00000080
s5p-hdmi s5pv210-hdmi: streamon:HDMI_CORE_RSTOUT = 00000001
s5p-hdmi s5pv210-hdmi: streamon: ---- CORE REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamon:HDMI_CON_0 = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_CON_1 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_CON_2 = 00000022
s5p-hdmi s5pv210-hdmi: streamon:HDMI_SYS_STATUS = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_PHY_STATUS = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_STATUS_EN = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_HPD = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_MODE_SEL = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_HPD_GEN = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_DC_CONTROL = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_VIDEO_PATTERN_GEN = 00000000
s5p-hdmi s5pv210-hdmi: streamon: ---- CORE SYNC REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_BLANK_0 = 0000008a
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_BLANK_1 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_BLANK_0 = 0000000d
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_BLANK_1 = 0000006a
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_BLANK_2 = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_V_LINE_0 = 0000000d
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_V_LINE_1 = 000000a2
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_V_LINE_2 = 00000035
s5p-hdmi s5pv210-hdmi: streamon:HDMI_VSYNC_POL = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_INT_PRO_MODE = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_BLANK_F_0 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_BLANK_F_1 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_BLANK_F_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_SYNC_GEN_0 = 00000010
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_SYNC_GEN_1 = 00000038
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_SYNC_GEN_2 = 00000011
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_1_0 = 0000000f
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_1_1 = 00000090
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_1_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_2_0 = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_2_1 = 00000010
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_2_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_3_0 = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_3_1 = 00000010
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_3_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamon: ---- TG REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_CMD = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_H_FSZ_L = 0000005a
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_H_FSZ_H = 00000003
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_HACT_ST_L = 0000008a
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_HACT_ST_H = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_HACT_SZ_L = 000000d0
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_HACT_SZ_H = 00000002
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_V_FSZ_L = 0000000d
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_V_FSZ_H = 00000002
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC_L = 00000009
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC_H = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC2_L = 00000033
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC2_H = 00000002
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VACT_ST_L = 0000002d
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VACT_ST_H = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VACT_SZ_L = 000000e0
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VACT_SZ_H = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_FIELD_CHG_L = 00000033
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_FIELD_CHG_H = 00000002
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VACT_ST2_L = 00000048
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VACT_ST2_H = 00000002
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC_TOP_HDMI_L = 00000009
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC_TOP_HDMI_H = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC_BOT_HDMI_L = 00000033
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC_BOT_HDMI_H = 00000002
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_FIELD_TOP_HDMI_L = 00000009
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_FIELD_TOP_HDMI_H = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_FIELD_BOT_HDMI_L = 00000033
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_FIELD_BOT_HDMI_H = 00000002
s5p-mixer s5p-mixer: MXR_STATUS = 00000085
s5p-mixer s5p-mixer: MXR_CFG = 00000194
s5p-mixer s5p-mixer: MXR_INT_EN = 00000700
s5p-mixer s5p-mixer: MXR_INT_STATUS = 00000000
s5p-mixer s5p-mixer: MXR_LAYER_CFG = 00000312
s5p-mixer s5p-mixer: MXR_VIDEO_CFG = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC0_CFG = 003007ff
s5p-mixer s5p-mixer: MXR_GRAPHIC0_BASE = 4d600000
s5p-mixer s5p-mixer: MXR_GRAPHIC0_SPAN = 000002d0
s5p-mixer s5p-mixer: MXR_GRAPHIC0_WH = 02d001e0
s5p-mixer s5p-mixer: MXR_GRAPHIC0_SXY = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC0_DXY = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_CFG = 003000ff
s5p-mixer s5p-mixer: MXR_GRAPHIC1_BASE = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_SPAN = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_WH = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_SXY = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_DXY = 00000000
s5p-mixer s5p-mixer: VP_ENABLE = 00000002
s5p-mixer s5p-mixer: VP_SRESET = 00000000
s5p-mixer s5p-mixer: VP_SHADOW_UPDATE = 00000001
s5p-mixer s5p-mixer: VP_FIELD_ID = 00000000
s5p-mixer s5p-mixer: VP_MODE = 00000000
s5p-mixer s5p-mixer: VP_IMG_SIZE_Y = 00000000
s5p-mixer s5p-mixer: VP_IMG_SIZE_C = 00000000
s5p-mixer s5p-mixer: VP_PER_RATE_CTRL = 00000000
s5p-mixer s5p-mixer: VP_TOP_Y_PTR = 00000000
s5p-mixer s5p-mixer: VP_BOT_Y_PTR = 00000000
s5p-mixer s5p-mixer: VP_TOP_C_PTR = 00000000
s5p-mixer s5p-mixer: VP_BOT_C_PTR = 00000000
s5p-mixer s5p-mixer: VP_ENDIAN_MODE = 00000000
s5p-mixer s5p-mixer: VP_SRC_H_POSITION = 00000000
s5p-mixer s5p-mixer: VP_SRC_V_POSITION = 00000000
s5p-mixer s5p-mixer: VP_SRC_WIDTH = 00000000
s5p-mixer s5p-mixer: VP_SRC_HEIGHT = 00000000
s5p-mixer s5p-mixer: VP_DST_H_POSITION = 00000000
s5p-mixer s5p-mixer: VP_DST_V_POSITION = 00000000
s5p-mixer s5p-mixer: VP_DST_WIDTH = 00000000
s5p-mixer s5p-mixer: VP_DST_HEIGHT = 00000000
s5p-mixer s5p-mixer: VP_H_RATIO = 00000000
s5p-mixer s5p-mixer: VP_V_RATIO = 00000000
s5p-mixer s5p-mixer: mxr_dqbuf:696
s5p-mixer s5p-mixer: wait_unlock
s5p-mixer s5p-mixer: wait_lock
s5p-mixer s5p-mixer: mxr_video_release:842
s5p-mixer s5p-mixer: stop_streaming
s5p-mixer s5p-mixer: mxr_streamer_put(0)
s5p-hdmi s5pv210-hdmi: hdmi_s_stream(0)
s5p-hdmi s5pv210-hdmi: hdmi_streamoff
s5p-hdmiphy 3-0038: s_stream(0)
s5p-hdmi s5pv210-hdmi: streamoff: ---- CONTROL REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_INTC_FLAG = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_INTC_CON = 0000004c
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_HPD_STATUS = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_PHY_RSTOUT = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_PHY_VPLL = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_PHY_CMU = 00000080
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_CORE_RSTOUT = 00000001
s5p-hdmi s5pv210-hdmi: streamoff: ---- CORE REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_CON_0 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_CON_1 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_CON_2 = 00000022
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_SYS_STATUS = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_PHY_STATUS = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_STATUS_EN = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_HPD = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_MODE_SEL = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_HPD_GEN = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_DC_CONTROL = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_VIDEO_PATTERN_GEN = 00000000
s5p-hdmi s5pv210-hdmi: streamoff: ---- CORE SYNC REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_BLANK_0 = 0000008a
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_BLANK_1 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_BLANK_0 = 0000000d
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_BLANK_1 = 0000006a
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_BLANK_2 = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_V_LINE_0 = 0000000d
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_V_LINE_1 = 000000a2
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_V_LINE_2 = 00000035
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_VSYNC_POL = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_INT_PRO_MODE = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_BLANK_F_0 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_BLANK_F_1 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_BLANK_F_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_SYNC_GEN_0 = 00000010
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_SYNC_GEN_1 = 00000038
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_SYNC_GEN_2 = 00000011
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_1_0 = 0000000f
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_1_1 = 00000090
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_1_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_2_0 = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_2_1 = 00000010
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_2_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_3_0 = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_3_1 = 00000010
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_3_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff: ---- TG REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_CMD = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_H_FSZ_L = 0000005a
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_H_FSZ_H = 00000003
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_HACT_ST_L = 0000008a
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_HACT_ST_H = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_HACT_SZ_L = 000000d0
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_HACT_SZ_H = 00000002
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_V_FSZ_L = 0000000d
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_V_FSZ_H = 00000002
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC_L = 00000009
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC_H = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC2_L = 00000033
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC2_H = 00000002
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VACT_ST_L = 0000002d
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VACT_ST_H = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VACT_SZ_L = 000000e0
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VACT_SZ_H = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_FIELD_CHG_L = 00000033
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_FIELD_CHG_H = 00000002
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VACT_ST2_L = 00000048
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VACT_ST2_H = 00000002
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC_TOP_HDMI_L = 00000009
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC_TOP_HDMI_H = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC_BOT_HDMI_L = 00000033
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC_BOT_HDMI_H = 00000002
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_FIELD_TOP_HDMI_L = 00000009
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_FIELD_TOP_HDMI_H = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_FIELD_BOT_HDMI_L = 00000033
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_FIELD_BOT_HDMI_H = 00000002
s5p-mixer s5p-mixer: MXR_STATUS = 00000086
s5p-mixer s5p-mixer: MXR_CFG = 00000184
s5p-mixer s5p-mixer: MXR_INT_EN = 00000700
s5p-mixer s5p-mixer: MXR_INT_STATUS = 00000000
s5p-mixer s5p-mixer: MXR_LAYER_CFG = 00000312
s5p-mixer s5p-mixer: MXR_VIDEO_CFG = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC0_CFG = 003007ff
s5p-mixer s5p-mixer: MXR_GRAPHIC0_BASE = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC0_SPAN = 000002d0
s5p-mixer s5p-mixer: MXR_GRAPHIC0_WH = 02d001e0
s5p-mixer s5p-mixer: MXR_GRAPHIC0_SXY = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC0_DXY = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_CFG = 003000ff
s5p-mixer s5p-mixer: MXR_GRAPHIC1_BASE = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_SPAN = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_WH = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_SXY = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_DXY = 00000000
s5p-mixer s5p-mixer: VP_ENABLE = 00000002
s5p-mixer s5p-mixer: VP_SRESET = 00000000
s5p-mixer s5p-mixer: VP_SHADOW_UPDATE = 00000000
s5p-mixer s5p-mixer: VP_FIELD_ID = 00000000
s5p-mixer s5p-mixer: VP_MODE = 00000000
s5p-mixer s5p-mixer: VP_IMG_SIZE_Y = 00000000
s5p-mixer s5p-mixer: VP_IMG_SIZE_C = 00000000
s5p-mixer s5p-mixer: VP_PER_RATE_CTRL = 00000000
s5p-mixer s5p-mixer: VP_TOP_Y_PTR = 00000000
s5p-mixer s5p-mixer: VP_BOT_Y_PTR = 00000000
s5p-mixer s5p-mixer: VP_TOP_C_PTR = 00000000
s5p-mixer s5p-mixer: VP_BOT_C_PTR = 00000000
s5p-mixer s5p-mixer: VP_ENDIAN_MODE = 00000000
s5p-mixer s5p-mixer: VP_SRC_H_POSITION = 00000000
s5p-mixer s5p-mixer: VP_SRC_V_POSITION = 00000000
s5p-mixer s5p-mixer: VP_SRC_WIDTH = 00000000
s5p-mixer s5p-mixer: VP_SRC_HEIGHT = 00000000
s5p-mixer s5p-mixer: VP_DST_H_POSITION = 00000000
s5p-mixer s5p-mixer: VP_DST_V_POSITION = 00000000
s5p-mixer s5p-mixer: VP_DST_WIDTH = 00000000
s5p-mixer s5p-mixer: VP_DST_HEIGHT = 00000000
s5p-mixer s5p-mixer: VP_H_RATIO = 00000000
s5p-mixer s5p-mixer: VP_V_RATIO = 00000000
s5p-mixer s5p-mixer: mxr_output_put(0)
s5p-hdmi s5pv210-hdmi: hdmi_runtime_suspend
s5p-mixer s5p-mixer: suspend - start
s5p-mixer s5p-mixer: suspend - finished
Quoted 37 lines
Quoted 3 lines
Quoted 3 lines

root@linaro-developer:/opt#
Maybe I still miss some configuration in mach-smdkv210.c.

I don't think so, it all looks more or less OK now :)

Quoted 17 lines

The kernel print when run tvdemo:

root@linaro-developer:/opt# ./tvdemo /dev/video7 720 480 0 0
ERROR(main.c:80) : VIDIOC_S_FMT failed: Invalid argument
Aborted
root@linaro-developer:/opt# dmesg
s5p-mixer s5p-mixer: mxr_video_open:762
s5p-mixer s5p-mixer: resume - start
s5p-mixer s5p-mixer: resume - finished
s5p-hdmi s5pv210-hdmi: hdmi_g_mbus_fmt
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: src.full_size = (720, 480)
Quoted 8 lines
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (65536, 65536)
s5p-mixer s5p-mixer: mxr_s_fmt:322
s5p-mixer s5p-mixer: not recognized fourcc: 34524742

Yes, it must definitely be incorrect video node. Only the graph0/1 devices support RGB.

Regards,
Sylwester

author
#8 lore raw

HDMI output is OK now, it's a variable init question in 'struct v4l2_buffer buf' when call ioctl(fd, VIDIOC_DQBUF, &buf) in the hdmi example application. Add m.planes in buf then OK. Thanks all!
I will continue to test the mfc decoder for s5pv210.

Regards,

Quoted 423 lines · Lonsn
Quoted 37 lines · Sylwester Nawrocki
Quoted 3 lines · Lonsn
Quoted 2 lines · Lonsn
Quoted 2 lines · Sylwester Nawrocki
Quoted 1 line · Lonsn

[...]

Quoted 24 lines
Quoted 24 lines

Now kernel prints the following HDMI related:
m2m-testdev m2m-testdev.0: mem2mem-testdevDevice registered as /dev/video0
s5p-jpeg s5p-jpeg.0: encoder device registered as /dev/video1 s5p-jpeg s5p-jpeg.0: decoder device registered as /dev/video2 s5p-jpeg s5p-jpeg.0: Samsung S5P JPEG codec
s5p-mfc s5p-mfc: decoder registered as /dev/video3 s5p-mfc s5p-mfc: encoder registered as /dev/video4 s5p-hdmi s5pv210-hdmi: probe start
s5p-hdmi s5pv210-hdmi: HDMI resource init
s5p-hdmiphy 3-0038: probe successful
s5p-hdmi s5pv210-hdmi: probe successful
Samsung TV Mixer driver, (c) 2010-2011 Samsung Electronics Co., Ltd.

s5p-mixer s5p-mixer: probe start
s5p-mixer s5p-mixer: resources acquired
s5p-mixer s5p-mixer: added output 'S5P HDMI connector' from module 's5p-hdmi'
s5p-mixer s5p-mixer: module s5p-sdo provides no subdev! s5p-mixer s5p-mixer: registered layer graph0 as /dev/video5 s5p-mixer s5p-mixer: registered layer graph1 as /dev/video6 s5p-mixer s5p-mixer: registered layer video0 as /dev/video7 s5p-mixer s5p-mixer: probe successful

Quoted 7 lines
Quoted 7 lines

How can I test the HDMI output whether it's OK? Which /dev/video is real
HDMI output? I have used
http://git.infradead.org/users/kmpark/public-apps hdmi test program buf failed:

root@linaro-developer:/opt# ./tvdemo /dev/video7 720 480 0 0
ERROR(main.c:80) : VIDIOC_S_FMT failed: Invalid argument
Quoted 7 lines

It failed because you've opened device node of the Video Processor, which supports only NV12/21(MT) formats. I believe the v4l2-hdmi-example application, which renders some simple test images, needs to be run with one
the graphics layer video nodes as an argument. Doesn't it work when you try
on /dev/video5 or /dev/video6 ?

I have tested /dev/video5 and /dev/video6, the same output as following:

root@linaro-developer:/opt# ./tvdemo /dev/video5 720 480 0 0
start
ERROR(main.c:256) : VIDIOC_DQBUF failed: Invalid argument
Aborted
root@linaro-developer:/opt# dmesg
s5p-mixer s5p-mixer: mxr_video_open:762
s5p-mixer s5p-mixer: resume - start
s5p-mixer s5p-mixer: resume - finished
s5p-hdmi s5pv210-hdmi: hdmi_g_mbus_fmt
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: mxr_s_fmt:322
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: mxr_g_fmt:301
s5p-mixer s5p-mixer: mxr_g_fmt:301
s5p-mixer s5p-mixer: mxr_reqbufs:672
s5p-mixer s5p-mixer: queue_setup
s5p-mixer s5p-mixer: fmt = ARGB8888
s5p-mixer s5p-mixer: size[0] = 00151800
s5p-mixer s5p-mixer: mxr_querybuf:680
s5p-mixer s5p-mixer: mxr_video_mmap:829
s5p-mixer s5p-mixer: mxr_querybuf:680
s5p-mixer s5p-mixer: mxr_video_mmap:829
s5p-mixer s5p-mixer: mxr_querybuf:680
s5p-mixer s5p-mixer: mxr_video_mmap:829
s5p-mixer s5p-mixer: mxr_s_selection: rect: 720x480@0,0
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: mxr_qbuf:688(0)
s5p-mixer s5p-mixer: mxr_qbuf:688(1)
s5p-mixer s5p-mixer: mxr_qbuf:688(2)
s5p-mixer s5p-mixer: mxr_streamon:713
s5p-mixer s5p-mixer: queuing buffer
s5p-mixer s5p-mixer: queuing buffer
s5p-mixer s5p-mixer: queuing buffer
s5p-mixer s5p-mixer: start_streaming
s5p-mixer s5p-mixer: mxr_output_get(1)
s5p-hdmi s5pv210-hdmi: hdmi_runtime_resume
s5p-hdmi s5pv210-hdmi: poweron succeed
s5p-hdmi s5pv210-hdmi: hdmi_g_mbus_fmt
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: mxr_streamer_get(1)
s5p-hdmi s5pv210-hdmi: hdmi_g_mbus_fmt
s5p-hdmi s5pv210-hdmi: hdmi_s_stream(1)
s5p-hdmi s5pv210-hdmi: hdmi_streamon
s5p-hdmi s5pv210-hdmi: hdmi_conf_apply
s5p-hdmiphy 3-0038: s_dv_preset(preset = 1)
s5p-tv (hdmi_drv): unplugged
s5p-hdmiphy 3-0038: s_stream(1)
s5p-hdmi s5pv210-hdmi: streamon: ---- CONTROL REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamon:HDMI_INTC_FLAG = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_INTC_CON = 0000004c
s5p-hdmi s5pv210-hdmi: streamon:HDMI_HPD_STATUS = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_PHY_RSTOUT = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_PHY_VPLL = 0000008c
s5p-hdmi s5pv210-hdmi: streamon:HDMI_PHY_CMU = 00000080
s5p-hdmi s5pv210-hdmi: streamon:HDMI_CORE_RSTOUT = 00000001
s5p-hdmi s5pv210-hdmi: streamon: ---- CORE REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamon:HDMI_CON_0 = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_CON_1 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_CON_2 = 00000022
s5p-hdmi s5pv210-hdmi: streamon:HDMI_SYS_STATUS = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_PHY_STATUS = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_STATUS_EN = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_HPD = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_MODE_SEL = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_HPD_GEN = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_DC_CONTROL = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_VIDEO_PATTERN_GEN = 00000000
s5p-hdmi s5pv210-hdmi: streamon: ---- CORE SYNC REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_BLANK_0 = 0000008a
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_BLANK_1 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_BLANK_0 = 0000000d
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_BLANK_1 = 0000006a
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_BLANK_2 = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_V_LINE_0 = 0000000d
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_V_LINE_1 = 000000a2
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_V_LINE_2 = 00000035
s5p-hdmi s5pv210-hdmi: streamon:HDMI_VSYNC_POL = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_INT_PRO_MODE = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_BLANK_F_0 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_BLANK_F_1 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_BLANK_F_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_SYNC_GEN_0 = 00000010
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_SYNC_GEN_1 = 00000038
s5p-hdmi s5pv210-hdmi: streamon:HDMI_H_SYNC_GEN_2 = 00000011
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_1_0 = 0000000f
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_1_1 = 00000090
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_1_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_2_0 = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_2_1 = 00000010
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_2_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_3_0 = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_3_1 = 00000010
s5p-hdmi s5pv210-hdmi: streamon:HDMI_V_SYNC_GEN_3_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamon: ---- TG REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_CMD = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_H_FSZ_L = 0000005a
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_H_FSZ_H = 00000003
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_HACT_ST_L = 0000008a
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_HACT_ST_H = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_HACT_SZ_L = 000000d0
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_HACT_SZ_H = 00000002
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_V_FSZ_L = 0000000d
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_V_FSZ_H = 00000002
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC_L = 00000009
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC_H = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC2_L = 00000033
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC2_H = 00000002
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VACT_ST_L = 0000002d
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VACT_ST_H = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VACT_SZ_L = 000000e0
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VACT_SZ_H = 00000001
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_FIELD_CHG_L = 00000033
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_FIELD_CHG_H = 00000002
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VACT_ST2_L = 00000048
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VACT_ST2_H = 00000002
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC_TOP_HDMI_L = 00000009
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC_TOP_HDMI_H = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC_BOT_HDMI_L = 00000033
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_VSYNC_BOT_HDMI_H = 00000002
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_FIELD_TOP_HDMI_L = 00000009
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_FIELD_TOP_HDMI_H = 00000000
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_FIELD_BOT_HDMI_L = 00000033
s5p-hdmi s5pv210-hdmi: streamon:HDMI_TG_FIELD_BOT_HDMI_H = 00000002
s5p-mixer s5p-mixer: MXR_STATUS = 00000085
s5p-mixer s5p-mixer: MXR_CFG = 00000194
s5p-mixer s5p-mixer: MXR_INT_EN = 00000700
s5p-mixer s5p-mixer: MXR_INT_STATUS = 00000000
s5p-mixer s5p-mixer: MXR_LAYER_CFG = 00000312
s5p-mixer s5p-mixer: MXR_VIDEO_CFG = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC0_CFG = 003007ff
s5p-mixer s5p-mixer: MXR_GRAPHIC0_BASE = 4d600000
s5p-mixer s5p-mixer: MXR_GRAPHIC0_SPAN = 000002d0
s5p-mixer s5p-mixer: MXR_GRAPHIC0_WH = 02d001e0
s5p-mixer s5p-mixer: MXR_GRAPHIC0_SXY = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC0_DXY = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_CFG = 003000ff
s5p-mixer s5p-mixer: MXR_GRAPHIC1_BASE = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_SPAN = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_WH = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_SXY = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_DXY = 00000000
s5p-mixer s5p-mixer: VP_ENABLE = 00000002
s5p-mixer s5p-mixer: VP_SRESET = 00000000
s5p-mixer s5p-mixer: VP_SHADOW_UPDATE = 00000001
s5p-mixer s5p-mixer: VP_FIELD_ID = 00000000
s5p-mixer s5p-mixer: VP_MODE = 00000000
s5p-mixer s5p-mixer: VP_IMG_SIZE_Y = 00000000
s5p-mixer s5p-mixer: VP_IMG_SIZE_C = 00000000
s5p-mixer s5p-mixer: VP_PER_RATE_CTRL = 00000000
s5p-mixer s5p-mixer: VP_TOP_Y_PTR = 00000000
s5p-mixer s5p-mixer: VP_BOT_Y_PTR = 00000000
s5p-mixer s5p-mixer: VP_TOP_C_PTR = 00000000
s5p-mixer s5p-mixer: VP_BOT_C_PTR = 00000000
s5p-mixer s5p-mixer: VP_ENDIAN_MODE = 00000000
s5p-mixer s5p-mixer: VP_SRC_H_POSITION = 00000000
s5p-mixer s5p-mixer: VP_SRC_V_POSITION = 00000000
s5p-mixer s5p-mixer: VP_SRC_WIDTH = 00000000
s5p-mixer s5p-mixer: VP_SRC_HEIGHT = 00000000
s5p-mixer s5p-mixer: VP_DST_H_POSITION = 00000000
s5p-mixer s5p-mixer: VP_DST_V_POSITION = 00000000
s5p-mixer s5p-mixer: VP_DST_WIDTH = 00000000
s5p-mixer s5p-mixer: VP_DST_HEIGHT = 00000000
s5p-mixer s5p-mixer: VP_H_RATIO = 00000000
s5p-mixer s5p-mixer: VP_V_RATIO = 00000000
s5p-mixer s5p-mixer: mxr_dqbuf:696
s5p-mixer s5p-mixer: wait_unlock
s5p-mixer s5p-mixer: wait_lock
s5p-mixer s5p-mixer: mxr_video_release:842
s5p-mixer s5p-mixer: stop_streaming
s5p-mixer s5p-mixer: mxr_streamer_put(0)
s5p-hdmi s5pv210-hdmi: hdmi_s_stream(0)
s5p-hdmi s5pv210-hdmi: hdmi_streamoff
s5p-hdmiphy 3-0038: s_stream(0)
s5p-hdmi s5pv210-hdmi: streamoff: ---- CONTROL REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_INTC_FLAG = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_INTC_CON = 0000004c
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_HPD_STATUS = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_PHY_RSTOUT = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_PHY_VPLL = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_PHY_CMU = 00000080
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_CORE_RSTOUT = 00000001
s5p-hdmi s5pv210-hdmi: streamoff: ---- CORE REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_CON_0 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_CON_1 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_CON_2 = 00000022
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_SYS_STATUS = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_PHY_STATUS = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_STATUS_EN = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_HPD = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_MODE_SEL = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_HPD_GEN = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_DC_CONTROL = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_VIDEO_PATTERN_GEN = 00000000
s5p-hdmi s5pv210-hdmi: streamoff: ---- CORE SYNC REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_BLANK_0 = 0000008a
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_BLANK_1 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_BLANK_0 = 0000000d
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_BLANK_1 = 0000006a
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_BLANK_2 = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_V_LINE_0 = 0000000d
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_V_LINE_1 = 000000a2
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_V_LINE_2 = 00000035
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_VSYNC_POL = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_INT_PRO_MODE = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_BLANK_F_0 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_BLANK_F_1 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_BLANK_F_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_SYNC_GEN_0 = 00000010
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_SYNC_GEN_1 = 00000038
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_H_SYNC_GEN_2 = 00000011
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_1_0 = 0000000f
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_1_1 = 00000090
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_1_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_2_0 = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_2_1 = 00000010
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_2_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_3_0 = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_3_1 = 00000010
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_V_SYNC_GEN_3_2 = 00000000
s5p-hdmi s5pv210-hdmi: streamoff: ---- TG REGISTERS ----
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_CMD = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_H_FSZ_L = 0000005a
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_H_FSZ_H = 00000003
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_HACT_ST_L = 0000008a
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_HACT_ST_H = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_HACT_SZ_L = 000000d0
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_HACT_SZ_H = 00000002
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_V_FSZ_L = 0000000d
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_V_FSZ_H = 00000002
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC_L = 00000009
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC_H = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC2_L = 00000033
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC2_H = 00000002
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VACT_ST_L = 0000002d
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VACT_ST_H = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VACT_SZ_L = 000000e0
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VACT_SZ_H = 00000001
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_FIELD_CHG_L = 00000033
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_FIELD_CHG_H = 00000002
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VACT_ST2_L = 00000048
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VACT_ST2_H = 00000002
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC_TOP_HDMI_L = 00000009
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC_TOP_HDMI_H = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC_BOT_HDMI_L = 00000033
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_VSYNC_BOT_HDMI_H = 00000002
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_FIELD_TOP_HDMI_L = 00000009
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_FIELD_TOP_HDMI_H = 00000000
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_FIELD_BOT_HDMI_L = 00000033
s5p-hdmi s5pv210-hdmi: streamoff:HDMI_TG_FIELD_BOT_HDMI_H = 00000002
s5p-mixer s5p-mixer: MXR_STATUS = 00000086
s5p-mixer s5p-mixer: MXR_CFG = 00000184
s5p-mixer s5p-mixer: MXR_INT_EN = 00000700
s5p-mixer s5p-mixer: MXR_INT_STATUS = 00000000
s5p-mixer s5p-mixer: MXR_LAYER_CFG = 00000312
s5p-mixer s5p-mixer: MXR_VIDEO_CFG = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC0_CFG = 003007ff
s5p-mixer s5p-mixer: MXR_GRAPHIC0_BASE = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC0_SPAN = 000002d0
s5p-mixer s5p-mixer: MXR_GRAPHIC0_WH = 02d001e0
s5p-mixer s5p-mixer: MXR_GRAPHIC0_SXY = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC0_DXY = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_CFG = 003000ff
s5p-mixer s5p-mixer: MXR_GRAPHIC1_BASE = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_SPAN = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_WH = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_SXY = 00000000
s5p-mixer s5p-mixer: MXR_GRAPHIC1_DXY = 00000000
s5p-mixer s5p-mixer: VP_ENABLE = 00000002
s5p-mixer s5p-mixer: VP_SRESET = 00000000
s5p-mixer s5p-mixer: VP_SHADOW_UPDATE = 00000000
s5p-mixer s5p-mixer: VP_FIELD_ID = 00000000
s5p-mixer s5p-mixer: VP_MODE = 00000000
s5p-mixer s5p-mixer: VP_IMG_SIZE_Y = 00000000
s5p-mixer s5p-mixer: VP_IMG_SIZE_C = 00000000
s5p-mixer s5p-mixer: VP_PER_RATE_CTRL = 00000000
s5p-mixer s5p-mixer: VP_TOP_Y_PTR = 00000000
s5p-mixer s5p-mixer: VP_BOT_Y_PTR = 00000000
s5p-mixer s5p-mixer: VP_TOP_C_PTR = 00000000
s5p-mixer s5p-mixer: VP_BOT_C_PTR = 00000000
s5p-mixer s5p-mixer: VP_ENDIAN_MODE = 00000000
s5p-mixer s5p-mixer: VP_SRC_H_POSITION = 00000000
s5p-mixer s5p-mixer: VP_SRC_V_POSITION = 00000000
s5p-mixer s5p-mixer: VP_SRC_WIDTH = 00000000
s5p-mixer s5p-mixer: VP_SRC_HEIGHT = 00000000
s5p-mixer s5p-mixer: VP_DST_H_POSITION = 00000000
s5p-mixer s5p-mixer: VP_DST_V_POSITION = 00000000
s5p-mixer s5p-mixer: VP_DST_WIDTH = 00000000
s5p-mixer s5p-mixer: VP_DST_HEIGHT = 00000000
s5p-mixer s5p-mixer: VP_H_RATIO = 00000000
s5p-mixer s5p-mixer: VP_V_RATIO = 00000000
s5p-mixer s5p-mixer: mxr_output_put(0)
s5p-hdmi s5pv210-hdmi: hdmi_runtime_suspend
s5p-mixer s5p-mixer: suspend - start
s5p-mixer s5p-mixer: suspend - finished
Quoted 37 lines
Quoted 3 lines
Quoted 3 lines

root@linaro-developer:/opt#
Maybe I still miss some configuration in mach-smdkv210.c.

I don't think so, it all looks more or less OK now :)

Quoted 17 lines

The kernel print when run tvdemo:

root@linaro-developer:/opt# ./tvdemo /dev/video7 720 480 0 0
ERROR(main.c:80) : VIDIOC_S_FMT failed: Invalid argument
Aborted
root@linaro-developer:/opt# dmesg
s5p-mixer s5p-mixer: mxr_video_open:762
s5p-mixer s5p-mixer: resume - start
s5p-mixer s5p-mixer: resume - finished
s5p-hdmi s5pv210-hdmi: hdmi_g_mbus_fmt
s5p-mixer s5p-mixer: src.full_size = (720, 480)
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (0, 0)
s5p-mixer s5p-mixer: src.full_size = (720, 480)
Quoted 8 lines
s5p-mixer s5p-mixer: src.size = (720, 480)
s5p-mixer s5p-mixer: src.offset = (0, 0)
s5p-mixer s5p-mixer: dst.full_size = (720, 480)
s5p-mixer s5p-mixer: dst.size = (720, 480)
s5p-mixer s5p-mixer: dst.offset = (0, 0)
s5p-mixer s5p-mixer: ratio = (65536, 65536)
s5p-mixer s5p-mixer: mxr_s_fmt:322
s5p-mixer s5p-mixer: not recognized fourcc: 34524742

Yes, it must definitely be incorrect video node. Only the graph0/1 devices support RGB.

Regards,
Sylwester

#9 lore raw
Quoted 5 lines · Lonsn

HDMI output is OK now, it's a variable init question in 'struct v4l2_buffer buf' when call ioctl(fd, VIDIOC_DQBUF, &buf) in the hdmi example application. Add m.planes in buf then OK.
Thanks all!
I will continue to test the mfc decoder for s5pv210.

Well done! I was going to suggest exactly that to you. It's due to some change in v4l2-core in recent versions of the kernel. I'll try to update the example application when I find some time.

Regards,
Sylwester

#10 lore raw
In reply to Lonsn
Quoted 8 lines · Lonsn

Hi,
I have tested the kernel 3.8 with a SMDKV210 like board. But I failed with dma-pl330 and HDMI driver.
For dma-pl330, kernel print:
dma-pl330 dma-pl330.0: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.0 failed with error -22 dma-pl330 dma-pl330.1: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.1 failed with error -22

Maybe there is some issue with the PL330 DMA controller clocks and the read values are all 0 because the clocks are disabled ?

It seems arch/arm/mach-s5pv210/clock.c might be missing "apb_pclk" clock supply names, which I suspect may be required after commits:

commit 7c71b8eb268ee38235f7e924d943ea9d90e59469

Author: Inderpal Singh <[email protected]>
Date:   Fri Sep 7 12:14:48 2012 +0530

DMA: PL330: Remove redundant runtime_suspend/resume functions

The driver's runtime_suspend/resume functions just disable/enable the clock which is already being managed at AMBA bus level runtime_suspend/resume functions.

Hence, remove the driver's runtime_suspend/resume functions.

commit faf6fbc6f2ca3b34bf464a8bb079a998e571957c

Author: Inderpal Singh <[email protected]>
Date:   Fri Sep 7 12:14:47 2012 +0530

DMA: PL330: Remove controller clock enable/disable

The controller clock is being enabled/disabled in AMBA bus infrastructre in probe/remove functions. Hence, its not required at driver level probe/remove.

I have added people who made related changes at Cc, hopefully they can provide some help in debugging this.

Please try the following change:

8<--------------------

arch/arm/mach-s5pv210/clock.c +2 -6
index fcdf52d..87c7d3f 100644
@@ -214,11 +214,6 @@ static struct clk clk_pcmcdclk2 = {
         .name           = "pcmcdclk",
  };
 
-static struct clk dummy_apb_pclk = {
-       .name           = "apb_pclk",
-       .id             = -1,
-};
-
  static struct clk *clkset_vpllsrc_list[] = {
         [0] = &clk_fin_vpll,
         [1] = &clk_sclk_hdmi27m,
@@ -1333,6 +1328,8 @@ static struct clk_lookup s5pv210_clk_lookup[] = {
         CLKDEV_INIT(NULL, "spi_busclk0", &clk_p),
         CLKDEV_INIT("s5pv210-spi.0", "spi_busclk1", &clk_sclk_spi0.clk),
         CLKDEV_INIT("s5pv210-spi.1", "spi_busclk1", &clk_sclk_spi1.clk),
+       CLKDEV_INIT("dma-pl330.0", "apb_pclk", &init_clocks_off[0]),
+       CLKDEV_INIT("dma-pl330.1", "apb_pclk", &init_clocks_off[1]),
  };
 
  void __init s5pv210_register_clocks(void)
@@ -1361,6 +1358,5 @@ void __init s5pv210_register_clocks(void)
         for (ptr = 0; ptr < ARRAY_SIZE(clk_cdev); ptr++)
                 s3c_disable_clocks(clk_cdev[ptr], 1);
 
-       s3c24xx_register_clock(&dummy_apb_pclk);
         s3c_pwmclk_init();
  }

8<--------------------

If it works then we could make some cleaner patch.

Quoted 28 lines

For HDMI driver,
I have added the following HDMI related code to
arch/arm/mach-s5pv210/mach-smdkv210.c:
/* I2C module and id for HDMIPHY */
static struct i2c_board_info hdmiphy_info = {
I2C_BOARD_INFO("hdmiphy-s5pv210", 0x38),
};

i2c_register_board_info(2, smdkv210_i2c_devs2,
ARRAY_SIZE(smdkv210_i2c_devs2));

s5p_i2c_hdmiphy_set_platdata(NULL);
s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);

s3c_ide_set_platdata(&smdkv210_ide_pdata);

then kernel print:
s5p-hdmi s5pv210-hdmi: hdmiphy adapter request failed s5p-hdmi s5pv210-hdmi: probe failed
Samsung TV Mixer driver, (c) 2010-2011 Samsung Electronics Co., Ltd.

s5p-mixer s5p-mixer: probe start
s5p-mixer s5p-mixer: resources acquired s5p-mixer s5p-mixer: module s5p-hdmi provides no subdev! s5p-mixer s5p-mixer: module s5p-sdo provides no subdev! s5p-mixer s5p-mixer: failed to register any output s5p-mixer s5p-mixer: probe failed

Quoted 3 lines

Can anybody help me on how to config the HDMI output function in linux kernel 3.8? I mainly want to do video hardware decode using s5pv210 MFC and then display with HDMI.

For video playback (video post-processing) you might also need at least one FIMC device. Please refer to arch/arm/mach-goni.c for an example on how to add related devices to your board. You don't need the camera stuff, just add:

	&s5p_device_mfc,
	&s5p_device_mfc_l,
	&s5p_device_mfc_r,

	&s5p_device_fimc0,
	&s5p_device_fimc1,
	&s5p_device_fimc2,
	&s5p_device_fimc_md,

to smdkv210_devices[] and related Kconfig entries to make it compile. You'll need a function similar to goni_reserve() in your board file to reserve memory for the video codec.

Hope that helps.

#11 lore raw
Quoted 44 lines · Sylwester Nawrocki
Quoted 9 lines · Lonsn

Hi,
I have tested the kernel 3.8 with a SMDKV210 like board. But I failed with dma-pl330 and HDMI driver.
For dma-pl330, kernel print:
dma-pl330 dma-pl330.0: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.0 failed with error -22 dma-pl330 dma-pl330.1: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.1 failed with error -22

Maybe there is some issue with the PL330 DMA controller clocks and the read values are all 0 because the clocks are disabled ?

It seems arch/arm/mach-s5pv210/clock.c might be missing "apb_pclk" clock supply names, which I suspect may be required after commits:

commit 7c71b8eb268ee38235f7e924d943ea9d90e59469

Author: Inderpal Singh <[email protected]>
Date:   Fri Sep 7 12:14:48 2012 +0530

DMA: PL330: Remove redundant runtime_suspend/resume functions

The driver's runtime_suspend/resume functions just disable/enable the clock which is already being managed at AMBA bus level runtime_suspend/resume functions.

Hence, remove the driver's runtime_suspend/resume functions.

commit faf6fbc6f2ca3b34bf464a8bb079a998e571957c

Author: Inderpal Singh <[email protected]>
Date:   Fri Sep 7 12:14:47 2012 +0530

DMA: PL330: Remove controller clock enable/disable

The controller clock is being enabled/disabled in AMBA bus infrastructre in probe/remove functions. Hence, its not required at driver level probe/remove.

Quoted 7 lines

I have added people who made related changes at Cc, hopefully they can provide some help in debugging this.

The mentioned patches just removed the redundant clock enable/disable from the driver as clock is already being managed at amba bus level in the same code path. As per my understanding the issue should come even without these patches.

@Lonsn: Can you please test without these patches?

Thanks,
Inder

Quoted 92 lines

Please try the following change:

8<--------------------

arch/arm/mach-s5pv210/clock.c +2 -6
index fcdf52d..87c7d3f 100644
@@ -214,11 +214,6 @@ static struct clk clk_pcmcdclk2 = {
        .name           = "pcmcdclk",
 };
 
-static struct clk dummy_apb_pclk = {
-       .name           = "apb_pclk",
-       .id             = -1,
-};
-
 static struct clk *clkset_vpllsrc_list[] = {
        [0] = &clk_fin_vpll,
        [1] = &clk_sclk_hdmi27m,
@@ -1333,6 +1328,8 @@ static struct clk_lookup s5pv210_clk_lookup[] = {
        CLKDEV_INIT(NULL, "spi_busclk0", &clk_p),
        CLKDEV_INIT("s5pv210-spi.0", "spi_busclk1", &clk_sclk_spi0.clk),
        CLKDEV_INIT("s5pv210-spi.1", "spi_busclk1", &clk_sclk_spi1.clk),
+       CLKDEV_INIT("dma-pl330.0", "apb_pclk", &init_clocks_off[0]),
+       CLKDEV_INIT("dma-pl330.1", "apb_pclk", &init_clocks_off[1]),
 };
 
 void __init s5pv210_register_clocks(void)
@@ -1361,6 +1358,5 @@ void __init s5pv210_register_clocks(void)
        for (ptr = 0; ptr < ARRAY_SIZE(clk_cdev); ptr++)
                s3c_disable_clocks(clk_cdev[ptr], 1);
 
-       s3c24xx_register_clock(&dummy_apb_pclk);
        s3c_pwmclk_init();
 }

8<--------------------

If it works then we could make some cleaner patch.

Quoted 28 lines

For HDMI driver,
I have added the following HDMI related code to
arch/arm/mach-s5pv210/mach-smdkv210.c:
/* I2C module and id for HDMIPHY */
static struct i2c_board_info hdmiphy_info = {
I2C_BOARD_INFO("hdmiphy-s5pv210", 0x38),
};

i2c_register_board_info(2, smdkv210_i2c_devs2,
ARRAY_SIZE(smdkv210_i2c_devs2));

s5p_i2c_hdmiphy_set_platdata(NULL);
s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);

s3c_ide_set_platdata(&smdkv210_ide_pdata);

then kernel print:
s5p-hdmi s5pv210-hdmi: hdmiphy adapter request failed s5p-hdmi s5pv210-hdmi: probe failed
Samsung TV Mixer driver, (c) 2010-2011 Samsung Electronics Co., Ltd.

s5p-mixer s5p-mixer: probe start
s5p-mixer s5p-mixer: resources acquired s5p-mixer s5p-mixer: module s5p-hdmi provides no subdev! s5p-mixer s5p-mixer: module s5p-sdo provides no subdev! s5p-mixer s5p-mixer: failed to register any output s5p-mixer s5p-mixer: probe failed

Quoted 3 lines

Can anybody help me on how to config the HDMI output function in linux kernel 3.8? I mainly want to do video hardware decode using s5pv210 MFC and then display with HDMI.

For video playback (video post-processing) you might also need at least one FIMC device. Please refer to arch/arm/mach-goni.c for an example on how to add related devices to your board. You don't need the camera stuff, just add:

        &s5p_device_mfc,
        &s5p_device_mfc_l,
        &s5p_device_mfc_r,

        &s5p_device_fimc0,
        &s5p_device_fimc1,
        &s5p_device_fimc2,
        &s5p_device_fimc_md,

to smdkv210_devices[] and related Kconfig entries to make it compile. You'll need a function similar to goni_reserve() in your board file to reserve memory for the video codec.

Hope that helps.

#12 lore raw
Quoted 50 lines · Inderpal Singh
Quoted 48 lines · Sylwester Nawrocki
Quoted 9 lines · Lonsn

Hi,
I have tested the kernel 3.8 with a SMDKV210 like board. But I failed with dma-pl330 and HDMI driver.
For dma-pl330, kernel print:
dma-pl330 dma-pl330.0: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.0 failed with error -22 dma-pl330 dma-pl330.1: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.1 failed with error -22

Maybe there is some issue with the PL330 DMA controller clocks and the read values are all 0 because the clocks are disabled ?

It seems arch/arm/mach-s5pv210/clock.c might be missing "apb_pclk" clock supply names, which I suspect may be required after commits:

commit 7c71b8eb268ee38235f7e924d943ea9d90e59469

Author: Inderpal Singh <[email protected]>
Date:   Fri Sep 7 12:14:48 2012 +0530

DMA: PL330: Remove redundant runtime_suspend/resume functions

The driver's runtime_suspend/resume functions just disable/enable the clock which is already being managed at AMBA bus level runtime_suspend/resume functions.

Hence, remove the driver's runtime_suspend/resume functions.

commit faf6fbc6f2ca3b34bf464a8bb079a998e571957c

Author: Inderpal Singh <[email protected]>
Date:   Fri Sep 7 12:14:47 2012 +0530

DMA: PL330: Remove controller clock enable/disable

The controller clock is being enabled/disabled in AMBA bus infrastructre in probe/remove functions. Hence, its not required at driver level probe/remove.

Quoted 8 lines
Quoted 3 lines

I have added people who made related changes at Cc, hopefully they can provide some help in debugging this.

The mentioned patches just removed the redundant clock enable/disable from the driver as clock is already being managed at amba bus level in the same code path. As per my understanding the issue should come even without these patches.

But were the clocks managed directly by the pl330 driver same as those managed at amba bus level ? The first patch as above removed chunk

@@ -2887,24 +2884,17 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)

                goto probe_err1;
        }

- pdmac->clk = clk_get(&adev->dev, "dma");
- if (IS_ERR(pdmac->clk)) {

-               dev_err(&adev->dev, "Cannot get operation clock.\n");
-               ret = -EINVAL;
-               goto probe_err2;

- }
-

which suggest the driver was enabling directly "dma" clocks, defined at S5PV210 platform level as:

        {
                .name           = "dma",
                .devname        = "dma-pl330.0",
                .parent         = &clk_hclk_psys.clk,
                .enable         = s5pv210_clk_ip0_ctrl,
                .ctrlbit        = (1 << 3),
        }, {
                .name           = "dma",
                .devname        = "dma-pl330.1",
                .parent         = &clk_hclk_psys.clk,
                .enable         = s5pv210_clk_ip0_ctrl,
                .ctrlbit        = (1 << 4),
        }, {

And amba bus was getting only dummy clocks behind "apb_pclk" clock conn_id.

Quoted 1 line

@Lonsn: Can you please test without these patches?

I suspect reverting only patch
DMA: PL330: Remove redundant runtime_suspend/resume functions with PM_RUNTIME enabled might fix the issue.

--

Regards,
Sylwester

#13 lore raw
Quoted 93 lines · Sylwester Nawrocki
Quoted 50 lines · Inderpal Singh
Quoted 48 lines · Sylwester Nawrocki
Quoted 9 lines · Lonsn

Hi,
I have tested the kernel 3.8 with a SMDKV210 like board. But I failed with dma-pl330 and HDMI driver.
For dma-pl330, kernel print:
dma-pl330 dma-pl330.0: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.0 failed with error -22 dma-pl330 dma-pl330.1: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.1 failed with error -22

Maybe there is some issue with the PL330 DMA controller clocks and the read values are all 0 because the clocks are disabled ?

It seems arch/arm/mach-s5pv210/clock.c might be missing "apb_pclk" clock supply names, which I suspect may be required after commits:

commit 7c71b8eb268ee38235f7e924d943ea9d90e59469

Author: Inderpal Singh <[email protected]>
Date:   Fri Sep 7 12:14:48 2012 +0530

DMA: PL330: Remove redundant runtime_suspend/resume functions

The driver's runtime_suspend/resume functions just disable/enable the clock which is already being managed at AMBA bus level runtime_suspend/resume functions.

Hence, remove the driver's runtime_suspend/resume functions.

commit faf6fbc6f2ca3b34bf464a8bb079a998e571957c

Author: Inderpal Singh <[email protected]>
Date:   Fri Sep 7 12:14:47 2012 +0530

DMA: PL330: Remove controller clock enable/disable

The controller clock is being enabled/disabled in AMBA bus infrastructre in probe/remove functions. Hence, its not required at driver level probe/remove.

Quoted 8 lines
Quoted 3 lines

I have added people who made related changes at Cc, hopefully they can provide some help in debugging this.

The mentioned patches just removed the redundant clock enable/disable from the driver as clock is already being managed at amba bus level in the same code path. As per my understanding the issue should come even without these patches.

But were the clocks managed directly by the pl330 driver same as those managed at amba bus level ? The first patch as above removed chunk

(quoted diff) +0 -7
@@ -2887,24 +2884,17 @@ pl330_probe(struct amba_device *adev, const struct
 amba_id *id)
                goto probe_err1;
        }
 
-       pdmac->clk = clk_get(&adev->dev, "dma");
-       if (IS_ERR(pdmac->clk)) {
-               dev_err(&adev->dev, "Cannot get operation clock.\n");
-               ret = -EINVAL;
-               goto probe_err2;
-       }
-
 

which suggest the driver was enabling directly "dma" clocks, defined at S5PV210 platform level as:

        {
                .name           = "dma",
                .devname        = "dma-pl330.0",
                .parent         = &clk_hclk_psys.clk,
                .enable         = s5pv210_clk_ip0_ctrl,
                .ctrlbit        = (1 << 3),
        }, {
                .name           = "dma",
                .devname        = "dma-pl330.1",
                .parent         = &clk_hclk_psys.clk,
                .enable         = s5pv210_clk_ip0_ctrl,
                .ctrlbit        = (1 << 4),
        }, {
Quoted 3 lines

And amba bus was getting only dummy clocks behind "apb_pclk" clock conn_id.

Ahh Yes, I had missed this point. So the changes you suggested needs to be done as confirmed by Lonsn.

Thanks Lonsn for bringing this up :-)

Regards,
Inder

Quoted 10 lines
Quoted 1 line

@Lonsn: Can you please test without these patches?

I suspect reverting only patch
DMA: PL330: Remove redundant runtime_suspend/resume functions with PM_RUNTIME enabled might fix the issue.

--

Regards,
Sylwester

author
#14 lore raw
In reply to Inderpal Singh

? 2013/2/27 18:51, Inderpal Singh ??:

Quoted 54 lines
Quoted 44 lines · Sylwester Nawrocki
Quoted 9 lines · Lonsn

Hi,
I have tested the kernel 3.8 with a SMDKV210 like board. But I failed with dma-pl330 and HDMI driver.
For dma-pl330, kernel print:
dma-pl330 dma-pl330.0: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.0 failed with error -22 dma-pl330 dma-pl330.1: PERIPH_ID 0x0, PCELL_ID 0x0 !
dma-pl330: probe of dma-pl330.1 failed with error -22

Maybe there is some issue with the PL330 DMA controller clocks and the read values are all 0 because the clocks are disabled ?

It seems arch/arm/mach-s5pv210/clock.c might be missing "apb_pclk" clock supply names, which I suspect may be required after commits:

commit 7c71b8eb268ee38235f7e924d943ea9d90e59469

Author: Inderpal Singh <[email protected]>
Date:   Fri Sep 7 12:14:48 2012 +0530

DMA: PL330: Remove redundant runtime_suspend/resume functions

The driver's runtime_suspend/resume functions just disable/enable the clock which is already being managed at AMBA bus level runtime_suspend/resume functions.

Hence, remove the driver's runtime_suspend/resume functions.

commit faf6fbc6f2ca3b34bf464a8bb079a998e571957c

Author: Inderpal Singh <[email protected]>
Date:   Fri Sep 7 12:14:47 2012 +0530

DMA: PL330: Remove controller clock enable/disable

The controller clock is being enabled/disabled in AMBA bus infrastructre in probe/remove functions. Hence, its not required at driver level probe/remove.

Quoted 7 lines

I have added people who made related changes at Cc, hopefully they can provide some help in debugging this.

Quoted 6 lines

The mentioned patches just removed the redundant clock enable/disable from the driver as clock is already being managed at amba bus level in the same code path. As per my understanding the issue should come even without these patches.

@Lonsn: Can you please test without these patches?

Inder, I have made the DMA clock change according to Sylwester's suggetstions and it works!
Now kernel prints:
------------------------------------>
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)

s3c-fb s5pv210-fb: window 0: fb
dma-pl330 dma-pl330.0: Loaded driver for PL330 DMAC-267056
dma-pl330 dma-pl330.0:  DBUFF-8x4bytes Num_Chans-8 Num_Peri-32 Num_Events-32
dma-pl330 dma-pl330.1: Loaded driver for PL330 DMAC-267056
dma-pl330 dma-pl330.1:  DBUFF-8x4bytes Num_Chans-8 Num_Peri-32 Num_Events-32
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
s5pv210-uart.0: ttySAC0 at MMIO 0xe2900000 (irq = 74) is a S3C6400/10

------------------------------------------>

Quoted 96 lines

Thanks,
Inder

Quoted 92 lines

Please try the following change:

8<--------------------

arch/arm/mach-s5pv210/clock.c +2 -6
index fcdf52d..87c7d3f 100644
@@ -214,11 +214,6 @@ static struct clk clk_pcmcdclk2 = {
         .name           = "pcmcdclk",
  };
 
-static struct clk dummy_apb_pclk = {
-       .name           = "apb_pclk",
-       .id             = -1,
-};
-
  static struct clk *clkset_vpllsrc_list[] = {
         [0] = &clk_fin_vpll,
         [1] = &clk_sclk_hdmi27m,
@@ -1333,6 +1328,8 @@ static struct clk_lookup s5pv210_clk_lookup[] = {
         CLKDEV_INIT(NULL, "spi_busclk0", &clk_p),
         CLKDEV_INIT("s5pv210-spi.0", "spi_busclk1", &clk_sclk_spi0.clk),
         CLKDEV_INIT("s5pv210-spi.1", "spi_busclk1", &clk_sclk_spi1.clk),
+       CLKDEV_INIT("dma-pl330.0", "apb_pclk", &init_clocks_off[0]),
+       CLKDEV_INIT("dma-pl330.1", "apb_pclk", &init_clocks_off[1]),
  };
 
  void __init s5pv210_register_clocks(void)
@@ -1361,6 +1358,5 @@ void __init s5pv210_register_clocks(void)
         for (ptr = 0; ptr < ARRAY_SIZE(clk_cdev); ptr++)
                 s3c_disable_clocks(clk_cdev[ptr], 1);
 
-       s3c24xx_register_clock(&dummy_apb_pclk);
         s3c_pwmclk_init();
  }

8<--------------------

If it works then we could make some cleaner patch.

Quoted 28 lines

For HDMI driver,
I have added the following HDMI related code to
arch/arm/mach-s5pv210/mach-smdkv210.c:
/* I2C module and id for HDMIPHY */
static struct i2c_board_info hdmiphy_info = {
I2C_BOARD_INFO("hdmiphy-s5pv210", 0x38),
};

i2c_register_board_info(2, smdkv210_i2c_devs2,
ARRAY_SIZE(smdkv210_i2c_devs2));

s5p_i2c_hdmiphy_set_platdata(NULL);
s5p_hdmi_set_platdata(&hdmiphy_info, NULL, 0);

s3c_ide_set_platdata(&smdkv210_ide_pdata);

then kernel print:
s5p-hdmi s5pv210-hdmi: hdmiphy adapter request failed s5p-hdmi s5pv210-hdmi: probe failed
Samsung TV Mixer driver, (c) 2010-2011 Samsung Electronics Co., Ltd.

s5p-mixer s5p-mixer: probe start
s5p-mixer s5p-mixer: resources acquired s5p-mixer s5p-mixer: module s5p-hdmi provides no subdev! s5p-mixer s5p-mixer: module s5p-sdo provides no subdev! s5p-mixer s5p-mixer: failed to register any output s5p-mixer s5p-mixer: probe failed

Quoted 3 lines

Can anybody help me on how to config the HDMI output function in linux kernel 3.8? I mainly want to do video hardware decode using s5pv210 MFC and then display with HDMI.

For video playback (video post-processing) you might also need at least one FIMC device. Please refer to arch/arm/mach-goni.c for an example on how to add related devices to your board. You don't need the camera stuff, just add:

         &s5p_device_mfc,
         &s5p_device_mfc_l,
         &s5p_device_mfc_r,

         &s5p_device_fimc0,
         &s5p_device_fimc1,
         &s5p_device_fimc2,
         &s5p_device_fimc_md,

to smdkv210_devices[] and related Kconfig entries to make it compile. You'll need a function similar to goni_reserve() in your board file to reserve memory for the video codec.

Hope that helps.

Yes, I have added fimc0,fimc1,fimc2,fimc_md and reserve MFC memory. But currently HDMI output doesn't work correctly yet, I would try to see the HDMI output first and then video decoder.
Regards,