![]() |
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); |
Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.
Zitat:
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... |
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: |
Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.
Zitat:
|
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 |
Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.
Zitat:
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:
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... |
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 |
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. |
Re: [Tool] GPU - Temperaturanzeige (für nVidia Grafikkarten.
Ich hab ne Geforce FX 5200; die hat keinen Temperatursensor, oder???
|
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. |
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