1f35257a3SPatrik Jakobsson /************************************************************************** 2f35257a3SPatrik Jakobsson * Copyright (c) 2011, Intel Corporation. 3f35257a3SPatrik Jakobsson * All Rights Reserved. 4f35257a3SPatrik Jakobsson * 5f35257a3SPatrik Jakobsson * This program is free software; you can redistribute it and/or modify it 6f35257a3SPatrik Jakobsson * under the terms and conditions of the GNU General Public License, 7f35257a3SPatrik Jakobsson * version 2, as published by the Free Software Foundation. 8f35257a3SPatrik Jakobsson * 9f35257a3SPatrik Jakobsson * This program is distributed in the hope it will be useful, but WITHOUT 10f35257a3SPatrik Jakobsson * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11f35257a3SPatrik Jakobsson * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12f35257a3SPatrik Jakobsson * more details. 13f35257a3SPatrik Jakobsson * 14f35257a3SPatrik Jakobsson **************************************************************************/ 15f35257a3SPatrik Jakobsson 16f35257a3SPatrik Jakobsson #include <drm/drmP.h> 17f35257a3SPatrik Jakobsson #include "psb_drv.h" 18f35257a3SPatrik Jakobsson 19f35257a3SPatrik Jakobsson void gma_get_core_freq(struct drm_device *dev) 20f35257a3SPatrik Jakobsson { 21f35257a3SPatrik Jakobsson uint32_t clock; 22f35257a3SPatrik Jakobsson struct pci_dev *pci_root = pci_get_bus_and_slot(0, 0); 23f35257a3SPatrik Jakobsson struct drm_psb_private *dev_priv = dev->dev_private; 24f35257a3SPatrik Jakobsson 25f35257a3SPatrik Jakobsson /*pci_write_config_dword(pci_root, 0xD4, 0x00C32004);*/ 26f35257a3SPatrik Jakobsson /*pci_write_config_dword(pci_root, 0xD0, 0xE0033000);*/ 27f35257a3SPatrik Jakobsson 28f35257a3SPatrik Jakobsson pci_write_config_dword(pci_root, 0xD0, 0xD0050300); 29f35257a3SPatrik Jakobsson pci_read_config_dword(pci_root, 0xD4, &clock); 30f35257a3SPatrik Jakobsson pci_dev_put(pci_root); 31f35257a3SPatrik Jakobsson 32f35257a3SPatrik Jakobsson switch (clock & 0x07) { 33f35257a3SPatrik Jakobsson case 0: 34f35257a3SPatrik Jakobsson dev_priv->core_freq = 100; 35f35257a3SPatrik Jakobsson break; 36f35257a3SPatrik Jakobsson case 1: 37f35257a3SPatrik Jakobsson dev_priv->core_freq = 133; 38f35257a3SPatrik Jakobsson break; 39f35257a3SPatrik Jakobsson case 2: 40f35257a3SPatrik Jakobsson dev_priv->core_freq = 150; 41f35257a3SPatrik Jakobsson break; 42f35257a3SPatrik Jakobsson case 3: 43f35257a3SPatrik Jakobsson dev_priv->core_freq = 178; 44f35257a3SPatrik Jakobsson break; 45f35257a3SPatrik Jakobsson case 4: 46f35257a3SPatrik Jakobsson dev_priv->core_freq = 200; 47f35257a3SPatrik Jakobsson break; 48f35257a3SPatrik Jakobsson case 5: 49f35257a3SPatrik Jakobsson case 6: 50f35257a3SPatrik Jakobsson case 7: 51f35257a3SPatrik Jakobsson dev_priv->core_freq = 266; 52f35257a3SPatrik Jakobsson break; 53f35257a3SPatrik Jakobsson default: 54f35257a3SPatrik Jakobsson dev_priv->core_freq = 0; 55f35257a3SPatrik Jakobsson } 56f35257a3SPatrik Jakobsson } 57