Linux Framebuffer Layer development
 help / color / mirror / Atom feed
* Re: Getting FB to work in Console
From: David J Ring Jr @ 2011-11-13 22:48 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

[-- Attachment #1: Type: TEXT/PLAIN, Size: 50805 bytes --]

I get these drivers:


arcfb.ko
arkfb.ko
aty
backlight
cirrusfb.ko
console
cyber2000fb.ko
display
fb_ddc.ko
fb_sys_fops.ko
geode
hecubafb.ko
hgafb.ko
i810
kyro
macmodes.ko
matrox
mb862xx
metronomefb.ko
n411.ko
neofb.ko
nvidia
output.ko
pm2fb.ko
pm3fb.ko
s1d13xxxfb.ko
s3fb.ko
savage
sis
sm501fb.ko
sstfb.ko
svgalib.ko
syscopyarea.ko
sysfillrect.ko
sysimgblt.ko
tdfxfb.ko
tridentfb.ko
uvesafb.ko
vermilion
vfb.ko
vga16fb.ko
vgastate.ko
via
vt8623fb.ko

Is there a universal driver?

Here is the output of dmesg:


[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.32-5-686 (Debian 2.6.32-38) (ben@decadent.org.uk) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Mon Oct 3 04:15:24 UTC 2011
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   NSC Geode by NSC
[    0.000000]   Cyrix CyrixInstead
[    0.000000]   Centaur CentaurHauls
[    0.000000]   Transmeta GenuineTMx86
[    0.000000]   Transmeta TransmetaCPU
[    0.000000]   UMC UMC UMC UMC
[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009f400 (usable)
[    0.000000]  BIOS-e820: 000000000009f400 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000d2000 - 00000000000d4000 (reserved)
[    0.000000]  BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 00000000bd6b3000 (usable)
[    0.000000]  BIOS-e820: 00000000bd6b3000 - 00000000bd6b9000 (reserved)
[    0.000000]  BIOS-e820: 00000000bd6b9000 - 00000000bd7b2000 (usable)
[    0.000000]  BIOS-e820: 00000000bd7b2000 - 00000000bd80f000 (reserved)
[    0.000000]  BIOS-e820: 00000000bd80f000 - 00000000bd907000 (usable)
[    0.000000]  BIOS-e820: 00000000bd907000 - 00000000bdb0f000 (reserved)
[    0.000000]  BIOS-e820: 00000000bdb0f000 - 00000000bdb18000 (usable)
[    0.000000]  BIOS-e820: 00000000bdb18000 - 00000000bdb1f000 (reserved)
[    0.000000]  BIOS-e820: 00000000bdb1f000 - 00000000bdb63000 (usable)
[    0.000000]  BIOS-e820: 00000000bdb63000 - 00000000bdb9f000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000bdb9f000 - 00000000bdc00000 (ACPI data)
[    0.000000]  BIOS-e820: 0000000100000000 - 0000000140000000 (usable)
[    0.000000] DMI present.
[    0.000000] last_pfn = 0xbdb63 max_arch_pfn = 0x100000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0C0000000 mask FC0000000 uncachable
[    0.000000]   1 base 000000000 mask F00000000 write-back
[    0.000000]   2 base 100000000 mask FC0000000 write-back
[    0.000000]   3 base 0BDC00000 mask FFFC00000 uncachable
[    0.000000]   4 disabled
[    0.000000]   5 disabled
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] e820 update range: 00000000bdc00000 - 00000000be000000 (usable) ==> (reserved)
[    0.000000] e820 update range: 00000000c0000000 - 0000000100000000 (usable) ==> (reserved)
[    0.000000] initial memory mapped : 0 - 01800000
[    0.000000] init_memory_mapping: 0000000000000000-00000000373fe000
[    0.000000]  0000000000 - 0000400000 page 4k
[    0.000000]  0000400000 - 0037000000 page 2M
[    0.000000]  0037000000 - 00373fe000 page 4k
[    0.000000] kernel direct mapping tables up to 373fe000 @ 7000-d000
[    0.000000] RAMDISK: 3759a000 - 37fef5a8
[    0.000000] Allocated new RAMDISK: 00100000 - 00b555a8
[    0.000000] Move RAMDISK from 000000003759a000 - 0000000037fef5a7 to 00100000 - 00b555a7
[    0.000000] ACPI: RSDP 000f7190 00024 (v02 LENOVO)
[    0.000000] ACPI: XSDT bdbf6067 0006C (v01 LENOVO TP-6G    00000000  LTP 00000000)
[    0.000000] ACPI: FACP bdbe8000 000F4 (v03 LENOVO TP-6G    00000001 ALAN 00000001)
[    0.000000] ACPI: DSDT bdbe9000 06B23 (v02 LENOVO TP-6G    00000001 INTL 20050624)
[    0.000000] ACPI: FACS bdb9efc0 00040
[    0.000000] ACPI: HPET bdbfcd86 00038 (v01 LENOVO TP-6G    00000001 LOHR 0000005A)
[    0.000000] ACPI: MCFG bdbfcdbe 0003C (v01 LENOVO TP-6G    00000001 LOHR 0000005A)
[    0.000000] ACPI: SLIC bdbfcdfa 00176 (v01 LENOVO TP-6G    00000001 TBD  00000001)
[    0.000000] ACPI: APIC bdbfcf70 00068 (v01 PTLTD  ? APIC   00000000  LTP 00000000)
[    0.000000] ACPI: BOOT bdbfcfd8 00028 (v01 PTLTD  $SBFTBL$ 00000000  LTP 00000001)
[    0.000000] ACPI: SSDT bdbe7000 00655 (v01  PmRef    CpuPm 00003000 INTL 20050624)
[    0.000000] ACPI: SSDT bdbe6000 00259 (v01  PmRef  Cpu0Tst 00003000 INTL 20050624)
[    0.000000] ACPI: SSDT bdbe5000 0020F (v01  PmRef    ApTst 00003000 INTL 20050624)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 2151MB HIGHMEM available.
[    0.000000] 883MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 373fe000
[    0.000000]   low ram: 0 - 373fe000
[    0.000000]   node 0 low ram: 00000000 - 373fe000
[    0.000000]   node 0 bootmap 00009000 - 0000fe80
[    0.000000] (9 early reservations) ==> bootmem [0000000000 - 00373fe000]
[    0.000000]   #0 [0000000000 - 0000001000]   BIOS data page ==> [0000000000 - 0000001000]
[    0.000000]   #1 [0000001000 - 0000002000]    EX TRAMPOLINE ==> [0000001000 - 0000002000]
[    0.000000]   #2 [0000006000 - 0000007000]       TRAMPOLINE ==> [0000006000 - 0000007000]
[    0.000000]   #3 [0001000000 - 00014cccf4]    TEXT DATA BSS ==> [0001000000 - 00014cccf4]
[    0.000000]   #4 [000009f400 - 0000100000]    BIOS reserved ==> [000009f400 - 0000100000]
[    0.000000]   #5 [00014cd000 - 00014d3184]              BRK ==> [00014cd000 - 00014d3184]
[    0.000000]   #6 [0000007000 - 0000009000]          PGTABLE ==> [0000007000 - 0000009000]
[    0.000000]   #7 [0000100000 - 0000b555a8]      NEW RAMDISK ==> [0000100000 - 0000b555a8]
[    0.000000]   #8 [0000009000 - 0000010000]          BOOTMAP ==> [0000009000 - 0000010000]
[    0.000000] found SMP MP-table at [c00f7230] f7230
[    0.000000] Zone PFN ranges:
[    0.000000]   DMA      0x00000000 -> 0x00001000
[    0.000000]   Normal   0x00001000 -> 0x000373fe
[    0.000000]   HighMem  0x000373fe -> 0x000bdb63
[    0.000000] Movable zone start PFN for each node
[    0.000000] early_node_map[6] active PFN ranges
[    0.000000]     0: 0x00000000 -> 0x0000009f
[    0.000000]     0: 0x00000100 -> 0x000bd6b3
[    0.000000]     0: 0x000bd6b9 -> 0x000bd7b2
[    0.000000]     0: 0x000bd80f -> 0x000bd907
[    0.000000]     0: 0x000bdb0f -> 0x000bdb18
[    0.000000]     0: 0x000bdb1f -> 0x000bdb63
[    0.000000] On node 0 totalpages: 776336
[    0.000000] free_area_init_node: node 0, pgdat c13b4860, node_mem_map c14d5000
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3967 pages, LIFO batch:0
[    0.000000]   Normal zone: 1736 pages used for memmap
[    0.000000]   Normal zone: 220470 pages, LIFO batch:31
[    0.000000]   HighMem zone: 4303 pages used for memmap
[    0.000000]   HighMem zone: 545828 pages, LIFO batch:31
[    0.000000] Using APIC driver default
[    0.000000] ACPI: PM-Timer IO Port: 0x408
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 high edge)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs
[    0.000000] nr_irqs_gsi: 24
[    0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
[    0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000d2000
[    0.000000] PM: Registered nosave memory: 00000000000d2000 - 00000000000d4000
[    0.000000] PM: Registered nosave memory: 00000000000d4000 - 00000000000dc000
[    0.000000] PM: Registered nosave memory: 00000000000dc000 - 0000000000100000
[    0.000000] Allocating PCI resources starting at bdc00000 (gap: bdc00000:42400000)
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:2 nr_node_ids:1
[    0.000000] PERCPU: Embedded 14 pages/cpu @c3000000 s34328 r0 d23016 u2097152
[    0.000000] pcpu-alloc: s34328 r0 d23016 u2097152 alloc=1*4194304
[    0.000000] pcpu-alloc: [0] 0 1 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 770265
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.32-5-686 root=UUID=cb1268f1-4e20-4409-87b1-3d882c14102c ro nomodeset
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Enabling fast FPU save and restore... done.
[    0.000000] Enabling unmasked SIMD FPU exception support... done.
[    0.000000] Initializing CPU#0
[    0.000000] Initializing HighMem for node 0 (000373fe:000bdb63)
[    0.000000] Memory: 3063500k/3108236k available (2504k kernel code, 40824k reserved, 1328k data, 380k init, 2200524k highmem)
[    0.000000] virtual kernel memory layout:
[    0.000000]     fixmap  : 0xffd56000 - 0xfffff000   (2724 kB)
[    0.000000]     pkmap   : 0xff400000 - 0xff800000   (4096 kB)
[    0.000000]     vmalloc : 0xf7bfe000 - 0xff3fe000   ( 120 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf73fe000   ( 883 MB)
[    0.000000]       .init : 0xc13bf000 - 0xc141e000   ( 380 kB)
[    0.000000]       .data : 0xc12721f1 - 0xc13be480   (1328 kB)
[    0.000000]       .text : 0xc1000000 - 0xc12721f1   (2504 kB)
[    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[    0.000000] SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:1280
[    0.000000] Extended CMOS year: 2000
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] console [tty0] enabled
[    0.000000] hpet clockevent registered
[    0.000000] Fast TSC calibration using PIT
[    0.000000] Detected 2161.581 MHz processor.
[    0.004003] Calibrating delay loop (skipped), value calculated using timer frequency.. 4323.16 BogoMIPS (lpj=8646324)
[    0.004139] Security Framework initialized
[    0.004201] SELinux:  Disabled at boot.
[    0.004265] Mount-cache hash table entries: 512
[    0.004438] Initializing cgroup subsys ns
[    0.004500] Initializing cgroup subsys cpuacct
[    0.004563] Initializing cgroup subsys devices
[    0.004624] Initializing cgroup subsys freezer
[    0.004684] Initializing cgroup subsys net_cls
[    0.004765] CPU: L1 I cache: 32K, L1 D cache: 32K
[    0.004868] CPU: L2 cache: 1024K
[    0.004928] CPU: Physical Processor ID: 0
[    0.004987] CPU: Processor Core ID: 0
[    0.005049] mce: CPU supports 6 MCE banks
[    0.005114] CPU0: Thermal monitoring enabled (TM2)
[    0.005177] using mwait in idle threads.
[    0.005241] Performance Events: Core2 events, Intel PMU driver.
[    0.005391] ... version:                2
[    0.005450] ... bit width:              40
[    0.005510] ... generic registers:      2
[    0.005569] ... value mask:             000000ffffffffff
[    0.005631] ... max period:             000000007fffffff
[    0.005693] ... fixed-purpose events:   3
[    0.005753] ... event mask:             0000000700000003
[    0.005816] Checking 'hlt' instruction... OK.
[    0.021105] ACPI: Core revision 20090903
[    0.032058] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.032510] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.074335] CPU0: Intel(R) Pentium(R) Dual  CPU  T3400  @ 2.16GHz stepping 0d
[    0.076001] Booting processor 1 APIC 0x1 ip 0x6000
[    0.008000] Initializing CPU#1
[    0.008000] CPU: L1 I cache: 32K, L1 D cache: 32K
[    0.008000] CPU: L2 cache: 1024K
[    0.008000] CPU: Physical Processor ID: 0
[    0.008000] CPU: Processor Core ID: 1
[    0.008000] CPU1: Thermal monitoring enabled (TM2)
[    0.160096] CPU1: Intel(R) Pentium(R) Dual  CPU  T3400  @ 2.16GHz stepping 0d
[    0.160599] checking TSC synchronization [CPU#0 -> CPU#1]: passed.
[    0.164047] Brought up 2 CPUs
[    0.164107] Total of 2 processors activated (8645.66 BogoMIPS).
[    0.164739] CPU0 attaching sched-domain:
[    0.164743]  domain 0: span 0-1 level MC
[    0.164745]   groups: group c3003778 cpus 0 group c3203778 cpus 1
[    0.164751] CPU1 attaching sched-domain:
[    0.164753]  domain 0: span 0-1 level MC
[    0.164755]   groups: group c3203778 cpus 1 group c3003778 cpus 0
[    0.164807] devtmpfs: initialized
[    0.164966] regulator: core version 0.5
[    0.164966] NET: Registered protocol family 16
[    0.164966] ACPI: bus type pci registered
[    0.164966] PCI: MCFG configuration 0: base e0000000 segment 0 buses 0 - 255
[    0.164966] PCI: Not using MMCONFIG.
[    0.164966] PCI: PCI BIOS revision 3.00 entry at 0xfde11, last bus=8
[    0.165017] PCI: Using configuration type 1 for base access
[    0.168023] bio: create slab <bio-0> at 0
[    0.168830] ACPI: EC: Look up EC in DSDT
[    0.172270] ACPI: BIOS _OSI(Linux) query ignored
[    0.173667] ACPI: Interpreter enabled
[    0.173728] ACPI: (supports S0 S3 S4 S5)
[    0.173973] ACPI: Using IOAPIC for interrupt routing
[    0.174080] PCI: MCFG configuration 0: base e0000000 segment 0 buses 0 - 255
[    0.212432] PCI: MCFG area at e0000000 reserved in ACPI motherboard resources
[    0.212497] PCI: Using MMCONFIG for extended config space
[    0.254855] ACPI: EC: GPE = 0x1c, I/O: command/status = 0x66, data = 0x62
[    0.255220] ACPI: No dock devices found.
[    0.255750] ACPI: PCI Root Bridge [PCI0] (0000:00)
[    0.255864] DMAR: Forcing write-buffer flush capability
[    0.255926] DMAR: Disabling IOMMU for graphics on this chipset
[    0.256035] pci 0000:00:02.0: reg 10 64bit mmio: [0xf4000000-0xf43fffff]
[    0.256042] pci 0000:00:02.0: reg 18 64bit mmio pref: [0xd0000000-0xdfffffff]
[    0.256047] pci 0000:00:02.0: reg 20 io port: [0x1800-0x1807]
[    0.256089] pci 0000:00:02.1: reg 10 64bit mmio: [0xf4400000-0xf44fffff]
[    0.256217] pci 0000:00:1a.0: reg 20 io port: [0x1820-0x183f]
[    0.256315] pci 0000:00:1a.1: reg 20 io port: [0x1840-0x185f]
[    0.256412] pci 0000:00:1a.2: reg 20 io port: [0x1860-0x187f]
[    0.256510] pci 0000:00:1a.7: reg 10 32bit mmio: [0xf4a04800-0xf4a04bff]
[    0.256581] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold
[    0.256648] pci 0000:00:1a.7: PME# disabled
[    0.256765] pci 0000:00:1b.0: reg 10 64bit mmio: [0xf4a00000-0xf4a03fff]
[    0.256828] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.256895] pci 0000:00:1b.0: PME# disabled
[    0.257051] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.257117] pci 0000:00:1c.0: PME# disabled
[    0.257275] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
[    0.257342] pci 0000:00:1c.1: PME# disabled
[    0.257499] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold
[    0.257566] pci 0000:00:1c.2: PME# disabled
[    0.257724] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold
[    0.257791] pci 0000:00:1c.3: PME# disabled
[    0.257951] pci 0000:00:1c.5: PME# supported from D0 D3hot D3cold
[    0.258017] pci 0000:00:1c.5: PME# disabled
[    0.258155] pci 0000:00:1d.0: reg 20 io port: [0x1880-0x189f]
[    0.258254] pci 0000:00:1d.1: reg 20 io port: [0x18a0-0x18bf]
[    0.258352] pci 0000:00:1d.2: reg 20 io port: [0x18c0-0x18df]
[    0.258449] pci 0000:00:1d.7: reg 10 32bit mmio: [0xf4a04c00-0xf4a04fff]
[    0.258520] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold
[    0.258587] pci 0000:00:1d.7: PME# disabled
[    0.258914] pci 0000:00:1f.2: reg 10 io port: [0x1818-0x181f]
[    0.258922] pci 0000:00:1f.2: reg 14 io port: [0x180c-0x180f]
[    0.258930] pci 0000:00:1f.2: reg 18 io port: [0x1810-0x1817]
[    0.258939] pci 0000:00:1f.2: reg 1c io port: [0x1808-0x180b]
[    0.258947] pci 0000:00:1f.2: reg 20 io port: [0x18e0-0x18ff]
[    0.258955] pci 0000:00:1f.2: reg 24 32bit mmio: [0xf4a04000-0xf4a047ff]
[    0.259004] pci 0000:00:1f.2: PME# supported from D3hot
[    0.259069] pci 0000:00:1f.2: PME# disabled
[    0.259171] pci 0000:00:1f.3: reg 10 64bit mmio: [0x000000-0x0000ff]
[    0.259191] pci 0000:00:1f.3: reg 20 io port: [0x1c00-0x1c1f]
[    0.259297] pci 0000:02:00.0: reg 10 32bit mmio: [0xf4500000-0xf45000ff]
[    0.259375] pci 0000:02:00.0: reg 30 32bit mmio pref: [0x000000-0x00ffff]
[    0.259542] pci 0000:02:00.2: reg 10 32bit mmio: [0xf4500400-0xf45004ff]
[    0.259778] pci 0000:02:00.3: reg 10 32bit mmio: [0xf4500800-0xf45008ff]
[    0.268236] pci 0000:00:1c.0: bridge 32bit mmio: [0xf4500000-0xf45fffff]
[    0.268516] pci 0000:04:00.0: reg 10 64bit mmio: [0xf4700000-0xf4703fff]
[    0.268737] pci 0000:04:00.0: supports D1 D2
[    0.268739] pci 0000:04:00.0: PME# supported from D0 D3hot D3cold
[    0.268847] pci 0000:04:00.0: PME# disabled
[    0.269437] pci 0000:00:1c.2: bridge 32bit mmio: [0xf4700000-0xf47fffff]
[    0.269504] pci 0000:00:1c.3: bridge io port: [0x2000-0x2fff]
[    0.269509] pci 0000:00:1c.3: bridge 32bit mmio: [0xf0000000-0xf3ffffff]
[    0.269518] pci 0000:00:1c.3: bridge 64bit mmio pref: [0xf6000000-0xf7ffffff]
[    0.269741] pci 0000:07:00.0: reg 10 64bit mmio: [0xf4600000-0xf460ffff]
[    0.269982] pci 0000:07:00.0: PME# supported from D3hot D3cold
[    0.270088] pci 0000:07:00.0: PME# disabled
[    0.270691] pci 0000:00:1c.5: bridge 32bit mmio: [0xf4600000-0xf46fffff]
[    0.270765] pci 0000:00:1e.0: transparent bridge
[    0.270875] pci_bus 0000:00: on NUMA node 0
[    0.270880] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[    0.271015] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT]
[    0.271102] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT]
[    0.271205] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT]
[    0.271268] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT]
[    0.271339] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP04._PRT]
[    0.271405] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP06._PRT]
[    0.283764] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15)
[    0.284408] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 *11 12 14 15)
[    0.285068] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 *3 4 5 6 7 10 12 14 15)
[    0.285725] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10
[    0.286436] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 *7 10 12 14 15)
[    0.287094] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 *11 12 14 15)
[    0.287752] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 *10 12 14 15)
[    0.288445] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 *4 5 6 7 11 12 14 15)
[    0.289101] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.289192] vgaarb: loaded
[    0.289263] PCI: Using ACPI for IRQ routing
[    0.289263] HPET: 4 timers in total, 0 timers will be used for per-cpu timer
[    0.289263] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0
[    0.289263] hpet0: 4 comparators, 64-bit 14.318180 MHz counter
[    0.296019] Switching to clocksource tsc
[    0.297233] pnp: PnP ACPI init
[    0.297302] ACPI: bus type pnp registered
[    0.315852] pnp: PnP ACPI: found 10 devices
[    0.315915] ACPI: ACPI bus type pnp unregistered
[    0.315977] PnPBIOS: Disabled by ACPI PNP
[    0.316046] system 00:03: iomem range 0xfed00000-0xfed003ff has been reserved
[    0.316117] system 00:05: ioport range 0x680-0x69f has been reserved
[    0.316182] system 00:05: ioport range 0xffff-0xffff has been reserved
[    0.316247] system 00:05: ioport range 0xffff-0xffff has been reserved
[    0.316312] system 00:05: ioport range 0xffff-0xffff has been reserved
[    0.316377] system 00:05: ioport range 0x400-0x47f has been reserved
[    0.316442] system 00:05: ioport range 0x480-0x48f has been reserved
[    0.316507] system 00:05: ioport range 0x1180-0x11ff has been reserved
[    0.316571] system 00:05: ioport range 0x164e-0x164f has been reserved
[    0.316636] system 00:05: ioport range 0xfe00-0xfe00 has been reserved
[    0.316701] system 00:05: ioport range 0xff00-0xff7f has been reserved
[    0.316770] system 00:09: iomem range 0xfed1c000-0xfed1ffff has been reserved
[    0.316836] system 00:09: iomem range 0xfed10000-0xfed13fff has been reserved
[    0.316902] system 00:09: iomem range 0xfed18000-0xfed18fff has been reserved
[    0.316968] system 00:09: iomem range 0xfed19000-0xfed19fff has been reserved
[    0.317034] system 00:09: iomem range 0xe0000000-0xefffffff has been reserved
[    0.317100] system 00:09: iomem range 0xfed20000-0xfed3ffff has been reserved
[    0.317166] system 00:09: iomem range 0xfed40000-0xfed44fff has been reserved
[    0.317232] system 00:09: iomem range 0xfed45000-0xfed8ffff has been reserved
[    0.352087] pci 0000:00:1c.0: PCI bridge, secondary bus 0000:02
[    0.352152] pci 0000:00:1c.0:   IO window: 0x3000-0x3fff
[    0.352220] pci 0000:00:1c.0:   MEM window: 0xf4500000-0xf45fffff
[    0.352287] pci 0000:00:1c.0:   PREFETCH window: 0xc0000000-0xc01fffff
[    0.352357] pci 0000:00:1c.1: PCI bridge, secondary bus 0000:03
[    0.352423] pci 0000:00:1c.1:   IO window: 0x4000-0x4fff
[    0.352489] pci 0000:00:1c.1:   MEM window: 0xc0200000-0xc03fffff
[    0.352556] pci 0000:00:1c.1:   PREFETCH window: 0x000000c0400000-0x000000c05fffff
[    0.352640] pci 0000:00:1c.2: PCI bridge, secondary bus 0000:04
[    0.352704] pci 0000:00:1c.2:   IO window: 0x5000-0x5fff
[    0.352771] pci 0000:00:1c.2:   MEM window: 0xf4700000-0xf47fffff
[    0.352838] pci 0000:00:1c.2:   PREFETCH window: 0x000000c0600000-0x000000c07fffff
[    0.352921] pci 0000:00:1c.3: PCI bridge, secondary bus 0000:05
[    0.352986] pci 0000:00:1c.3:   IO window: 0x2000-0x2fff
[    0.353053] pci 0000:00:1c.3:   MEM window: 0xf0000000-0xf3ffffff
[    0.353119] pci 0000:00:1c.3:   PREFETCH window: 0x000000f6000000-0x000000f7ffffff
[    0.353202] pci 0000:00:1c.5: PCI bridge, secondary bus 0000:07
[    0.353267] pci 0000:00:1c.5:   IO window: 0x6000-0x6fff
[    0.353334] pci 0000:00:1c.5:   MEM window: 0xf4600000-0xf46fffff
[    0.353401] pci 0000:00:1c.5:   PREFETCH window: 0x000000c0800000-0x000000c09fffff
[    0.353484] pci 0000:00:1e.0: PCI bridge, secondary bus 0000:08
[    0.353547] pci 0000:00:1e.0:   IO window: disabled
[    0.353613] pci 0000:00:1e.0:   MEM window: disabled
[    0.353677] pci 0000:00:1e.0:   PREFETCH window: disabled
[    0.353758] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[    0.353827] pci 0000:00:1c.0: setting latency timer to 64
[    0.353838] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16
[    0.353906] pci 0000:00:1c.1: setting latency timer to 64
[    0.353917] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18
[    0.353984] pci 0000:00:1c.2: setting latency timer to 64
[    0.353995] pci 0000:00:1c.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19
[    0.354063] pci 0000:00:1c.3: setting latency timer to 64
[    0.354073] pci 0000:00:1c.5: PCI INT B -> GSI 16 (level, low) -> IRQ 16
[    0.354140] pci 0000:00:1c.5: setting latency timer to 64
[    0.354149] pci 0000:00:1e.0: setting latency timer to 64
[    0.354154] pci_bus 0000:00: resource 0 io:  [0x00-0xffff]
[    0.354156] pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffff]
[    0.354159] pci_bus 0000:02: resource 0 io:  [0x3000-0x3fff]
[    0.354161] pci_bus 0000:02: resource 1 mem: [0xf4500000-0xf45fffff]
[    0.354164] pci_bus 0000:02: resource 2 pref mem [0xc0000000-0xc01fffff]
[    0.354166] pci_bus 0000:03: resource 0 io:  [0x4000-0x4fff]
[    0.354169] pci_bus 0000:03: resource 1 mem: [0xc0200000-0xc03fffff]
[    0.354171] pci_bus 0000:03: resource 2 pref mem [0xc0400000-0xc05fffff]
[    0.354174] pci_bus 0000:04: resource 0 io:  [0x5000-0x5fff]
[    0.354176] pci_bus 0000:04: resource 1 mem: [0xf4700000-0xf47fffff]
[    0.354179] pci_bus 0000:04: resource 2 pref mem [0xc0600000-0xc07fffff]
[    0.354181] pci_bus 0000:05: resource 0 io:  [0x2000-0x2fff]
[    0.354183] pci_bus 0000:05: resource 1 mem: [0xf0000000-0xf3ffffff]
[    0.354186] pci_bus 0000:05: resource 2 pref mem [0xf6000000-0xf7ffffff]
[    0.354188] pci_bus 0000:07: resource 0 io:  [0x6000-0x6fff]
[    0.354191] pci_bus 0000:07: resource 1 mem: [0xf4600000-0xf46fffff]
[    0.354193] pci_bus 0000:07: resource 2 pref mem [0xc0800000-0xc09fffff]
[    0.354196] pci_bus 0000:08: resource 3 io:  [0x00-0xffff]
[    0.354198] pci_bus 0000:08: resource 4 mem: [0x000000-0xffffffff]
[    0.354227] NET: Registered protocol family 2
[    0.354366] IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.354696] TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.355221] TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
[    0.355572] TCP: Hash tables configured (established 131072 bind 65536)
[    0.355637] TCP reno registered
[    0.355793] NET: Registered protocol family 1
[    0.355875] pci 0000:00:02.0: Boot video device
[    0.356078] Unpacking initramfs...
[    0.633594] Freeing initrd memory: 10581k freed
[    0.640081] Simple Boot Flag at 0x36 set to 0x1
[    0.640429] audit: initializing netlink socket (disabled)
[    0.640505] type=2000 audit(1321223886.639:1): initialized
[    0.643795] highmem bounce pool size: 64 pages
[    0.643859] HugeTLB registered 4 MB page size, pre-allocated 0 pages
[    0.645179] VFS: Disk quotas dquot_6.5.2
[    0.645289] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.645419] msgmni has been set to 1708
[    0.645640] alg: No test for stdrng (krng)
[    0.645750] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[    0.645828] io scheduler noop registered
[    0.645888] io scheduler anticipatory registered
[    0.645949] io scheduler deadline registered
[    0.646038] io scheduler cfq registered (default)
[    0.646249] pcieport 0000:00:1c.0: irq 24 for MSI/MSI-X
[    0.646260] pcieport 0000:00:1c.0: setting latency timer to 64
[    0.646420] pcieport 0000:00:1c.1: irq 25 for MSI/MSI-X
[    0.646431] pcieport 0000:00:1c.1: setting latency timer to 64
[    0.646587] pcieport 0000:00:1c.2: irq 26 for MSI/MSI-X
[    0.646598] pcieport 0000:00:1c.2: setting latency timer to 64
[    0.646754] pcieport 0000:00:1c.3: irq 27 for MSI/MSI-X
[    0.646764] pcieport 0000:00:1c.3: setting latency timer to 64
[    0.646920] pcieport 0000:00:1c.5: irq 28 for MSI/MSI-X
[    0.646931] pcieport 0000:00:1c.5: setting latency timer to 64
[    0.647104] isapnp: Scanning for PnP cards...
[    1.001204] isapnp: No Plug & Play device found
[    1.002504] Linux agpgart interface v0.103
[    1.002638] agpgart-intel 0000:00:00.0: Intel Mobile Intel® GM45 Express Chipset
[    1.003092] agpgart-intel 0000:00:00.0: detected 32764K stolen memory
[    1.034511] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000
[    1.034648] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    1.035077] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:MSE0] at 0x60,0x64 irq 1,12
[    1.065945] serio: i8042 KBD port at 0x60,0x64 irq 1
[    1.066012] serio: i8042 AUX port at 0x60,0x64 irq 12
[    1.066123] mice: PS/2 mouse device common for all mice
[    1.066224] rtc_cmos 00:06: RTC can wake from S4
[    1.066317] rtc_cmos 00:06: rtc core: registered rtc_cmos as rtc0
[    1.066413] rtc0: alarms up to one month, y3k, 242 bytes nvram, hpet irqs
[    1.066490] cpuidle: using governor ladder
[    1.066552] cpuidle: using governor menu
[    1.066617] No iBFT detected.
[    1.066986] TCP cubic registered
[    1.067173] NET: Registered protocol family 10
[    1.067880] Mobile IPv6
[    1.067941] NET: Registered protocol family 17
[    1.068027] Using IPI No-Shortcut mode
[    1.068149] PM: Resume from disk failed.
[    1.068160] registered taskstats version 1
[    1.069481] rtc_cmos 00:06: setting system clock to 2011-11-13 22:38:07 UTC (1321223887)
[    1.069616] Initalizing network drop monitor service
[    1.069696] Freeing unused kernel memory: 380k freed
[    1.069929] Write protecting the kernel text: 2508k
[    1.070009] Write protecting the kernel read-only data: 920k
[    1.086038] udev[56]: starting version 164
[    1.095307] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[    1.211016] SCSI subsystem initialized
[    1.214423] usbcore: registered new interface driver usbfs
[    1.214510] usbcore: registered new interface driver hub
[    1.215396] usbcore: registered new device driver usb
[    1.226492] ACPI: Invalid active0 threshold
[    1.230595] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.230703] ehci_hcd 0000:00:1a.7: PCI INT C -> GSI 20 (level, low) -> IRQ 20
[    1.230792] ehci_hcd 0000:00:1a.7: setting latency timer to 64
[    1.230796] ehci_hcd 0000:00:1a.7: EHCI Host Controller
[    1.230885] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1
[    1.231005] ehci_hcd 0000:00:1a.7: debug port 1
[    1.232655] uhci_hcd: USB Universal Host Controller Interface driver
[    1.232844] thermal LNXTHERM:01: registered as thermal_zone0
[    1.232940] ACPI: Thermal Zone [TZ00] (67 C)
[    1.234942] ehci_hcd 0000:00:1a.7: cache line size of 32 is not supported
[    1.235040] ehci_hcd 0000:00:1a.7: irq 20, io mem 0xf4a04800
[    1.239005] sdhci: Secure Digital Host Controller Interface driver
[    1.239070] sdhci: Copyright(c) Pierre Ossman
[    1.248009] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00
[    1.248107] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    1.248172] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.248249] usb usb1: Product: EHCI Host Controller
[    1.248311] usb usb1: Manufacturer: Linux 2.6.32-5-686 ehci_hcd
[    1.248374] usb usb1: SerialNumber: 0000:00:1a.7
[    1.248529] usb usb1: configuration #1 chosen from 1 choice
[    1.248621] hub 1-0:1.0: USB hub found
[    1.248688] hub 1-0:1.0: 6 ports detected
[    1.248819] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    1.248892] uhci_hcd 0000:00:1a.0: setting latency timer to 64
[    1.248896] uhci_hcd 0000:00:1a.0: UHCI Host Controller
[    1.248964] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 2
[    1.249078] uhci_hcd 0000:00:1a.0: irq 16, io base 0x00001820
[    1.249172] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[    1.249237] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.249314] usb usb2: Product: UHCI Host Controller
[    1.249375] usb usb2: Manufacturer: Linux 2.6.32-5-686 uhci_hcd
[    1.249439] usb usb2: SerialNumber: 0000:00:1a.0
[    1.249557] usb usb2: configuration #1 chosen from 1 choice
[    1.249644] hub 2-0:1.0: USB hub found
[    1.249709] hub 2-0:1.0: 2 ports detected
[    1.249829] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[    1.249913] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[    1.249917] ehci_hcd 0000:00:1d.7: EHCI Host Controller
[    1.249984] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 3
[    1.250096] ehci_hcd 0000:00:1d.7: debug port 1
[    1.252226] libata version 3.00 loaded.
[    1.254042] ehci_hcd 0000:00:1d.7: cache line size of 32 is not supported
[    1.254063] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xf4a04c00
[    1.260036] tg3.c:v3.116 (December 3, 2010)
[    1.260164] tg3 0000:07:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[    1.260276] tg3 0000:07:00.0: setting latency timer to 64
[    1.260292] sdhci-pci 0000:02:00.0: SDHCI controller found [197b:2382] (rev 0)
[    1.260395] sdhci-pci 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    1.260633] sdhci-pci 0000:02:00.0: setting latency timer to 64
[    1.260677] Registered led device: mmc0::
[    1.260793] mmc0: SDHCI controller on PCI [0000:02:00.0] using ADMA
[    1.260868] sdhci-pci 0000:02:00.2: SDHCI controller found [197b:2381] (rev 0)
[    1.260963] sdhci-pci 0000:02:00.2: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    1.261058] sdhci-pci 0000:02:00.2: Refusing to bind to secondary interface.
[    1.261129] sdhci-pci 0000:02:00.2: PCI INT A disabled
[    1.268443] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00
[    1.268531] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002
[    1.268597] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.268674] usb usb3: Product: EHCI Host Controller
[    1.268735] usb usb3: Manufacturer: Linux 2.6.32-5-686 ehci_hcd
[    1.268799] usb usb3: SerialNumber: 0000:00:1d.7
[    1.268939] usb usb3: configuration #1 chosen from 1 choice
[    1.269034] hub 3-0:1.0: USB hub found
[    1.269100] hub 3-0:1.0: 6 ports detected
[    1.269230] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[    1.269306] uhci_hcd 0000:00:1a.1: setting latency timer to 64
[    1.269310] uhci_hcd 0000:00:1a.1: UHCI Host Controller
[    1.269383] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4
[    1.269500] uhci_hcd 0000:00:1a.1: irq 21, io base 0x00001840
[    1.269597] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
[    1.269662] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.269739] usb usb4: Product: UHCI Host Controller
[    1.269801] usb usb4: Manufacturer: Linux 2.6.32-5-686 uhci_hcd
[    1.269864] usb usb4: SerialNumber: 0000:00:1a.1
[    1.269990] usb usb4: configuration #1 chosen from 1 choice
[    1.270077] hub 4-0:1.0: USB hub found
[    1.270142] hub 4-0:1.0: 2 ports detected
[    1.270256] ahci 0000:00:1f.2: version 3.0
[    1.270271] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[    1.270389] ahci 0000:00:1f.2: irq 29 for MSI/MSI-X
[    1.270435] ahci: SSS flag set, parallel bus scan disabled
[    1.270536] ahci 0000:00:1f.2: AHCI 0001.0200 32 slots 4 ports 3 Gbps 0x3 impl SATA mode
[    1.270620] ahci 0000:00:1f.2: flags: 64bit ncq sntf stag pm led clo pio slum part ccc ems sxs 
[    1.270705] ahci 0000:00:1f.2: setting latency timer to 64
[    1.278073] scsi0 : ahci
[    1.278313] scsi1 : ahci
[    1.278491] scsi2 : ahci
[    1.278676] scsi3 : ahci
[    1.278801] ata1: SATA max UDMA/133 abar m2048@0xf4a04000 port 0xf4a04100 irq 29
[    1.278916] ata2: SATA max UDMA/133 abar m2048@0xf4a04000 port 0xf4a04180 irq 29
[    1.279025] ata3: DUMMY
[    1.279127] ata4: DUMMY
[    1.279352] uhci_hcd 0000:00:1a.2: PCI INT C -> GSI 20 (level, low) -> IRQ 20
[    1.279462] uhci_hcd 0000:00:1a.2: setting latency timer to 64
[    1.279466] uhci_hcd 0000:00:1a.2: UHCI Host Controller
[    1.279588] uhci_hcd 0000:00:1a.2: new USB bus registered, assigned bus number 5
[    1.279737] uhci_hcd 0000:00:1a.2: irq 20, io base 0x00001860
[    1.279868] usb usb5: New USB device found, idVendor=1d6b, idProduct=0001
[    1.279987] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.280100] usb usb5: Product: UHCI Host Controller
[    1.280193] usb usb5: Manufacturer: Linux 2.6.32-5-686 uhci_hcd
[    1.280287] usb usb5: SerialNumber: 0000:00:1a.2
[    1.280516] usb usb5: configuration #1 chosen from 1 choice
[    1.280670] hub 5-0:1.0: USB hub found
[    1.280766] hub 5-0:1.0: 2 ports detected
[    1.280912] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[    1.281047] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[    1.281051] uhci_hcd 0000:00:1d.0: UHCI Host Controller
[    1.281153] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 6
[    1.281298] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00001880
[    1.281431] usb usb6: New USB device found, idVendor=1d6b, idProduct=0001
[    1.281499] usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.281649] usb usb6: Product: UHCI Host Controller
[    1.281732] usb usb6: Manufacturer: Linux 2.6.32-5-686 uhci_hcd
[    1.281820] usb usb6: SerialNumber: 0000:00:1d.0
[    1.282024] usb usb6: configuration #1 chosen from 1 choice
[    1.282168] hub 6-0:1.0: USB hub found
[    1.282251] hub 6-0:1.0: 2 ports detected
[    1.282397] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[    1.282490] uhci_hcd 0000:00:1d.1: setting latency timer to 64
[    1.282496] uhci_hcd 0000:00:1d.1: UHCI Host Controller
[    1.282585] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 7
[    1.282887] uhci_hcd 0000:00:1d.1: irq 19, io base 0x000018a0
[    1.283008] usb usb7: New USB device found, idVendor=1d6b, idProduct=0001
[    1.283093] usb usb7: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.283211] usb usb7: Product: UHCI Host Controller
[    1.283294] usb usb7: Manufacturer: Linux 2.6.32-5-686 uhci_hcd
[    1.283379] usb usb7: SerialNumber: 0000:00:1d.1
[    1.283567] usb usb7: configuration #1 chosen from 1 choice
[    1.283722] hub 7-0:1.0: USB hub found
[    1.283809] hub 7-0:1.0: 2 ports detected
[    1.283939] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18
[    1.284041] uhci_hcd 0000:00:1d.2: setting latency timer to 64
[    1.284047] uhci_hcd 0000:00:1d.2: UHCI Host Controller
[    1.284136] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 8
[    1.284283] uhci_hcd 0000:00:1d.2: irq 18, io base 0x000018c0
[    1.284407] usb usb8: New USB device found, idVendor=1d6b, idProduct=0001
[    1.284497] usb usb8: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    1.284597] usb usb8: Product: UHCI Host Controller
[    1.284683] usb usb8: Manufacturer: Linux 2.6.32-5-686 uhci_hcd
[    1.284767] usb usb8: SerialNumber: 0000:00:1d.2
[    1.284957] usb usb8: configuration #1 chosen from 1 choice
[    1.285124] hub 8-0:1.0: USB hub found
[    1.285219] hub 8-0:1.0: 2 ports detected
[    1.309039] tg3 0000:07:00.0: eth0: Tigon3 [partno(BCM95906) rev c002] (PCI Express) MAC address 00:23:5a:17:01:6e
[    1.309124] tg3 0000:07:00.0: eth0: attached PHY is 5906 (10/100Base-TX Ethernet) (WireSpeed[0])
[    1.309204] tg3 0000:07:00.0: eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1]
[    1.309283] tg3 0000:07:00.0: eth0: dma_rwctrl[76180000] dma_mask[64-bit]
[    1.560011] usb 1-6: new high speed USB device using ehci_hcd and address 2
[    1.604023] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    1.634280] ata1.00: ATA-8: WDC WD1600BEVT-88ZCT0, 11.01A11, max UDMA/133
[    1.634346] ata1.00: 312581808 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[    1.635794] ata1.00: configured for UDMA/133
[    1.648108] scsi 0:0:0:0: Direct-Access     ATA      WDC WD1600BEVT-8 11.0 PQ: 0 ANSI: 5
[    1.692841] usb 1-6: New USB device found, idVendor=0781, idProduct=5567
[    1.692908] usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    1.692973] usb 1-6: Product: Cruzer Blade
[    1.693034] usb 1-6: Manufacturer: SanDisk
[    1.693094] usb 1-6: SerialNumber: 20043513421424F00A4F
[    1.693220] usb 1-6: configuration #1 chosen from 1 choice
[    1.699899] Initializing USB Mass Storage driver...
[    1.700126] scsi4 : SCSI emulation for USB Mass Storage devices
[    1.700269] usbcore: registered new interface driver usb-storage
[    1.700336] USB Mass Storage support registered.
[    1.700401] usb-storage: device found at 2
[    1.700403] usb-storage: waiting for device to settle before scanning
[    1.808012] usb 3-3: new high speed USB device using ehci_hcd and address 2
[    2.096917] usb 3-3: New USB device found, idVendor=04f2, idProduct=b090
[    2.097732] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    2.097798] usb 3-3: Product: Lenovo EasyCamera
[    2.097858] usb 3-3: Manufacturer: Vimicro Corp.
[    2.097990] usb 3-3: configuration #1 chosen from 1 choice
[    2.372024] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[    2.375654] ata2.00: ATAPI: HL-DT-ST DVDRAM GSA-T50N, RV06, max UDMA/133
[    2.380404] ata2.00: configured for UDMA/133
[    2.508133] scsi 1:0:0:0: CD-ROM            HL-DT-ST DVDRAM GSA-T50N  RV06 PQ: 0 ANSI: 5
[    2.519189] sd 0:0:0:0: [sda] 312581808 512-byte logical blocks: (160 GB/149 GiB)
[    2.519319] sd 0:0:0:0: [sda] Write Protect is off
[    2.519383] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    2.519414] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.519633]  sda: sda1 sda2 < sda5 > sda3
[    2.555050] sd 0:0:0:0: [sda] Attached SCSI disk
[    2.844888] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray
[    2.844968] Uniform CD-ROM driver Revision: 3.20
[    2.845118] sr 1:0:0:0: Attached scsi CD-ROM sr0
[    2.850772] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    2.850997] sr 1:0:0:0: Attached scsi generic sg1 type 5
[    6.696097] usb-storage: device scan complete
[    6.696722] scsi 4:0:0:0: Direct-Access     SanDisk  Cruzer Blade     1.14 PQ: 0 ANSI: 2
[    6.697289] sd 4:0:0:0: Attached scsi generic sg2 type 0
[    6.699344] sd 4:0:0:0: [sdb] 7821312 512-byte logical blocks: (4.00 GB/3.72 GiB)
[    6.700455] sd 4:0:0:0: [sdb] Write Protect is off
[    6.700517] sd 4:0:0:0: [sdb] Mode Sense: 03 00 00 00
[    6.700519] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[    6.703078] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[    6.703144]  sdb: sdb1 sdb2 sdb3
[    6.708590] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[    6.708660] sd 4:0:0:0: [sdb] Attached SCSI removable disk
[    6.995000] EXT4-fs (sdb1): mounted filesystem with ordered data mode
[    7.639960] udev[427]: starting version 164
[    7.763694] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input1
[    7.763865] ACPI: Lid Switch [LID0]
[    7.763986] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input2
[    7.764070] ACPI: Power Button [PWRB]
[    7.764203] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
[    7.764285] ACPI: Power Button [PWRF]
[    7.781180] ACPI: SSDT bdb1ac20 00265 (v01  PmRef  Cpu0Ist 00003000 INTL 20050624)
[    7.781853] ACPI: SSDT bdb18620 00549 (v01  PmRef  Cpu0Cst 00003001 INTL 20050624)
[    7.852398] Monitor-Mwait will be used to enter C-1 state
[    7.854611] Monitor-Mwait will be used to enter C-2 state
[    7.854624] Marking TSC unstable due to TSC halts in idle
[    7.854791] processor LNXCPU:00: registered as cooling_device0
[    7.855374] ACPI: SSDT bdb19ca0 001CF (v01  PmRef    ApIst 00003000 INTL 20050624)
[    7.855987] ACPI: SSDT bdb19f20 0008D (v01  PmRef    ApCst 00003000 INTL 20050624)
[    7.857122] Switching to clocksource hpet
[    7.857306] processor LNXCPU:01: registered as cooling_device1
[    7.858634] lib80211: common routines for IEEE802.11 drivers
[    7.858701] lib80211_crypt: registered algorithm 'NULL'
[    8.562616] wl: module license 'MIXED/Proprietary' taints kernel.
[    8.562685] Disabling lock debugging due to kernel taint
[    8.569048] wl 0000:04:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
[    8.569163] wl 0000:04:00.0: setting latency timer to 64
[    8.576218] input: PC Speaker as /devices/platform/pcspkr/input/input4
[    8.593068] i801_smbus 0000:00:1f.3: PCI INT C -> GSI 19 (level, low) -> IRQ 19
[    8.593155] ACPI: I/O resource 0000:00:1f.3 [0x1c00-0x1c1f] conflicts with ACPI region SMBI [0x1c00-0x1c0f]
[    8.593237] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver
[    8.595752] ACPI: AC Adapter [ACAD] (on-line)
[    8.635487] lib80211_crypt: registered algorithm 'TKIP'
[    8.770035] ACPI: Battery Slot [BAT1] (battery present)
[    8.770506] eth1: Broadcom BCM4315 802.11 Hybrid Wireless Controller 5.60.48.36 
[    8.779162] Linux video capture interface: v2.00
[    8.781343] jmb38x_ms 0000:02:00.3: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    8.781432] jmb38x_ms 0000:02:00.3: setting latency timer to 64
[    8.825096] [drm] Initialized drm 1.1.0 20060810
[    8.827153] uvcvideo: Found UVC 1.00 device Lenovo EasyCamera (04f2:b090)
[    8.830393] input: Lenovo EasyCamera as /devices/pci0000:00/0000:00:1d.7/usb3/3-3/3-3:1.0/input/input5
[    8.830589] usbcore: registered new interface driver uvcvideo
[    8.830712] USB Video Class driver (v0.1.0)
[    8.872716] pci 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    8.872790] pci 0000:00:02.0: setting latency timer to 64
[    8.878968] mtrr: type mismatch for d0000000,10000000 old: write-back new: write-combining
[    8.879055] [drm] MTRR allocation failed.  Graphics performance may suffer.
[    8.879181] pci 0000:00:02.0: irq 30 for MSI/MSI-X
[    8.901986] acpi device:05: registered as cooling_device2
[    8.920841] acpi device:06: registered as cooling_device3
[    8.944990] acpi device:07: registered as cooling_device4
[    8.970986] HDA Intel 0000:00:1b.0: power state changed by ACPI to D0
[    8.971036] acpi device:08: registered as cooling_device5
[    8.971225] HDA Intel 0000:00:1b.0: power state changed by ACPI to D0
[    8.971305] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[    8.971587] HDA Intel 0000:00:1b.0: irq 31 for MSI/MSI-X
[    8.971617] HDA Intel 0000:00:1b.0: setting latency timer to 64
[    8.990081] acpi device:09: registered as cooling_device6
[    8.990263] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:01/input/input6
[    8.990393] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    8.990485] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[    9.034380] input: HDA Intel Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input7
[    9.034545] input: HDA Intel Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input8
[    9.034689] input: HDA Intel Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input9
[    9.284357] input: PS/2 Mouse as /devices/platform/i8042/serio1/input/input10
[    9.322269] input: AlpsPS/2 ALPS GlidePoint as /devices/platform/i8042/serio1/input/input11
[    9.585493] Adding 208836k swap on /dev/sdb3.  Priority:-1 extents:1 across:208836k 
[    9.729444] loop: module loaded
[    9.750931] input: Speakup as /devices/virtual/input/input12
[    9.752709] speakup 3.1.5: initialized
[    9.752785] synth name on entry is: <NULL>
[    9.754372] initialized device: /dev/synth, node (MAJOR 10, MINOR 25)
[    9.756787] synth probe
[    9.756925] initialized device: /dev/softsynth, node (MAJOR 10, MINOR 26)
[    9.898822] EXT4-fs (sdb2): mounted filesystem with ordered data mode
[   10.289660] fuse init (API version 7.13)
[   10.912969] apm: BIOS not found.
[   11.715232] Bluetooth: Core ver 2.15
[   11.715299] NET: Registered protocol family 31
[   11.715301] Bluetooth: HCI device and connection manager initialized
[   11.715304] Bluetooth: HCI socket layer initialized
[   11.735663] input: ACPI Virtual Keyboard Device as /devices/virtual/input/input13
[   11.737433] lp: driver loaded but no devices found
[   11.797130] ppdev: user-space parallel port driver
[   11.863763] Bluetooth: L2CAP ver 2.14
[   11.863766] Bluetooth: L2CAP socket layer initialized
[   11.941234] Bluetooth: RFCOMM TTY layer initialized
[   11.941239] Bluetooth: RFCOMM socket layer initialized
[   11.941241] Bluetooth: RFCOMM ver 1.11
[   11.999825] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   11.999924] Bluetooth: BNEP filters: protocol multicast
[   12.057185] Bridge firewalling registered
[   12.268960] Bluetooth: SCO (Voice Link) ver 0.6
[   12.269126] Bluetooth: SCO socket layer initialized
[   12.308601] tg3 0000:07:00.0: irq 32 for MSI/MSI-X
[   12.345810] ADDRCONF(NETDEV_UP): eth0: link is not ready
[   21.928035] eth1: no IPv6 routers present

Do you find anything, Bruno?

Thank you!

David

On Sun, 13 Nov 2011, Bruno Prémont wrote:

> On Sun, 13 November 2011 Anatolij Gustschin <agust@denx.de> wrote:
>> On Sun, 13 Nov 2011 21:16:52 -0500 (EST)
>> David J Ring Jr <n1ea@arrl.net> wrote:
>>
>>> OK so how do I get a frame buffer driver loaded?
>>
>> Check if some frame buffer drivers are installed
>> in your system, so e.g. run
>>
>> ls /lib/modules/`uname -r`/kernel/drivers/video
>>
>> to see if there are any frame buffer driver modules
>> installed.
>>
>> Then you have to select the suitable driver for your
>> graphic card and load it by running
>>
>> modprobe drivername
>>
>>> I don't have any backlisted framebuffer drivers, what is stopping me from
>>> loading a frame buffer driver?
>>>
>>> Does anyone know what I have to do?
>>
>>
>> Usually the driver should be loaded automatically if
>> it is installed. Maybe some error happened while loading
>> the driver. Dump the kernel log messages by running dmesg
>> and check if there was an attempt to load the driver for
>> your graphic card.
>
> The other case might be a mainsteam GPU (radeon, nouveau, intel) and
> KMS support built in (or available as module) but disabled by "nomodeset"
> cmdline option that did show up in a previous post.
>
> Just booting with "vga=0x31a" (or another value more appropriate for
> attached screen -- see Documentation/fb/vesafb.txt for list) might
> provide a basic framebuffer device.
>
> lspci for the affected system will certainly help at least indicating
> which driver would be the right one.
>
> Bruno
>

^ permalink raw reply

* Re: Getting FB to work in Console
From: Bruno Prémont @ 2011-11-13 21:44 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

On Sun, 13 November 2011 Anatolij Gustschin <agust@denx.de> wrote:
> On Sun, 13 Nov 2011 21:16:52 -0500 (EST)
> David J Ring Jr <n1ea@arrl.net> wrote:
> 
> > OK so how do I get a frame buffer driver loaded?
> 
> Check if some frame buffer drivers are installed
> in your system, so e.g. run
> 
> ls /lib/modules/`uname -r`/kernel/drivers/video
> 
> to see if there are any frame buffer driver modules
> installed.
> 
> Then you have to select the suitable driver for your
> graphic card and load it by running
> 
> modprobe drivername
> 
> > I don't have any backlisted framebuffer drivers, what is stopping me from 
> > loading a frame buffer driver?
> >
> > Does anyone know what I have to do?
> 
> 
> Usually the driver should be loaded automatically if
> it is installed. Maybe some error happened while loading
> the driver. Dump the kernel log messages by running dmesg
> and check if there was an attempt to load the driver for
> your graphic card.

The other case might be a mainsteam GPU (radeon, nouveau, intel) and
KMS support built in (or available as module) but disabled by "nomodeset"
cmdline option that did show up in a previous post.

Just booting with "vga=0x31a" (or another value more appropriate for
attached screen -- see Documentation/fb/vesafb.txt for list) might
provide a basic framebuffer device.

lspci for the affected system will certainly help at least indicating 
which driver would be the right one.

Bruno

^ permalink raw reply

* Re: Getting FB to work in Console
From: Anatolij Gustschin @ 2011-11-13 21:39 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

On Sun, 13 Nov 2011 21:16:52 -0500 (EST)
David J Ring Jr <n1ea@arrl.net> wrote:

> OK so how do I get a frame buffer driver loaded?

Check if some frame buffer drivers are installed
in your system, so e.g. run

ls /lib/modules/`uname -r`/kernel/drivers/video

to see if there are any frame buffer driver modules
installed.

Then you have to select the suitable driver for your
graphic card and load it by running

modprobe drivername

> I don't have any backlisted framebuffer drivers, what is stopping me from 
> loading a frame buffer driver?
>
> Does anyone know what I have to do?


Usually the driver should be loaded automatically if
it is installed. Maybe some error happened while loading
the driver. Dump the kernel log messages by running dmesg
and check if there was an attempt to load the driver for
your graphic card.

Anatolij

^ permalink raw reply

* Re: Getting FB to work in Console
From: David J Ring Jr @ 2011-11-13 21:21 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

[-- Attachment #1: Type: TEXT/PLAIN, Size: 768 bytes --]

I do not know, how do I find this out Geert?

Thank you,

David


On Sun, 13 Nov 2011, Geert Uytterhoeven wrote:

> Hi David,
>
> On Mon, Nov 14, 2011 at 00:57, David J Ring Jr <n1ea@arrl.net> wrote:
>> Output of cat /proc/fb
>>
>> No output.
>
> Hence your kernel is not using a frame buffer device.
> Do you have a frame buffer device driver for your hardware in the kernel?
>
> Gr{oetje,eeting}s,
>
>                         Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds
>

^ permalink raw reply

* Re: Getting FB to work in Console
From: David J Ring Jr @ 2011-11-13 21:17 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

OK so how do I get a frame buffer driver loaded?

I don't have any backlisted framebuffer drivers, what is stopping me from 
loading a frame buffer driver?

Does anyone know what I have to do?

David

On Sun, 13 Nov 2011, Anatolij Gustschin wrote:

> Hello David,
>
> On Sun, 13 Nov 2011 19:10:59 -0500 (EST)
> David J Ring Jr <n1ea@arrl.net> wrote:
>
>> Hello Anatolij,
>>
>> And when I reboot /dev/fb0 disappears again.
>
> Yes, this is expected since there is no frame buffer
> driver loaded in your system.
>
>> What is very strange to me is that when I run links2 -g the error message
>> says that /dev/fb0 does not exist, while if I list the file it says that
>> it is there ls /dev/fb0 says the file is there.
>
> I'll try to explain my understanding of the issue.
> The device node file /dev/fb0 is only an interface to the frame
> buffer driver. It can be created by the kernel automatically if
> there is a graphic chip in the system and the appropriate frame
> buffer driver is loaded and some device filesystem is initialized
> and mounted, e.g. devtmpfs device filesystem.
>
> Or /dev/fb0 can be created by the user, but if it has been created
> by the user and there is no frame buffer driver running, then the
> driver interface cannot be opened since no corresponding driver
> responds when an application tries to open the device. This is
> the error message that you currently see.
>
> When you create the device node file under /dev at runtime, it will
> disappear when rebooting, since the device file system under /dev
> will be unmounted. Even if there is a /dev directory on your hard
> disk with some existing device nodes, e.g. fb0 existing, there
> is still a possibility that you won't see these nodes at runtime.
> If the kernel creates device system at runtime and it is mounted
> under /dev, the content of this device system will be populated
> with device nodes for registered devices. When there is no frame
> buffer driver loaded, no fb0 device will be registered, no device
> node will be created.
>
> Hope this helps,
>
> Anatolij
> --
> To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply

* Re: Getting FB to work in Console
From: Anatolij Gustschin @ 2011-11-13 20:53 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

Hello David,

On Sun, 13 Nov 2011 19:10:59 -0500 (EST)
David J Ring Jr <n1ea@arrl.net> wrote:

> Hello Anatolij,
> 
> And when I reboot /dev/fb0 disappears again.

Yes, this is expected since there is no frame buffer
driver loaded in your system.

> What is very strange to me is that when I run links2 -g the error message 
> says that /dev/fb0 does not exist, while if I list the file it says that 
> it is there ls /dev/fb0 says the file is there.

I'll try to explain my understanding of the issue.
The device node file /dev/fb0 is only an interface to the frame
buffer driver. It can be created by the kernel automatically if
there is a graphic chip in the system and the appropriate frame
buffer driver is loaded and some device filesystem is initialized
and mounted, e.g. devtmpfs device filesystem.

Or /dev/fb0 can be created by the user, but if it has been created
by the user and there is no frame buffer driver running, then the
driver interface cannot be opened since no corresponding driver
responds when an application tries to open the device. This is
the error message that you currently see.

When you create the device node file under /dev at runtime, it will
disappear when rebooting, since the device file system under /dev
will be unmounted. Even if there is a /dev directory on your hard
disk with some existing device nodes, e.g. fb0 existing, there
is still a possibility that you won't see these nodes at runtime.
If the kernel creates device system at runtime and it is mounted
under /dev, the content of this device system will be populated
with device nodes for registered devices. When there is no frame
buffer driver loaded, no fb0 device will be registered, no device
node will be created.

Hope this helps,

Anatolij

^ permalink raw reply

* Re: Getting FB to work in Console
From: Anatolij Gustschin @ 2011-11-13 20:11 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

On Sun, 13 Nov 2011 18:57:26 -0500 (EST)
David J Ring Jr <n1ea@arrl.net> wrote:

> Hello Anatolij,
> 
> Nice to hear from you and thank you for your suggestions.
> 
> I did what you said and now I have a /dev/fb0 with permissions
> 
> ls /dev/fb0 -alsh
> 
> 0 crw-rw---- 1 root video 29, 0 Nov 13 18:25 /dev/fb0
> 
> Output of cat /proc/fb
> 
> No output.

The frame buffer driver for your graphic card is not in the
kernel or could not bee initialized properly, so this is one
reason for missing /dev/fb0.

Are kernel modules installed in your system? What is the output
of the command below?

ls -l /lib/modules/`uname -r`/kernel/drivers/video


If you do not know which graphic chip is in your system,
you might want to run

lspci -v | grep VGA

Then you have to install the appropriate frame buffer driver
kernel module or alternatively to build the kernel with frame
buffer driver included.

Anatolij

^ permalink raw reply

* Re: Getting FB to work in Console
From: Geert Uytterhoeven @ 2011-11-13 20:00 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

Hi David,

On Mon, Nov 14, 2011 at 00:57, David J Ring Jr <n1ea@arrl.net> wrote:
> Output of cat /proc/fb
>
> No output.

Hence your kernel is not using a frame buffer device.
Do you have a frame buffer device driver for your hardware in the kernel?

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply

* Re: Getting FB to work in Console
From: David J Ring Jr @ 2011-11-13 19:11 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

Hello Anatolij,

And when I reboot /dev/fb0 disappears again.

What is very strange to me is that when I run links2 -g the error message 
says that /dev/fb0 does not exist, while if I list the file it says that 
it is there ls /dev/fb0 says the file is there.

Strange to me.

David



^ permalink raw reply

* Re: Getting FB to work in Console
From: David J Ring Jr @ 2011-11-13 18:58 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

Hello Anatolij,

Nice to hear from you and thank you for your suggestions.

I did what you said and now I have a /dev/fb0 with permissions

ls /dev/fb0 -alsh

0 crw-rw---- 1 root video 29, 0 Nov 13 18:25 /dev/fb0

Output of cat /proc/fb

No output.

Output of cat proc/cmdline

BOOT_IMAGE=/boot/vmlinuz-2.6.32-5-686 root=UUIDË1268f1-4e20-4409-87b1-3d882c14102c ro nomodeset


Output of dmesg | grep vesa

No output.

When I try to run links2 -g now I get these errors:


    ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.2.10 |~~~~~~~~~~~~~~~~~~~~~~~~~~
         (c) 2001-2008  The world wide DirectFB Open Source Community
         (c) 2000-2004  Convergence (integrated media) GmbH
       ----------------------------------------------------------------

(*) DirectFB/Core: Single Application Core. (2010-06-30 18:37) 
(!) DirectFB/FBDev: Error opening '/dev/fb0'!
     --> No such device
(!) DirectFB/Core: Could not initialize 'system_core' core!
     --> Not supported!


I hope that is helpful.

David


On Sun, 13 Nov 2011, Anatolij Gustschin wrote:


> You have to add write permissions for the group also. Check if
> /dev/fb0 can be accessed if you create it by using
> sudo mknod /dev/fb0 c 29 0 -m 660
> sudo chown :video /dev/fb0
>
> What is the output of following commands on your system?
> cat /proc/fb
> cat /proc/cmdline
> dmesg | grep vesa
>
> Anatolij
>

^ permalink raw reply

* Re: [PATCH 1/1] OMAP: DSS2: Add TI Boxer display panel driver
From: pakuma @ 2011-11-13 17:18 UTC (permalink / raw)
  Cc: Tomi Valkeinen, David Bolcsfoldi, linux-omap, linux-fbdev,
	Javier Martinez Canillas
In-Reply-To: <1318689957-14743-1-git-send-email-martinez.javier@gmail.com>

Hi Javier,

> Add panel driver for TI Boxer LCD.
>
> This panel is used on many embedded devices such as
> Barnes & Nobles's Nook Color e-reader.
>
> Signed-off-by: Javier Martinez Canillas <martinez.javier@gmail.com>
> ---
>  drivers/video/omap2/displays/Kconfig       |    6 +
>  drivers/video/omap2/displays/Makefile      |    1 +
>  drivers/video/omap2/displays/panel-boxer.c |  333
> ++++++++++++++++++++++++++++
>  3 files changed, 340 insertions(+), 0 deletions(-)
>  create mode 100644 drivers/video/omap2/displays/panel-boxer.c
>
> diff --git a/drivers/video/omap2/displays/Kconfig
> b/drivers/video/omap2/displays/Kconfig
> index 609a280..6c9fe26 100644
> --- a/drivers/video/omap2/displays/Kconfig
> +++ b/drivers/video/omap2/displays/Kconfig
> @@ -48,4 +48,10 @@ config PANEL_ACX565AKM
>  	select BACKLIGHT_CLASS_DEVICE
>  	help
>  	  This is the LCD panel used on Nokia N900
> +
> +config PANEL_BOXER
> +        tristate "TI Boxer Panel"
> +        help
> +          LCD Panel used in the TI Boxer
> +
>  endmenu
> diff --git a/drivers/video/omap2/displays/Makefile
> b/drivers/video/omap2/displays/Makefile
> index 0f601ab3a..26c662e 100644
> --- a/drivers/video/omap2/displays/Makefile
> +++ b/drivers/video/omap2/displays/Makefile
> @@ -6,3 +6,4 @@ obj-$(CONFIG_PANEL_NEC_NL8048HL11_01B) +> panel-nec-nl8048hl11-01b.o
>  obj-$(CONFIG_PANEL_TAAL) += panel-taal.o
>  obj-$(CONFIG_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o
>  obj-$(CONFIG_PANEL_ACX565AKM) += panel-acx565akm.o
> +obj-$(CONFIG_PANEL_BOXER) += panel-boxer.o
> diff --git a/drivers/video/omap2/displays/panel-boxer.c
> b/drivers/video/omap2/displays/panel-boxer.c
> new file mode 100644
> index 0000000..6429960
> --- /dev/null
> +++ b/drivers/video/omap2/displays/panel-boxer.c
> @@ -0,0 +1,333 @@
> +/*
> + * Boxer panel support
> + *
> + * Copyright (C) 2008 Nokia Corporation
> + * Author: Tomi Valkeinen <tomi.valkeinen@nokia.com>
> + *
> + * Copyright (c) 2010 Barnes & Noble
> + * David Bolcsfoldi <dbolcsfoldi@intrinsyc.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> it
> + * under the terms of the GNU General Public License version 2 as
> published by
> + * the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful, but
> WITHOUT
> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> for
> + * more details.
> + *
> + * You should have received a copy of the GNU General Public License
> along with
> + * this program.  If not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#include <linux/module.h>
> +#include <linux/kernel.h>
> +#include <linux/delay.h>
> +#include <linux/platform_device.h>
> +#include <linux/spi/spi.h>
> +#include <linux/regulator/consumer.h>
> +#include <linux/err.h>
> +#include <linux/workqueue.h>
> +
> +#include <plat/mcspi.h>
> +#include <mach/gpio.h>
> +#include <mach/gpio.h>
> +#include <plat/mux.h>
> +#include <asm/mach-types.h>
> +
> +#include <video/omapdss.h>
> +
> +/* Delay between Panel configuration and Panel enabling */
> +#define LCD_RST_DELAY		100
> +#define LCD_INIT_DELAY		200
> +
> +#define LCD_XRES		1024
> +#define LCD_YRES		600
> +
> +#define LCD_PIXCLOCK_MIN	39000 /* CPT MIN PIX Clock is 39MHz */
> +#define Lcd_Pixclock_Typ	45000 /* Typical PIX clock is 45MHz */
> +#define LCD_PIXCLOCK_MAX	52000 /* Maximum is 52MHz */
> +
> +/* Current Pixel clock */
> +#define LCD_PIXEL_CLOCK		68000
> +
> +static struct workqueue_struct *boxer_panel_wq;
> +static struct omap_dss_device *boxer_panel_dssdev;
> +static struct regulator *boxer_panel_regulator;
> +static struct spi_device *boxer_spi_device;
> +static atomic_t boxer_panel_is_enabled = ATOMIC_INIT(0);
> +
> +/*NEC NL8048HL11-01B  Manual
> + * defines HFB, HSW, HBP, VFP, VSW, VBP as shown below
> + */
> +
> +static struct omap_video_timings boxer_panel_timings = {
> +	/* 1024 x 600 @ 60 Hz  Reduced blanking VESA CVT 0.31M3-R */
> +	.x_res          = LCD_XRES,
> +	.y_res          = LCD_YRES,
> +	.pixel_clock    = LCD_PIXEL_CLOCK,
> +	.hfp            = 48,
> +	.hsw            = 40,
> +	.hbp            = 65,
> +	.vfp            = 3,
> +	.vsw            = 10,
> +	.vbp            = 25,
> +};
> +
> +static void boxer_get_resolution(struct omap_dss_device *dssdev,
> +				 u16 *xres, u16 *yres)
> +{
> +
> +	*xres = dssdev->panel.timings.x_res;
> +	*yres = dssdev->panel.timings.y_res;
> +}
> +
> +int boxer_get_recommended_bpp(struct omap_dss_device *dssdev)
> +{
> +	return 24;
> +}
> +
> +
> +static int boxer_panel_probe(struct omap_dss_device *dssdev)
> +{
> +	dssdev->panel.config = OMAP_DSS_LCD_TFT | OMAP_DSS_LCD_IVS |
> +		OMAP_DSS_LCD_IHS | OMAP_DSS_LCD_IPC;
> +	dssdev->panel.timings = boxer_panel_timings;
> +	return 0;
> +}
> +
> +static void boxer_panel_remove(struct omap_dss_device *dssdev)
> +{
> +}
> +
> +static int spi_send(struct spi_device *spi, unsigned char reg_addr,
> +		    unsigned char reg_data)
> +{
> +	int ret = 0;
> +	uint16_t msg;
> +	msg = (reg_addr << 10) | reg_data;
> +
> +	if (spi_write(spi, (unsigned char *)&msg, 2))
> +		printk(KERN_ERR "error in spi_write %x\n", msg);
> +
> +	udelay(10);
> +
> +	return ret;
> +}
> +
> +static void boxer_init_panel(void)
> +{
> +	spi_send(boxer_spi_device, 0, 0x00);
> +
> +	spi_send(boxer_spi_device,   0, 0xad);
> +	spi_send(boxer_spi_device,   1, 0x30);
> +	spi_send(boxer_spi_device,   2, 0x40);
> +	spi_send(boxer_spi_device, 0xe, 0x5f);
> +	spi_send(boxer_spi_device, 0xf, 0xa4);
> +	spi_send(boxer_spi_device, 0xd, 0x00);
> +	spi_send(boxer_spi_device, 0x2, 0x43);
> +	spi_send(boxer_spi_device, 0xa, 0x28);
> +	spi_send(boxer_spi_device, 0x10, 0x41);
> +}
> +
> +static void boxer_panel_work_func(struct work_struct *work)
> +{
> +	if (!regulator_is_enabled(boxer_panel_regulator))
> +		regulator_enable(boxer_panel_regulator);
> +
> +	msleep(LCD_RST_DELAY);
> +
> +	boxer_spi_device->mode = SPI_MODE_0;
> +	boxer_spi_device->bits_per_word = 16;
> +	spi_setup(boxer_spi_device);
> +
> +	boxer_init_panel();
> +
> +	msleep(LCD_INIT_DELAY);
> +
> +	if (boxer_panel_dssdev->platform_enable)
> +		boxer_panel_dssdev->platform_enable(boxer_panel_dssdev);
> +}
> +
> +static DECLARE_WORK(boxer_panel_work, boxer_panel_work_func);
> +
> +static int boxer_panel_enable(struct omap_dss_device *dssdev)
> +{
> +	if (atomic_add_unless(&boxer_panel_is_enabled, 1, 1)) {
> +		boxer_panel_dssdev = dssdev;
> +		queue_work(boxer_panel_wq, &boxer_panel_work);
> +	}
> +
> +	return 0;
> +}
> +
> +static void boxer_panel_disable(struct omap_dss_device *dssdev)
> +{
> +	if (atomic_dec_and_test(&boxer_panel_is_enabled)) {
> +		cancel_work_sync(&boxer_panel_work);
> +
> +		if (dssdev->platform_disable)
> +			dssdev->platform_disable(dssdev);
> +
> +		if (regulator_is_enabled(boxer_panel_regulator))
> +			regulator_disable(boxer_panel_regulator);
> +	} else {
> +		printk(KERN_WARNING "%s: attempting to disable panel twice!\n",
> +		       __func__);
> +		WARN_ON(1);
> +	}
> +}
> +
> +static int boxer_panel_suspend(struct omap_dss_device *dssdev)
> +{
> +	boxer_panel_disable(dssdev);
> +	return 0;
> +}
> +
> +static int boxer_panel_resume(struct omap_dss_device *dssdev)
> +{
> +	return boxer_panel_enable(dssdev);
> +}
> +
> +static struct omap_dss_driver boxer_driver = {
> +	.probe          = boxer_panel_probe,
> +	.remove         = boxer_panel_remove,
> +
> +	.enable         = boxer_panel_enable,
> +	.disable        = boxer_panel_disable,
> +	.suspend        = boxer_panel_suspend,
> +	.resume         = boxer_panel_resume,
> +	.get_resolution = boxer_get_resolution,
> +	.get_recommended_bpp = boxer_get_recommended_bpp,
> +	.driver		= {
> +		.name	= "boxer_panel",
> +		.owner	= THIS_MODULE,
> +	},
> +};
> +
> +static ssize_t lcd_reg_store(struct device *dev, struct device_attribute
> *attr,
> +			     const char *buf, size_t count)
> +{
> +	int argc;
> +	char **args;
> +	unsigned long r, val;
> +	int ret;
> +
> +	struct spi_device *spi = to_spi_device(dev);
> +
> +	args = argv_split(GFP_KERNEL, buf, &argc);
> +
> +	if (args = NULL) {
> +		dev_err(dev, "error getting arguments\n");
> +		return count;
> +	}
> +
> +	if (argc = 2) {
> +		ret = strict_strtoul(*args, 0, (unsigned long *)&r);
> +		if (ret)
> +			return ret;
> +		args++;
> +		ret = strict_strtoul(*args, 0, (unsigned long *)&val);
> +		if (ret)
> +			return ret;
> +		dev_info(dev, "set lcd panel spi reg %lu = %lu\n", r, val);
> +		spi_send(spi, r, val);
> +	}
> +	argv_free(args);
> +
> +	return count;
> +}
> +
> +
> +static DEVICE_ATTR(lcd_reg, S_IWUSR, NULL, lcd_reg_store);
> +
> +static struct attribute *boxer_lcd_spi_attributes[] = {
> +	&dev_attr_lcd_reg,
> +	NULL
> +};
> +
> +
> +static struct attribute_group boxer_lcd_spi_attributes_group = {
> +	.attrs = boxer_lcd_spi_attributes,
> +};
> +
> +
> +
> +static int boxer_spi_probe(struct spi_device *spi)
> +{
> +	spi->mode = SPI_MODE_0;
> +	spi->bits_per_word = 16;
> +	spi_setup(spi);
> +
> +	boxer_spi_device = spi;
> +
> +	boxer_init_panel();
> +
> +	if (sysfs_create_group(&spi->dev.kobj, &boxer_lcd_spi_attributes_group))
> +		printk(KERN_WARNING "error creating sysfs entries\n");
> +
> +	omap_dss_register_driver(&boxer_driver);
> +	return 0;
> +}
> +
> +static int boxer_spi_remove(struct spi_device *spi)
> +{
> +	sysfs_remove_group(&spi->dev.kobj, &boxer_lcd_spi_attributes_group);
> +	omap_dss_unregister_driver(&boxer_driver);
> +
> +	return 0;
> +}
> +
> +
> +static struct spi_driver boxer_spi_driver = {
> +	.probe           = boxer_spi_probe,
> +	.remove	= __devexit_p(boxer_spi_remove),
> +	.driver         = {
> +		.name   = "boxer_disp_spi",
> +		.bus    = &spi_bus_type,
> +		.owner  = THIS_MODULE,
> +	},
> +};
> +
> +static int __init boxer_lcd_init(void)
> +{
> +	int ret = 0;
> +
> +	boxer_panel_wq = create_singlethread_workqueue("boxer-panel-wq");
> +
> +	printk(KERN_WARNING "Enabling power for LCD\n");
> +	boxer_panel_regulator = regulator_get(NULL, "vlcd");
> +
> +	if (IS_ERR(boxer_panel_regulator)) {
> +		printk(KERN_ERR "Unable to get vlcd regulator, reason: %ld!\n",
> +		       IS_ERR(boxer_panel_regulator));
> +		ret = -ENODEV;
> +		goto out;
> +	}
> +
> +	ret = regulator_enable(boxer_panel_regulator);
Shouldn't  you first set the voltage level for this regulator before
enabling this?

Thanks,
Pankaj

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.



^ permalink raw reply

* Re: Getting FB to work in Console
From: Anatolij Gustschin @ 2011-11-13 16:57 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

Hello David,

On Sun, 13 Nov 2011 02:45:17 -0500 (EST)
David J Ring Jr <n1ea@arrl.net> wrote:
...
> Any suggestions?
> 
> I have changed grub to give me a large 640x480 screen and that works but 
> and it gives me color say if I have bash add color to folders and 
> executables - and mc comes up in color but no links2 -g in color because 
> no /dev/fb0.
> 
> Any other suggestions?
> 
> I made my username member of its own group and also tty and video.
> 
> As I said before I tried mknod and that worked but when I rebooted
> /dev/fb0 was gone.
> 
> I tried the mknod command again and it created /dev/fb0
> which is owned by root and in root group.  I changed the group to video.
> 
> Now root has rwx permissions the group can read and everyone can read.

You have to add write permissions for the group also. Check if
/dev/fb0 can be accessed if you create it by using
sudo mknod /dev/fb0 c 29 0 -m 660
sudo chown :video /dev/fb0

> I run links2 -g and it still says it cannot access /dev/fb0.
> 
> If I reboot /dev/fb0 will disappear.
> 
> I'm stuck!

What is the output of following commands on your system?
cat /proc/fb
cat /proc/cmdline
dmesg | grep vesa

Anatolij

^ permalink raw reply

* Re: Getting FB to work in Console
From: David J Ring Jr @ 2011-11-13  2:46 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

Hello Florian,

What I'm trying to do is make a command line distribution with speakup so 
that blind people and people who just like the command line can use it.  I 
still have some sight so occasionally I like to see the pictures that 
links2 -g can display.

I have everything working in this system:  alpine, mutt, elmo for mail, 
emacspeak the complete audio desktop is loaded and running and speaking. 
elinks, links2, w3m, and searchraw are all installed.   All the console 
multimedia stuff is in here, ftp, pdftotext converters, etc.

But the only thing that doesn't work on this is command links2 -g.

So I want this to be card independant - and my previous versions of Debian 
command line Vinux (that's the distro) worked fine.

I have no /etc/modprobe.d/fbdev-blacklist.conf file at all.

I also have no /dev/fb0 file.

Here is my /etc/modprobe.d/blacklist.conf file - it doesn't have any fb 
blacklisted either.

# This file lists modules which will not be loaded as the result of
# alias expansion, with the purpose of preventing the hotplug subsystem
# to load them. It does not affect autoloading of modules by the kernel.
# This file is provided by the udev package.

# evbug is a debug tool and should be loaded explicitly
blacklist evbug

# these drivers are very simple, the HID drivers are usually preferred
blacklist usbmouse
blacklist usbkbd

# replaced by e100
blacklist eepro100

# replaced by tulip
blacklist de4x5

# replaced by tmscsim
blacklist am53c974

# these watchdog drivers break some systems
blacklist iTCO_wdt

Any suggestions?

I have changed grub to give me a large 640x480 screen and that works but 
and it gives me color say if I have bash add color to folders and 
executables - and mc comes up in color but no links2 -g in color because 
no /dev/fb0.

Any other suggestions?

I made my username member of its own group and also tty and video.

As I said before I tried mknod and that worked but when I rebooted
/dev/fb0 was gone.

I tried the mknod command again and it created /dev/fb0
which is owned by root and in root group.  I changed the group to video.

Now root has rwx permissions the group can read and everyone can read.

I run links2 -g and it still says it cannot access /dev/fb0.

If I reboot /dev/fb0 will disappear.

I'm stuck!

David


On Sun, 13 Nov 2011, Florian Tobias Schandinat wrote:

> Hi,
>
> On 11/12/2011 11:42 PM, D.J.J. Ring, Jr. wrote:
>> I want to make framebuffer work in console only Debian installation.
>> I find many of the howto's on the web won't work for current Debian
>> Stable - or I'm just too stupid to figure them out.
>
> what graphic card/chip do you have?
> You might have to remove the corresponding framebuffer from
> /etc/modprobe.d/fbdev-blacklist.conf
>
>> < grin >
>>
>> I want to get fbi and links2 -g working in console.
>>
>> I tried entering in console:
>>
>> sudo mknod /dev/fb0 c 29 0
>
> Shouldn't be necessary. If the correct driver is loaded the device should appear
> immediately.
>
>
> Best regards,
>
> Florian Tobias Schandinat
>
>>
>> But when I reboot /dev/fb0 does not exist.
>>
>> I've had links2 -g working before - I've got libdirectfb-dev
>> libdirectfb-bin and all the files I can find with directfb to install.
>>
>> I am working on Debian Stable command line only.
>>
>> David
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>
>

^ permalink raw reply

* Re: Getting FB to work in Console
From: Florian Tobias Schandinat @ 2011-11-13  1:00 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <CADO5RbhunU1X7mWwGDbVRc1FSPKBaLudAVav0TMkBoQ_1zp0Mw@mail.gmail.com>

Hi,

On 11/12/2011 11:42 PM, D.J.J. Ring, Jr. wrote:
> I want to make framebuffer work in console only Debian installation.
> I find many of the howto's on the web won't work for current Debian
> Stable - or I'm just too stupid to figure them out.

what graphic card/chip do you have?
You might have to remove the corresponding framebuffer from
/etc/modprobe.d/fbdev-blacklist.conf

> < grin >
> 
> I want to get fbi and links2 -g working in console.
> 
> I tried entering in console:
> 
> sudo mknod /dev/fb0 c 29 0

Shouldn't be necessary. If the correct driver is loaded the device should appear
immediately.


Best regards,

Florian Tobias Schandinat

> 
> But when I reboot /dev/fb0 does not exist.
> 
> I've had links2 -g working before - I've got libdirectfb-dev
> libdirectfb-bin and all the files I can find with directfb to install.
> 
> I am working on Debian Stable command line only.
> 
> David
> --
> To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


^ permalink raw reply

* Getting FB to work in Console
From: D.J.J. Ring, Jr. @ 2011-11-12 23:42 UTC (permalink / raw)
  To: linux-fbdev

I want to make framebuffer work in console only Debian installation.
I find many of the howto's on the web won't work for current Debian
Stable - or I'm just too stupid to figure them out.
< grin >

I want to get fbi and links2 -g working in console.

I tried entering in console:

sudo mknod /dev/fb0 c 29 0

But when I reboot /dev/fb0 does not exist.

I've had links2 -g working before - I've got libdirectfb-dev
libdirectfb-bin and all the files I can find with directfb to install.

I am working on Debian Stable command line only.

David

^ permalink raw reply

* Re: [PATCH] video: s3c-fb: fix transparency length for pixel blending
From: Florian Tobias Schandinat @ 2011-11-12  0:21 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <1320645781-9528-1-git-send-email-jg1.han@samsung.com>

On 11/07/2011 06:03 AM, Jingoo Han wrote:
> Transparency length is fixed for pixel blending in order to support
> ARGB 8888 format.
> 
> Signed-off-by: Jingoo Han <jg1.han@samsung.com>

Applied this patch.


Thanks,

Florian Tobias Schandinat

> ---
>  drivers/video/s3c-fb.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/video/s3c-fb.c b/drivers/video/s3c-fb.c
> index 0753b1c..12eaee0 100644
> --- a/drivers/video/s3c-fb.c
> +++ b/drivers/video/s3c-fb.c
> @@ -621,7 +621,8 @@ static int s3c_fb_set_par(struct fb_info *info)
>  		} else if (var->transp.length = 1)
>  			data |= WINCON1_BPPMODE_25BPP_A1888
>  				| WINCON1_BLD_PIX;
> -		else if (var->transp.length = 4)
> +		else if ((var->transp.length = 4) ||
> +			(var->transp.length = 8))
>  			data |= WINCON1_BPPMODE_28BPP_A4888
>  				| WINCON1_BLD_PIX | WINCON1_ALPHA_SEL;
>  		else


^ permalink raw reply

* Re: [PATCH 1/4] zorro: Rename Picasso IV Z2 "MEM" to "RAM" for consistency
From: Florian Tobias Schandinat @ 2011-11-12  0:20 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: linux-fbdev, linux-m68k, Christian T. Steigies, linux-kernel,
	Ingo Jürgensmann
In-Reply-To: <1319110945-25684-1-git-send-email-geert@linux-m68k.org>

Applied all four patches.


Thanks,

Florian Tobias Schandinat

On 10/20/2011 11:42 AM, Geert Uytterhoeven wrote:
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
>  include/linux/zorro_ids.h |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/zorro_ids.h b/include/linux/zorro_ids.h
> index 7e74908..74bc53b 100644
> --- a/include/linux/zorro_ids.h
> +++ b/include/linux/zorro_ids.h
> @@ -360,8 +360,8 @@
>  #define  ZORRO_PROD_VILLAGE_TRONIC_PICASSO_II_II_PLUS_RAM	ZORRO_ID(VILLAGE_TRONIC, 0x0B, 0)
>  #define  ZORRO_PROD_VILLAGE_TRONIC_PICASSO_II_II_PLUS_REG	ZORRO_ID(VILLAGE_TRONIC, 0x0C, 0)
>  #define  ZORRO_PROD_VILLAGE_TRONIC_PICASSO_II_II_PLUS_SEGMENTED_MODE	ZORRO_ID(VILLAGE_TRONIC, 0x0D, 0)
> -#define  ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z2_MEM1		ZORRO_ID(VILLAGE_TRONIC, 0x15, 0)
> -#define  ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z2_MEM2		ZORRO_ID(VILLAGE_TRONIC, 0x16, 0)
> +#define  ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z2_RAM1		ZORRO_ID(VILLAGE_TRONIC, 0x15, 0)
> +#define  ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z2_RAM2		ZORRO_ID(VILLAGE_TRONIC, 0x16, 0)
>  #define  ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z2_REG		ZORRO_ID(VILLAGE_TRONIC, 0x17, 0)
>  #define  ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z3		ZORRO_ID(VILLAGE_TRONIC, 0x18, 0)
>  #define  ZORRO_PROD_VILLAGE_TRONIC_ARIADNE			ZORRO_ID(VILLAGE_TRONIC, 0xC9, 0)


^ permalink raw reply

* Re: [PATCHv2] atmel_lcdfb: support new-style palette format
From: Florian Tobias Schandinat @ 2011-11-12  0:16 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1318517152-27578-1-git-send-email-jacmet@sunsite.dk>

On 10/13/2011 02:45 PM, Peter Korsgaard wrote:
> The newer Atmel SoCs use normal 16bit 565 BGR/RGB for the palette data,
> rather than the special intensity + 555 format.
> 
> Fill out palette data correctly on these devices, and at the same time
> respect the RGB/BGR wiring mode.

Applied this patch.


Thanks,

Florian Tobias Schandinat

> 
> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
> ---
> Changes since v1:
>  - ATMEL_LCDC_WIRING_RGB/BGR was swapped
> 
>  drivers/video/atmel_lcdfb.c |   32 ++++++++++++++++++++++++--------
>  1 files changed, 24 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
> index 63409c1..7ca3eaf 100644
> --- a/drivers/video/atmel_lcdfb.c
> +++ b/drivers/video/atmel_lcdfb.c
> @@ -682,14 +682,30 @@ static int atmel_lcdfb_setcolreg(unsigned int regno, unsigned int red,
>  
>  	case FB_VISUAL_PSEUDOCOLOR:
>  		if (regno < 256) {
> -			val  = ((red   >> 11) & 0x001f);
> -			val |= ((green >>  6) & 0x03e0);
> -			val |= ((blue  >>  1) & 0x7c00);
> -
> -			/*
> -			 * TODO: intensity bit. Maybe something like
> -			 *   ~(red[10] ^ green[10] ^ blue[10]) & 1
> -			 */
> +			if (cpu_is_at91sam9261() || cpu_is_at91sam9263()
> +			    || cpu_is_at91sam9rl()) {
> +				/* old style I+BGR:555 */
> +				val  = ((red   >> 11) & 0x001f);
> +				val |= ((green >>  6) & 0x03e0);
> +				val |= ((blue  >>  1) & 0x7c00);
> +
> +				/*
> +				 * TODO: intensity bit. Maybe something like
> +				 *   ~(red[10] ^ green[10] ^ blue[10]) & 1
> +				 */
> +			} else {
> +				/* new style BGR:565 / RGB:565 */
> +				if (sinfo->lcd_wiring_mode =
> +				    ATMEL_LCDC_WIRING_RGB) {
> +					val  = ((blue >> 11) & 0x001f);
> +					val |= ((red  >>  0) & 0xf800);
> +				} else {
> +					val  = ((red  >> 11) & 0x001f);
> +					val |= ((blue >>  0) & 0xf800);
> +				}
> +
> +				val |= ((green >>  5) & 0x07e0);
> +			}
>  
>  			lcdc_writel(sinfo, ATMEL_LCDC_LUT(regno), val);
>  			ret = 0;


^ permalink raw reply

* Re: [PATCH 1/2] atmel_lcdfb: Adjust HFP calculation so it matches
From: Florian Tobias Schandinat @ 2011-11-12  0:14 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1317801598-23757-1-git-send-email-alexander.stein@systec-electronic.com>

On 10/05/2011 07:59 AM, Alexander Stein wrote:
> In the AT91SAM9263 Manual the HFP part in LCDTIM2 is described as follows:
>   * HFP: Horizontal Front Porch
>   Number of idle LCDDOTCK cycles at the end of the line.
>   Idle period is (HFP+2) LCDDOTCK cycles.
> 
> It is only a minor issue. I also changed all boards using atmel_lcdfb
> I found to respect the new calculation.

Applied both patches of this series.


Thanks,

Florian Tobias Schandinat

> 
> Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com>
> ---
>  arch/arm/mach-at91/board-cap9adk.c      |    2 +-
>  arch/arm/mach-at91/board-neocore926.c   |    2 +-
>  arch/arm/mach-at91/board-sam9261ek.c    |    4 ++--
>  arch/arm/mach-at91/board-sam9263ek.c    |    2 +-
>  arch/arm/mach-at91/board-sam9m10g45ek.c |    2 +-
>  arch/arm/mach-at91/board-sam9rlek.c     |    2 +-
>  drivers/video/atmel_lcdfb.c             |    4 ++--
>  7 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/arch/arm/mach-at91/board-cap9adk.c b/arch/arm/mach-at91/board-cap9adk.c
> index 679b0b7..ae962bf 100644
> --- a/arch/arm/mach-at91/board-cap9adk.c
> +++ b/arch/arm/mach-at91/board-cap9adk.c
> @@ -304,7 +304,7 @@ static struct fb_videomode at91_tft_vga_modes[] = {
>  		.xres		= 240,		.yres		= 320,
>  		.pixclock	= KHZ2PICOS(4965),
>  
> -		.left_margin	= 1,		.right_margin	= 33,
> +		.left_margin	= 1,		.right_margin	= 34,
>  		.upper_margin	= 1,		.lower_margin	= 0,
>  		.hsync_len	= 5,		.vsync_len	= 1,
>  
> diff --git a/arch/arm/mach-at91/board-neocore926.c b/arch/arm/mach-at91/board-neocore926.c
> index 9bc6ab3..583878e 100644
> --- a/arch/arm/mach-at91/board-neocore926.c
> +++ b/arch/arm/mach-at91/board-neocore926.c
> @@ -235,7 +235,7 @@ static struct fb_videomode at91_tft_vga_modes[] = {
>  		.xres		= 240,		.yres		= 320,
>  		.pixclock	= KHZ2PICOS(5000),
>  
> -		.left_margin	= 1,		.right_margin	= 33,
> +		.left_margin	= 1,		.right_margin	= 34,
>  		.upper_margin	= 1,		.lower_margin	= 0,
>  		.hsync_len	= 5,		.vsync_len	= 1,
>  
> diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c
> index 5096a0e..8dda83b 100644
> --- a/arch/arm/mach-at91/board-sam9261ek.c
> +++ b/arch/arm/mach-at91/board-sam9261ek.c
> @@ -370,7 +370,7 @@ static struct fb_videomode at91_stn_modes[] = {
>  		.xres           = 320,          .yres           = 240,
>  		.pixclock       = KHZ2PICOS(1440),
>  
> -		.left_margin    = 1,            .right_margin   = 1,
> +		.left_margin    = 1,            .right_margin   = 2,
>  		.upper_margin   = 0,            .lower_margin   = 0,
>  		.hsync_len      = 1,            .vsync_len      = 1,
>  
> @@ -431,7 +431,7 @@ static struct fb_videomode at91_tft_vga_modes[] = {
>  		.xres		= 240,		.yres		= 320,
>  		.pixclock	= KHZ2PICOS(4965),
>  
> -		.left_margin	= 1,		.right_margin	= 33,
> +		.left_margin	= 1,		.right_margin	= 34,
>  		.upper_margin	= 1,		.lower_margin	= 0,
>  		.hsync_len	= 5,		.vsync_len	= 1,
>  
> diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
> index ea8f185..e260070 100644
> --- a/arch/arm/mach-at91/board-sam9263ek.c
> +++ b/arch/arm/mach-at91/board-sam9263ek.c
> @@ -258,7 +258,7 @@ static struct fb_videomode at91_tft_vga_modes[] = {
>  		.xres		= 240,		.yres		= 320,
>  		.pixclock	= KHZ2PICOS(4965),
>  
> -		.left_margin	= 1,		.right_margin	= 33,
> +		.left_margin	= 1,		.right_margin	= 34,
>  		.upper_margin	= 1,		.lower_margin	= 0,
>  		.hsync_len	= 5,		.vsync_len	= 1,
>  
> diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c
> index ad234cc..5e9a5ca 100644
> --- a/arch/arm/mach-at91/board-sam9m10g45ek.c
> +++ b/arch/arm/mach-at91/board-sam9m10g45ek.c
> @@ -197,7 +197,7 @@ static struct fb_videomode at91_tft_vga_modes[] = {
>  		.xres		= 480,		.yres		= 272,
>  		.pixclock	= KHZ2PICOS(9000),
>  
> -		.left_margin	= 1,		.right_margin	= 1,
> +		.left_margin	= 1,		.right_margin	= 2,
>  		.upper_margin	= 40,		.lower_margin	= 1,
>  		.hsync_len	= 45,		.vsync_len	= 1,
>  
> diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c
> index 4f14b54..ad9e5c9 100644
> --- a/arch/arm/mach-at91/board-sam9rlek.c
> +++ b/arch/arm/mach-at91/board-sam9rlek.c
> @@ -154,7 +154,7 @@ static struct fb_videomode at91_tft_vga_modes[] = {
>  		.xres		= 240,		.yres		= 320,
>  		.pixclock	= KHZ2PICOS(4965),
>  
> -		.left_margin	= 1,		.right_margin	= 33,
> +		.left_margin	= 1,		.right_margin	= 34,
>  		.upper_margin	= 1,		.lower_margin	= 0,
>  		.hsync_len	= 5,		.vsync_len	= 1,
>  
> diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
> index 817ab60..816d528 100644
> --- a/drivers/video/atmel_lcdfb.c
> +++ b/drivers/video/atmel_lcdfb.c
> @@ -393,7 +393,7 @@ static int atmel_lcdfb_check_var(struct fb_var_screeninfo *var,
>  	var->lower_margin = min_t(u32, var->lower_margin,
>  			ATMEL_LCDC_VFP);
>  	var->right_margin = min_t(u32, var->right_margin,
> -			(ATMEL_LCDC_HFP >> ATMEL_LCDC_HFP_OFFSET) + 1);
> +			(ATMEL_LCDC_HFP >> ATMEL_LCDC_HFP_OFFSET) + 2);
>  	var->hsync_len = min_t(u32, var->hsync_len,
>  			(ATMEL_LCDC_HPW >> ATMEL_LCDC_HPW_OFFSET) + 1);
>  	var->left_margin = min_t(u32, var->left_margin,
> @@ -578,7 +578,7 @@ static int atmel_lcdfb_set_par(struct fb_info *info)
>  	lcdc_writel(sinfo, ATMEL_LCDC_TIM1, value);
>  
>  	/* Horizontal timing */
> -	value = (info->var.right_margin - 1) << ATMEL_LCDC_HFP_OFFSET;
> +	value = (info->var.right_margin - 2) << ATMEL_LCDC_HFP_OFFSET;
>  	value |= (info->var.hsync_len - 1) << ATMEL_LCDC_HPW_OFFSET;
>  	value |= (info->var.left_margin - 1);
>  	dev_dbg(info->device, "  * LCDTIM2 = %08lx\n", value);


^ permalink raw reply

* Re: [PATCH v3 2/3] v4l: Add V4L2_PIX_FMT_NV24 and V4L2_PIX_FMT_NV42
From: Mauro Carvalho Chehab @ 2011-11-11 18:41 UTC (permalink / raw)
  To: Laurent Pinchart; +Cc: linux-fbdev, linux-media, magnus.damm
In-Reply-To: <1314789501-824-3-git-send-email-laurent.pinchart@ideasonboard.com>

Em 31-08-2011 08:18, Laurent Pinchart escreveu:
> NV24 and NV42 are planar YCbCr 4:4:4 and YCrCb 4:4:4 formats with a
> luma plane followed by an interleaved chroma plane.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com>

> ---
>  Documentation/DocBook/media/v4l/pixfmt-nv24.xml |  129 +++++++++++++++++++++++
>  Documentation/DocBook/media/v4l/pixfmt.xml      |    1 +
>  include/linux/videodev2.h                       |    2 +
>  3 files changed, 132 insertions(+), 0 deletions(-)
>  create mode 100644 Documentation/DocBook/media/v4l/pixfmt-nv24.xml
> 
> diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv24.xml b/Documentation/DocBook/media/v4l/pixfmt-nv24.xml
> new file mode 100644
> index 0000000..939c803
> --- /dev/null
> +++ b/Documentation/DocBook/media/v4l/pixfmt-nv24.xml
> @@ -0,0 +1,129 @@
> +    <refentry>
> +      <refmeta>
> +	<refentrytitle>V4L2_PIX_FMT_NV24 ('NV24'), V4L2_PIX_FMT_NV42 ('NV42')</refentrytitle>
> +	&manvol;
> +      </refmeta>
> +      <refnamediv>
> +	<refname id="V4L2-PIX-FMT-NV24"><constant>V4L2_PIX_FMT_NV24</constant></refname>
> +	<refname id="V4L2-PIX-FMT-NV42"><constant>V4L2_PIX_FMT_NV42</constant></refname>
> +	<refpurpose>Formats with full horizontal and vertical
> +chroma resolutions, also known as YUV 4:4:4. One luminance and one
> +chrominance plane with alternating chroma samples as opposed to
> +<constant>V4L2_PIX_FMT_YVU420</constant></refpurpose>
> +      </refnamediv>
> +      <refsect1>
> +	<title>Description</title>
> +
> +	<para>These are two-plane versions of the YUV 4:4:4 format. The three
> +	components are separated into two sub-images or planes. The Y plane is
> +	first, with each Y sample stored in one byte per pixel. For
> +	<constant>V4L2_PIX_FMT_NV24</constant>, a combined CbCr plane
> +	immediately follows the Y plane in memory. The CbCr plane has the same
> +	width and height, in pixels, as the Y plane (and the image). Each line
> +	contains one CbCr pair per pixel, with each Cb and Cr sample stored in
> +	one byte. <constant>V4L2_PIX_FMT_NV42</constant> is the same except that
> +	the Cb and Cr samples are swapped, the CrCb plane starts with a Cr
> +	sample.</para>
> +
> +	<para>If the Y plane has pad bytes after each row, then the CbCr plane
> +	has twice as many pad bytes after its rows.</para>
> +
> +	<example>
> +	  <title><constant>V4L2_PIX_FMT_NV24</constant> 4 &times; 4
> +pixel image</title>
> +
> +	  <formalpara>
> +	    <title>Byte Order.</title>
> +	    <para>Each cell is one byte.
> +		<informaltable frame="none">
> +		<tgroup cols="9" align="center">
> +		  <colspec align="left" colwidth="2*" />
> +		  <tbody valign="top">
> +		    <row>
> +		      <entry>start&nbsp;+&nbsp;0:</entry>
> +		      <entry>Y'<subscript>00</subscript></entry>
> +		      <entry>Y'<subscript>01</subscript></entry>
> +		      <entry>Y'<subscript>02</subscript></entry>
> +		      <entry>Y'<subscript>03</subscript></entry>
> +		    </row>
> +		    <row>
> +		      <entry>start&nbsp;+&nbsp;4:</entry>
> +		      <entry>Y'<subscript>10</subscript></entry>
> +		      <entry>Y'<subscript>11</subscript></entry>
> +		      <entry>Y'<subscript>12</subscript></entry>
> +		      <entry>Y'<subscript>13</subscript></entry>
> +		    </row>
> +		    <row>
> +		      <entry>start&nbsp;+&nbsp;8:</entry>
> +		      <entry>Y'<subscript>20</subscript></entry>
> +		      <entry>Y'<subscript>21</subscript></entry>
> +		      <entry>Y'<subscript>22</subscript></entry>
> +		      <entry>Y'<subscript>23</subscript></entry>
> +		    </row>
> +		    <row>
> +		      <entry>start&nbsp;+&nbsp;12:</entry>
> +		      <entry>Y'<subscript>30</subscript></entry>
> +		      <entry>Y'<subscript>31</subscript></entry>
> +		      <entry>Y'<subscript>32</subscript></entry>
> +		      <entry>Y'<subscript>33</subscript></entry>
> +		    </row>
> +		    <row>
> +		      <entry>start&nbsp;+&nbsp;16:</entry>
> +		      <entry>Cb<subscript>00</subscript></entry>
> +		      <entry>Cr<subscript>00</subscript></entry>
> +		      <entry>Cb<subscript>01</subscript></entry>
> +		      <entry>Cr<subscript>01</subscript></entry>
> +		      <entry>Cb<subscript>02</subscript></entry>
> +		      <entry>Cr<subscript>02</subscript></entry>
> +		      <entry>Cb<subscript>03</subscript></entry>
> +		      <entry>Cr<subscript>03</subscript></entry>
> +		    </row>
> +		    <row>
> +		      <entry>start&nbsp;+&nbsp;24:</entry>
> +		      <entry>Cb<subscript>10</subscript></entry>
> +		      <entry>Cr<subscript>10</subscript></entry>
> +		      <entry>Cb<subscript>11</subscript></entry>
> +		      <entry>Cr<subscript>11</subscript></entry>
> +		      <entry>Cb<subscript>12</subscript></entry>
> +		      <entry>Cr<subscript>12</subscript></entry>
> +		      <entry>Cb<subscript>13</subscript></entry>
> +		      <entry>Cr<subscript>13</subscript></entry>
> +		    </row>
> +		    <row>
> +		      <entry>start&nbsp;+&nbsp;32:</entry>
> +		      <entry>Cb<subscript>20</subscript></entry>
> +		      <entry>Cr<subscript>20</subscript></entry>
> +		      <entry>Cb<subscript>21</subscript></entry>
> +		      <entry>Cr<subscript>21</subscript></entry>
> +		      <entry>Cb<subscript>22</subscript></entry>
> +		      <entry>Cr<subscript>22</subscript></entry>
> +		      <entry>Cb<subscript>23</subscript></entry>
> +		      <entry>Cr<subscript>23</subscript></entry>
> +		    </row>
> +		    <row>
> +		      <entry>start&nbsp;+&nbsp;40:</entry>
> +		      <entry>Cb<subscript>30</subscript></entry>
> +		      <entry>Cr<subscript>30</subscript></entry>
> +		      <entry>Cb<subscript>31</subscript></entry>
> +		      <entry>Cr<subscript>31</subscript></entry>
> +		      <entry>Cb<subscript>32</subscript></entry>
> +		      <entry>Cr<subscript>32</subscript></entry>
> +		      <entry>Cb<subscript>33</subscript></entry>
> +		      <entry>Cr<subscript>33</subscript></entry>
> +		    </row>
> +		  </tbody>
> +		</tgroup>
> +		</informaltable>
> +	      </para>
> +	  </formalpara>
> +	</example>
> +      </refsect1>
> +    </refentry>
> +
> +  <!--
> +Local Variables:
> +mode: sgml
> +sgml-parent-document: "pixfmt.sgml"
> +indent-tabs-mode: nil
> +End:
> +  -->
> diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
> index 2ff6b77..aef4615 100644
> --- a/Documentation/DocBook/media/v4l/pixfmt.xml
> +++ b/Documentation/DocBook/media/v4l/pixfmt.xml
> @@ -714,6 +714,7 @@ information.</para>
>      &sub-nv12m;
>      &sub-nv12mt;
>      &sub-nv16;
> +    &sub-nv24;
>      &sub-m420;
>    </section>
>  
> diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
> index fca24cc..8225163 100644
> --- a/include/linux/videodev2.h
> +++ b/include/linux/videodev2.h
> @@ -343,6 +343,8 @@ struct v4l2_pix_format {
>  #define V4L2_PIX_FMT_NV21    v4l2_fourcc('N', 'V', '2', '1') /* 12  Y/CrCb 4:2:0  */
>  #define V4L2_PIX_FMT_NV16    v4l2_fourcc('N', 'V', '1', '6') /* 16  Y/CbCr 4:2:2  */
>  #define V4L2_PIX_FMT_NV61    v4l2_fourcc('N', 'V', '6', '1') /* 16  Y/CrCb 4:2:2  */
> +#define V4L2_PIX_FMT_NV24    v4l2_fourcc('N', 'V', '2', '4') /* 24  Y/CbCr 4:4:4  */
> +#define V4L2_PIX_FMT_NV42    v4l2_fourcc('N', 'V', '4', '2') /* 24  Y/CrCb 4:4:4  */
>  
>  /* two non contiguous planes - one Y, one Cr + Cb interleaved  */
>  #define V4L2_PIX_FMT_NV12M   v4l2_fourcc('N', 'M', '1', '2') /* 12  Y/CbCr 4:2:0  */


^ permalink raw reply

* Re: [PATCH v3 0/3] fbdev: Add FOURCC-based format configuration API
From: Mauro Carvalho Chehab @ 2011-11-11 18:41 UTC (permalink / raw)
  To: Florian Tobias Schandinat
  Cc: Laurent Pinchart, linux-fbdev, linux-media, magnus.damm
In-Reply-To: <4EBD4DD1.7030809@gmx.de>

Em 11-11-2011 14:31, Florian Tobias Schandinat escreveu:
> On 09/18/2011 08:49 PM, Laurent Pinchart wrote:
>>> As the second patch has nothing to do with fbdev it should go mainline via
>>> V4L2. Any problems/comments?
>>
>> The NV24/42 patch will need to reach mainline before the sh_mobile_lcdc YUV 
>> API patch, or compilation will break.
>>
>> Mauro, what's your preference ? Should the patch go through the media tree ? 
>> If so, how should we synchronize it with the fbdev tree ? Should I push it to 
>> 3.2 ?
> 
> ping
> 
> What's going on? I could carry the patch but I'd want an Ack to do so.

I think I had answered it before, on some previous version. I'm OK if you merge
it via your tree.

Just replied to the patch with my ACK.

> 
> 
> Best regards,
> 
> Florian Tobias Schandinat


^ permalink raw reply

* Re: [RFC] drivers/video: fsl-diu-fb: combine several allocated
From: Tabi Timur-B04825 @ 2011-11-11 16:41 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <1320793445-29562-1-git-send-email-timur@freescale.com>

Florian Tobias Schandinat wrote:

> The idea to merge multiple DMA objects sounds good. But I think you might want
> to have a look at what you put in the DMA area. I think it would be better and
> cleaner to put things that should be never accessed by the device, like
> fsl_diu_info, irq, reg_lock and so on, in a separate structure.

Hmmm... you have a valid point, but I'm not keen on the idea of having two 
memory blocks.  I was even hoping to put mfb_info objects in fsl_diu_info, 
but framebuffer_alloc() won't let me.

>> Documentation for some affected data structures and variables is added.
>
> You could do this in an separate patch as it's independent of your idea to merge
> the DMA objects. Well, I do not care very much in this case.

I can split it out.  It will give me the chance to add even more 
documentation.

-- 
Timur Tabi
Linux kernel developer at Freescale

^ permalink raw reply

* Re: [PATCH v3 0/3] fbdev: Add FOURCC-based format configuration API
From: Florian Tobias Schandinat @ 2011-11-11 16:31 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: linux-fbdev, linux-media, magnus.damm, Mauro Carvalho Chehab
In-Reply-To: <201109182249.39536.laurent.pinchart@ideasonboard.com>

On 09/18/2011 08:49 PM, Laurent Pinchart wrote:
>> As the second patch has nothing to do with fbdev it should go mainline via
>> V4L2. Any problems/comments?
> 
> The NV24/42 patch will need to reach mainline before the sh_mobile_lcdc YUV 
> API patch, or compilation will break.
> 
> Mauro, what's your preference ? Should the patch go through the media tree ? 
> If so, how should we synchronize it with the fbdev tree ? Should I push it to 
> 3.2 ?

ping

What's going on? I could carry the patch but I'd want an Ack to do so.


Best regards,

Florian Tobias Schandinat

^ permalink raw reply

* Re: [RFC] drivers/video: fsl-diu-fb: combine several allocated buffers
From: Florian Tobias Schandinat @ 2011-11-11 16:15 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <1320793445-29562-1-git-send-email-timur@freescale.com>

On 11/08/2011 11:04 PM, Timur Tabi wrote:
> (Florian: this patch is the first of my changes for 3.3, but because it's
> so extensive, I wanted to get your feedback before I continue with the rest
> of my changes).

In general this looks good to me. Just keep in mind that multiple small patches
are preferred.

> The DIU driver allocates several different objects separately, many of
> which are accessed directly by the hardware and must be aligned on various
> boundaries.  This results in multiple allocations and awkward data
> structures used to keep track of all the pointers and physical addresses.
> 
> Instead, merge all of these objects into the fsl_diu_data structure, and
> enforce the alignment within the structure.  Only one physical address
> needs to be remember, and a macro is used to calculate the physical
> address of any field.  Frame buffers are still allocated separately,
> since their sizes vary with the resolutions.

The idea to merge multiple DMA objects sounds good. But I think you might want
to have a look at what you put in the DMA area. I think it would be better and
cleaner to put things that should be never accessed by the device, like
fsl_diu_info, irq, reg_lock and so on, in a separate structure.

> Documentation for some affected data structures and variables is added.

You could do this in an separate patch as it's independent of your idea to merge
the DMA objects. Well, I do not care very much in this case.

> The code assume that dma_alloc_coherent() will always return an aligned
> memory block.  This function uses a page allocator on every architecture
> that has a DIU, so this is safe.  The alternative is to allocate an extra
> 31 bytes that will never be used, and keep track of offsets that will
> always be zero.  However, to be future-proof, we still validate the
> alignement.

Okay.


Best regards,

Florian Tobias Schandinat

> 
> Signed-off-by: Timur Tabi <timur@freescale.com>
> ---
>  drivers/video/fsl-diu-fb.c |  264 ++++++++++++++++++++------------------------
>  1 files changed, 118 insertions(+), 146 deletions(-)
> 
> diff --git a/drivers/video/fsl-diu-fb.c b/drivers/video/fsl-diu-fb.c
> index a16beeb..68f24a5 100644
> --- a/drivers/video/fsl-diu-fb.c
> +++ b/drivers/video/fsl-diu-fb.c
> @@ -36,11 +36,9 @@
>  #include <linux/fsl-diu-fb.h>
>  #include "edid.h"
> 
> -#define FSL_AOI_NUM	6	/* 5 AOIs and one dummy AOI */
> -				/* 1 for plane 0, 2 for plane 1&2 each */
> +#define NUM_AOIS	5	/* 1 for plane 0, 2 for planes 1 & 2 each */
> 
> -/* HW cursor parameters */
> -#define MAX_CURS		32
> +#define MAX_CURS	32	/* HW cursor is 32 * 32 pixels, 16 bpp */
> 
>  /* INT_STATUS/INT_MASK field descriptions */
>  #define INT_VSYNC	0x01	/* Vsync interrupt  */
> @@ -49,12 +47,6 @@
>  #define INT_PARERR	0x08	/* Display parameters error interrupt */
>  #define INT_LS_BF_VS	0x10	/* Lines before vsync. interrupt */
> 
> -struct diu_addr {
> -	void *vaddr;		/* Virtual address */
> -	dma_addr_t paddr;	/* Physical address */
> -	__u32 offset;
> -};
> -
>  /*
>   * List of supported video modes
>   *
> @@ -330,22 +322,43 @@ static unsigned int d_cache_line_size;
> 
>  static DEFINE_SPINLOCK(diu_lock);
> 
> +/**
> + * struct fsl_diu_data - per-DIU data structure
> + * @phys: physical address of this structure
> + * @fsl_diu_info: fb_info objects, one per AOI
> + * @dev_attr: sysfs structure
> + * @irq: IRQ
> + * @fb_enabled: TRUE if the DIU is enabled, FALSE if not
> + * @monitor_port: the monitor port this DIU is connected to
> + * @diu_reg: pointer to the DIU hardware registers
> + * @reg_lock: spinlock for register access
> + * @dummy_aoi: video buffer for the 4x4 32-bit dummy AOI
> + * dummy_ad: DIU Area Descriptor for the dummy AOI
> + * @ad[]: Area Descriptors for each real AOI
> + * @gamma: gamma color table
> + * @cursor: hardware cursor data
> + *
> + * This data structure must be allocated with 32-byte alignment, so that the
> + * internal fields can be aligned properly.
> + */
>  struct fsl_diu_data {
> -	struct fb_info *fsl_diu_info[FSL_AOI_NUM - 1];
> -				/*FSL_AOI_NUM has one dummy AOI */
> +	dma_addr_t phys;
> +	struct fb_info *fsl_diu_info[NUM_AOIS];
>  	struct device_attribute dev_attr;
> -	struct diu_ad *dummy_ad;
> -	void *dummy_aoi_virt;
>  	unsigned int irq;
>  	int fb_enabled;
>  	enum fsl_diu_monitor_port monitor_port;
>  	struct diu __iomem *diu_reg;
>  	spinlock_t reg_lock;
> -	struct diu_addr ad;
> -	struct diu_addr gamma;
> -	struct diu_addr pallete;
> -	struct diu_addr cursor;
> -};
> +	u8 dummy_aoi[4 * 4 * 4];
> +	struct diu_ad dummy_ad __aligned(8);
> +	struct diu_ad ad[NUM_AOIS] __aligned(8);
> +	u8 gamma[256 * 3] __aligned(32);
> +	u8 cursor[MAX_CURS * MAX_CURS * 2] __aligned(32);
> +} __aligned(32);
> +
> +/* Determine the physical address of a member of the fsl_diu_data structure */
> +#define PHYS_ADDR(p, f) ((p)->phys + offsetof(struct fsl_diu_data, f))
> 
>  enum mfb_index {
>  	PLANE0 = 0,	/* Plane 0, only one AOI that fills the screen */
> @@ -355,6 +368,21 @@ enum mfb_index {
>  	PLANE2_AOI1,	/* Plane 2, second AOI */
>  };
> 
> +/**
> + * struct mfb_info - per-AOI data structure
> + * @index: the AOI index
> + * @id: the name of this AOI
> + * @registered: TRUE = this framebuffer has been registed with fbdev
> + * @pseudo_palette: the pseudo-palette
> + * @ad: pointer to the Area Descriptor for this AOI
> + * @cursor_reset: unusued
> + * @g_alpha: the global alpha value, can be set by ioctl
> + * @count: the number of times this framebuffer has been opened
> + * @x_aoi_d: X-offset of the AOI.  0 is the left edge of the physical screen
> + * @y_aoi_d: Y-offset of the AOI.  0 is the top edge of the physical screen
> + * @parent: pointer to fsl_diu_data structure
> + * @edid_data: EDID data
> + */
>  struct mfb_info {
>  	enum mfb_index index;
>  	char *id;
> @@ -364,8 +392,8 @@ struct mfb_info {
>  	int cursor_reset;
>  	unsigned char g_alpha;
>  	unsigned int count;
> -	int x_aoi_d;		/* aoi display x offset to physical screen */
> -	int y_aoi_d;		/* aoi display y offset to physical screen */
> +	int x_aoi_d;
> +	int y_aoi_d;
>  	struct fsl_diu_data *parent;
>  	u8 *edid_data;
>  };
> @@ -528,7 +556,7 @@ static void fsl_diu_enable_panel(struct fb_info *info)
>  	case PLANE1_AOI1:
>  		pmfbi = machine_data->fsl_diu_info[1]->par;
>  		ad->next_ad = 0;
> -		if (hw->desc[1] = machine_data->dummy_ad->paddr)
> +		if (hw->desc[1] = machine_data->dummy_ad.paddr)
>  			wr_reg_wa(&hw->desc[1], ad->paddr);
>  		else					/* AOI0 open */
>  			pmfbi->ad->next_ad = cpu_to_le32(ad->paddr);
> @@ -536,7 +564,7 @@ static void fsl_diu_enable_panel(struct fb_info *info)
>  	case PLANE2_AOI1:
>  		pmfbi = machine_data->fsl_diu_info[3]->par;
>  		ad->next_ad = 0;
> -		if (hw->desc[2] = machine_data->dummy_ad->paddr)
> +		if (hw->desc[2] = machine_data->dummy_ad.paddr)
>  			wr_reg_wa(&hw->desc[2], ad->paddr);
>  		else				/* AOI0 was open */
>  			pmfbi->ad->next_ad = cpu_to_le32(ad->paddr);
> @@ -553,8 +581,8 @@ static void fsl_diu_disable_panel(struct fb_info *info)
> 
>  	switch (mfbi->index) {
>  	case PLANE0:
> -		if (hw->desc[0] != machine_data->dummy_ad->paddr)
> -			wr_reg_wa(&hw->desc[0], machine_data->dummy_ad->paddr);
> +		if (hw->desc[0] != machine_data->dummy_ad.paddr)
> +			wr_reg_wa(&hw->desc[0], machine_data->dummy_ad.paddr);
>  		break;
>  	case PLANE1_AOI0:
>  		cmfbi = machine_data->fsl_diu_info[2]->par;
> @@ -562,7 +590,7 @@ static void fsl_diu_disable_panel(struct fb_info *info)
>  			wr_reg_wa(&hw->desc[1], cmfbi->ad->paddr);
>  					/* move AOI1 to the first */
>  		else			/* AOI1 was closed */
> -			wr_reg_wa(&hw->desc[1], machine_data->dummy_ad->paddr);
> +			wr_reg_wa(&hw->desc[1], machine_data->dummy_ad.paddr);
>  					/* close AOI 0 */
>  		break;
>  	case PLANE2_AOI0:
> @@ -571,7 +599,7 @@ static void fsl_diu_disable_panel(struct fb_info *info)
>  			wr_reg_wa(&hw->desc[2], cmfbi->ad->paddr);
>  					/* move AOI1 to the first */
>  		else			/* AOI1 was closed */
> -			wr_reg_wa(&hw->desc[2], machine_data->dummy_ad->paddr);
> +			wr_reg_wa(&hw->desc[2], machine_data->dummy_ad.paddr);
>  					/* close AOI 0 */
>  		break;
>  	case PLANE1_AOI1:
> @@ -582,7 +610,7 @@ static void fsl_diu_disable_panel(struct fb_info *info)
>  					/* AOI0 is open, must be the first */
>  				pmfbi->ad->next_ad = 0;
>  		} else			/* AOI1 is the first in the chain */
> -			wr_reg_wa(&hw->desc[1], machine_data->dummy_ad->paddr);
> +			wr_reg_wa(&hw->desc[1], machine_data->dummy_ad.paddr);
>  					/* close AOI 1 */
>  		break;
>  	case PLANE2_AOI1:
> @@ -593,7 +621,7 @@ static void fsl_diu_disable_panel(struct fb_info *info)
>  				/* AOI0 is open, must be the first */
>  				pmfbi->ad->next_ad = 0;
>  		} else		/* AOI1 is the first in the chain */
> -			wr_reg_wa(&hw->desc[2], machine_data->dummy_ad->paddr);
> +			wr_reg_wa(&hw->desc[2], machine_data->dummy_ad.paddr);
>  				/* close AOI 1 */
>  		break;
>  	}
> @@ -812,15 +840,15 @@ static void update_lcdc(struct fb_info *info)
>  	struct fsl_diu_data *machine_data = mfbi->parent;
>  	struct diu __iomem *hw;
>  	int i, j;
> -	char __iomem *cursor_base, *gamma_table_base;
> +	u8 *gamma_table_base;
> 
>  	u32 temp;
> 
>  	hw = machine_data->diu_reg;
> 
>  	diu_ops.set_monitor_port(machine_data->monitor_port);
> -	gamma_table_base = machine_data->gamma.vaddr;
> -	cursor_base = machine_data->cursor.vaddr;
> +	gamma_table_base = machine_data->gamma;
> +
>  	/* Prep for DIU init  - gamma table, cursor table */
> 
>  	for (i = 0; i <= 2; i++)
> @@ -828,14 +856,14 @@ static void update_lcdc(struct fb_info *info)
>  			*gamma_table_base++ = j;
> 
>  	diu_ops.set_gamma_table(machine_data->monitor_port,
> -				machine_data->gamma.vaddr);
> +		machine_data->gamma);
> 
>  	disable_lcdc(info);
> 
>  	/* Program DIU registers */
> 
> -	out_be32(&hw->gamma, machine_data->gamma.paddr);
> -	out_be32(&hw->cursor, machine_data->cursor.paddr);
> +	out_be32(&hw->gamma, PHYS_ADDR(machine_data, gamma));
> +	out_be32(&hw->cursor, PHYS_ADDR(machine_data, cursor));
> 
>  	out_be32(&hw->bgnd, 0x007F7F7F); 	/* BGND */
>  	out_be32(&hw->bgnd_wb, 0); 		/* BGND_WB */
> @@ -1423,37 +1451,6 @@ static int fsl_diu_resume(struct platform_device *ofdev)
>  #define fsl_diu_resume NULL
>  #endif				/* CONFIG_PM */
> 
> -/* Align to 64-bit(8-byte), 32-byte, etc. */
> -static int allocate_buf(struct device *dev, struct diu_addr *buf, u32 size,
> -			u32 bytes_align)
> -{
> -	u32 offset;
> -	dma_addr_t mask;
> -
> -	buf->vaddr > -		dma_alloc_coherent(dev, size + bytes_align, &buf->paddr,
> -				   GFP_DMA | __GFP_ZERO);
> -	if (!buf->vaddr)
> -		return -ENOMEM;
> -
> -	mask = bytes_align - 1;
> -	offset = buf->paddr & mask;
> -	if (offset) {
> -		buf->offset = bytes_align - offset;
> -		buf->paddr = buf->paddr + offset;
> -	} else
> -		buf->offset = 0;
> -
> -	return 0;
> -}
> -
> -static void free_buf(struct device *dev, struct diu_addr *buf, u32 size,
> -		     u32 bytes_align)
> -{
> -	dma_free_coherent(dev, size + bytes_align, buf->vaddr,
> -			  buf->paddr - buf->offset);
> -}
> -
>  static ssize_t store_monitor(struct device *device,
>  	struct device_attribute *attr, const char *buf, size_t count)
>  {
> @@ -1499,28 +1496,54 @@ static int __devinit fsl_diu_probe(struct platform_device *pdev)
>  {
>  	struct device_node *np = pdev->dev.of_node;
>  	struct mfb_info *mfbi;
> -	phys_addr_t dummy_ad_addr = 0;
> -	int ret, i, error = 0;
>  	struct fsl_diu_data *machine_data;
>  	int diu_mode;
> +	dma_addr_t phys_addr;	/* physical addr of machine_data struct */
> +	unsigned int i;
> +	int ret;
> 
> -	machine_data = kzalloc(sizeof(struct fsl_diu_data), GFP_KERNEL);
> +	machine_data = dma_alloc_coherent(&pdev->dev,
> +		sizeof(struct fsl_diu_data), &phys_addr, GFP_DMA | __GFP_ZERO);
>  	if (!machine_data)
>  		return -ENOMEM;
> +	machine_data->phys = phys_addr;
> +
> +	/*
> +	 * dma_alloc_coherent() uses a page allocator, so the address is
> +	 * always page-aligned.  We need the memory to be 32-byte aligned,
> +	 * so that's good.  However, if one day the allocator changes, we
> +	 * need to catch that.  It's not worth the effort to handle unaligned
> +	 * alloctions now because it's highly unlikely to ever be a problem.
> +	 */
> +	if ((unsigned long)machine_data & 31) {
> +		dev_err(&pdev->dev, "misaligned allocation");
> +		ret = -ENOMEM;
> +		goto error;
> +	}
> 
>  	spin_lock_init(&machine_data->reg_lock);
> 
> -	for (i = 0; i < ARRAY_SIZE(machine_data->fsl_diu_info); i++) {
> +	for (i = 0; i < NUM_AOIS; i++) {
>  		machine_data->fsl_diu_info[i] >  			framebuffer_alloc(sizeof(struct mfb_info), &pdev->dev);
>  		if (!machine_data->fsl_diu_info[i]) {
>  			dev_err(&pdev->dev, "cannot allocate memory\n");
>  			ret = -ENOMEM;
> -			goto error2;
> +			goto error;
>  		}
> +		/*
> +		 * We store the physical address of the AD in the reserved
> +		 * 'paddr' field of the AD itself.
> +		 */
> +		machine_data->ad[i].paddr = PHYS_ADDR(machine_data, ad[i]);
> +
> +		machine_data->fsl_diu_info[i]->fix.smem_start = 0;
> +
> +		/* Initialize the AOI data structure */
>  		mfbi = machine_data->fsl_diu_info[i]->par;
>  		memcpy(mfbi, &mfb_template[i], sizeof(struct mfb_info));
>  		mfbi->parent = machine_data;
> +		mfbi->ad = &machine_data->ad[i];
> 
>  		if (mfbi->index = PLANE0) {
>  			const u8 *prop;
> @@ -1538,7 +1561,7 @@ static int __devinit fsl_diu_probe(struct platform_device *pdev)
>  	if (!machine_data->diu_reg) {
>  		dev_err(&pdev->dev, "cannot map DIU registers\n");
>  		ret = -EFAULT;
> -		goto error2;
> +		goto error;
>  	}
> 
>  	diu_mode = in_be32(&machine_data->diu_reg->diu_mode);
> @@ -1555,41 +1578,16 @@ static int __devinit fsl_diu_probe(struct platform_device *pdev)
>  	}
>  	machine_data->monitor_port = monitor_port;
> 
> -	/* Area descriptor memory pool aligns to 64-bit boundary */
> -	if (allocate_buf(&pdev->dev, &machine_data->ad,
> -			 sizeof(struct diu_ad) * FSL_AOI_NUM, 8))
> -		return -ENOMEM;
> -
> -	/* Get memory for Gamma Table  - 32-byte aligned memory */
> -	if (allocate_buf(&pdev->dev, &machine_data->gamma, 768, 32)) {
> -		ret = -ENOMEM;
> -		goto error;
> -	}
> -
> -	/* For performance, cursor bitmap buffer aligns to 32-byte boundary */
> -	if (allocate_buf(&pdev->dev, &machine_data->cursor,
> -			 MAX_CURS * MAX_CURS * 2, 32)) {
> -		ret = -ENOMEM;
> -		goto error;
> -	}
> -
> -	i = ARRAY_SIZE(machine_data->fsl_diu_info);
> -	machine_data->dummy_ad = (struct diu_ad *)((u32)machine_data->ad.vaddr +
> -			machine_data->ad.offset) + i;
> -	machine_data->dummy_ad->paddr = machine_data->ad.paddr +
> -			i * sizeof(struct diu_ad);
> -	machine_data->dummy_aoi_virt = fsl_diu_alloc(64, &dummy_ad_addr);
> -	if (!machine_data->dummy_aoi_virt) {
> -		ret = -ENOMEM;
> -		goto error;
> -	}
> -	machine_data->dummy_ad->addr = cpu_to_le32(dummy_ad_addr);
> -	machine_data->dummy_ad->pix_fmt = 0x88882317;
> -	machine_data->dummy_ad->src_size_g_alpha = cpu_to_le32((4 << 12) | 4);
> -	machine_data->dummy_ad->aoi_size = cpu_to_le32((4 << 16) |  2);
> -	machine_data->dummy_ad->offset_xyi = 0;
> -	machine_data->dummy_ad->offset_xyd = 0;
> -	machine_data->dummy_ad->next_ad = 0;
> +	/* Initialize the dummy Area Descriptor */
> +	machine_data->dummy_ad.addr > +		cpu_to_le32(PHYS_ADDR(machine_data, dummy_aoi));
> +	machine_data->dummy_ad.pix_fmt = 0x88882317;
> +	machine_data->dummy_ad.src_size_g_alpha = cpu_to_le32((4 << 12) | 4);
> +	machine_data->dummy_ad.aoi_size = cpu_to_le32((4 << 16) |  2);
> +	machine_data->dummy_ad.offset_xyi = 0;
> +	machine_data->dummy_ad.offset_xyd = 0;
> +	machine_data->dummy_ad.next_ad = 0;
> +	machine_data->dummy_ad.paddr = PHYS_ADDR(machine_data, dummy_ad);
> 
>  	/*
>  	 * Let DIU display splash screen if it was pre-initialized
> @@ -1597,18 +1595,12 @@ static int __devinit fsl_diu_probe(struct platform_device *pdev)
>  	 */
>  	if (diu_mode = MFB_MODE0)
>  		out_be32(&machine_data->diu_reg->desc[0],
> -			 machine_data->dummy_ad->paddr);
> +			 machine_data->dummy_ad.paddr);
> 
> -	out_be32(&machine_data->diu_reg->desc[1], machine_data->dummy_ad->paddr);
> -	out_be32(&machine_data->diu_reg->desc[2], machine_data->dummy_ad->paddr);
> +	out_be32(&machine_data->diu_reg->desc[1], machine_data->dummy_ad.paddr);
> +	out_be32(&machine_data->diu_reg->desc[2], machine_data->dummy_ad.paddr);
> 
> -	for (i = 0; i < ARRAY_SIZE(machine_data->fsl_diu_info); i++) {
> -		machine_data->fsl_diu_info[i]->fix.smem_start = 0;
> -		mfbi = machine_data->fsl_diu_info[i]->par;
> -		mfbi->ad = (struct diu_ad *)((u32)machine_data->ad.vaddr
> -					+ machine_data->ad.offset) + i;
> -		mfbi->ad->paddr > -			machine_data->ad.paddr + i * sizeof(struct diu_ad);
> +	for (i = 0; i < NUM_AOIS; i++) {
>  		ret = install_fb(machine_data->fsl_diu_info[i]);
>  		if (ret) {
>  			dev_err(&pdev->dev, "could not register fb %d\n", i);
> @@ -1626,9 +1618,8 @@ static int __devinit fsl_diu_probe(struct platform_device *pdev)
>  	machine_data->dev_attr.attr.mode = S_IRUGO|S_IWUSR;
>  	machine_data->dev_attr.show = show_monitor;
>  	machine_data->dev_attr.store = store_monitor;
> -	error = device_create_file(machine_data->fsl_diu_info[0]->dev,
> -				  &machine_data->dev_attr);
> -	if (error) {
> +	ret = device_create_file(&pdev->dev, &machine_data->dev_attr);
> +	if (ret) {
>  		dev_err(&pdev->dev, "could not create sysfs file %s\n",
>  			machine_data->dev_attr.attr.name);
>  	}
> @@ -1640,52 +1631,33 @@ error:
>  	for (i = 0; i < ARRAY_SIZE(machine_data->fsl_diu_info); i++)
>  		uninstall_fb(machine_data->fsl_diu_info[i]);
> 
> -	if (machine_data->ad.vaddr)
> -		free_buf(&pdev->dev, &machine_data->ad,
> -			 sizeof(struct diu_ad) * FSL_AOI_NUM, 8);
> -	if (machine_data->gamma.vaddr)
> -		free_buf(&pdev->dev, &machine_data->gamma, 768, 32);
> -	if (machine_data->cursor.vaddr)
> -		free_buf(&pdev->dev, &machine_data->cursor,
> -			 MAX_CURS * MAX_CURS * 2, 32);
> -	if (machine_data->dummy_aoi_virt)
> -		fsl_diu_free(machine_data->dummy_aoi_virt, 64);
>  	iounmap(machine_data->diu_reg);
> 
> -error2:
>  	for (i = 0; i < ARRAY_SIZE(machine_data->fsl_diu_info); i++)
>  		if (machine_data->fsl_diu_info[i])
>  			framebuffer_release(machine_data->fsl_diu_info[i]);
> -	kfree(machine_data);
> +
> +	dma_free_coherent(&pdev->dev, sizeof(struct fsl_diu_data),
> +		machine_data, machine_data->phys);
> 
>  	return ret;
>  }
> 
>  static int fsl_diu_remove(struct platform_device *pdev)
>  {
> -	struct fsl_diu_data *machine_data;
> -	int i;
> +	struct fsl_diu_data *machine_data = dev_get_drvdata(&pdev->dev);
> +	unsigned int i;
> 
> -	machine_data = dev_get_drvdata(&pdev->dev);
>  	disable_lcdc(machine_data->fsl_diu_info[0]);
>  	free_irq_local(machine_data);
>  	for (i = 0; i < ARRAY_SIZE(machine_data->fsl_diu_info); i++)
>  		uninstall_fb(machine_data->fsl_diu_info[i]);
> -	if (machine_data->ad.vaddr)
> -		free_buf(&pdev->dev, &machine_data->ad,
> -			 sizeof(struct diu_ad) * FSL_AOI_NUM, 8);
> -	if (machine_data->gamma.vaddr)
> -		free_buf(&pdev->dev, &machine_data->gamma, 768, 32);
> -	if (machine_data->cursor.vaddr)
> -		free_buf(&pdev->dev, &machine_data->cursor,
> -			 MAX_CURS * MAX_CURS * 2, 32);
> -	if (machine_data->dummy_aoi_virt)
> -		fsl_diu_free(machine_data->dummy_aoi_virt, 64);
>  	iounmap(machine_data->diu_reg);
>  	for (i = 0; i < ARRAY_SIZE(machine_data->fsl_diu_info); i++)
>  		if (machine_data->fsl_diu_info[i])
>  			framebuffer_release(machine_data->fsl_diu_info[i]);
> -	kfree(machine_data);
> +	dma_free_coherent(&pdev->dev, sizeof(struct fsl_diu_data),
> +		machine_data, machine_data->phys);
> 
>  	return 0;
>  }
> --
> 1.7.3.4
> 
> 
> 


^ permalink raw reply

* Re: [PATCH 0/15] fbdev: sh_mipi_dsi: care un-explained register settings
From: Florian Tobias Schandinat @ 2011-11-11 15:37 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <874nydc3vz.wl%kuninori.morimoto.gx@renesas.com>

Hi Guennadi, Magnus,

On 11/09/2011 04:32 AM, kuninori.morimoto.gx@renesas.com wrote:
> Dear Florian, Paul
> 
> These are sh_mipi_dsi update patches.
> 
> Kuninori Morimoto (15):
>       fbdev: sh_mobile_lcdcfb: fixup LDHAJR :: HSYNPAJ needs mask
>       fbdev: sh_mipi_dsi: tidyup dsip_clk
>       fbdev: sh_mipi_dsi: typo fix of SH_MIPI_DSI_HBPBM
>       fbdev: sh_mipi_dsi: tidyup VMCTR2 parameter expression
>       fbdev: sh_mipi_dsi: add SH_MIPI_DSI_HFPBM flag
>       fbdev: sh_mipi_dsi: add SH_MIPI_DSI_BL2E flag
>       fbdev: sh_mipi_dsi: add lane control support
>       fbdev: sh_mipi_dsi: add sync_pulses/sync_events/burst mode
>       fbdev: sh_mipi_dsi: add VMLEN1/VMLEN2 calculation
>       fbdev: sh_mipi_dsi: add set_dot_clock() for each platform
>       fbdev: sh_mipi_dsi: add HSxxCLK support
>       fbdev: sh_mipi_dsi: sh_mipi has pdata instead of dev
>       fbdev: sh_mipi_dsi: fixup setup timing of sh_mipi_setup()
>       fbdev: sh_mipi_dsi: fixup setup timing of SYSCONF
>       fbdev: sh_mipi_dsi: fixup setup timing DSICTRL

can you have a look at these patches?
After a quick glance they look okay to me, but as this is all about hardware
(which I don't know) I'd be happier if someone more qualified could have a look
at it.


Thanks,

Florian Tobias Schandinat

> SH MIPI DSI has many registers, but some registers are not explained for detail in SH manual.
> This time, I asked it to Renesas MIPI guys.
> These patches include this result.
> 
> for example, if your board is using AP5R chip,
> HS4divCLK is needed for 1920x1080p 60Hz output.
> But you can NOT find its explain and calculation method on AP5R manual.
> 
> These are based on latest linus/master tree
> 
>>> Paul
> 
> Can you please check #2, #7, #8, #10, #11 pache which modify arch/arm/mach-shmobile/xxx
> 


^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox