commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=a3af3ec79d2929b71f43608aea1989472bb95bd6 branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk
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, 35 insertions(+), 42 deletions(-) diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile index 66cf000..1fce086 100644 --- a/arch/blackfin/Makefile +++ b/arch/blackfin/Makefile @@ -141,11 +141,11 @@ archclean: INSTALL_PATH ?= /tftpboot boot := arch/$(ARCH)/boot -BOOT_TARGETS = vmImage vmImage.bin vmImage.bz2 vmImage.gz vmImage.lzma vmImage.lzo vmImage.xip +BOOT_TARGETS = uImage uImage.bin uImage.bz2 uImage.gz uImage.lzma uImage.lzo uImage.xip PHONY += $(BOOT_TARGETS) install -KBUILD_IMAGE := $(boot)/vmImage +KBUILD_IMAGE := $(boot)/uImage -all: vmImage +all: uImage $(BOOT_TARGETS): vmlinux $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ diff --git a/arch/blackfin/boot/Makefile b/arch/blackfin/boot/Makefile index f7d27d5..6314a03 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)/vmImage.bin: $(obj)/vmlinux.bin +$(obj)/uImage.bin: $(obj)/vmlinux.bin $(call if_changed,uimage,none) -$(obj)/vmImage.bz2: $(obj)/vmlinux.bin.bz2 +$(obj)/uImage.bz2: $(obj)/vmlinux.bin.bz2 $(call if_changed,uimage,bzip2) -$(obj)/vmImage.gz: $(obj)/vmlinux.bin.gz +$(obj)/uImage.gz: $(obj)/vmlinux.bin.gz $(call if_changed,uimage,gzip) -$(obj)/vmImage.lzma: $(obj)/vmlinux.bin.lzma +$(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma $(call if_changed,uimage,lzma) -$(obj)/vmImage.lzo: $(obj)/vmlinux.bin.lzo +$(obj)/uImage.lzo: $(obj)/vmlinux.bin.lzo $(call if_changed,uimage,lzo) -$(obj)/vmImage.xip: $(obj)/vmlinux.bin.xip +$(obj)/uImage.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)/vmImage: $(obj)/vmImage.$(suffix-y) +$(obj)/uImage: $(obj)/uImage.$(suffix-y) @ln -sf $(notdir $<) $@ install: diff --git a/drivers/staging/icc/core/protocol.c b/drivers/staging/icc/core/protocol.c index dea4a17..563b42e 100644 --- a/drivers/staging/icc/core/protocol.c +++ b/drivers/staging/icc/core/protocol.c @@ -24,6 +24,7 @@ #include <asm/cacheflush.h> #include <asm/icc.h> #include <asm/dma.h> +#include <asm/portmux.h> #define DRIVER_NAME "icc" @@ -1243,38 +1244,24 @@ int icc_request_dev_name(const char *name, struct platform_device **saved_pdev) return 0; } -int res_manage_request_peri(uint16_t subid) +int res_manage_request_peri(resources_t *data) { - int ret; - struct platform_device *pdev; - if (icc_peri_array[subid].pdev) - return -EBUSY; + unsigned short *peri_list = (unsigned short *)data->resources_array; + char resource_name[32] = "coreb-"; - ret = icc_request_dev_name(icc_peri_array[subid].name, &pdev); - if (ret) { - /* not managed by linux, coreb can use it */ - return 0; - } + strcat(resource_name, data->label); - if (pdev->dev.driver) { - /* already bound with driver */ - return -EBUSY; - } + if (peripheral_request_list(peri_list, resource_name)) + sm_debug("Requesting Peripherals %s failed\n", resource_name); - platform_device_unregister(pdev); - icc_peri_array[subid].resource_id = subid; - icc_peri_array[subid].pdev = pdev; return 0; } -void res_manage_free_peri(uint16_t subid) +void res_manage_free_peri(resources_t *data) { - 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; + unsigned short *peri_list = (unsigned short *)data->resources_array; + + peripheral_free_list(peri_list); } int res_manage_request_gpio(uint16_t subid) @@ -1312,7 +1299,7 @@ void res_manage_free_dma(uint16_t subid) free_dma(subid); } -int res_manage_request(uint16_t id) +int res_manage_request(uint16_t id, resources_t *data) { int ret = 0; uint16_t type, subid; @@ -1321,7 +1308,7 @@ int res_manage_request(uint16_t id) sm_debug("%s %x %x\n", __func__, type, subid); switch (type) { case RESMGR_TYPE_PERIPHERAL: - ret = res_manage_request_peri(subid); + ret = res_manage_request_peri(data); break; case RESMGR_TYPE_GPIO: ret = res_manage_request_gpio(subid); @@ -1338,7 +1325,7 @@ int res_manage_request(uint16_t id) return ret; } -int res_manage_free(uint16_t id) +int res_manage_free(uint16_t id, resources_t *data) { int ret = 0; uint16_t type, subid; @@ -1346,7 +1333,7 @@ int res_manage_free(uint16_t id) subid = RESMGR_SUBID(id); switch (type) { case RESMGR_TYPE_PERIPHERAL: - res_manage_free_peri(subid); + res_manage_free_peri(data); break; case RESMGR_TYPE_GPIO: res_manage_free_gpio(subid); @@ -1633,11 +1620,9 @@ 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: - sm_debug("%s free %x\n", __func__, (uint32_t)msg->payload); - ret = res_manage_request((uint16_t)msg->payload); + ret = res_manage_request((uint16_t)msg->payload, (resources_t *)msg->length); if (ret) sm_send_control_msg(session, msg->src_ep, icc_info->peer_cpu, 0, 0, SM_RES_MGR_REQUEST_FAIL); @@ -1647,7 +1632,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); + res_manage_free((uint16_t)msg->payload, (resources_t *)msg->length); 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 5cb9f62..1f9b2b4 100644 --- a/drivers/staging/icc/include/icc.h +++ b/drivers/staging/icc/include/icc.h @@ -57,6 +57,7 @@ enum { RESMGR_TYPE_MAX, }; + #define EP_RESMGR_SERVICE 0 #define RES_TYPE_OFFSET 12 @@ -289,6 +290,13 @@ 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
