Announcement

Collapse
No announcement yet.

Linux 4.21 Is Sure To Be Another Exciting Kernel Upgrade: FreeSync, Adiantum & More

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Linux 4.21 Is Sure To Be Another Exciting Kernel Upgrade: FreeSync, Adiantum & More

    Phoronix: Linux 4.21 Is Sure To Be Another Exciting Kernel Upgrade: FreeSync, Adiantum & More

    There is still four weeks or so until the Linux 4.20 kernel will be officially christened, but there are already some changes we are excited for that should be on the table with Linux 4.21...

    http://www.phoronix.com/scan.php?pag....21-Early-Look

  • #2
    Missing is:
    - Disabling dmesg errors when CONFIG_RETPOLINE is not selected.
    - Patch for the Astrometa DVB-T2 usb-stick with the Sony demodulator. Did send it to the media maintainer weeks ago.
    Code:
    Add support for the cxd2837er demodulator that is in the Astrometa 2018
    dvb-t/t2/c usb tv-stick.
    
    Signed-off-by:
    
    ---
     drivers/media/usb/dvb-usb-v2/Kconfig | 1 +
     1 file changed, 1 insertion(+)
    
    diff --git a/drivers/media/usb/dvb-usb-v2/Kconfig b/drivers/media/usb/dvb-usb-v2/Kconfig
    index 082b8d67244bf..60299bd8aa4ae 100644
    --- a/drivers/media/usb/dvb-usb-v2/Kconfig
    +++ b/drivers/media/usb/dvb-usb-v2/Kconfig
    @@ -130,6 +130,7 @@ config DVB_USB_RTL28XXU
         depends on DVB_USB_V2 && I2C_MUX
         select DVB_MN88472 if MEDIA_SUBDRV_AUTOSELECT
         select DVB_MN88473 if MEDIA_SUBDRV_AUTOSELECT
    +    select DVB_CXD2841ER if MEDIA_SUBDRV_AUTOSELECT
         select DVB_RTL2830
         select DVB_RTL2832
         select DVB_RTL2832_SDR if (MEDIA_SUBDRV_AUTOSELECT && MEDIA_SDR_SUPPORT)
    
    ---
     drivers/media/usb/dvb-usb-v2/rtl28xxu.h | 4 ++++
     1 file changed, 4 insertions(+)
    
    diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.h b/drivers/media/usb/dvb-usb-v2/rtl28xxu.h
    index 138062960a736..2543c9195979d 100644
    --- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.h
    +++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.h
    @@ -31,6 +31,7 @@
     #include "rtl2832_sdr.h"
     #include "mn88472.h"
     #include "mn88473.h"
    +#include "cxd2841er.h"
     
     #include "qt1010.h"
     #include "mt2060.h"
    @@ -87,7 +88,10 @@ struct rtl28xxu_dev {
         #define SLAVE_DEMOD_MN88472        1
         #define SLAVE_DEMOD_MN88473        2
         #define SLAVE_DEMOD_SI2168         3
    +    #define SLAVE_DEMOD_TYPE1          0
    +    #define SLAVE_DEMOD_TYPE2          1
         unsigned int slave_demod:2;
    +    unsigned int slave_demod_type:1;
         union {
             struct rtl2830_platform_data rtl2830_platform_data;
             struct rtl2832_platform_data rtl2832_platform_data;
    
    ---
     drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 44 ++++++++++++++++++++++---
     1 file changed, 39 insertions(+), 5 deletions(-)
    
    diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
    index c76e78f9638ab..7780a426317c7 100644
    --- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
    +++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
    @@ -386,6 +386,7 @@
         struct rtl28xxu_req req_mn88473 = {0xff38, CMD_I2C_RD, 1, buf};
         struct rtl28xxu_req req_si2157 = {0x00c0, CMD_I2C_RD, 1, buf};
         struct rtl28xxu_req req_si2168 = {0x00c8, CMD_I2C_RD, 1, buf};
    +    struct rtl28xxu_req req_cxd2837er = {0x68d8, CMD_I2C_RD, 1, buf};
     
         dev_dbg(&d->intf->dev, "\n");
     
    @@ -540,6 +541,16 @@
     
         /* probe slave demod */
         if (dev->tuner == TUNER_RTL2832_R828D) {
    +        /* power off slave demod on GPIO0 to reset CXD2837ER */
    +        ret = rtl28xxu_wr_reg_mask(d, SYS_GPIO_OUT_VAL, 0x00, 0x01);
    +        if (ret)
    +            goto err;
    +
    +        ret = rtl28xxu_wr_reg_mask(d, SYS_GPIO_OUT_EN, 0x00, 0x01);
    +        if (ret)
    +            goto err;
    +
    +        msleep(50);
             /* power on MN88472 demod on GPIO0 */
             ret = rtl28xxu_wr_reg_mask(d, SYS_GPIO_OUT_VAL, 0x01, 0x01);
             if (ret)
    @@ -565,6 +576,14 @@
             if (ret == 0 && buf[0] == 0x03) {
                 dev_dbg(&d->intf->dev, "MN88473 found\n");
                 dev->slave_demod = SLAVE_DEMOD_MN88473;
    +            dev->slave_demod_type = SLAVE_DEMOD_TYPE1;
    +            goto demod_found;
    +        }
    +        ret = rtl28xxu_ctrl_msg(d, &req_cxd2837er);
    +        if (ret == 0 && buf[0] == 0x03) {
    +            dev_dbg(&d->intf->dev, "CXD2837ER found");
    +            dev->slave_demod = SLAVE_DEMOD_MN88473;
    +            dev->slave_demod_type = SLAVE_DEMOD_TYPE2;
                 goto demod_found;
             }
         }
    @@ -967,7 +986,8 @@
                 }
     
                 dev->i2c_client_slave_demod = client;
    -        } else if (dev->slave_demod == SLAVE_DEMOD_MN88473) {
    +        } else if (dev->slave_demod == SLAVE_DEMOD_MN88473 && dev->slave_demod_type
    +                == SLAVE_DEMOD_TYPE1) {
                 struct mn88473_config mn88473_config = {};
     
                 mn88473_config.fe = &adap->fe[1];
    @@ -989,6 +1009,29 @@
                 }
     
                 dev->i2c_client_slave_demod = client;
    +        } else if (dev->slave_demod == SLAVE_DEMOD_MN88473 && dev->slave_demod_type
    +                == SLAVE_DEMOD_TYPE2) {
    +            struct cxd2841er_config cfg = {};
    +            cfg.i2c_addr = 0xd8;
    +            cfg.xtal = SONY_XTAL_20500;
    +            cfg.flags = CXD2841ER_AUTO_IFHZ | CXD2841ER_EARLY_TUNE |
    +                CXD2841ER_NO_WAIT_LOCK | CXD2841ER_NO_AGCNEG |
    +                CXD2841ER_TSBITS | CXD2841ER_TS_SERIAL;
    +
    +            adap->fe[1] = dvb_attach( cxd2841er_attach_t_c, &cfg, &d->i2c_adap );
    +
    +                    if (!adap->fe[1]) {
    +                    dev_err(&d->intf->dev, "CXD2837ER attach failed!\n");
    +                    return -ENODEV;
    +                    }
    +
    +            if (!try_module_get(client->dev.driver->owner)) {
    +                i2c_unregister_device(client);
    +                dev->slave_demod = SLAVE_DEMOD_NONE;
    +                goto err_slave_demod_failed;
    +            }
    +
    +            dev->i2c_client_slave_demod = client;
             } else {
                 struct si2168_config si2168_config = {};
                 struct i2c_adapter *adapter;
    @@ -1046,10 +1089,15 @@
         dev_dbg(&d->intf->dev, "\n");
     
         /* remove I2C slave demod */
    -    client = dev->i2c_client_slave_demod;
    -    if (client) {
    -        module_put(client->dev.driver->owner);
    -        i2c_unregister_device(client);
    +    if (dev->slave_demod == SLAVE_DEMOD_MN88473 && dev->slave_demod_type
    +        == SLAVE_DEMOD_TYPE2)
    +         dev_info(&d->intf->dev,"Sony CXD2837ER detached automatically.");
    +    else {
    +        client = dev->i2c_client_slave_demod;
    +        if (client) {
    +          module_put(client->dev.driver->owner);
    +          i2c_unregister_device(client);
    +        }
         }
     
         /* remove I2C demod */
    Last edited by debianxfce; 12-02-2018, 02:43 PM.

    Comment


    • #3
      Originally posted by debianxfce View Post
      - Disabling dmesg errors when RETROPLINE is not selected.
      Who cares?

      Comment


      • #4
        Originally posted by debianxfce View Post
        Missing is:
        - Disabling dmesg errors when RETROPLINE is not selected.
        What kind of RETRO thing is that inside the kernel?

        (jk, I know you mean REPOTLINE)

        Comment


        • #5
          Originally posted by Vistaus View Post

          What kind of RETRO thing is that inside the kernel?

          (jk, I know you mean REPOTLINE)
          You do mean RETPOLINE, right??? Or is there both RETPOLINE and REPOTLINE? A quick google doesn't make it clear, since it could easily be typoed, as we've seen.

          Comment


          • #6
            Originally posted by AsuMagic View Post

            Who cares?
            People who like clean looking boots. All other thousand kernel configs works as they should. No kernel module defined, be silent.

            Comment


            • #7
              From my conversation with KDE developers - don't be too excited about adaptive sync support in the kernel. It will take a long time still for Wayland compositors to start supporting it. Kernel support is important of course, but for end user to benefit from it, it should be supported throughout the whole stack.

              Comment


              • #8
                Originally posted by shmerl View Post
                From my conversation with KDE developers - don't be too excited about adaptive sync support in the kernel. It will take a long time still for Wayland compositors to start supporting it. Kernel support is important of course, but for end user to benefit from it, it should be supported throughout the whole stack.
                Freesync is for gaming, not for desktops. Shouldn't Wayland desktops be flicker free and smooth by design What waste of resources whole Wayland project is. Even current embedded hw is enough fast to run X. They are implementing X features desperately after years of development. It will be never ready, poor design. Nobody supports it, you need to have the Xwayland wrapper.

                Comment


                • #9
                  Originally posted by debianxfce View Post

                  Freesync is for gaming, not for desktops. Shouldn't Wayland desktops be flicker free and smooth by design What waste of resources whole Wayland project is. Even current embedded hw is enough fast to run X. They are implementing X features desperately after years of development. It will be never ready, poor design. Nobody supports it, you need to have the Xwayland wrapper.
                  Gaming or not, compositors should be aware of the feature, in order for applications to use it.

                  Comment


                  • #10
                    Originally posted by debianxfce View Post

                    Freesync is for gaming, not for desktops. Shouldn't Wayland desktops be flicker free and smooth by design What waste of resources whole Wayland project is. Even current embedded hw is enough fast to run X. They are implementing X features desperately after years of development. It will be never ready, poor design. Nobody supports it, you need to have the Xwayland wrapper.
                    I needed a good laugh this morning dude, thanks!

                    I for one am looking forward (still) to a nice secure by design, every frame is perfect desktop experience that X could never deliver. and heck, just as soon as my chosen DE gets it all the bugs ironed out I will use it in anger.

                    Comment

                    Working...
                    X