Hi Geert, On Fri, 2024-03-01 at 22:02 +0100, Geert Uytterhoeven wrote: > dma_extend(), get_dma_info_by_name(), register_chan_caps(), and > request_dma_bycap() are unused. Remove them, and all related code. > > Signed-off-by: Geert Uytterhoeven <geert+rene...@glider.be> > --- > arch/sh/drivers/dma/dma-api.c | 116 ---------------------------------- > arch/sh/include/asm/dma.h | 7 -- > 2 files changed, 123 deletions(-) > > diff --git a/arch/sh/drivers/dma/dma-api.c b/arch/sh/drivers/dma/dma-api.c > index f49097fa634c36d4..87e5a892887360f5 100644 > --- a/arch/sh/drivers/dma/dma-api.c > +++ b/arch/sh/drivers/dma/dma-api.c > @@ -41,21 +41,6 @@ struct dma_info *get_dma_info(unsigned int chan) > } > EXPORT_SYMBOL(get_dma_info); > > -struct dma_info *get_dma_info_by_name(const char *dmac_name) > -{ > - struct dma_info *info; > - > - list_for_each_entry(info, ®istered_dmac_list, list) { > - if (dmac_name && (strcmp(dmac_name, info->name) != 0)) > - continue; > - else > - return info; > - } > - > - return NULL; > -} > -EXPORT_SYMBOL(get_dma_info_by_name); > - > static unsigned int get_nr_channels(void) > { > struct dma_info *info; > @@ -101,66 +86,6 @@ int get_dma_residue(unsigned int chan) > } > EXPORT_SYMBOL(get_dma_residue); > > -static int search_cap(const char **haystack, const char *needle) > -{ > - const char **p; > - > - for (p = haystack; *p; p++) > - if (strcmp(*p, needle) == 0) > - return 1; > - > - return 0; > -} > - > -/** > - * request_dma_bycap - Allocate a DMA channel based on its capabilities > - * @dmac: List of DMA controllers to search > - * @caps: List of capabilities > - * > - * Search all channels of all DMA controllers to find a channel which > - * matches the requested capabilities. The result is the channel > - * number if a match is found, or %-ENODEV if no match is found. > - * > - * Note that not all DMA controllers export capabilities, in which > - * case they can never be allocated using this API, and so > - * request_dma() must be used specifying the channel number. > - */ > -int request_dma_bycap(const char **dmac, const char **caps, const char > *dev_id) > -{ > - unsigned int found = 0; > - struct dma_info *info; > - const char **p; > - int i; > - > - BUG_ON(!dmac || !caps); > - > - list_for_each_entry(info, ®istered_dmac_list, list) > - if (strcmp(*dmac, info->name) == 0) { > - found = 1; > - break; > - } > - > - if (!found) > - return -ENODEV; > - > - for (i = 0; i < info->nr_channels; i++) { > - struct dma_channel *channel = &info->channels[i]; > - > - if (unlikely(!channel->caps)) > - continue; > - > - for (p = caps; *p; p++) { > - if (!search_cap(channel->caps, *p)) > - break; > - if (request_dma(channel->chan, dev_id) == 0) > - return channel->chan; > - } > - } > - > - return -EINVAL; > -} > -EXPORT_SYMBOL(request_dma_bycap); > - > int request_dma(unsigned int chan, const char *dev_id) > { > struct dma_channel *channel = { 0 }; > @@ -213,35 +138,6 @@ void dma_wait_for_completion(unsigned int chan) > } > EXPORT_SYMBOL(dma_wait_for_completion); > > -int register_chan_caps(const char *dmac, struct dma_chan_caps *caps) > -{ > - struct dma_info *info; > - unsigned int found = 0; > - int i; > - > - list_for_each_entry(info, ®istered_dmac_list, list) > - if (strcmp(dmac, info->name) == 0) { > - found = 1; > - break; > - } > - > - if (unlikely(!found)) > - return -ENODEV; > - > - for (i = 0; i < info->nr_channels; i++, caps++) { > - struct dma_channel *channel; > - > - if ((info->first_channel_nr + i) != caps->ch_num) > - return -EINVAL; > - > - channel = &info->channels[i]; > - channel->caps = caps->caplist; > - } > - > - return 0; > -} > -EXPORT_SYMBOL(register_chan_caps); > - > void dma_configure_channel(unsigned int chan, unsigned long flags) > { > struct dma_info *info = get_dma_info(chan); > @@ -267,18 +163,6 @@ int dma_xfer(unsigned int chan, unsigned long from, > } > EXPORT_SYMBOL(dma_xfer); > > -int dma_extend(unsigned int chan, unsigned long op, void *param) > -{ > - struct dma_info *info = get_dma_info(chan); > - struct dma_channel *channel = get_dma_channel(chan); > - > - if (info->ops->extend) > - return info->ops->extend(channel, op, param); > - > - return -ENOSYS; > -} > -EXPORT_SYMBOL(dma_extend); > - > static int dma_proc_show(struct seq_file *m, void *v) > { > struct dma_info *info = v; > diff --git a/arch/sh/include/asm/dma.h b/arch/sh/include/asm/dma.h > index c8bee3f985a29393..6b6d409956d17f09 100644 > --- a/arch/sh/include/asm/dma.h > +++ b/arch/sh/include/asm/dma.h > @@ -56,7 +56,6 @@ struct dma_ops { > int (*get_residue)(struct dma_channel *chan); > int (*xfer)(struct dma_channel *chan); > int (*configure)(struct dma_channel *chan, unsigned long flags); > - int (*extend)(struct dma_channel *chan, unsigned long op, void *param); > }; > > struct dma_channel { > @@ -118,8 +117,6 @@ extern int dma_xfer(unsigned int chan, unsigned long from, > #define dma_read_page(chan, from, to) \ > dma_read(chan, from, to, PAGE_SIZE) > > -extern int request_dma_bycap(const char **dmac, const char **caps, > - const char *dev_id); > extern int get_dma_residue(unsigned int chan); > extern struct dma_info *get_dma_info(unsigned int chan); > extern struct dma_channel *get_dma_channel(unsigned int chan); > @@ -128,10 +125,6 @@ extern void dma_configure_channel(unsigned int chan, > unsigned long flags); > > extern int register_dmac(struct dma_info *info); > extern void unregister_dmac(struct dma_info *info); > -extern struct dma_info *get_dma_info_by_name(const char *dmac_name); > - > -extern int dma_extend(unsigned int chan, unsigned long op, void *param); > -extern int register_chan_caps(const char *dmac, struct dma_chan_caps > *capslist); > > /* arch/sh/drivers/dma/dma-sysfs.c */ > extern int dma_create_sysfs_files(struct dma_channel *, struct dma_info *);
I assume we could re-add these again in case we need them, but it would be good if Yoshinori could comment on whether we should keep these functions or not. Adrian -- .''`. John Paul Adrian Glaubitz : :' : Debian Developer `. `' Physicist `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913