AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.)
Thema durchsuchen
Ansicht
Themen-Optionen

[Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.)

Ein Thema von turboPASCAL · begonnen am 22. Jul 2007 · letzter Beitrag vom 2. Nov 2008
Antwort Antwort
Seite 17 von 23   « Erste     7151617 1819     Letzte »    
Razor
(Gast)

n/a Beiträge
 
#1

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.

  Alt 13. Nov 2007, 11:04
I got information that ATI uses special I2C
Delphi-Quellcode:
    i2c-radeon.c - Part of lm_sensors, Linux kernel modules for hardware
              monitoring
    Copyright (C) 1998-2004 The LM Sensors Team
    
    Based on i2c-savage4.c.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    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, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#include <linux/module.h>
#include <linux/pci.h>
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
#include <linux/init.h>
#include <asm/io.h>
#include <asm/param.h> /* for HZ */
#include "version.h"

/* Radeon defines */
#define RADEON_GPIO_VGA_DDC   0x0060
#define RADEON_GPIO_DVI_DDC   0x0064

/* bit locations in the registers */
#define I2C_SDA_IN      (1 << 8)
#define I2C_SCL_IN      (1 << 9)
#define I2C_SCL_OUT      (1 << 17) /* inverted */
#define I2C_SDA_OUT      (1 << 16) /* inverted */

/* delays */
#define CYCLE_DELAY   10
#define TIMEOUT      (HZ / 2)


static void config_radeon(struct pci_dev *dev);

static unsigned long ioaddr;

static void radeon_dvi_setscl(void *data, int val)
{
   unsigned int r;
   r = readl(ioaddr + RADEON_GPIO_DVI_DDC);
   if(val)
      r &= ~I2C_SCL_OUT;
   else
      r |= I2C_SCL_OUT;
   writel(r, ioaddr + RADEON_GPIO_DVI_DDC);
   readl(ioaddr + RADEON_GPIO_DVI_DDC);   /* flush posted write */
}


static void radeon_dvi_setsda(void *data, int val)
{
   unsigned int r;
   r = readl(ioaddr + RADEON_GPIO_DVI_DDC);
   if(val)
      r &= ~I2C_SDA_OUT;
   else
      r |= I2C_SDA_OUT;
   writel(r, ioaddr + RADEON_GPIO_DVI_DDC);
   readl(ioaddr + RADEON_GPIO_DVI_DDC);   /* flush posted write */
}


static int radeon_dvi_getscl(void *data)
{
   return (0 != (readl(ioaddr + RADEON_GPIO_DVI_DDC) & I2C_SCL_IN));
}


static int radeon_dvi_getsda(void *data)
{
   return (0 != (readl(ioaddr + RADEON_GPIO_DVI_DDC) & I2C_SDA_IN));
}


static void radeon_vga_setscl(void *data, int val)
{
   unsigned int r;
   r = readl(ioaddr + RADEON_GPIO_VGA_DDC);
   if(val)
      r &= ~I2C_SCL_OUT;
   else
      r |= I2C_SCL_OUT;
   writel(r, ioaddr + RADEON_GPIO_VGA_DDC);
   readl(ioaddr + RADEON_GPIO_VGA_DDC);   /* flush posted write */
}


static void radeon_vga_setsda(void *data, int val)
{
   unsigned int r;
   r = readl(ioaddr + RADEON_GPIO_VGA_DDC);
   if(val)
      r &= ~I2C_SDA_OUT;
   else
      r |= I2C_SDA_OUT;
   writel(r, ioaddr + RADEON_GPIO_VGA_DDC);
   readl(ioaddr + RADEON_GPIO_VGA_DDC);   /* flush posted write */
}


static int radeon_vga_getscl(void *data)
{
   return (0 != (readl(ioaddr + RADEON_GPIO_VGA_DDC) & I2C_SCL_IN));
}


static int radeon_vga_getsda(void *data)
{
   return (0 != (readl(ioaddr + RADEON_GPIO_VGA_DDC) & I2C_SDA_IN));
}


/* Configures the chip */

void config_radeon(struct pci_dev *dev)
{
   unsigned int cadr;

   /* map memory */
   cadr = dev->resource[0].start;
   cadr &= PCI_BASE_ADDRESS_MEM_MASK;
   ioaddr = (unsigned long)ioremap_nocache(cadr, 0x0001000);
   if(ioaddr) {
//      writel(0x8160, ioaddr + RADEON_GPIO_DVI_DDC2);
//      writel(0x00000020, ioaddr + RADEON_GPIO_DVI_DDC);
      radeon_dvi_setscl(NULL, 1);
      radeon_dvi_setsda(NULL, 1);
      radeon_vga_setscl(NULL, 1);
      radeon_vga_setsda(NULL, 1);
      printk(KERN_INFO "i2c-radeon.o: Using Radeon at 0x%lx\n", ioaddr);
   }

}


static struct i2c_algo_bit_data radeon_dvi_bit_data = {
   .setsda      = radeon_dvi_setsda,
   .setscl      = radeon_dvi_setscl,
   .getsda      = radeon_dvi_getsda,
   .getscl      = radeon_dvi_getscl,
   .udelay      = CYCLE_DELAY,
   .mdelay      = CYCLE_DELAY,
   .timeout   = TIMEOUT
}
;

static struct i2c_algo_bit_data radeon_vga_bit_data = {
   .setsda      = radeon_vga_setsda,
   .setscl      = radeon_vga_setscl,
   .getsda      = radeon_vga_getsda,
   .getscl      = radeon_vga_getscl,
   .udelay      = CYCLE_DELAY,
   .mdelay      = CYCLE_DELAY,
   .timeout   = TIMEOUT
}
;

static struct i2c_adapter radeon_i2c_adapter = {
   .owner      = THIS_MODULE,
   .name      = "ATI Radeon",
   .id      = I2C_HW_B_SAVG, /* FIXME */
   .algo_data   = &radeon_vga_bit_data,
}
;

static struct pci_device_id radeon_ids[] __devinitdata = {
   {
      .vendor      = 0x1002,
      .device      = 0x4C59,
      .subvendor   = PCI_ANY_ID,
      .subdevice   = PCI_ANY_ID,
   }
,
   { 0 }
};

static int __devinit radeon_probe(struct pci_dev *dev, const struct pci_device_id *id)
{
   config_radeon(dev);
   return i2c_bit_add_bus(&radeon_i2c_adapter);
}


static void __devexit radeon_remove(struct pci_dev *dev)
{
   i2c_bit_del_bus(&radeon_i2c_adapter);
}


static int __init i2c_radeon_init(void)
{
   struct pci_dev *dev;
   const struct pci_device_id *id;

   printk(KERN_DEBUG "i2c-radeon.o init\n");

   pci_for_each_dev(dev) {
      id = pci_match_device(radeon_ids, dev);
      if(id && radeon_probe(dev, id) >= 0)
         return 0;
   }

   return -ENODEV;
}

static void __exit i2c_radeon_exit(void)
{
   radeon_remove(NULL);
   iounmap((void *)ioaddr);
}


MODULE_AUTHOR("Jean Delvare <khali@xxxxxxxxxxxx>");
MODULE_DESCRIPTION("ATI Radeon I2C bus driver");
MODULE_LICENSE("GPL");

module_init(i2c_radeon_init);
module_exit(i2c_radeon_exit);
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.

  Alt 13. Nov 2007, 12:13
Zitat von Razor:
I got information that ATI uses special I2C
Yeah, and now?

Btw: you see, that this code (as many parts posted by you before) is under the GPL. So I hope you will publish your sources...
  Mit Zitat antworten Zitat
Razor
(Gast)

n/a Beiträge
 
#3

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.

  Alt 13. Nov 2007, 19:16
I will post it becouse i want other to know as well and learn becouse this isnt the usual topic and it is in the opensource topic.If you help it will be published soon if you need any info i can ask rivatuner or atitool author.

Hilfe!!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.

  Alt 13. Nov 2007, 19:49
Zitat von Razor:
If you help ...
No, I won't help. So I need no help and so I need no informations. DIY! I had learn many things many years before - so you can do it the same way. Learn and try and you will achieve success.
  Mit Zitat antworten Zitat
Razor
(Gast)

n/a Beiträge
 
#5

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.

  Alt 13. Nov 2007, 19:53
You disapointed me Muetze how can you write code for other users how!I mean please...but ok i understand...I am not german thats why...


If someone knows C++ please translate this becouse if DP wants support for ATI translate it..i cant
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.

  Alt 13. Nov 2007, 21:18
Zitat von Razor:
how can you write code for other users how!
Because other users show that they are dealing with the topic and are trying to learn something new. They wanted to learn and also do this. You got something done (e.g. the CPU temp on intel), but you have not yet followed e.g. one hint: learn the basics! You still ask questions about basic things, even about retrieving the results of a function. You that you are not willing to learn the language but you still bother to get your code together. You use any thread to get this and you post so many messages you need, till you get it nearly finished. But you even fail in glueing the sources together...

I am not willing to build your application and I am not willing to help you, as long as you only spam to get your result, directly fitting in your sources. You have not basic skills but want the highest achievements. I respect your endurance - really!

Zitat von Razor:
but ok i understand...I am not german thats why...
You know that's not the reason and instead of being encouraged to get the solution and try to learn the needed things, you try to still get from other people (me or even other)...

Zitat von Razor:
i cant
You can, but the worse thing: you need to do it by yourself and you even have to learn something for that, etc.

But why you always get back here? Nobody else found in the english-speaking/writing boards/sites?

It is really pathetic, what you try to do here...
  Mit Zitat antworten Zitat
Razor
(Gast)

n/a Beiträge
 
#7

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.

  Alt 14. Nov 2007, 12:09
If i can learn i need an example this is my way of learning but i dont know about yours...its just weird that u write code or translate for other for me u wont.But i want to learn aswell.


Or you dont know how to or you are just making a fool of yourself.
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.

  Alt 14. Nov 2007, 13:11
You still didn't got the point, razor.

For example, pick this ATI-Problem. You are posting code which is written in C (not C++, but that is not important here). It is also some code for linux-machines. Of course this is simply impossible to port 1:1 to a windows-machine as linux and windows differ extremely in talking to hardware. Three or four times we mentioned this fact - still you're posting linux-code.

What @Muetze1 and myself and all the others here want from you: You already figured out that ATI uses the I2C-mechanism to publish the data we want to see. So why the hell don't you move your ass and learn HOW TO ACCESS I2C on a windows machine ? This is what @muetze1 and we all here name "basics".

There you (and finally we all) will learn a lot more from.
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#9

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.

  Alt 14. Nov 2007, 13:19
Ich hab ne Geforce FX 5200; die hat keinen Temperatursensor, oder???
  Mit Zitat antworten Zitat
Razor
(Gast)

n/a Beiträge
 
#10

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.

  Alt 14. Nov 2007, 13:34
An example!


So if i am here to learn then YOU post a code since we all want to read ATI!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 17 von 23   « Erste     7151617 1819     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz