Announcement

Collapse
No announcement yet.

Open ATI Driver To Receive PowerPlay Push?

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

  • bridgman
    replied
    I don't think that's right. Information ABOUT the thermal / fan controllers is stored in AtomBIOS and agd5f has pushed the headers required to interpret that information, but AtomBIOS does not contain drivers for the controllers. The BIOS does often initialize the controller at boot so there may be some code in there but AFAIK that code is not set up as an independent "call me" driver.

    Leave a comment:


  • agd5f
    replied
    Originally posted by sylware View Post
    err... I understood that it was a matter of running ATOM bios byte code for that from r7xx. Wrong?
    There is an atom table to initialize the thermal chip, but no tables to query it.

    Leave a comment:


  • sylware
    replied
    Originally posted by agd5f View Post
    The thermal chip information is stored in atombios data tables on all chips. R6xx and R7xx have built in fan/thermal controllers, however, not all oems use them. You still need driver code to actually query the thermal information.
    err... I understood that it was a matter of running ATOM bios byte code for that from r7xx. Wrong?

    Leave a comment:


  • agd5f
    replied
    Originally posted by netkas View Post
    In case to give users full access to clocks/fan/temps only 3rd item is needed, for things like - preventing overheating, overclocking, power saving (I/user can get 2d clocks from atombios with help of RBE and use it)
    You need all of them for a decent user experience.

    Leave a comment:


  • netkas
    replied
    Originally posted by agd5f View Post
    It's possible, but it's still a lot of work. Besides, just exposing clocks to users does not ultimately save much power or give a good user experience. There are a lot of factors to consider:

    - Bandwidth. Do I have enough memory bandwidth in this power state to properly feed all active displays as well as the drawing engine? Not enough bandwidth can cause drawing stalls or glitches and blanking or flickering of the displays.

    - Frequency. Is the current clock rate high enough to finish the current operations within an acceptable time window? Often, it's a better user experience and saves more power to bump the GPU to a higher power state than you might think so the operation finishes sooner. Set it too low and performance will suck.

    - Thermal/fan controllers. These are 3rd party chips connected via i2c. Drivers need to be written for each of these chips before they can be used. Then you need to wire them up to some interface so you can access the information. There are existing drivers for some of these chips, but we need to write a radeon i2c algo module to expose the radeon i2c buses so they can be used by other drivers. This in itself is a fair amount of work.

    - Power mode changes. This needs to be done during the blanking period or when the displays are off to avoid visual glitches. Often the latencies required make it hard or impossible to fit this into a vblank period.
    In case to give users full access to clocks/fan/temps only 3rd item is needed, for things like - preventing overheating, overclocking, power saving (I/user can get 2d clocks from atombios with help of RBE and use it)

    Leave a comment:


  • agd5f
    replied
    Originally posted by sylware View Post
    Hu? Bridgman told me on IRC that from r7xx it's done through the ATOM bios?
    The thermal chip information is stored in atombios data tables on all chips. R6xx and R7xx have built in fan/thermal controllers, however, not all oems use them. You still need driver code to actually query the thermal information.

    Leave a comment:


  • Loris
    replied
    @agd5f

    Thanks for exposing these problems and thoughts behind the code. It's quite interesting.

    Leave a comment:


  • sylware
    replied
    Originally posted by agd5f View Post
    - Thermal/fan controllers. These are 3rd party chips connected via i2c. Drivers need to be written for each of these chips before they can be used. Then you need to wire them up to some interface so you can access the information. There are existing drivers for some of these chips, but we need to write a radeon i2c algo module to expose the radeon i2c buses so they can be used by other drivers. This in itself is a fair amount of work.
    Hu? Bridgman told me on IRC that from r7xx it's done through the ATOM bios?

    Leave a comment:


  • agd5f
    replied
    Originally posted by netkas View Post
    isn't it possible to create some interface, based on sysfs, to control clocks/fan speed?
    It's possible, but it's still a lot of work. Besides, just exposing clocks to users does not ultimately save much power or give a good user experience. There are a lot of factors to consider:

    - Bandwidth. Do I have enough memory bandwidth in this power state to properly feed all active displays as well as the drawing engine? Not enough bandwidth can cause drawing stalls or glitches and blanking or flickering of the displays.

    - Frequency. Is the current clock rate high enough to finish the current operations within an acceptable time window? Often, it's a better user experience and saves more power to bump the GPU to a higher power state than you might think so the operation finishes sooner. Set it too low and performance will suck.

    - Thermal/fan controllers. These are 3rd party chips connected via i2c. Drivers need to be written for each of these chips before they can be used. Then you need to wire them up to some interface so you can access the information. There are existing drivers for some of these chips, but we need to write a radeon i2c algo module to expose the radeon i2c buses so they can be used by other drivers. This in itself is a fair amount of work.

    - Power mode changes. This needs to be done during the blanking period or when the displays are off to avoid visual glitches. Often the latencies required make it hard or impossible to fit this into a vblank period.

    Leave a comment:


  • sylware
    replied
    Originally posted by Louise View Post
    Yes, but then why use BSD? I mean, Linux and BSD use the same user space applications, I guess from a desktop users point of view they should fell the same?
    I was told: "in order to run in BSD kernels" (with all the risks it does imply). The result is a cross kernel kludge. I was *violently* forbidden to provide GNU GPL code for those drivers on AMD and NVIDIA project.

    I don't mind, I will code other drivers more fitted to the Linux kernel (license wise and code wise). We can share hardware programming knowledge but code will be different.

    What I can do, is take their code from a certain point, re-license under GNU GPL and obliterate cross-kernel code. It is *not* like closing the code: aka the ultimate treason.

    Leave a comment:

Working...
X