From 3817be453657d116131317525915d3e378d46fdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 24 Jul 2015 19:33:16 +0200 Subject: [PATCH 1/5] Fix RASPBERRYPI_FIRMWARE dependents MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If forgot this when converting the drivers. Signed-off-by: Noralf Trønnes --- drivers/cpufreq/Kconfig.arm | 2 +- drivers/input/touchscreen/Kconfig | 2 +- drivers/misc/vc04_services/Kconfig | 2 +- drivers/thermal/Kconfig | 2 +- drivers/video/fbdev/Kconfig | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm index a1039f082548e..0037516dafa19 100644 --- a/drivers/cpufreq/Kconfig.arm +++ b/drivers/cpufreq/Kconfig.arm @@ -259,7 +259,7 @@ config ARM_SPEAR_CPUFREQ This adds the CPUFreq driver support for SPEAr SOCs. config ARM_BCM2835_CPUFREQ - depends on BCM2708_MBOX + depends on RASPBERRYPI_FIRMWARE bool "BCM2835 Driver" default y help diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig index 584856215d4d3..d7e74a1ca8a08 100644 --- a/drivers/input/touchscreen/Kconfig +++ b/drivers/input/touchscreen/Kconfig @@ -585,7 +585,7 @@ config TOUCHSCREEN_EDT_FT5X06 config TOUCHSCREEN_RPI_FT5406 tristate "Raspberry Pi FT5406 driver" - depends on ARCH_BCM2708 || ARCH_BCM2709 + depends on RASPBERRYPI_FIRMWARE help Say Y here to enable the Raspberry Pi memory based FT5406 device diff --git a/drivers/misc/vc04_services/Kconfig b/drivers/misc/vc04_services/Kconfig index c5ba2834ce854..db8e1beb89f9f 100644 --- a/drivers/misc/vc04_services/Kconfig +++ b/drivers/misc/vc04_services/Kconfig @@ -1,6 +1,6 @@ config BCM2708_VCHIQ tristate "Videocore VCHIQ" - depends on (MACH_BCM2708 || MACH_BCM2709 || ARCH_BCM2835) && BCM2708_MBOX + depends on RASPBERRYPI_FIRMWARE default y help Kernel to VideoCore communication interface for the diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig index ddc77ad726027..b911213546b7c 100644 --- a/drivers/thermal/Kconfig +++ b/drivers/thermal/Kconfig @@ -239,7 +239,7 @@ config INTEL_POWERCLAMP user interface is exposed via generic thermal framework. config THERMAL_BCM2835 - depends on BCM2708_MBOX + depends on RASPBERRYPI_FIRMWARE tristate "BCM2835 Thermal Driver" help This will enable temperature monitoring for the Broadcom BCM2835 diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig index 3444a4c9be56e..c073d559db0f1 100644 --- a/drivers/video/fbdev/Kconfig +++ b/drivers/video/fbdev/Kconfig @@ -226,7 +226,7 @@ comment "Frame buffer hardware drivers" config FB_BCM2708 tristate "BCM2708 framebuffer support" - depends on FB && ARM && BCM2708_MBOX + depends on FB && RASPBERRYPI_FIRMWARE select FB_CFB_FILLRECT select FB_CFB_COPYAREA select FB_CFB_IMAGEBLIT From 5385d08b17b5eda5ed816978b29f50c6aad560ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 24 Jul 2015 19:33:46 +0200 Subject: [PATCH 2/5] vc_mem: Remove unnecessary include MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Noralf Trønnes --- drivers/char/broadcom/vc_mem.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/char/broadcom/vc_mem.c b/drivers/char/broadcom/vc_mem.c index fcde6b1df1404..be64f238ee0cc 100644 --- a/drivers/char/broadcom/vc_mem.c +++ b/drivers/char/broadcom/vc_mem.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #define DRIVER_NAME "vc-mem" From 6661f3e0e7db6a720e8b114510da8240d28db1ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 24 Jul 2015 19:34:06 +0200 Subject: [PATCH 3/5] configs: Remove BCM2708_MBOX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Noralf Trønnes --- arch/arm/configs/bcm2709_defconfig | 1 - arch/arm/configs/bcm2835_defconfig | 1 - arch/arm/configs/bcmrpi_defconfig | 1 - 3 files changed, 3 deletions(-) diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig index dd00e7c4d0cf6..e3155da5842fb 100644 --- a/arch/arm/configs/bcm2709_defconfig +++ b/arch/arm/configs/bcm2709_defconfig @@ -1078,7 +1078,6 @@ CONFIG_FB_TFT_WATTEROTT=m CONFIG_FB_FLEX=m CONFIG_FB_TFT_FBTFT_DEVICE=m CONFIG_MAILBOX=y -CONFIG_BCM2708_MBOX=y CONFIG_BCM2835_MBOX=y # CONFIG_IOMMU_SUPPORT is not set CONFIG_EXTCON=m diff --git a/arch/arm/configs/bcm2835_defconfig b/arch/arm/configs/bcm2835_defconfig index c284414c158fc..1467816dc7a79 100644 --- a/arch/arm/configs/bcm2835_defconfig +++ b/arch/arm/configs/bcm2835_defconfig @@ -1064,7 +1064,6 @@ CONFIG_FB_TFT_WATTEROTT=m CONFIG_FB_FLEX=m CONFIG_FB_TFT_FBTFT_DEVICE=m CONFIG_MAILBOX=y -CONFIG_BCM2708_MBOX=y CONFIG_BCM2835_MBOX=y # CONFIG_IOMMU_SUPPORT is not set CONFIG_EXTCON=m diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig index 7b2427417d316..0859113e456fe 100644 --- a/arch/arm/configs/bcmrpi_defconfig +++ b/arch/arm/configs/bcmrpi_defconfig @@ -1071,7 +1071,6 @@ CONFIG_FB_TFT_WATTEROTT=m CONFIG_FB_FLEX=m CONFIG_FB_TFT_FBTFT_DEVICE=m CONFIG_MAILBOX=y -CONFIG_BCM2708_MBOX=y CONFIG_BCM2835_MBOX=y # CONFIG_IOMMU_SUPPORT is not set CONFIG_EXTCON=m From 764892688e000751cdebf8fe20564b5fb1862ac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 24 Jul 2015 19:34:31 +0200 Subject: [PATCH 4/5] bcm2708-vcio: Remove module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All drivers have been converted to the new firmware API, so this module is not needed anymore. Signed-off-by: Noralf Trønnes --- drivers/mailbox/Kconfig | 6 - drivers/mailbox/Makefile | 2 - drivers/mailbox/bcm2708-vcio.c | 86 ------------ include/linux/platform_data/mailbox-bcm2708.h | 127 ------------------ 4 files changed, 221 deletions(-) delete mode 100644 drivers/mailbox/bcm2708-vcio.c delete mode 100644 include/linux/platform_data/mailbox-bcm2708.h diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig index d1a66717ad39d..3965e10d93fe0 100644 --- a/drivers/mailbox/Kconfig +++ b/drivers/mailbox/Kconfig @@ -7,12 +7,6 @@ menuconfig MAILBOX if MAILBOX -config BCM2708_MBOX - bool "Broadcom BCM2708 Mailbox (vcio)" - depends on BCM2835_MBOX - help - Broadcom BCM2708 Mailbox (vcio) - config ARM_MHU tristate "ARM MHU Mailbox" depends on ARM_AMBA diff --git a/drivers/mailbox/Makefile b/drivers/mailbox/Makefile index c86bc917b1c36..8e6d82218a094 100644 --- a/drivers/mailbox/Makefile +++ b/drivers/mailbox/Makefile @@ -2,8 +2,6 @@ obj-$(CONFIG_MAILBOX) += mailbox.o -obj-$(CONFIG_BCM2708_MBOX) += bcm2708-vcio.o - obj-$(CONFIG_ARM_MHU) += arm_mhu.o obj-$(CONFIG_PL320_MBOX) += pl320-ipc.o diff --git a/drivers/mailbox/bcm2708-vcio.c b/drivers/mailbox/bcm2708-vcio.c deleted file mode 100644 index 2e4031b028aea..0000000000000 --- a/drivers/mailbox/bcm2708-vcio.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (C) 2010 Broadcom - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This device provides a shared mechanism for writing to the mailboxes, - * semaphores, doorbells etc. that are shared between the ARM and the - * VideoCore processor - */ - -#include -#include -#include -#include -#include -#include - -#define DRIVER_NAME "bcm2708_vcio" - -extern int bcm_mailbox_write(unsigned chan, uint32_t data28) -{ - struct rpi_firmware *fw = rpi_firmware_get(NULL); - - if (!fw) - return -ENODEV; - - return rpi_firmware_transaction(fw, chan, data28); -} -EXPORT_SYMBOL_GPL(bcm_mailbox_write); - -extern int bcm_mailbox_read(unsigned chan, uint32_t *data28) -{ - struct rpi_firmware *fw = rpi_firmware_get(NULL); - - if (!fw) - return -ENODEV; - - *data28 = rpi_firmware_transaction_received(fw); - - return 0; -} -EXPORT_SYMBOL_GPL(bcm_mailbox_read); - -static DEFINE_MUTEX(mailbox_lock); -extern int bcm_mailbox_property(void *data, int size) -{ - uint32_t success; - dma_addr_t mem_bus; /* the memory address accessed from videocore */ - void *mem_kern; /* the memory address accessed from driver */ - int s = 0; - - mutex_lock(&mailbox_lock); - /* allocate some memory for the messages communicating with GPU */ - mem_kern = dma_alloc_coherent(NULL, PAGE_ALIGN(size), &mem_bus, - GFP_KERNEL); - if (mem_kern) { - /* create the message */ - memcpy(mem_kern, data, size); - - /* send the message */ - wmb(); - s = bcm_mailbox_write(MBOX_CHAN_PROPERTY, (uint32_t)mem_bus); - if (s == 0) - s = bcm_mailbox_read(MBOX_CHAN_PROPERTY, &success); - if (s == 0) { - /* copy the response */ - rmb(); - memcpy(data, mem_kern, size); - } - dma_free_coherent(NULL, PAGE_ALIGN(size), mem_kern, mem_bus); - } else { - s = -ENOMEM; - } - if (s != 0) - pr_err(DRIVER_NAME ": %s failed (%d)\n", __func__, s); - - mutex_unlock(&mailbox_lock); - return s; -} -EXPORT_SYMBOL_GPL(bcm_mailbox_property); - -MODULE_AUTHOR("Gray Girling"); -MODULE_DESCRIPTION("ARM I/O to VideoCore processor"); -MODULE_LICENSE("GPL"); diff --git a/include/linux/platform_data/mailbox-bcm2708.h b/include/linux/platform_data/mailbox-bcm2708.h deleted file mode 100644 index d3ea839b693e7..0000000000000 --- a/include/linux/platform_data/mailbox-bcm2708.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2010 Broadcom - * - * 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. - */ -#ifndef _PLAT_MAILBOX_BCM2708_H -#define _PLAT_MAILBOX_BCM2708_H - -/* Routines to handle I/O via the VideoCore "ARM control" registers - * (semaphores, doorbells, mailboxes) - */ - -/* Constants shared with the ARM identifying separate mailbox channels */ -#define MBOX_CHAN_POWER 0 /* for use by the power management interface */ -#define MBOX_CHAN_FB 1 /* for use by the frame buffer */ -#define MBOX_CHAN_VCHIQ 3 /* for use by the VCHIQ interface */ -#define MBOX_CHAN_PROPERTY 8 /* for use by the property channel */ -#define MBOX_CHAN_COUNT 9 - -enum { - VCMSG_PROCESS_REQUEST = 0x00000000 -}; - -enum { - VCMSG_REQUEST_SUCCESSFUL = 0x80000000, - VCMSG_REQUEST_FAILED = 0x80000001 -}; - -/* Mailbox property tags */ -enum { - VCMSG_PROPERTY_END = 0x00000000, - VCMSG_GET_FIRMWARE_REVISION = 0x00000001, - VCMSG_GET_BOARD_MODEL = 0x00010001, - VCMSG_GET_BOARD_REVISION = 0x00010002, - VCMSG_GET_BOARD_MAC_ADDRESS = 0x00010003, - VCMSG_GET_BOARD_SERIAL = 0x00010004, - VCMSG_GET_ARM_MEMORY = 0x00010005, - VCMSG_GET_VC_MEMORY = 0x00010006, - VCMSG_GET_CLOCKS = 0x00010007, - VCMSG_GET_COMMAND_LINE = 0x00050001, - VCMSG_GET_DMA_CHANNELS = 0x00060001, - VCMSG_GET_POWER_STATE = 0x00020001, - VCMSG_GET_TIMING = 0x00020002, - VCMSG_SET_POWER_STATE = 0x00028001, - VCMSG_GET_CLOCK_STATE = 0x00030001, - VCMSG_SET_CLOCK_STATE = 0x00038001, - VCMSG_GET_CLOCK_RATE = 0x00030002, - VCMSG_SET_CLOCK_RATE = 0x00038002, - VCMSG_GET_VOLTAGE = 0x00030003, - VCMSG_SET_VOLTAGE = 0x00038003, - VCMSG_GET_MAX_CLOCK = 0x00030004, - VCMSG_GET_MAX_VOLTAGE = 0x00030005, - VCMSG_GET_TEMPERATURE = 0x00030006, - VCMSG_GET_MIN_CLOCK = 0x00030007, - VCMSG_GET_MIN_VOLTAGE = 0x00030008, - VCMSG_GET_TURBO = 0x00030009, - VCMSG_GET_MAX_TEMPERATURE = 0x0003000a, - VCMSG_GET_STC = 0x0003000b, - VCMSG_SET_TURBO = 0x00038009, - VCMSG_SET_ALLOCATE_MEM = 0x0003000c, - VCMSG_SET_LOCK_MEM = 0x0003000d, - VCMSG_SET_UNLOCK_MEM = 0x0003000e, - VCMSG_SET_RELEASE_MEM = 0x0003000f, - VCMSG_SET_EXECUTE_CODE = 0x00030010, - VCMSG_SET_EXECUTE_QPU = 0x00030011, - VCMSG_SET_ENABLE_QPU = 0x00030012, - VCMSG_GET_RESOURCE_HANDLE = 0x00030014, - VCMSG_GET_EDID_BLOCK = 0x00030020, - VCMSG_GET_CUSTOMER_OTP = 0x00030021, - VCMSG_SET_CUSTOMER_OTP = 0x00038021, - VCMSG_SET_ALLOCATE_BUFFER = 0x00040001, - VCMSG_SET_RELEASE_BUFFER = 0x00048001, - VCMSG_SET_BLANK_SCREEN = 0x00040002, - VCMSG_TST_BLANK_SCREEN = 0x00044002, - VCMSG_GET_PHYSICAL_WIDTH_HEIGHT = 0x00040003, - VCMSG_TST_PHYSICAL_WIDTH_HEIGHT = 0x00044003, - VCMSG_SET_PHYSICAL_WIDTH_HEIGHT = 0x00048003, - VCMSG_GET_VIRTUAL_WIDTH_HEIGHT = 0x00040004, - VCMSG_TST_VIRTUAL_WIDTH_HEIGHT = 0x00044004, - VCMSG_SET_VIRTUAL_WIDTH_HEIGHT = 0x00048004, - VCMSG_GET_DEPTH = 0x00040005, - VCMSG_TST_DEPTH = 0x00044005, - VCMSG_SET_DEPTH = 0x00048005, - VCMSG_GET_PIXEL_ORDER = 0x00040006, - VCMSG_TST_PIXEL_ORDER = 0x00044006, - VCMSG_SET_PIXEL_ORDER = 0x00048006, - VCMSG_GET_ALPHA_MODE = 0x00040007, - VCMSG_TST_ALPHA_MODE = 0x00044007, - VCMSG_SET_ALPHA_MODE = 0x00048007, - VCMSG_GET_PITCH = 0x00040008, - VCMSG_TST_PITCH = 0x00044008, - VCMSG_SET_PITCH = 0x00048008, - VCMSG_GET_VIRTUAL_OFFSET = 0x00040009, - VCMSG_TST_VIRTUAL_OFFSET = 0x00044009, - VCMSG_SET_VIRTUAL_OFFSET = 0x00048009, - VCMSG_GET_OVERSCAN = 0x0004000a, - VCMSG_TST_OVERSCAN = 0x0004400a, - VCMSG_SET_OVERSCAN = 0x0004800a, - VCMSG_GET_PALETTE = 0x0004000b, - VCMSG_TST_PALETTE = 0x0004400b, - VCMSG_SET_PALETTE = 0x0004800b, - VCMSG_GET_LAYER = 0x0004000c, - VCMSG_TST_LAYER = 0x0004400c, - VCMSG_SET_LAYER = 0x0004800c, - VCMSG_GET_TRANSFORM = 0x0004000d, - VCMSG_TST_TRANSFORM = 0x0004400d, - VCMSG_SET_TRANSFORM = 0x0004800d, - VCMSG_TST_VSYNC = 0x0004400e, - VCMSG_SET_VSYNC = 0x0004800e, - VCMSG_GET_TOUCHBUF = 0x0004000f, - VCMSG_SET_CURSOR_INFO = 0x00008010, - VCMSG_SET_CURSOR_STATE = 0x00008011, -}; - -int bcm_mailbox_read(unsigned chan, uint32_t *data28); -int bcm_mailbox_write(unsigned chan, uint32_t data28); -int bcm_mailbox_property(void *data, int size); - -#endif From dc3946ac37e0c7aed74b0041f742a102d37af425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Date: Fri, 24 Jul 2015 19:34:55 +0200 Subject: [PATCH 5/5] Revert "firmware: bcm2835: Support legacy mailbox API" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 40aa3c4f0c430cd5c574498f4d1d5e9f0bc1cf11. The legacy mailbox API has been removed so this is not needed. Signed-off-by: Noralf Trønnes --- drivers/firmware/raspberrypi.c | 15 ++------------- include/soc/bcm2835/raspberrypi-firmware.h | 2 -- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c index 89421a9138cd2..b980d531b35b9 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -19,7 +19,6 @@ #define MBOX_MSG(chan, data28) (((data28) & ~0xf) | ((chan) & 0xf)) #define MBOX_CHAN(msg) ((msg) & 0xf) #define MBOX_DATA28(msg) ((msg) & ~0xf) -#define MBOX_CHAN_VCHIQ 3 #define MBOX_CHAN_PROPERTY 8 struct rpi_firmware { @@ -27,7 +26,6 @@ struct rpi_firmware { struct mbox_chan *chan; /* The property channel. */ struct completion c; u32 enabled; - u32 received; }; static struct platform_device *g_pdev; @@ -37,7 +35,6 @@ static DEFINE_MUTEX(transaction_lock); static void response_callback(struct mbox_client *cl, void *msg) { struct rpi_firmware *fw = container_of(cl, struct rpi_firmware, cl); - fw->received = *(u32 *)msg; complete(&fw->c); } @@ -45,7 +42,7 @@ static void response_callback(struct mbox_client *cl, void *msg) * Sends a request to the firmware through the BCM2835 mailbox driver, * and synchronously waits for the reply. */ -int +static int rpi_firmware_transaction(struct rpi_firmware *fw, u32 chan, u32 data) { u32 message = MBOX_MSG(chan, data); @@ -57,8 +54,7 @@ rpi_firmware_transaction(struct rpi_firmware *fw, u32 chan, u32 data) reinit_completion(&fw->c); ret = mbox_send_message(fw->chan, &message); if (ret >= 0) { - if (chan != MBOX_CHAN_VCHIQ) - wait_for_completion(&fw->c); + wait_for_completion(&fw->c); ret = 0; } else { dev_err(fw->cl.dev, "mbox_send_message returned %d\n", ret); @@ -67,13 +63,6 @@ rpi_firmware_transaction(struct rpi_firmware *fw, u32 chan, u32 data) return ret; } -EXPORT_SYMBOL(rpi_firmware_transaction); - -u32 rpi_firmware_transaction_received(struct rpi_firmware *fw) -{ - return MBOX_DATA28(fw->received); -} -EXPORT_SYMBOL(rpi_firmware_transaction_received); /** * rpi_firmware_property_list - Submit firmware property list diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h index 9a08cf1c87479..d3933afdda62b 100644 --- a/include/soc/bcm2835/raspberrypi-firmware.h +++ b/include/soc/bcm2835/raspberrypi-firmware.h @@ -116,8 +116,6 @@ enum rpi_firmware_property_tag { RPI_FIRMWARE_GET_DMA_CHANNELS = 0x00060001, }; -int rpi_firmware_transaction(struct rpi_firmware *fw, u32 chan, u32 data); -u32 rpi_firmware_transaction_received(struct rpi_firmware *fw); int rpi_firmware_property(struct rpi_firmware *fw, u32 tag, void *data, size_t len); int rpi_firmware_property_list(struct rpi_firmware *fw,