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; 22ba99d834SSinan Kaya struct pci_dev *pci_root = 23ba99d834SSinan Kaya pci_get_domain_bus_and_slot(pci_domain_nr(dev->pdev->bus), 24ba99d834SSinan Kaya 0, 0); 25f35257a3SPatrik Jakobsson struct drm_psb_private *dev_priv = dev->dev_private; 26f35257a3SPatrik Jakobsson 27f35257a3SPatrik Jakobsson /*pci_write_config_dword(pci_root, 0xD4, 0x00C32004);*/ 28f35257a3SPatrik Jakobsson /*pci_write_config_dword(pci_root, 0xD0, 0xE0033000);*/ 29f35257a3SPatrik Jakobsson 30f35257a3SPatrik Jakobsson pci_write_config_dword(pci_root, 0xD0, 0xD0050300); 31f35257a3SPatrik Jakobsson pci_read_config_dword(pci_root, 0xD4, &clock); 32f35257a3SPatrik Jakobsson pci_dev_put(pci_root); 33f35257a3SPatrik Jakobsson 34f35257a3SPatrik Jakobsson switch (clock & 0x07) { 35f35257a3SPatrik Jakobsson case 0: 36f35257a3SPatrik Jakobsson dev_priv->core_freq = 100; 37f35257a3SPatrik Jakobsson break; 38f35257a3SPatrik Jakobsson case 1: 39f35257a3SPatrik Jakobsson dev_priv->core_freq = 133; 40f35257a3SPatrik Jakobsson break; 41f35257a3SPatrik Jakobsson case 2: 42f35257a3SPatrik Jakobsson dev_priv->core_freq = 150; 43f35257a3SPatrik Jakobsson break; 44f35257a3SPatrik Jakobsson case 3: 45f35257a3SPatrik Jakobsson dev_priv->core_freq = 178; 46f35257a3SPatrik Jakobsson break; 47f35257a3SPatrik Jakobsson case 4: 48f35257a3SPatrik Jakobsson dev_priv->core_freq = 200; 49f35257a3SPatrik Jakobsson break; 50f35257a3SPatrik Jakobsson case 5: 51f35257a3SPatrik Jakobsson case 6: 52f35257a3SPatrik Jakobsson case 7: 53f35257a3SPatrik Jakobsson dev_priv->core_freq = 266; 54f35257a3SPatrik Jakobsson break; 55f35257a3SPatrik Jakobsson default: 56f35257a3SPatrik Jakobsson dev_priv->core_freq = 0; 57f35257a3SPatrik Jakobsson } 58f35257a3SPatrik Jakobsson } 59