commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=1bc6a50fb31f7f74c72ef7e9ce9289420b9b0517 branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk
Revert "[!no_src_qa!] icc: icc resource manager, add peripheral resource" This reverts commit a3af3ec79d2929b71f43608aea1989472bb95bd6. Signed-off-by: Steven Miao <[email protected]> --- arch/blackfin/Makefile | 6 ++-- arch/blackfin/boot/Makefile | 14 +++++----- drivers/staging/icc/core/protocol.c | 49 ++++++++++++++++++++++------------ drivers/staging/icc/include/icc.h | 8 ----- 4 files changed, 42 insertions(+), 35 deletions(-) diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile index 1fce086..66cf000 100644 --- a/arch/blackfin/Makefile +++ b/arch/blackfin/Makefile @@ -141,11 +141,11 @@ archclean: INSTALL_PATH ?= /tftpboot boot := arch/$(ARCH)/boot -BOOT_TARGETS = uImage uImage.bin uImage.bz2 uImage.gz uImage.lzma uImage.lzo uImage.xip +BOOT_TARGETS = vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma vmImage.lzo vmImage.xip PHONY += $(BOOT_TARGETS) install -KBUILD_IMAGE := $(boot)/uImage +KBUILD_IMAGE := $(boot)/vmImage -all: uImage +all: vmImage $(BOOT_TARGETS): vmlinux $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ diff --git a/arch/blackfin/boot/Makefile b/arch/blackfin/boot/Makefile index 6314a03..f7d27d5 100644 --- a/arch/blackfin/boot/Makefile +++ b/arch/blackfin/boot/Makefile @@ -39,22 +39,22 @@ quiet_cmd_mk_bin_xip = BIN $@ $(obj)/vmlinux.bin.xip: $(obj)/vmlinux.bin FORCE $(call if_changed,mk_bin_xip) -$(obj)/uImage.bin: $(obj)/vmlinux.bin +$(obj)/vmImage.bin: $(obj)/vmlinux.bin $(call if_changed,uimage,none) -$(obj)/uImage.bz2: $(obj)/vmlinux.bin.bz2 +$(obj)/vmImage.bz2: $(obj)/vmlinux.bin.bz2 $(call if_changed,uimage,bzip2) -$(obj)/uImage.gz: $(obj)/vmlinux.bin.gz +$(obj)/vmImage.gz: $(obj)/vmlinux.bin.gz $(call if_changed,uimage,gzip) -$(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma +$(obj)/vmImage.lzma: $(obj)/vmlinux.bin.lzma $(call if_changed,uimage,lzma) -$(obj)/uImage.lzo: $(obj)/vmlinux.bin.lzo +$(obj)/vmImage.lzo: $(obj)/vmlinux.bin.lzo $(call if_changed,uimage,lzo) -$(obj)/uImage.xip: $(obj)/vmlinux.bin.xip +$(obj)/vmImage.xip: $(obj)/vmlinux.bin.xip $(call if_changed,uimage,none) suffix-y := bin @@ -64,7 +64,7 @@ suffix-$(CONFIG_KERNEL_LZMA) := lzma suffix-$(CONFIG_KERNEL_LZO) := lzo suffix-$(CONFIG_ROMKERNEL) := xip -$(obj)/uImage: $(obj)/uImage.$(suffix-y) +$(obj)/vmImage: $(obj)/vmImage.$(suffix-y) @ln -sf $(notdir $<) $@ install: diff --git a/drivers/staging/icc/core/protocol.c b/drivers/staging/icc/core/protocol.c index 563b42e..dea4a17 100644 --- a/drivers/staging/icc/core/protocol.c +++ b/drivers/staging/icc/core/protocol.c @@ -24,7 +24,6 @@ #include <asm/cacheflush.h> #include <asm/icc.h> #include <asm/dma.h> -#include <asm/portmux.h> #define DRIVER_NAME "icc" @@ -1244,24 +1243,38 @@ int icc_request_dev_name(const char *name, struct platform_device **saved_pdev) return 0; } -int res_manage_request_peri(resources_t *data) +int res_manage_request_peri(uint16_t subid) { - unsigned short *peri_list = (unsigned short *)data->resources_array; - char resource_name[32] = "coreb-"; + int ret; + struct platform_device *pdev; + if (icc_peri_array[subid].pdev) + return -EBUSY; - strcat(resource_name, data->label); + ret = icc_request_dev_name(icc_peri_array[subid].name, &pdev); + if (ret) { + /* not managed by linux, coreb can use it */ + return 0; + } - if (peripheral_request_list(peri_list, resource_name)) - sm_debug("Requesting Peripherals %s failed\n", resource_name); + if (pdev->dev.driver) { + /* already bound with driver */ + return -EBUSY; + } + platform_device_unregister(pdev); + icc_peri_array[subid].resource_id = subid; + icc_peri_array[subid].pdev = pdev; return 0; } -void res_manage_free_peri(resources_t *data) +void res_manage_free_peri(uint16_t subid) { - unsigned short *peri_list = (unsigned short *)data->resources_array; - - peripheral_free_list(peri_list); + struct platform_device *pdev = icc_peri_array[subid].pdev; + if (!pdev) + return; + platform_device_add(pdev); + icc_peri_array[subid].resource_id = 0; + icc_peri_array[subid].pdev = NULL; } int res_manage_request_gpio(uint16_t subid) @@ -1299,7 +1312,7 @@ void res_manage_free_dma(uint16_t subid) free_dma(subid); } -int res_manage_request(uint16_t id, resources_t *data) +int res_manage_request(uint16_t id) { int ret = 0; uint16_t type, subid; @@ -1308,7 +1321,7 @@ int res_manage_request(uint16_t id, resources_t *data) sm_debug("%s %x %x\n", __func__, type, subid); switch (type) { case RESMGR_TYPE_PERIPHERAL: - ret = res_manage_request_peri(data); + ret = res_manage_request_peri(subid); break; case RESMGR_TYPE_GPIO: ret = res_manage_request_gpio(subid); @@ -1325,7 +1338,7 @@ int res_manage_request(uint16_t id, resources_t *data) return ret; } -int res_manage_free(uint16_t id, resources_t *data) +int res_manage_free(uint16_t id) { int ret = 0; uint16_t type, subid; @@ -1333,7 +1346,7 @@ int res_manage_free(uint16_t id, resources_t *data) subid = RESMGR_SUBID(id); switch (type) { case RESMGR_TYPE_PERIPHERAL: - res_manage_free_peri(data); + res_manage_free_peri(subid); break; case RESMGR_TYPE_GPIO: res_manage_free_gpio(subid); @@ -1620,9 +1633,11 @@ static int sm_resouce_manage_recvmsg(struct sm_msg *msg, struct sm_session *sess struct sm_icc_desc *icc_info = get_icc_peer(msg); BUG_ON(!icc_info); + sm_debug("%s msg type %x\n", __func__, (uint32_t)msg->type); switch (msg->type) { case SM_RES_MGR_REQUEST: - ret = res_manage_request((uint16_t)msg->payload, (resources_t *)msg->length); + sm_debug("%s free %x\n", __func__, (uint32_t)msg->payload); + ret = res_manage_request((uint16_t)msg->payload); if (ret) sm_send_control_msg(session, msg->src_ep, icc_info->peer_cpu, 0, 0, SM_RES_MGR_REQUEST_FAIL); @@ -1632,7 +1647,7 @@ static int sm_resouce_manage_recvmsg(struct sm_msg *msg, struct sm_session *sess break; case SM_RES_MGR_FREE: - res_manage_free((uint16_t)msg->payload, (resources_t *)msg->length); + res_manage_free((uint16_t)msg->payload); sm_send_control_msg(session, msg->src_ep, icc_info->peer_cpu, 0, 0, SM_RES_MGR_FREE_DONE); break; diff --git a/drivers/staging/icc/include/icc.h b/drivers/staging/icc/include/icc.h index 1f9b2b4..5cb9f62 100644 --- a/drivers/staging/icc/include/icc.h +++ b/drivers/staging/icc/include/icc.h @@ -57,7 +57,6 @@ enum { RESMGR_TYPE_MAX, }; - #define EP_RESMGR_SERVICE 0 #define RES_TYPE_OFFSET 12 @@ -290,13 +289,6 @@ struct sm_packet { void *param; }; -typedef struct { - char label[32]; /* owner name */ - uint16_t count; /* resource number in next array */ - uint32_t resources_array; /* address of the resource ID array */ -} resources_t; - - #define SM_SCALAR_CMD(x) ((x) >> 16 & 0xffff) #define SM_SCALAR_CMDARG(x) ((x) & 0xffff) #define SM_SCALAR_CMD_HEAD 0xFE
_______________________________________________ Linux-kernel-commits mailing list [email protected] https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits
