Delphi-PRAXiS
Seite 17 von 23   « Erste     7151617 1819     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.) (https://www.delphipraxis.net/96312-%5Btool%5D-gpu-temperaturanzeige-fuer-nvidia-grafikkarten.html)

Razor 13. Nov 2007 11:04

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.
 
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);

Muetze1 13. Nov 2007 12:13

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

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...

Razor 13. Nov 2007 19:16

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.
 
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!! :oops:

Muetze1 13. Nov 2007 19:49

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

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.

Razor 13. Nov 2007 19:53

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.
 
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... :x


If someone knows C++ please translate this becouse if DP wants support for ATI translate it..i cant

Muetze1 13. Nov 2007 21:18

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

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:

Zitat von Razor
but ok i understand...I am not german thats why... :x

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:

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...

Razor 14. Nov 2007 12:09

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.
 
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. :P

OlafSt 14. Nov 2007 13:11

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.
 
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.

Larsi 14. Nov 2007 13:19

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.
 
Ich hab ne Geforce FX 5200; die hat keinen Temperatursensor, oder???

Razor 14. Nov 2007 13:34

Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.
 
An example! :)


So if i am here to learn then YOU post a code since we all want to read ATI! :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:24 Uhr.
Seite 17 von 23   « Erste     7151617 1819     Letzte »    

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