02:41 | Coburn | Well, gotta say I like using a CuBox as a NAS |
02:42 | Coburn | 1TB HDD attached to it, rolled out Debian + SAMBA |
02:42 | Coburn | Better than buying some chinese stuff that would have a backdoor in the Web UI |
03:48 | dbsx | Hey Coburn, I am starting to like cubox as 1) with awesome 2) with xbmc 3) NAS |
06:21 | Coburn | dbsx: I will say XBMC rocks the CuBox's socks off |
06:21 | Coburn | There's some lag between the transtitions on the screen, but that's understandable since we've got only 800Mhz Single Core to play with |
06:23 | Coburn | by 'with awesome', you mean it's awesome in general or 'awesome' as in the window manager :P |
06:41 | dbsx | awesome the window manager |
08:59 | Coburn | Ah, I think I've used that window manager |
08:59 | Coburn | I think |
09:35 | rabeeh | Coburn: awesome is really good, and fast |
09:35 | rabeeh | profiling X on ubuntu shows libpixman as biggest CPU consumer (when moving window) |
09:56 | suihkulokki | rabeeh: pixman has some neon/sse optimisations, doing them over to iwmmx might help |
10:30 | rabeeh | suihkulokki: olpc already did something similar |
10:30 | rabeeh | for mmp2 device (iwmmxt) |
10:34 | suihkulokki | seems to be upstream already, but not on the debian packages |
10:36 | suihkulokki | the other possibility if pixman is highly visible in profiler, is that xorg/drm are not doing a good job managing buffers |
11:03 | rabee | 11:03 * rabeeh doesn't have drm :( |
11:03 | rabeeh | but yes; pixman is on the top of the list |
13:17 | _rmk_ | shesselba: are you getting any mail from lakml or only stuff cc'd/to you? |
13:18 | shesselba | _rmk_: I am subscribed to lakml but sometimes I am not able to read through all the stuff.. has there already been a discussion about drm + DT? |
13:19 | _rmk_ | no, the reason I'm asking is that since 2am +0100, I've not had any mail from the lists, neither has my local archive |
13:20 | _rmk_ | I think infradead might have broken, or it's unsubscribed both me and the archive at the same time |
13:20 | shesselba | no |
13:20 | shesselba | I didn't get any too |
13:20 | _rmk_ | okay, probably an infradead problem then. :( Will have to wait for dwmw2 to surface. |
13:20 | shesselba | 01.33AM last mail, git pull omap2+ |
13:23 | _rmk_ | I've now removed all the dummy mode/connector unknown status from the driver... and then had great fun with Xorg yesterday. |
13:23 | _rmk_ | it's not good when your GPU fills physical address 0, thinking its a 2048x2048 screen with black, wiping out your kernel. |
13:24 | shesselba | WTF? |
13:25 | shesselba | that's the mem bug you were talking about yesterday? |
13:25 | _rmk_ | I was allocating the initial framebuffer in X (which will be the max res - 2048x2048) before I know whether I'm using the GPU. If I'm not using the GPU, then I don't set the pixmap's physical address, so that ends up being 0. |
13:26 | _rmk_ | when there's a connector present, X will then re-set the framebuffer according to the desired resolution, which reallocates it. At that time, it does know it's using the GPU, so sets the phys address... |
13:27 | _rmk_ | however, with nothing connected, that reallocation never occurs, so when X decides to clear the screen using the GPU, it hits the initial one which didn't have the phys address set, and clears the kernel out :( |
13:27 | shesselba | ouch |
13:28 | _rmk_ | the driver now has that fixed, and an assert(bo->phys != 0); just before we pass any address to the GPU... better to kill the X server than the machine. |
13:30 | _rmk_ | on the i2c thing... yes I can see that's a problem, and that's something I think which also needs sorting with Francisco Jerez and/or David Airlie. Francisco seems to be the author of the slave encoder stuff |
13:31 | _rmk_ | but not sure if Francisco would be interested; this code dates from 2009 apparantly |
13:32 | shesselba | hehe |
13:34 | shesselba | I guess it is difficult, while SoCs connect them to "global" i2c adapters, PC graphics cards will have them connected to some private i2c that is never exposed |
13:34 | _rmk_ | btw, v4l2 also suffers from this same problem |
13:34 | _rmk_ | drivers/media/v4l2-core/v4l2-common.c:v4l2_i2c_new_subdev_board |
13:35 | _rmk_ | the pattern generally adopted by the PC "add-in card" model is that the driver for the card knows about the devices on the card |
13:35 | _rmk_ | and that stuff isn't described by DT |
13:35 | shesselba | which is a reasonable for an add-in-card |
13:36 | shesselba | but for SoCs it isn't anymore.. |
13:36 | shesselba | or it will lead to e.g. asoc having a new card for every SoC<->codec combination |
13:40 | _rmk_ | looking at omap dss, they suffer from the same problem with i2c - take a peek at drivers/video/omap2/displays/panel-picodlp.c:picodlp_panel_probe |
13:40 | shesselba | gimme a sec, have to buy a new phone ;) |
13:57 | shesselba | yeah, as you already noticed, there is a lot sub-APIs suffering from this |
14:07 | suihkulokki | rabeeh: gcc 4.6 is apperently too old for ixmmx + hardfp |
14:09 | suihkulokki | rabeeh: and gcc-4.8 won't do iwmmx + thumb2, but with -marm pixman will compile with iwmmx code |
18:08 | dv_ | suihkulokki: gcc 4.8 supposedly got a new -march=marvell-pj4 switch |
19:04 | _rmk_ | shesselba: as far as the clock divider goes... I just found this comment: |
19:04 | _rmk_ | For example, to obtain 80 MHz, this register should be set to (83-80)/83 = |
19:04 | _rmk_ | 0x094. |
19:05 | _rmk_ | In this example, three clocks are suppressed, 80 clocks are used, and the duty |
19:05 | _rmk_ | cycle is not 50%. |
19:17 | shesselba | _rmk_: yeah, I read this, but never thought they would really suppress output clocks but input clocks.. implementing a digital sigma-delta clock divider isn't that hard ;) |
19:19 | shesselba | it would still be a high-jitter clock, but suppress a whole output clock just makes it unusable for contiguous video |
19:32 | _rmk_ | shesselba: so, is making use of the AXI or PLL clocks basically a bad idea? |
19:33 | shesselba | hmm.. that is what you have to rely on when there is no extclk available.. but their capabilities are limited |
19:33 | shesselba | axiclk is 333MHz by default |
19:34 | shesselba | pllclk is 2000MHz/N or 2000MHz/(N+0.5) with N >= 5 and N <= 32 IIRC |
19:35 | shesselba | Hard to hit one of the common 50/60Hz pixclk freqencies |
19:37 | shesselba | not a big deal if you use Dove as computer replacement with VESA mode, but for HDTV the internal clocks are useless |
19:39 | shesselba | _rmk_: there is a patch for clk_mux to select the best parent clock for a requested rate.. that should solve the "get best available clock" issue |
19:39 | _rmk_ | ah, is that available somewhere? |
19:39 | shesselba | mom |
19:41 | shesselba | https://lkml.org/lkml/2013/5/20/315 |
19:42 | dv_ | okay, so much to catch up. many new packages. |
19:43 | dv_ | the stuff you guys are doing, are you using a public repo for it that I can integrate into openembedded recipes? I want to update my meta-cubox layer |
19:43 | shesselba | _rmk_: but using this will make re-probing for external clocks a lot more complicated |
19:48 | _rmk_ | ah, so that's being done in the clk layer |
19:49 | shesselba | _rmk_: I am not yet so sure it is a good idea to mux on rate change |
19:50 | _rmk_ | and I'm not so sure that this is the best way to sort out the clock setting: |
19:50 | _rmk_ | rate = adj->clock * 1000; |
19:50 | _rmk_ | clk_set_rate(dcrtc->clk, rate); |
19:50 | _rmk_ | ref = clk_get_rate(dcrtc->clk); |
19:50 | _rmk_ | div = DIV_ROUND_UP(ref, rate); |
19:50 | _rmk_ | if (div < 1) |
19:50 | _rmk_ | div = 1; |
19:50 | _rmk_ | because... that will result in a slow clock rate being set before the divider gets used |
19:50 | shesselba | that's your code ;) |
19:51 | _rmk_ | yea, which is the same as the dovefb method |
19:51 | shesselba | I guess, having a clock for the divider itself is not a bad idea |
19:52 | _rmk_ | really what we want to know is: is there a combination of divider and clock rate which results in something reasonably close to the desired rate after dividing |
19:53 | shesselba | you just clk_set_rate to it here and it should find the best parent clock that provides it |
19:53 | shesselba | it can also re-probe for extclk |
19:54 | dv_ | _rmk_: you told me that the xorg dovefb driver doesnt work with newer xorg servers because it redefines modeline stuff internally |
19:54 | dv_ | were you talking about the marvell release, or this: http://dev.laptop.org/git/projects/xf86-video-dove/ |
19:56 | _rmk_ | I was talking about the original for the cubox |
20:06 | dv_ | okay, then perhaps this one will work. lets see. |
20:45 | _rmk_ | shesselba: do we know of any other SoCs with this LCD controller in? |
20:45 | shesselba | officially? |
20:46 | shesselba | its in some pxa, let me check the number |
20:55 | shesselba | _rmk_: Armada/PXA16x |
20:56 | shesselba | and I wouldn't be surprised to also find it in Armada 600, 1000, 1500 |
21:03 | _rmk_ | hmm, there's subtle differences in the clock register between the two |
21:03 | shesselba | yes |
21:04 | _rmk_ | and on the fractional divider field... "Due to clock jitter added by fractional divider, use of this field is limited to smart panel device which has its own pixel clock source." |
21:04 | _rmk_ | :) |
21:06 | _rmk_ | and I notice... no dcon on this device |
21:06 | _rmk_ | just a single lcd controller (which is what I've already said in an email I've prepared...) |
21:09 | _rmk_ | I think what I'm going to do about this at the crtc level is have the crtc call a method in the main dev_private structure which provides the clock divisor, and let that method decide which clock to use and what divider values to use. |
21:10 | shesselba | yeah, move the clock to driver level and just pass a single clk to crtc |
21:10 | _rmk_ | not even thinking about passing a clk to the crtc - though the crtc should remember which clk it's currently using, but all that can be handled in the method |
21:11 | _rmk_ | I'm also thinking that this should probably not be called "dove" but "armada" |
21:11 | shesselba | yep |
21:13 | dv_ | isnt armada the marketing name for the dove platform? |
21:13 | _rmk_ | PXA16x is also known as Armada 16x |
21:14 | _rmk_ | not sure if that can be classified as "dove" tho |
21:14 | dv_ | hmm. perhaps "dove" is limited to the armada 500 series |
21:14 | shesselba | PXA, Armada, MV88AP, almost interchangeable .. marvell numbering is a mess |
21:15 | shesselba | Dove = 88AP510 aka Armada 510 aka PXA510 (sometimes) |
21:15 | dv_ | i wonder how such overcomplicated numbering schemes come to be |
21:15 | dv_ | who thinks this is a good idea? |
21:16 | shesselba | I guess Dove is some internal SoC/Project name |
21:16 | shesselba | 88AP510 is the "technical" name |
21:17 | shesselba | PXA510 the old marketing name, Armada the new |
21:17 | shesselba | voila, you have 4 names ;) |
21:17 | _rmk_ | and the Armada 16x are 88AP16x |
21:18 | _rmk_ | and the Armada 16x "software manual" refers you to the "PXA16x Application Processor Family Hardware Manual" |
21:18 | _rmk_ | and it's soooooo tempting to keep typing ARMada :( |
21:19 | shesselba | funny isn't it ;) |
21:19 | dv_ | haha |
21:19 | _rmk_ | I'm sure they wanted to use that capitalization but the lawyers probably said no :) |
21:19 | dv_ | yes, it does remind me of the ARM naming and numbering scheme |
21:24 | rabeeh | 88AP510 is the part number |
21:24 | rabeeh | Armada is the family; Armada 510 is the mkt name of the chip |
21:24 | rabeeh | Dove is internal name |
21:24 | _rmk_ | rabeeh: do you know if Dove covers the 88AP16x as well? |
21:24 | rabeeh | nop |
21:25 | rabeeh | it doesn't cover |
21:25 | rabeeh | Dove is only 88AP510 |
21:25 | _rmk_ | okay, so calling this driver "armada" rather than "dove" seems more appropriate then as it's also found there |
21:25 | rabeeh | yes. |
21:25 | rabeeh | that's withregards combining the 88ap16x and 88ap510 clcd drivers? |
21:27 | _rmk_ | it's more a case of not creating something we're going to regret in the future, like naming all the DT stuff "dove" rather than "armada" if "armada" would be more appropriate |
21:27 | shesselba | yes, it is about renaming dove-drm to armada-drm early to show it will also work on 168 with some minor modifications |
21:37 | _rmk_ | right, willitboot :) |
21:39 | _rmk_ | I haven't booted it yet, but I thought I'd find a possibly appropriate image: http://cdn.memegenerator.net/instances/400x/33353668.jpg |
21:39 | dv_ | :) |
21:39 | dv_ | oh rabeeh, is there some kind of cubox logo, like the raspberrypi one? |
21:39 | dv_ | something that can be used for a splashscreen? |
21:40 | _rmk_ | well, it's booting... :) |
21:44 | _rmk_ | and it works... well, it would do if it selected 720p not 1080i with the drm/i2c/tda998x.c driver |
21:44 | rabeeh | dv_: there isn't |
21:44 | rabeeh | there is the solidrun logo |
21:49 | dv_ | _rmk_: what is the "UseGPU" code path in the dovefb driver? |
21:49 | dv_ | using GPU for what? |
21:49 | dv_ | is it drawing Xvideo overlays with pixel shaders? |
21:50 | rabeeh | xv extension |
21:50 | dv_ | okay, it doesnt work in the newest xorg drivers (from dev.laptop.org) due to missing Vivante symbols |
21:50 | dv_ | but with UseGPU=false, I get an image =) |
21:51 | _rmk_ | it also allows the driver to use the GPU for acceleration too using the Exa backend |
21:51 | rabeeh | dv_: btw - poky danny builds |
21:51 | dv_ | yay! |
21:51 | rabeeh | :) |
21:52 | dv_ | okay, the missing symbol is gcoHAL_QuerySeparated3D2D |
21:52 | dv_ | I am puzzled by all this. the dove Vivante stuff is missing that symbol and the gceHARDWARE_TYPE enum . freescale Vivante stuff has both. |
21:53 | _rmk_ | welcome to the world of changing APIs that is the Vivante GPU HAL :( |
21:53 | dv_ | oh, and rabeeh, try out gstreamer on it when you get the chance, to see if you can replicate my CPU% results with vmeta |
21:53 | rabeeh | the 11% ? |
21:53 | dv_ | _rmk_: yeah :| |
21:53 | dv_ | rabeeh: yes |
21:54 | dv_ | oh _rmk_, jnettlet told me about http://dev.laptop.org/git/users/dsd/libphycontmem/ , which seems to be some library for cacheable memory (?) |
21:59 | _rmk_ | oh no, not another contig kernel memory driver |
21:59 | _rmk_ | #define MARVELL_MEMDEV_NAME_CACHEBUFFERED"/dev/pmem"//cacheable & buffered |
21:59 | _rmk_ | #define MARVELL_MEMDEV_NAME_NONCACHED"/dev/pmem_adsp"//non-cacheable & non-buffered |
22:00 | _rmk_ | #define MARVELL_MEMDEV_NAME_WC"/dev/pmem_wc"//non-cacheable & buffered |
22:00 | _rmk_ | and why three char devs for that? |
22:00 | _rmk_ | at least bmm is way better than that. |
22:02 | dv_ | I do not know why this exists. |
22:02 | dv_ | perhaps bmm is being phased out? |
22:05 | _rmk_ | my libbmm: http://ftp.arm.linux.org.uk/git/gitweb.cgi?p=libbmm.git;a=tree |
22:13 | dv_ | alright, my oe layer works with the newest yocto now \o/ |